18 typedef sigc::signal<void, Coordi, UUID, UUIDVec> type_signal_goto;
19 type_signal_goto signal_goto()
24 typedef sigc::signal<void> type_signal_canvas_update;
25 type_signal_canvas_update signal_canvas_update()
27 return s_signal_canvas_update;
33 void set_enabled(
bool enable);
38 Gtk::ListBox *lb_rules =
nullptr;
39 Gtk::ListBox *lb_multi =
nullptr;
40 Gtk::Revealer *rev_multi =
nullptr;
41 Gtk::Button *button_rule_instance_add =
nullptr;
42 Gtk::Button *button_rule_instance_remove =
nullptr;
43 Gtk::Button *button_rule_instance_move_up =
nullptr;
44 Gtk::Button *button_rule_instance_move_down =
nullptr;
45 Gtk::Box *rule_editor_box =
nullptr;
46 Gtk::Box *run_box =
nullptr;
47 Gtk::Button *apply_button =
nullptr;
48 Gtk::Button *cancel_button =
nullptr;
49 Gtk::Stack *stack =
nullptr;
50 Gtk::StackSwitcher *stack_switcher =
nullptr;
51 Gtk::Revealer *rev_warn =
nullptr;
52 Glib::RefPtr<Gtk::SizeGroup> sg_order;
53 Gtk::MenuItem *check_selected_rule_item =
nullptr;
55 void rule_selected(RuleID
id);
56 void rule_instance_selected(RuleID
id,
const UUID &uu);
57 void update_rule_instances(RuleID
id);
58 void update_rule_instance_labels();
59 void update_rule_labels();
60 void update_warning();
62 void update_can_check_selected();
64 void run_check(RuleID rule);
72 class Block *get_top_block();
73 type_signal_goto s_signal_goto;
74 type_signal_canvas_update s_signal_canvas_update;
75 RuleID rule_id_current = RuleID::NONE;
82 enum class CheckState { NOT_RUNNING, RUNNING, CANCELLING };
84 class TreeColumns :
public Gtk::TreeModelColumnRecord {
88 Gtk::TreeModelColumnRecord::add(rule);
89 Gtk::TreeModelColumnRecord::add(name);
90 Gtk::TreeModelColumnRecord::add(result);
91 Gtk::TreeModelColumnRecord::add(has_location);
92 Gtk::TreeModelColumnRecord::add(location);
93 Gtk::TreeModelColumnRecord::add(sheet);
94 Gtk::TreeModelColumnRecord::add(instance_path);
95 Gtk::TreeModelColumnRecord::add(paths);
96 Gtk::TreeModelColumnRecord::add(layers);
97 Gtk::TreeModelColumnRecord::add(state);
98 Gtk::TreeModelColumnRecord::add(status);
99 Gtk::TreeModelColumnRecord::add(pulse);
100 Gtk::TreeModelColumnRecord::add(outdated);
102 Gtk::TreeModelColumn<RuleID> rule;
103 Gtk::TreeModelColumn<Glib::ustring> name;
104 Gtk::TreeModelColumn<RulesCheckErrorLevel> result;
105 Gtk::TreeModelColumn<bool> has_location;
106 Gtk::TreeModelColumn<Coordi> location;
107 Gtk::TreeModelColumn<UUID> sheet;
108 Gtk::TreeModelColumn<UUIDVec> instance_path;
109 Gtk::TreeModelColumn<CheckState> state;
110 Gtk::TreeModelColumn<ClipperLib::Paths> paths;
111 Gtk::TreeModelColumn<std::set<int>> layers;
112 Gtk::TreeModelColumn<std::string> status;
113 Gtk::TreeModelColumn<int> pulse;
114 Gtk::TreeModelColumn<bool> outdated;
116 TreeColumns tree_columns;
118 Glib::RefPtr<Gtk::TreeStore> check_result_store;
119 Glib::RefPtr<Gtk::TreeModelFilter> check_result_filter;
120 Gtk::CheckButton *work_layer_only_checkbutton =
nullptr;
121 Gtk::Box *work_layer_only_box =
nullptr;
122 Gtk::TreeView *check_result_treeview =
nullptr;
126 RuleRunInfo(Gtk::TreeModel::Row &r) : row(r)
131 Gtk::TreeModel::Row row;
134 std::map<RuleID, RuleRunInfo> run_store;
135 std::mutex run_store_mutex;
137 std::unique_ptr<class RulesCheckCache> cache;
139 void check_thread(RuleID
id);
144 Glib::RefPtr<Gio::Menu> hamburger_menu;
145 Gtk::MenuButton *hamburger_menu_button =
nullptr;
146 Glib::RefPtr<Gio::SimpleActionGroup> action_group;
148 bool update_results();
149 void update_markers_and_error_polygons();
151 std::atomic_bool cancel_flag;
152 bool queue_close =
false;