Horizon
grids_window.hpp
1 #pragma once
2 #include <gtkmm.h>
3 #include "util/uuid.hpp"
4 #include "util/changeable.hpp"
5 #include "common/common.hpp"
6 #include <set>
7 #include "nlohmann/json.hpp"
8 #include "grid_controller.hpp"
9 #include "common/grid_settings.hpp"
10 
11 namespace horizon {
12 using json = nlohmann::json;
13 
14 class GridsWindow : public Gtk::Window, public Changeable {
15 public:
16  static GridsWindow *create(Gtk::Window *p, GridController &b, GridSettings &settings);
17  GridsWindow(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &x, GridController &b,
18  GridSettings &settings);
19  void set_select_mode(bool select_mode);
20  bool has_grids() const;
21 
22 private:
23  GridController &grid_controller;
24  GridSettings &settings;
25 
26  bool select_mode = false;
27 
28  void row_from_grid(Gtk::TreeModel::Row &row, const GridSettings::Grid &g) const;
29 
30  class ListColumns : public Gtk::TreeModelColumnRecord {
31  public:
32  ListColumns()
33  {
34  Gtk::TreeModelColumnRecord::add(uuid);
35  Gtk::TreeModelColumnRecord::add(name);
36  Gtk::TreeModelColumnRecord::add(spacing);
37  Gtk::TreeModelColumnRecord::add(origin);
38  }
39  Gtk::TreeModelColumn<UUID> uuid;
40  Gtk::TreeModelColumn<Glib::ustring> name;
41  Gtk::TreeModelColumn<Glib::ustring> spacing;
42  Gtk::TreeModelColumn<Glib::ustring> origin;
43  };
44  ListColumns list_columns;
45 
46  Glib::RefPtr<Gtk::ListStore> store;
47  Gtk::TreeView *treeview = nullptr;
48 
49  void update_buttons();
50 
51  Gtk::Box *button_box = nullptr;
52  Gtk::Button *button_ok = nullptr;
53  Gtk::Button *button_cancel = nullptr;
54  Gtk::Button *button_apply = nullptr;
55  Gtk::Button *button_remove = nullptr;
56  Gtk::HeaderBar *headerbar = nullptr;
57 };
58 
59 } // namespace horizon
Definition: changeable.hpp:5
Definition: grid_controller.hpp:10
Definition: grid_settings.hpp:17
Definition: grid_settings.hpp:9
Definition: grids_window.hpp:14
a class to store JSON values
Definition: json.hpp:177
basic_json<> json
default JSON class
Definition: json_fwd.hpp:62