Horizon
Loading...
Searching...
No Matches
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
9namespace horizon {
10
11
12class PlaneUpdateDialog : public Gtk::Dialog {
13public:
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
31private:
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