Horizon
part_browser_window.hpp
1 #pragma once
2 #include "common/common.hpp"
3 #include "pool/part.hpp"
4 #include "pool/pool.hpp"
5 #include "pool/pool_parametric.hpp"
6 #include "util/uuid.hpp"
7 #include "util/window_state_store.hpp"
8 #include <array>
9 #include <gtkmm.h>
10 #include <set>
11 
12 namespace horizon {
13 
14 class PartBrowserWindow : public Gtk::Window {
15 public:
16  PartBrowserWindow(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &x, const std::string &pool_path,
17  std::deque<UUID> &favs);
18  static PartBrowserWindow *create(Gtk::Window *p, const std::string &pool_path, std::deque<UUID> &favs);
19  typedef sigc::signal<void, UUID> type_signal_place_part;
20  type_signal_place_part signal_place_part()
21  {
22  return s_signal_place_part;
23  }
24  type_signal_place_part signal_assign_part()
25  {
26  return s_signal_assign_part;
27  }
28  void placed_part(const UUID &uu);
29  void go_to_part(const UUID &uu);
30  void set_can_assign(bool v);
31 
32 private:
33  Gtk::Menu *add_search_menu = nullptr;
34  Gtk::Notebook *notebook = nullptr;
35  Gtk::Button *place_part_button = nullptr;
36  Gtk::Button *assign_part_button = nullptr;
37  Gtk::ToggleButton *fav_button = nullptr;
38  Gtk::ListBox *lb_favorites = nullptr;
39  Gtk::ListBox *lb_recent = nullptr;
40  Gtk::Paned *paned = nullptr;
41  class PartPreview *preview = nullptr;
42  class PoolBrowserPart *add_search(const UUID &part = UUID());
43  class PoolBrowserParametric *add_search_parametric(const std::string &table_name);
44  void handle_switch_page(Gtk::Widget *w, guint index);
45  void handle_fav_toggled();
46  void update_favorites();
47  void update_recents();
48  void handle_favorites_selected(Gtk::ListBoxRow *row);
49  void handle_favorites_activated(Gtk::ListBoxRow *row);
50  void handle_place_part();
51  void handle_assign_part();
52  sigc::connection fav_toggled_conn;
53  std::set<Gtk::Widget *> search_views;
54  Pool pool;
55  PoolParametric pool_parametric;
56  UUID part_current;
57  void update_part_current();
58  std::deque<UUID> &favorites;
59  std::deque<UUID> recents;
60 
61  type_signal_place_part s_signal_place_part;
62  type_signal_place_part s_signal_assign_part;
63  bool can_assign = false;
64 
65  WindowStateStore state_store;
66 };
67 } // namespace horizon
horizon::PoolBrowserParametric
Definition: pool_browser_parametric.hpp:7
horizon::PoolBrowserPart
Definition: pool_browser_part.hpp:5
horizon::PartBrowserWindow
Definition: part_browser_window.hpp:14
horizon::WindowStateStore
Definition: window_state_store.hpp:20
horizon::PartPreview
Definition: part_preview.hpp:11
horizon::UUID
This class encapsulates a UUID and allows it to be uses as a value type.
Definition: uuid.hpp:16
horizon::Pool
Stores objects (Unit, Entity, Symbol, Part, etc.) from the pool.
Definition: pool.hpp:21
horizon::PoolParametric
Definition: pool_parametric.hpp:10