Horizon
Loading...
Searching...
No Matches
multi_item_selector.hpp
1#pragma once
2#include <gtkmm.h>
3#include "util/uuid.hpp"
4#include "util/changeable.hpp"
5#include <set>
6
7namespace horizon {
8class MultiItemSelector : public Gtk::Grid, public Changeable {
9public:
11 void select_items(const std::set<UUID> &nets);
12 std::set<UUID> get_selected_items() const;
13
14 virtual void update() = 0;
15
16protected:
17 class ListColumns : public Gtk::TreeModelColumnRecord {
18 public:
20 {
21 Gtk::TreeModelColumnRecord::add(name);
22 Gtk::TreeModelColumnRecord::add(uuid);
23 }
24 Gtk::TreeModelColumn<Glib::ustring> name;
25 Gtk::TreeModelColumn<UUID> uuid;
26 };
27 ListColumns list_columns;
28
29 Glib::RefPtr<Gtk::ListStore> store;
30
31 virtual std::string get_column_heading() const = 0;
32 void construct();
33
34private:
35 std::set<UUID> items_selected;
36
37
38 Gtk::TreeView *view_available = nullptr;
39 Gtk::TreeView *view_selected = nullptr;
40
41 Gtk::Widget *make_listview(Gtk::TreeView *&view, Glib::RefPtr<Gtk::TreeModelSort> &store);
42
43 Gtk::Button *button_include = nullptr;
44 Gtk::Button *button_exclude = nullptr;
45
46 Glib::RefPtr<Gtk::TreeModelFilter> filter_available;
47 Glib::RefPtr<Gtk::TreeModelSort> sort_available;
48
49 Glib::RefPtr<Gtk::TreeModelFilter> filter_selected;
50 Glib::RefPtr<Gtk::TreeModelSort> sort_selected;
51
52 Glib::RefPtr<Gtk::SizeGroup> sg_views;
53};
54} // namespace horizon
Definition changeable.hpp:5
Definition multi_item_selector.hpp:17
Definition multi_item_selector.hpp:8