4 #include "util/uuid.hpp"
5 #include "pool/part.hpp"
6 #include "pool/unit.hpp"
7 #include "pool/entity.hpp"
8 #include "pool/symbol.hpp"
9 #include "pool/package.hpp"
10 #include "pool/padstack.hpp"
12 #include "pool/pool.hpp"
13 #include "pool/pool_parametric.hpp"
14 #include "util/editor_process.hpp"
15 #include "pool-update/pool-update.hpp"
17 #include "util/win32_undef.hpp"
20 class PoolNotebook :
public Gtk::Notebook {
21 friend class PoolRemoteBox;
22 friend class PoolGitBox;
25 PoolNotebook(
const std::string &bp,
class PoolProjectManagerAppWindow *aw);
27 bool get_close_prohibited()
const;
29 void pool_update(std::function<
void()> cb =
nullptr,
const std::vector<std::string> &filenames = {});
30 bool get_needs_save()
const;
32 void go_to(ObjectType type,
const UUID &uu);
33 const UUID &get_pool_uuid()
const;
37 const std::string base_path;
39 PoolParametric pool_parametric;
40 class PoolProjectManagerAppWindow *appwin;
41 std::map<ObjectType, class PoolBrowser *> browsers;
42 std::map<std::string, class PoolBrowserParametric *> browsers_parametric;
43 class PartWizard *part_wizard =
nullptr;
44 class KiCadSymbolImportWizard *kicad_symbol_import_wizard =
nullptr;
45 class DuplicateWindow *duplicate_window =
nullptr;
48 Glib::Dispatcher pool_update_dispatcher;
49 bool in_pool_update_handler =
false;
50 std::mutex pool_update_status_queue_mutex;
51 std::deque<std::tuple<PoolUpdateStatus, std::string, std::string>> pool_update_status_queue;
52 std::deque<std::tuple<PoolUpdateStatus, std::string, std::string>> pool_update_error_queue;
53 bool pool_updating =
false;
54 void pool_updated(
bool success);
56 std::string pool_update_last_file;
57 unsigned int pool_update_n_files = 0;
58 unsigned int pool_update_n_files_last = 0;
59 std::function<void()> pool_update_done_cb =
nullptr;
60 std::vector<std::string> pool_update_filenames;
62 void pool_update_thread();
64 void show_duplicate_window(ObjectType ty,
const UUID &uu);
66 void construct_units();
67 void handle_create_unit();
68 void handle_edit_unit(
const UUID &uu);
69 void handle_create_symbol_for_unit(
const UUID &uu);
70 void handle_create_entity_for_unit(
const UUID &uu);
71 void handle_duplicate_unit(
const UUID &uu);
73 void construct_symbols();
74 void handle_edit_symbol(
const UUID &uu);
75 void handle_create_symbol();
76 void handle_duplicate_symbol(
const UUID &uu);
78 void construct_entities();
79 void handle_edit_entity(
const UUID &uu);
80 void handle_create_entity();
81 void handle_duplicate_entity(
const UUID &uu);
83 void construct_padstacks();
84 void handle_edit_padstack(
const UUID &uu);
85 void handle_create_padstack();
86 void handle_duplicate_padstack(
const UUID &uu);
88 void construct_packages();
89 void handle_edit_package(
const UUID &uu);
90 void handle_create_package();
91 void handle_create_padstack_for_package(
const UUID &uu);
92 void handle_duplicate_package(
const UUID &uu);
93 void handle_part_wizard();
94 void handle_kicad_symbol_import_wizard();
96 void construct_parts();
97 void handle_edit_part(
const UUID &uu);
98 void handle_create_part();
99 void handle_create_part_from_part(
const UUID &uu);
100 void handle_duplicate_part(
const UUID &uu);
102 void construct_frames();
103 void handle_edit_frame(
const UUID &uu);
104 void handle_create_frame();
105 void handle_duplicate_frame(
const UUID &uu);
107 void construct_decals();
108 void handle_edit_decal(
const UUID &uu);
109 void handle_create_decal();
110 void handle_duplicate_decal(
const UUID &uu);
112 Gtk::Button *add_action_button(
const std::string &label, Gtk::Box *bbox, sigc::slot0<void>);
113 Gtk::Button *add_action_button(
const std::string &label, Gtk::Box *bbox,
class PoolBrowser *br,
114 sigc::slot1<void, UUID>);
115 void add_preview_stack_switcher(Gtk::Box *bbox, Gtk::Stack *stack);
117 void handle_delete(ObjectType ty,
const UUID &uu);
118 void handle_move_rename(ObjectType ty,
const UUID &uu);
119 void handle_copy_path(ObjectType ty,
const UUID &uu);
120 void add_context_menu(
class PoolBrowser *br);
122 void install_search_once(Gtk::Widget *page, PoolBrowser *browser);
123 bool widget_is_visible(Gtk::Widget *widget);
125 std::string remote_repo;
126 class PoolRemoteBox *remote_box =
nullptr;
127 class PoolSettingsBox *settings_box =
nullptr;
128 class PoolGitBox *git_box =
nullptr;