Horizon
Loading...
Searching...
No Matches
tool_popover.hpp
1#pragma once
2#include "action.hpp"
3#include "action_catalog.hpp"
4#include <gtkmm.h>
5
6namespace horizon {
7
8class ToolPopover : public Gtk::Popover {
9public:
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
19private:
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