Horizon
Loading...
Searching...
No Matches
pool_browser_parametric.hpp
1#pragma once
2#include "pool_browser_stockinfo.hpp"
3#include "pool/pool_parametric.hpp"
4#include "util/stock_info_provider.hpp"
5
6namespace horizon {
8public:
10 friend FilterAppliedLabel;
11 PoolBrowserParametric(class IPool &p, class PoolParametric &pp, const std::string &table_name,
12 const std::string &instance = "");
13 void search() override;
14 ObjectType get_type() const override
15 {
16 return ObjectType::PART;
17 }
18 void add_copy_name_context_menu_item() override;
19 void set_similar_part_uuid(const UUID &uu);
20 void set_entity_uuid(const UUID &uu);
21 void filter_similar(const UUID &uu, float tol = .1);
22
23protected:
24 Glib::RefPtr<Gtk::ListStore> create_list_store() override;
25 void create_columns() override;
26 void add_sort_controller_columns() override;
27 UUID uuid_from_row(const Gtk::TreeModel::Row &row) override;
28 PoolItemSource pool_item_source_from_row(const Gtk::TreeModel::Row &row) override;
29 Gtk::TreeModelColumn<std::shared_ptr<StockInfoRecord>> &get_stock_info_column() override;
30
31private:
32 class PoolParametric &pool_parametric;
33 const PoolParametric::Table &table;
34 std::map<std::string, std::reference_wrapper<const PoolParametric::Column>> columns;
35 UUID similar_part_uuid;
36 UUID entity_uuid;
37
38 class ListColumns : public Gtk::TreeModelColumnRecord {
39 public:
40 ListColumns(const PoolParametric::Table &table)
41 {
42 Gtk::TreeModelColumnRecord::add(MPN);
43 Gtk::TreeModelColumnRecord::add(manufacturer);
44 Gtk::TreeModelColumnRecord::add(package);
45 Gtk::TreeModelColumnRecord::add(uuid);
46 Gtk::TreeModelColumnRecord::add(path);
47 Gtk::TreeModelColumnRecord::add(source);
48 for (const auto &col : table.columns) {
49 Gtk::TreeModelColumnRecord::add(params[col.name]);
50 }
51 Gtk::TreeModelColumnRecord::add(stock_info);
52 }
53 Gtk::TreeModelColumn<Glib::ustring> MPN;
54 Gtk::TreeModelColumn<Glib::ustring> manufacturer;
55 Gtk::TreeModelColumn<Glib::ustring> package;
56 Gtk::TreeModelColumn<Glib::ustring> path;
57 Gtk::TreeModelColumn<UUID> uuid;
58 Gtk::TreeModelColumn<PoolItemSource> source;
59 std::map<std::string, Gtk::TreeModelColumn<std::string>> params;
60 Gtk::TreeModelColumn<std::shared_ptr<StockInfoRecord>> stock_info;
61 };
62 ListColumns list_columns;
63
64 Gtk::Box *search_box = nullptr;
65 Gtk::Box *filters_applied_box = nullptr;
66 std::map<std::string, std::set<std::string>> values_remaining;
67 std::map<std::string, std::set<std::string>> filters_applied;
68 std::map<std::string, class ParametricFilterBox *> filter_boxes;
69 void apply_filters();
70 void update_filters();
71 void update_filters_applied();
72 void remove_filter(const std::string &col);
73};
74} // namespace horizon
Definition ipool.hpp:15
Definition pool_browser_parametric.cpp:482
Definition pool_browser_parametric.hpp:7
Definition pool_browser_stockinfo.hpp:7
Definition pool_parametric.hpp:33
Definition pool_parametric.hpp:10
This class encapsulates a UUID and allows it to be uses as a value type.
Definition uuid.hpp:16