Horizon
sheet_box.hpp
1 #pragma once
2 #include <gtkmm.h>
3 #include "util/uuid.hpp"
4 
5 namespace horizon {
6 class SheetBox : public Gtk::Box {
7 public:
8  SheetBox(class CoreSchematic *c);
9 
10  void update();
11  void update_highlights(const UUID &uu, bool has_highlights);
12  void select_sheet(const UUID &sheet_uuid);
13  typedef sigc::signal<void, class Sheet *> type_signal_select_sheet;
14  type_signal_select_sheet signal_select_sheet()
15  {
16  return s_signal_select_sheet;
17  }
18  typedef sigc::signal<void> type_signal_add_sheet;
19  type_signal_add_sheet signal_add_sheet()
20  {
21  return s_signal_add_sheet;
22  }
23  typedef sigc::signal<void, Sheet *> type_signal_remove_sheet;
24  type_signal_remove_sheet signal_remove_sheet()
25  {
26  return s_signal_remove_sheet;
27  }
28 
29 private:
30  class ListColumns : public Gtk::TreeModelColumnRecord {
31  public:
32  ListColumns()
33  {
34  Gtk::TreeModelColumnRecord::add(name);
35  Gtk::TreeModelColumnRecord::add(uuid);
36  Gtk::TreeModelColumnRecord::add(index);
37  Gtk::TreeModelColumnRecord::add(has_warnings);
38  Gtk::TreeModelColumnRecord::add(has_highlights);
39  }
40  Gtk::TreeModelColumn<Glib::ustring> name;
41  Gtk::TreeModelColumn<UUID> uuid;
42  Gtk::TreeModelColumn<unsigned int> index;
43  Gtk::TreeModelColumn<bool> has_warnings;
44  Gtk::TreeModelColumn<bool> has_highlights;
45  };
46  ListColumns list_columns;
47 
48  CoreSchematic *core;
49  Gtk::ToolButton *remove_button = nullptr;
50  Gtk::ToolButton *move_up_button = nullptr;
51  Gtk::ToolButton *move_down_button = nullptr;
52 
53  Gtk::TreeView *view;
54  Glib::RefPtr<Gtk::ListStore> store;
55 
56  Gtk::Menu menu;
57 
58  type_signal_select_sheet s_signal_select_sheet;
59  type_signal_add_sheet s_signal_add_sheet;
60  type_signal_remove_sheet s_signal_remove_sheet;
61  void selection_changed(void);
62  void remove_clicked(void);
63  void name_edited(const Glib::ustring &path, const Glib::ustring &new_text);
64  void sheet_move(int dir);
65 };
66 } // namespace horizon