5 #include "util/window_state_store.hpp"
6 #include "block/bom.hpp"
7 #include "util/changeable.hpp"
8 #include "util/export_file_chooser.hpp"
9 #include "pool/pool_parametric.hpp"
10 #include "widgets/column_chooser.hpp"
14 class BOMExportWindow :
public Gtk::Window,
public Changeable {
15 friend class OrderableMPNSelector;
18 BOMExportWindow(BaseObjectType *cobject,
const Glib::RefPtr<Gtk::Builder> &x,
class Block &block,
19 class BOMExportSettings &settings,
class IPool &pool,
const std::string &project_dir);
20 static BOMExportWindow *create(Gtk::Window *p,
class Block &block,
class BOMExportSettings &settings,
21 class IPool &pool,
const std::string &project_dir);
23 void set_can_export(
bool v);
25 void update_preview();
26 void update_orderable_MPNs();
31 class BOMExportSettings &settings;
33 PoolParametric pool_parametric;
35 void update_concrete_parts();
37 class MyExportFileChooser :
public ExportFileChooser {
39 void prepare_chooser(Glib::RefPtr<Gtk::FileChooser> chooser)
override;
40 void prepare_filename(std::string &filename)
override;
42 MyExportFileChooser export_filechooser;
44 Gtk::Button *export_button =
nullptr;
45 Gtk::CheckButton *nopopulate_check =
nullptr;
46 Gtk::ComboBoxText *sort_column_combo =
nullptr;
47 Gtk::ComboBoxText *sort_order_combo =
nullptr;
48 Gtk::Revealer *done_revealer =
nullptr;
49 Gtk::Label *done_label =
nullptr;
50 Gtk::Entry *filename_entry =
nullptr;
51 Gtk::Button *filename_button =
nullptr;
52 Gtk::ListBox *orderable_MPNs_listbox =
nullptr;
53 bool can_export =
true;
54 void update_export_button();
56 Glib::RefPtr<Gtk::SizeGroup> sg_manufacturer;
57 Glib::RefPtr<Gtk::SizeGroup> sg_MPN;
58 Glib::RefPtr<Gtk::SizeGroup> sg_orderable_MPN;
60 Gtk::TreeView *meta_parts_tv =
nullptr;
61 Gtk::Label *concrete_parts_label =
nullptr;
63 class MetaPartsListColumns :
public Gtk::TreeModelColumnRecord {
65 MetaPartsListColumns()
67 Gtk::TreeModelColumnRecord::add(MPN);
68 Gtk::TreeModelColumnRecord::add(value);
69 Gtk::TreeModelColumnRecord::add(manufacturer);
70 Gtk::TreeModelColumnRecord::add(qty);
71 Gtk::TreeModelColumnRecord::add(uuid);
72 Gtk::TreeModelColumnRecord::add(concrete_MPN);
73 Gtk::TreeModelColumnRecord::add(concrete_value);
74 Gtk::TreeModelColumnRecord::add(concrete_manufacturer);
76 Gtk::TreeModelColumn<Glib::ustring> MPN;
77 Gtk::TreeModelColumn<Glib::ustring> value;
78 Gtk::TreeModelColumn<Glib::ustring> manufacturer;
79 Gtk::TreeModelColumn<UUID> uuid;
80 Gtk::TreeModelColumn<unsigned int> qty;
82 Gtk::TreeModelColumn<Glib::ustring> concrete_MPN;
83 Gtk::TreeModelColumn<Glib::ustring> concrete_value;
84 Gtk::TreeModelColumn<Glib::ustring> concrete_manufacturer;
86 MetaPartsListColumns meta_parts_list_columns;
88 Glib::RefPtr<Gtk::ListStore> meta_parts_store;
90 Gtk::Box *param_browser_box =
nullptr;
91 Gtk::RadioButton *rb_tol_10 =
nullptr;
92 Gtk::RadioButton *rb_tol_1 =
nullptr;
93 Gtk::Button *button_clear_similar =
nullptr;
94 Gtk::Button *button_set_similar =
nullptr;
95 class PoolBrowserParametric *browser_param =
nullptr;
96 UUID meta_part_current;
97 void update_meta_mapping();
98 void handle_set_similar();
99 void update_similar_button_sensitivity();
101 Gtk::TreeView *preview_tv =
nullptr;
103 WindowStateStore state_store;
105 ColumnChooser *column_chooser =
nullptr;
107 class MyAdapter :
public ColumnChooser::Adapter<BOMColumn> {
109 using ColumnChooser::Adapter<BOMColumn>::Adapter;
110 std::string get_column_name(
int col)
const override;
111 std::map<int, std::string> get_column_names()
const override;
116 void flash(
const std::string &s);
117 sigc::connection flash_connection;
119 class ListColumnsPreview :
public Gtk::TreeModelColumnRecord {
123 Gtk::TreeModelColumnRecord::add(row);
125 Gtk::TreeModelColumn<BOMRow> row;
127 ListColumnsPreview list_columns_preview;
129 Glib::RefPtr<Gtk::ListStore> bom_store;