1 #pragma once
2 #include <gtkmm.h>
3 #include <array>
4 #include <set>
5 #include "util/uuid.hpp"
6 #include "tool_window.hpp"
7 
8 namespace horizon {
9 
10 class RenumberPadsWindow : public ToolWindow {
11 public:
12     RenumberPadsWindow(Gtk::Window *parent, class ImpInterface *intf, class Package &pkg, const std::set<UUID> &pads);
13 
14     const std::vector<class Pad *> &get_pads_sorted();
15     void renumber();
16 
17 private:
18     class Package &pkg;
19     std::set<class Pad *> pads;
20 
21     bool circular = false;
22     bool x_first = true;
23     bool down = true;
24     bool right = true;
25     enum class Origin { TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT };
26     bool clockwise = false;
27     Origin circular_origin = Origin::TOP_LEFT;
28 
29     Gtk::Entry *entry_prefix = nullptr;
30     Gtk::SpinButton *sp_start = nullptr;
31     Gtk::SpinButton *sp_step = nullptr;
32     std::set<Gtk::Widget *> widgets_circular;
33     std::set<Gtk::Widget *> widgets_axis;
34 
35 
36     std::vector<Pad *> pads_sorted;
37 };
38 } // namespace horizon
39