Horizon
pool_settings_box.hpp
1 #pragma once
2 #include <gtkmm.h>
3 #include <set>
4 #include <mutex>
5 #include "util/uuid.hpp"
6 #include "common/common.hpp"
7 #include "nlohmann/json.hpp"
8 #include <git2.h>
9 
10 namespace horizon {
11 using json = nlohmann::json;
12 
13 class PoolSettingsBox : public Gtk::Box {
14 public:
15  PoolSettingsBox(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &x, class IPool &pool);
16  static PoolSettingsBox *create(class IPool &pool);
17  bool get_needs_save() const;
18  void save();
19  void pool_updated();
20  void update_pools();
21 
22  typedef sigc::signal<void, std::string> type_signal_open_pool;
23  type_signal_open_pool signal_open_pool()
24  {
25  return s_signal_open_pool;
26  }
27 
28  typedef sigc::signal<void> type_signal_saved;
29  type_signal_saved signal_saved()
30  {
31  return s_signal_saved;
32  }
33 
34 private:
35  IPool &pool;
36  Gtk::Entry *entry_name = nullptr;
37  Gtk::Button *save_button = nullptr;
38  Gtk::ListBox *pools_available_listbox = nullptr;
39  Gtk::ListBox *pools_included_listbox = nullptr;
40  Gtk::ListBox *pools_actually_included_listbox = nullptr;
41  Gtk::Button *pool_inc_button = nullptr;
42  Gtk::Button *pool_excl_button = nullptr;
43  Gtk::Button *pool_up_button = nullptr;
44  Gtk::Button *pool_down_button = nullptr;
45  Gtk::Label *hint_label = nullptr;
46 
47  std::vector<UUID> pools_included;
48 
49  void update_actual();
50 
51  void inc_excl_pool(bool inc);
52  void pool_up_down(bool up);
53  void update_button_sensitivity();
54 
55  bool needs_save = false;
56  void set_needs_save();
57 
58  type_signal_open_pool s_signal_open_pool;
59  type_signal_saved s_signal_saved;
60 };
61 } // namespace horizon
Definition: ipool.hpp:14
Definition: pool_settings_box.hpp:13
a class to store JSON values
Definition: json.hpp:177
basic_json<> json
default JSON class
Definition: json_fwd.hpp:62