Horizon
plane_update.hpp
1 #pragma once
2 #include <gtkmm.h>
3 #include <mutex>
4 #include <list>
5 #include <thread>
6 #include <atomic>
7 #include "util/uuid.hpp"
8 
9 namespace horizon {
10 
11 
12 class PlaneUpdateDialog : public Gtk::Dialog {
13 public:
14  PlaneUpdateDialog(Gtk::Window &parent, class Board &brd, class Plane *plane);
16  bool was_cancelled() const
17  {
18  return cancel;
19  }
20  bool is_done() const
21  {
22  return done;
23  }
24 
25  typedef sigc::signal<void> type_signal_done;
26  type_signal_done signal_done()
27  {
28  return s_signal_done;
29  }
30 
31 private:
32  Gtk::Spinner *spinner = nullptr;
33  void plane_update_thread(Board &brd, Plane *plane);
34  Glib::Dispatcher dispatcher;
35  std::atomic_bool cancel = false;
36  std::thread thread;
37  Gtk::Label *status_label = nullptr;
38  std::mutex mutex;
39  std::map<UUID, std::string> plane_status;
40  std::atomic_bool done = false;
41 
42  class ListColumns : public Gtk::TreeModelColumnRecord {
43  public:
44  ListColumns()
45  {
46  Gtk::TreeModelColumnRecord::add(layer);
47  Gtk::TreeModelColumnRecord::add(net);
48  Gtk::TreeModelColumnRecord::add(status);
49  Gtk::TreeModelColumnRecord::add(plane);
50  }
51  Gtk::TreeModelColumn<Glib::ustring> layer;
52  Gtk::TreeModelColumn<Glib::ustring> net;
53  Gtk::TreeModelColumn<Glib::ustring> status;
54  Gtk::TreeModelColumn<UUID> plane;
55  };
56  ListColumns list_columns;
57 
58 
59  Gtk::TreeView *view;
60  Glib::RefPtr<Gtk::ListStore> store;
61 
62  type_signal_done s_signal_done;
63 };
64 } // namespace horizon
Definition: board.hpp:47
Definition: plane_update.hpp:12
Definition: plane.hpp:54