2 #include "pool_browser_stockinfo.hpp"
3 #include "pool/pool_parametric.hpp"
4 #include "util/stock_info_provider.hpp"
7 class PoolBrowserParametric :
public PoolBrowserStockinfo {
9 class FilterAppliedLabel;
10 friend FilterAppliedLabel;
11 PoolBrowserParametric(
class IPool &p,
class PoolParametric &pp,
const std::string &table_name);
12 void search()
override;
13 ObjectType get_type()
const override
15 return ObjectType::PART;
17 void add_copy_name_context_menu_item()
override;
18 void set_similar_part_uuid(
const UUID &uu);
19 void filter_similar(
const UUID &uu,
float tol = .1);
22 Glib::RefPtr<Gtk::ListStore> create_list_store()
override;
23 void create_columns()
override;
24 void add_sort_controller_columns()
override;
25 UUID uuid_from_row(
const Gtk::TreeModel::Row &row)
override;
26 PoolItemSource pool_item_source_from_row(
const Gtk::TreeModel::Row &row)
override;
27 Gtk::TreeModelColumn<std::shared_ptr<StockInfoRecord>> &get_stock_info_column()
override;
30 class PoolParametric &pool_parametric;
31 const PoolParametric::Table &table;
32 std::map<std::string, std::reference_wrapper<const PoolParametric::Column>> columns;
33 UUID similar_part_uuid;
35 class ListColumns :
public Gtk::TreeModelColumnRecord {
37 ListColumns(
const PoolParametric::Table &table)
39 Gtk::TreeModelColumnRecord::add(MPN);
40 Gtk::TreeModelColumnRecord::add(manufacturer);
41 Gtk::TreeModelColumnRecord::add(package);
42 Gtk::TreeModelColumnRecord::add(uuid);
43 Gtk::TreeModelColumnRecord::add(path);
44 Gtk::TreeModelColumnRecord::add(
source);
45 for (
const auto &col : table.columns) {
46 Gtk::TreeModelColumnRecord::add(params[col.name]);
48 Gtk::TreeModelColumnRecord::add(stock_info);
50 Gtk::TreeModelColumn<Glib::ustring> MPN;
51 Gtk::TreeModelColumn<Glib::ustring> manufacturer;
52 Gtk::TreeModelColumn<Glib::ustring> package;
53 Gtk::TreeModelColumn<Glib::ustring> path;
54 Gtk::TreeModelColumn<UUID> uuid;
55 Gtk::TreeModelColumn<PoolItemSource>
source;
56 std::map<std::string, Gtk::TreeModelColumn<std::string>> params;
57 Gtk::TreeModelColumn<std::shared_ptr<StockInfoRecord>> stock_info;
59 ListColumns list_columns;
61 Gtk::Box *search_box =
nullptr;
62 Gtk::Box *filters_applied_box =
nullptr;
63 std::map<std::string, std::set<std::string>> values_remaining;
64 std::map<std::string, std::set<std::string>> filters_applied;
65 std::map<std::string, class ParametricFilterBox *> filter_boxes;
67 void update_filters();
68 void update_filters_applied();
69 void remove_filter(
const std::string &col);