Horizon
tool_popover.hpp
1 #pragma once
2 #include "action.hpp"
3 #include "action_catalog.hpp"
4 #include <gtkmm.h>
5 
6 namespace horizon {
7 
8 class ToolPopover : public Gtk::Popover {
9 public:
10  ToolPopover(Gtk::Widget *parent, ActionCatalogItem::Availability av);
11  typedef sigc::signal<void, ActionToolID> type_signal_action_activated;
12  type_signal_action_activated signal_action_activated()
13  {
14  return s_signal_action_activated;
15  }
16  void set_can_begin(const std::map<ActionToolID, bool> &can_begin);
17  void set_key_sequences(ActionToolID action_id, const std::vector<KeySequence> &seqs);
18 
19 private:
20  Gtk::SearchEntry *search_entry;
21  class ListColumns : public Gtk::TreeModelColumnRecord {
22  public:
23  ListColumns()
24  {
25  Gtk::TreeModelColumnRecord::add(name);
26  Gtk::TreeModelColumnRecord::add(action_id);
27  Gtk::TreeModelColumnRecord::add(can_begin);
28  Gtk::TreeModelColumnRecord::add(keys);
29  }
30  Gtk::TreeModelColumn<Glib::ustring> name;
31  Gtk::TreeModelColumn<ActionToolID> action_id;
32  Gtk::TreeModelColumn<bool> can_begin;
33  Gtk::TreeModelColumn<Glib::ustring> keys;
34  };
35  ListColumns list_columns;
36 
37  class ListColumnsGroup : public Gtk::TreeModelColumnRecord {
38  public:
39  ListColumnsGroup()
40  {
41  Gtk::TreeModelColumnRecord::add(name);
42  Gtk::TreeModelColumnRecord::add(group);
43  }
44  Gtk::TreeModelColumn<Glib::ustring> name;
45  Gtk::TreeModelColumn<ActionGroup> group;
46  };
47  ListColumnsGroup list_columns_group;
48  Gtk::TreeView *view;
49  Glib::RefPtr<Gtk::ListStore> store;
50  Glib::RefPtr<Gtk::TreeModelFilter> store_filtered;
51 
52 
53  Gtk::TreeView *view_group;
54  Glib::RefPtr<Gtk::ListStore> store_group;
55  Gtk::Revealer *revealer = nullptr;
56 
57  void emit_tool_activated();
58  type_signal_action_activated s_signal_action_activated;
59  void on_show() override;
60  std::unique_ptr<Glib::PatternSpec> pattern;
61  ActionGroup selected_group = ActionGroup::ALL;
62  double y_start = NAN;
63  Gtk::ScrolledWindow *sc = nullptr;
64  int sc_height = 0;
65 };
66 } // namespace horizon
Definition: tool_popover.hpp:8
Definition: action.hpp:13