1 #ifndef _WIPE_TOWER_DIALOG_H_
2 #define _WIPE_TOWER_DIALOG_H_
3 
4 #include <wx/spinctrl.h>
5 #include <wx/stattext.h>
6 #include <wx/textctrl.h>
7 #include <wx/checkbox.h>
8 #include <wx/msgdlg.h>
9 
10 #include "RammingChart.hpp"
11 
12 
13 class RammingPanel : public wxPanel {
14 public:
15     RammingPanel(wxWindow* parent);
16     RammingPanel(wxWindow* parent,const std::string& data);
17     std::string get_parameters();
18 
19 private:
20     Chart* m_chart = nullptr;
21     wxSpinCtrl* m_widget_volume = nullptr;
22     wxSpinCtrl* m_widget_ramming_line_width_multiplicator = nullptr;
23     wxSpinCtrl* m_widget_ramming_step_multiplicator = nullptr;
24     wxSpinCtrlDouble* m_widget_time = nullptr;
25     int m_ramming_step_multiplicator;
26     int m_ramming_line_width_multiplicator;
27 
28     void line_parameters_changed();
29 };
30 
31 
32 class RammingDialog : public wxDialog {
33 public:
34     RammingDialog(wxWindow* parent,const std::string& parameters);
get_parameters()35     std::string get_parameters() { return m_output_data; }
36 private:
37     RammingPanel* m_panel_ramming = nullptr;
38     std::string m_output_data;
39 };
40 
41 
42 
43 
44 
45 
46 
47 class WipingPanel : public wxPanel {
48 public:
49     WipingPanel(wxWindow* parent, const std::vector<float>& matrix, const std::vector<float>& extruders, const std::vector<std::string>& extruder_colours, wxButton* widget_button);
50     std::vector<float> read_matrix_values();
51     std::vector<float> read_extruders_values();
52     void toggle_advanced(bool user_action = false);
53 	void format_sizer(wxSizer* sizer, wxPanel* page, wxGridSizer* grid_sizer, const wxString& info, const wxString& table_title, int table_lshift=0);
54 
55 private:
56     void fill_in_matrix();
57     bool advanced_matches_simple();
58 
59     std::vector<wxSpinCtrl*> m_old;
60     std::vector<wxSpinCtrl*> m_new;
61     std::vector<std::vector<wxTextCtrl*>> edit_boxes;
62     std::vector<wxColour> m_colours;
63     unsigned int m_number_of_extruders  = 0;
64     bool m_advanced                     = false;
65 	wxPanel*	m_page_simple = nullptr;
66 	wxPanel*	m_page_advanced = nullptr;
67     wxBoxSizer*	m_sizer = nullptr;
68     wxBoxSizer* m_sizer_simple = nullptr;
69     wxBoxSizer* m_sizer_advanced = nullptr;
70     wxGridSizer* m_gridsizer_advanced = nullptr;
71     wxButton* m_widget_button     = nullptr;
72 };
73 
74 
75 
76 
77 
78 class WipingDialog : public wxDialog {
79 public:
80     WipingDialog(wxWindow* parent, const std::vector<float>& matrix, const std::vector<float>& extruders, const std::vector<std::string>& extruder_colours);
get_matrix() const81     std::vector<float> get_matrix() const    { return m_output_matrix; }
get_extruders() const82     std::vector<float> get_extruders() const { return m_output_extruders; }
83 
84 
85 private:
86     WipingPanel*  m_panel_wiping  = nullptr;
87     std::vector<float> m_output_matrix;
88     std::vector<float> m_output_extruders;
89 };
90 
91 #endif  // _WIPE_TOWER_DIALOG_H_