diff --git a/resources/images/radio_disabled.svg b/resources/images/radio_disabled.svg
new file mode 100644
index 0000000000..0a34e179b9
--- /dev/null
+++ b/resources/images/radio_disabled.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/images/radio_off_hover.svg b/resources/images/radio_off_hover.svg
new file mode 100644
index 0000000000..3f4fefd912
--- /dev/null
+++ b/resources/images/radio_off_hover.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/resources/images/radio_on_hover.svg b/resources/images/radio_on_hover.svg
new file mode 100644
index 0000000000..2c6fcae18a
--- /dev/null
+++ b/resources/images/radio_on_hover.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt
index 95ecfe455a..baf7b56e89 100644
--- a/src/slic3r/CMakeLists.txt
+++ b/src/slic3r/CMakeLists.txt
@@ -38,6 +38,8 @@ set(SLIC3R_GUI_SOURCES
GUI/Widgets/Scrollbar.hpp
GUI/Widgets/ScrolledWindow.cpp
GUI/Widgets/ScrolledWindow.hpp
+ GUI/Widgets/LabeledStaticBox.cpp
+ GUI/Widgets/LabeledStaticBox.hpp
GUI/Widgets/StaticBox.cpp
GUI/Widgets/StaticBox.hpp
GUI/Widgets/ImageSwitchButton.cpp
@@ -70,6 +72,8 @@ set(SLIC3R_GUI_SOURCES
GUI/Widgets/StepCtrl.hpp
GUI/Widgets/ProgressBar.cpp
GUI/Widgets/ProgressBar.hpp
+ GUI/Widgets/RadioGroup.cpp
+ GUI/Widgets/RadioGroup.hpp
GUI/Widgets/SideTools.cpp
GUI/Widgets/SideTools.hpp
GUI/Widgets/WebView.cpp
diff --git a/src/slic3r/GUI/BedShapeDialog.cpp b/src/slic3r/GUI/BedShapeDialog.cpp
index 893455914a..3ee1930d27 100644
--- a/src/slic3r/GUI/BedShapeDialog.cpp
+++ b/src/slic3r/GUI/BedShapeDialog.cpp
@@ -12,6 +12,7 @@
#include "libslic3r/Model.hpp"
#include "libslic3r/Polygon.hpp"
+#include "Widgets/LabeledStaticBox.hpp"
#include "Widgets/DialogButtons.hpp"
#include
@@ -189,9 +190,9 @@ void BedShapePanel::build_panel(const Pointfs& default_pt, const std::string& cu
m_custom_texture = custom_texture.empty() ? NONE : custom_texture;
m_custom_model = custom_model.empty() ? NONE : custom_model;
- auto sbsizer = new wxStaticBoxSizer(wxVERTICAL, this, _L("Shape"));
- sbsizer->GetStaticBox()->SetFont(wxGetApp().bold_font());
- wxGetApp().UpdateDarkUI(sbsizer->GetStaticBox());
+ // ORCA match style of wxStaticBox between platforms
+ LabeledStaticBox* stb = new LabeledStaticBox(this, _L("Shape"));
+ auto sbsizer = new wxStaticBoxSizer(stb, wxVERTICAL);
// shape options
m_shape_options_book = new wxSimplebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize);
diff --git a/src/slic3r/GUI/GUI_Utils.hpp b/src/slic3r/GUI/GUI_Utils.hpp
index cbfd4e3155..35e44a0683 100644
--- a/src/slic3r/GUI/GUI_Utils.hpp
+++ b/src/slic3r/GUI/GUI_Utils.hpp
@@ -18,6 +18,7 @@
#include
#include
#include
+#include
#include
@@ -496,6 +497,7 @@ int get_dpi_for_window(const wxWindow *window);
#ifdef __WXOSX__
void dataview_remove_insets(wxDataViewCtrl* dv);
+void staticbox_remove_margin(wxStaticBox* sb);
#endif
///
diff --git a/src/slic3r/GUI/GUI_UtilsMac.mm b/src/slic3r/GUI/GUI_UtilsMac.mm
index 46ee9dce7e..6df6786eb3 100644
--- a/src/slic3r/GUI/GUI_UtilsMac.mm
+++ b/src/slic3r/GUI/GUI_UtilsMac.mm
@@ -14,6 +14,12 @@ void dataview_remove_insets(wxDataViewCtrl* dv) {
}
}
+void staticbox_remove_margin(wxStaticBox* sb) {
+ NSBox* nativeBox = (NSBox*)sb->GetHandle();
+ [nativeBox setBoxType:NSBoxCustom];
+ [nativeBox setBorderWidth:0];
+}
+
}
}
diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp
index 936afcacb9..43707019fb 100644
--- a/src/slic3r/GUI/OptionsGroup.cpp
+++ b/src/slic3r/GUI/OptionsGroup.cpp
@@ -7,6 +7,7 @@
#include "MsgDialog.hpp"
#include "format.hpp"
#include "Widgets/StaticLine.hpp"
+#include "Widgets/LabeledStaticBox.hpp"
#include
#include
@@ -470,14 +471,11 @@ bool OptionsGroup::activate(std::function throw_if_canceled/* = [](){}*/
try {
if (staticbox) {
- wxStaticBox * stb = new wxStaticBox(m_parent, wxID_ANY, _(title));
- if (!wxOSX) stb->SetBackgroundStyle(wxBG_STYLE_PAINT);
- stb->SetBackgroundColour(m_parent->GetBackgroundColour());
- stb->SetFont(wxOSX ? wxGetApp().normal_font() : wxGetApp().bold_font());
- wxGetApp().UpdateDarkUI(stb);
- // BBS: new layout
- sizer = new wxStaticBoxSizer(stb, wxVERTICAL);
+ // ORCA match style of wxStaticBox between platforms
+ LabeledStaticBox * stb = new LabeledStaticBox(m_parent, _(title));
+ //wxGetApp().UpdateDarkUI(stb);
this->stb = stb;
+ sizer = new wxStaticBoxSizer(stb, wxVERTICAL);
}
else {
// BBS: new layout
diff --git a/src/slic3r/GUI/Widgets/LabeledStaticBox.cpp b/src/slic3r/GUI/Widgets/LabeledStaticBox.cpp
new file mode 100644
index 0000000000..702a0dd4be
--- /dev/null
+++ b/src/slic3r/GUI/Widgets/LabeledStaticBox.cpp
@@ -0,0 +1,181 @@
+#include "LabeledStaticBox.hpp"
+#include "libslic3r/Utils.hpp"
+#include "../GUI.hpp"
+#include "../GUI_Utils.hpp"
+#include "Label.hpp"
+
+/*
+Fix label overflowing to inner frame
+Fix use elypsis if text too long
+setmin size
+*/
+
+LabeledStaticBox::LabeledStaticBox()
+ : state_handler(this)
+{
+ m_radius = 3;
+ m_border_width = 1;
+ m_font = Label::Head_14;
+ text_color = StateColor(
+ std::make_pair(0x363636, (int) StateColor::Normal),
+ std::make_pair(0x6B6B6B, (int) StateColor::Disabled)
+ );
+ background_color = StateColor(
+ std::make_pair(0xFFFFFF, (int) StateColor::Normal),
+ std::make_pair(0xF0F0F1, (int) StateColor::Disabled)
+ );
+ border_color = StateColor(
+ std::make_pair(0xDBDBDB, (int) StateColor::Normal),
+ std::make_pair(0xDBDBDB, (int) StateColor::Disabled)
+ );
+
+}
+
+LabeledStaticBox::LabeledStaticBox(
+ wxWindow* parent,
+ const wxString& label,
+ const wxPoint& pos,
+ const wxSize& size,
+ long style
+)
+ : LabeledStaticBox()
+{
+ Create(parent, label, pos, size, style);
+}
+
+bool LabeledStaticBox::Create(
+ wxWindow* parent,
+ const wxString& label,
+ const wxPoint& pos,
+ const wxSize& size,
+ long style
+)
+{
+ if (style & wxBORDER_NONE)
+ m_border_width = 0;
+ wxStaticBox::Create(parent, wxID_ANY, label, pos, size, style);
+#ifdef __WXOSX__
+ Slic3r::GUI::staticbox_remove_margin(this);
+#endif
+
+ m_label = label;
+ m_scale = FromDIP(100) / 100.f;
+ m_pos = this->GetPosition();
+
+ int tW,tH,descent,externalLeading;
+ GetTextExtent("Yy", &tW, &tH, &descent, &externalLeading, &m_font);
+ m_label_height = tH - externalLeading;
+
+ GetTextExtent(m_label, &tW, &tH, &descent, &externalLeading, &m_font);
+ m_label_width = tW;
+
+ Bind(wxEVT_PAINT,([this](wxPaintEvent e) {
+ wxPaintDC dc(this);
+ PickDC(dc);
+ }));
+
+ state_handler.attach({&text_color, &background_color, &border_color});
+ state_handler.update_binds();
+ #ifndef __WXOSX__
+ SetBackgroundStyle(wxBG_STYLE_PAINT);
+ #endif
+ SetBackgroundColour(background_color.colorForStates(state_handler.states()));
+ SetForegroundColour( text_color.colorForStates(state_handler.states()));
+ SetBorderColor( border_color.colorForStates(state_handler.states()));
+ SetCanFocus(false);
+ return true;
+}
+
+void LabeledStaticBox::SetCornerRadius(int radius)
+{
+ this->m_radius = radius;
+ Refresh();
+}
+
+void LabeledStaticBox::SetBorderWidth(int width)
+{
+ this->m_border_width = width;
+ Refresh();
+}
+
+void LabeledStaticBox::SetBorderColor(StateColor const &color)
+{
+ border_color = color;
+ state_handler.update_binds();
+ Refresh();
+}
+
+void LabeledStaticBox::SetFont(wxFont set_font)
+{
+ m_font = set_font;
+ Refresh();
+}
+
+bool LabeledStaticBox::Enable(bool enable)
+{
+ bool result = this->wxStaticBox::Enable(enable);
+ if (result) {
+ wxCommandEvent e(EVT_ENABLE_CHANGED);
+ e.SetEventObject(this);
+ GetEventHandler()->ProcessEvent(e);
+ this->SetForegroundColour( text_color.colorForStates(state_handler.states()));
+ this->SetBorderColor( border_color.colorForStates(state_handler.states()));
+ }
+ return result;
+}
+
+void LabeledStaticBox::PickDC(wxDC& dc)
+{
+#ifdef __WXMSW__
+ wxSize size = GetSize();
+ if (size.x <= 0 || size.y <= 0)
+ return;
+ wxMemoryDC memdc(&dc);
+ if (!memdc.IsOk()) {
+ DrawBorderAndLabel(dc);
+ return;
+ }
+ wxBitmap bmp(size.x, size.y);
+ memdc.SelectObject(bmp);
+ memdc.SetBackground(wxBrush(GetBackgroundColour()));
+ memdc.Clear();
+ {
+ wxGCDC dc2(memdc);
+ DrawBorderAndLabel(dc2);
+ }
+
+ memdc.SelectObject(wxNullBitmap);
+ dc.DrawBitmap(bmp, 0, 0);
+#else
+ DrawBorderAndLabel(dc);
+#endif
+}
+
+void LabeledStaticBox::DrawBorderAndLabel(wxDC& dc)
+{
+ // fill full background
+ dc.SetBackground(wxBrush(background_color.colorForStates(0)));
+ dc.Clear();
+
+ wxSize wSz = GetSize();
+
+ dc.SetBrush(*wxTRANSPARENT_BRUSH);
+ dc.SetPen(wxPen(border_color.colorForStates(state_handler.states()), m_border_width, wxSOLID));
+ dc.DrawRoundedRectangle( // Border
+ std::max(0, m_pos.x),
+ std::max(0, m_pos.y) + m_label_height * .5,
+ wSz.GetWidth(),
+ wSz.GetHeight() - m_label_height * .5,
+ m_radius * m_scale
+ );
+
+ if (!m_label.IsEmpty()) {
+ dc.SetFont(m_font);
+ dc.SetPen(*wxTRANSPARENT_PEN);
+ dc.SetBrush(wxBrush(background_color.colorForStates(0)));
+ dc.DrawRectangle(wxRect(7 * m_scale,0 , m_label_width + 7 * m_scale, m_label_height)); // text background
+ // NEEDFIX if text lenght > client size
+ dc.SetTextForeground(text_color.colorForStates(state_handler.states()));
+ dc.DrawText(m_label, wxPoint(10 * m_scale, 0));
+ }
+}
\ No newline at end of file
diff --git a/src/slic3r/GUI/Widgets/LabeledStaticBox.hpp b/src/slic3r/GUI/Widgets/LabeledStaticBox.hpp
new file mode 100644
index 0000000000..f18e632073
--- /dev/null
+++ b/src/slic3r/GUI/Widgets/LabeledStaticBox.hpp
@@ -0,0 +1,68 @@
+#ifndef slic3r_GUI_LabeledStaticBox_hpp_
+#define slic3r_GUI_LabeledStaticBox_hpp_
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "libslic3r/Utils.hpp"
+
+#include "slic3r/GUI/wxExtensions.hpp"
+#include "slic3r/GUI/Widgets/StateHandler.hpp"
+
+class LabeledStaticBox : public wxStaticBox
+{
+public:
+ LabeledStaticBox();
+
+ LabeledStaticBox(
+ wxWindow* parent,
+ const wxString& label = wxEmptyString,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = 0
+ );
+
+ bool Create(
+ wxWindow* parent,
+ const wxString& label = wxEmptyString,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = 0
+ );
+
+ void SetCornerRadius(int radius);
+
+ void SetBorderWidth(int width);
+
+ void SetBorderColor(StateColor const &color);
+
+ void SetFont(wxFont set_font);
+
+ bool Enable(bool enable) override;
+
+private:
+ void PickDC(wxDC& dc);
+ virtual void DrawBorderAndLabel(wxDC& dc);
+
+protected:
+ StateHandler state_handler;
+ StateColor text_color;
+ StateColor border_color;
+ StateColor background_color;
+ int m_border_width;
+ int m_radius;
+ wxFont m_font;
+ wxString m_label;
+ int m_label_height;
+ int m_label_width;
+ float m_scale;
+ wxPoint m_pos;
+};
+
+#endif // !slic3r_GUI_LabeledStaticBox_hpp_
\ No newline at end of file
diff --git a/src/slic3r/GUI/Widgets/RadioGroup.cpp b/src/slic3r/GUI/Widgets/RadioGroup.cpp
new file mode 100644
index 0000000000..879481bb63
--- /dev/null
+++ b/src/slic3r/GUI/Widgets/RadioGroup.cpp
@@ -0,0 +1,149 @@
+#include "RadioGroup.hpp"
+#include "Label.hpp"
+#include "StateColor.hpp"
+
+RadioGroup::RadioGroup(
+ wxWindow* parent,
+ const std::vector& labels,
+ long direction,
+ int row_col_limit
+)
+ : wxPanel(parent, wxID_ANY)
+ , m_on( this, "radio_on" , 18)
+ , m_off( this, "radio_off" , 18)
+ , m_on_hover( this, "radio_on_hover" , 18)
+ , m_off_hover(this, "radio_off_hover", 18)
+ , m_disabled( this, "radio_off_hover", 18)
+ , m_selectedIndex(0)
+ , m_focused(false)
+{
+ Create(parent, labels, direction, row_col_limit);
+}
+
+void RadioGroup::Create(
+ wxWindow* parent,
+ const std::vector& labels,
+ long direction, /* wxHORIZONTAL / wxVERTICAL */
+ int row_col_limit /* sets column/row count depends on direction. creates new row if wxHORIZONTAL used after limit reached */
+)
+{
+ m_labels = labels;
+ auto bg = parent->GetBackgroundColour();
+ this->SetBackgroundColour(bg);
+ auto bmp_size = m_on.GetBmpSize();
+ int item_count = m_labels.size();
+ int item_limit = row_col_limit < 0 ? 1 : row_col_limit > item_count ? item_count : row_col_limit;
+ int count = (int(item_count / item_limit) + (item_count % item_limit));
+ int rows = (direction & wxHORIZONTAL) ? item_limit : count;
+ int cols = (direction & wxHORIZONTAL) ? count : item_limit;
+ wxFlexGridSizer* f_sizer = new wxFlexGridSizer(rows, cols, 0, 0);
+
+ SetDoubleBuffered(true);
+ AcceptsFocusFromKeyboard();
+
+ Bind(wxEVT_SET_FOCUS ,([this](wxFocusEvent e) {m_focused = true ;Refresh(); e.Skip();}));
+ Bind(wxEVT_KILL_FOCUS,([this](wxFocusEvent e) {m_focused = false;Refresh(); e.Skip();}));
+ Bind(wxEVT_PAINT,([this](wxPaintEvent e) {
+ wxPaintDC dc(this);
+ dc.Clear();
+ dc.SetPen(wxPen(StateColor::darkModeColorFor(wxColour("#009688")), 1, wxPENSTYLE_SOLID));
+ dc.SetBrush(*wxTRANSPARENT_BRUSH);
+ dc.DrawRectangle(
+ m_focused ? wxRect(
+ m_radioButtons[GetSelection()]->GetRect().GetTopLeft() - wxPoint(1, 3),
+ m_labelButtons[GetSelection()]->GetRect().GetBottomRight() + wxPoint(4, 1)
+ ) : wxRect(0,0,0,0)
+ );
+ if (m_focused) // Required to take focus again since Refresh causing lossing focus
+ SetFocus();
+ }));
+ // DPIDialog's uses wxEVT_CHAR_HOOK
+ Bind(wxEVT_CHAR_HOOK, ([this](wxKeyEvent&e){
+ int k = e.GetKeyCode();
+ bool is_next = (k == WXK_DOWN || k == WXK_RIGHT);
+ bool is_prev = (k == WXK_LEFT || k == WXK_UP);
+ if(m_focused){
+ if (is_next) SelectNext();
+ else if (is_prev) SelectPrevious();
+ e.Skip(!(is_next || is_prev));
+ }else{
+ e.Skip();
+ }
+ }));
+
+ for (int i = 0; i < item_count; ++i){
+ auto rb = new wxStaticBitmap(this, wxID_ANY, m_off.bmp(), wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxNO_BORDER);
+ m_radioButtons.push_back(rb);
+ rb->Bind(wxEVT_LEFT_DOWN ,([this, i](wxMouseEvent e) {OnClick(i) ; e.Skip();}));
+ rb->Bind(wxEVT_ENTER_WINDOW,([this, i](wxMouseEvent e) {SetRadioIcon(i, true) ; e.Skip();}));
+ rb->Bind(wxEVT_LEAVE_WINDOW,([this, i](wxMouseEvent e) {
+ // prevent removing hover effect while switching between button and its text
+ if(wxFindWindowAtPoint(wxGetMousePosition())->GetId() != m_labelButtons[i]->GetId())
+ SetRadioIcon(i, false);
+ e.Skip();
+ }));
+
+ auto tx = new wxStaticText(this, wxID_ANY, " " + m_labels[i], wxDefaultPosition, wxDefaultSize);
+ tx->SetForegroundColour(wxColour("#363636"));
+ tx->SetFont(Label::Body_14);
+ m_labelButtons.push_back(tx);
+ tx->Bind(wxEVT_LEFT_DOWN ,([this, i](wxMouseEvent e) {OnClick(i) ; e.Skip();}));
+ tx->Bind(wxEVT_ENTER_WINDOW,([this, i](wxMouseEvent e) {SetRadioIcon(i, true) ; e.Skip();}));
+ tx->Bind(wxEVT_LEAVE_WINDOW,([this, i](wxMouseEvent e) {
+ // prevent removing hover effect while switching between button and its text
+ if(wxFindWindowAtPoint(wxGetMousePosition())->GetId() != m_radioButtons[i]->GetId())
+ SetRadioIcon(i, false);
+ e.Skip();
+ }));
+
+ wxBoxSizer* radio_sizer = new wxBoxSizer(wxHORIZONTAL);
+ radio_sizer->Add(rb, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 1);
+ radio_sizer->Add(tx, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, this->FromDIP(15));
+ f_sizer->Add(radio_sizer, 0, wxTOP | wxBOTTOM, this->FromDIP(4));
+ }
+ SetSelection(m_selectedIndex);
+ SetSizer(f_sizer);
+}
+
+void RadioGroup::OnClick(int i)
+{
+ m_focused = true; // prevents 2 time refresh
+ SetSelection(i);
+}
+
+void RadioGroup::SetSelection(int index)
+{
+ if (index >= 0 && index < static_cast(m_labels.size())){
+ m_selectedIndex = index;
+ for (size_t i = 0; i < m_labels.size(); ++i)
+ SetRadioIcon(i, HasFocus() && i == m_selectedIndex);
+
+ wxCommandEvent evt(wxEVT_COMMAND_RADIOBOX_SELECTED, GetId());
+ evt.SetInt(index);
+ evt.SetString(m_labels[index]);
+ GetEventHandler()->ProcessEvent(evt);
+
+ Refresh(); // refresh on every change
+ }
+}
+
+int RadioGroup::GetSelection()
+{
+ return m_selectedIndex;
+}
+
+void RadioGroup::SelectNext(bool focus)
+{
+ SetSelection(m_selectedIndex + 1 > (m_radioButtons.size() - 1) ? 0 : m_selectedIndex + 1);
+}
+
+void RadioGroup::SelectPrevious(bool focus)
+{
+ SetSelection(m_selectedIndex - 1 < 0 ? (m_radioButtons.size() - 1) : m_selectedIndex - 1);
+}
+
+void RadioGroup::SetRadioIcon(int i, bool hover)
+{
+ auto icon = m_selectedIndex == i ? (hover ? m_on_hover : m_on) : (hover ? m_off_hover : m_off);
+ m_radioButtons[i]->SetBitmap(icon.bmp());
+}
\ No newline at end of file
diff --git a/src/slic3r/GUI/Widgets/RadioGroup.hpp b/src/slic3r/GUI/Widgets/RadioGroup.hpp
new file mode 100644
index 0000000000..f3e14aa3aa
--- /dev/null
+++ b/src/slic3r/GUI/Widgets/RadioGroup.hpp
@@ -0,0 +1,63 @@
+#ifndef slic3r_GUI_RADIOGROUP_hpp_
+#define slic3r_GUI_RADIOGROUP_hpp_
+
+#include "../wxExtensions.hpp"
+
+#include
+#include
+#include
+
+#include
+#include
+
+class RadioGroup : public wxPanel
+{
+
+public:
+ RadioGroup();
+
+ RadioGroup(
+ wxWindow* parent,
+ const std::vector& labels = {"1", "2", "3"},
+ long direction = wxHORIZONTAL,
+ int row_col_limit = -1
+ );
+
+ void Create(
+ wxWindow* parent,
+ const std::vector& labels = {"1", "2", "3"},
+ long direction = wxHORIZONTAL,
+ int row_col_limit = -1
+ );
+
+ int GetSelection();
+
+ void SetSelection(int index);
+
+ void SelectNext(bool focus = true);
+
+ void SelectPrevious(bool focus = true);
+
+private:
+ std::vector m_labels;
+ std::vector m_radioButtons;
+ std::vector m_labelButtons;
+
+ int m_selectedIndex;
+ bool m_focused;
+ ScalableBitmap m_on;
+ ScalableBitmap m_off;
+ ScalableBitmap m_on_hover;
+ ScalableBitmap m_off_hover;
+ ScalableBitmap m_disabled;
+
+ void OnClick(int i);
+
+ void UpdateFocus(bool focus);
+
+ void SetRadioIcon(int i, bool hover);
+
+ void OnKeyDown(wxKeyEvent& e);
+};
+
+#endif // !slic3r_GUI_RADIOGROUP_hpp_
diff --git a/src/slic3r/GUI/calib_dlg.cpp b/src/slic3r/GUI/calib_dlg.cpp
index 089e664eb1..ee1ce3e23c 100644
--- a/src/slic3r/GUI/calib_dlg.cpp
+++ b/src/slic3r/GUI/calib_dlg.cpp
@@ -6,6 +6,7 @@
#include "MainFrame.hpp"
#include "Widgets/DialogButtons.hpp"
#include
+
namespace Slic3r { namespace GUI {
namespace {
@@ -19,102 +20,99 @@ void ParseStringValues(std::string str, std::vector &vec)
[](int x){ return x > 0; });
}
+int GetTextMax(wxWindow* parent, const std::vector& labels)
+{
+ wxSize text_size;
+ for (wxString label : labels)
+ text_size.IncTo(parent->GetTextExtent(label));
+ return text_size.x + parent->FromDIP(10);
}
-wxBoxSizer* create_item_checkbox(wxString title, wxWindow* parent, bool* value, CheckBox*& checkbox)
-{
- wxBoxSizer* m_sizer_checkbox = new wxBoxSizer(wxHORIZONTAL);
-
- m_sizer_checkbox->Add(0, 0, 0, wxEXPAND | wxLEFT, 5);
-
- checkbox = new ::CheckBox(parent);
- m_sizer_checkbox->Add(checkbox, 0, wxALIGN_CENTER, 0);
- m_sizer_checkbox->Add(0, 0, 0, wxEXPAND | wxLEFT, 8);
-
- auto checkbox_title = new wxStaticText(parent, wxID_ANY, title, wxDefaultPosition, wxSize(-1, -1), 0);
- checkbox_title->SetForegroundColour(wxColour(144, 144, 144));
- checkbox_title->SetFont(::Label::Body_13);
- checkbox_title->Wrap(-1);
- m_sizer_checkbox->Add(checkbox_title, 0, wxALIGN_CENTER | wxALL, 3);
-
- checkbox->SetValue(true);
-
- checkbox->Bind(wxEVT_TOGGLEBUTTON, [parent, checkbox, value](wxCommandEvent& e) {
- (*value) = (*value) ? false : true;
- e.Skip();
- });
-
- return m_sizer_checkbox;
}
PA_Calibration_Dlg::PA_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plater* plater)
- : DPIDialog(parent, id, _L("PA Calibration"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER), m_plater(plater)
+ : DPIDialog(parent, id, _L("PA Calibration"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE), m_plater(plater)
{
+ SetBackgroundColour(*wxWHITE); // make sure background color set for dialog
+ SetForegroundColour(wxColour("#363636"));
+ SetFont(Label::Body_14);
+
wxBoxSizer* v_sizer = new wxBoxSizer(wxVERTICAL);
SetSizer(v_sizer);
- wxBoxSizer* choice_sizer = new wxBoxSizer(wxHORIZONTAL);
- wxString m_rbExtruderTypeChoices[] = { _L("DDE"), _L("Bowden") };
- int m_rbExtruderTypeNChoices = sizeof(m_rbExtruderTypeChoices) / sizeof(wxString);
- m_rbExtruderType = new wxRadioBox(this, wxID_ANY, _L("Extruder type"), wxDefaultPosition, wxDefaultSize, m_rbExtruderTypeNChoices, m_rbExtruderTypeChoices, 2, wxRA_SPECIFY_COLS);
- m_rbExtruderType->SetSelection(0);
- choice_sizer->Add(m_rbExtruderType, 0, wxALL, 5);
- choice_sizer->Add(FromDIP(5), 0, 0, wxEXPAND, 5);
- wxString m_rbMethodChoices[] = { _L("PA Tower"), _L("PA Line"), _L("PA Pattern") };
- int m_rbMethodNChoices = sizeof(m_rbMethodChoices) / sizeof(wxString);
- m_rbMethod = new wxRadioBox(this, wxID_ANY, _L("Method"), wxDefaultPosition, wxDefaultSize, m_rbMethodNChoices, m_rbMethodChoices, 2, wxRA_SPECIFY_COLS);
- m_rbMethod->SetSelection(0);
- choice_sizer->Add(m_rbMethod, 0, wxALL, 5);
+ // Extruder type Radio Group
+ auto labeled_box_type = new LabeledStaticBox(this, _L("Extruder type"));
+ auto type_box = new wxStaticBoxSizer(labeled_box_type, wxHORIZONTAL);
- v_sizer->Add(choice_sizer);
+ m_rbExtruderType = new RadioGroup(this, {_L("DDE"), _L("Bowden")}, wxHORIZONTAL);
+ type_box->Add(m_rbExtruderType, 0, wxALL | wxEXPAND, FromDIP(4));
+ v_sizer->Add(type_box, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
+
+ // Method Radio Group
+ auto labeled_box_method = new LabeledStaticBox(this, _L("Method"));
+ auto method_box = new wxStaticBoxSizer(labeled_box_method, wxHORIZONTAL);
+
+ m_rbMethod = new RadioGroup(this, { _L("PA Tower"), _L("PA Line"), _L("PA Pattern") }, wxHORIZONTAL);
+ method_box->Add(m_rbMethod, 0, wxALL | wxEXPAND, FromDIP(4));
+ v_sizer->Add(method_box, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
// Settings
- //
- wxString start_pa_str = _L("Start PA: ");
- wxString end_pa_str = _L("End PA: ");
- wxString PA_step_str = _L("PA step: ");
- wxString sp_accel_str = _L("Accelerations: ");
- wxString sp_speed_str = _L("Speeds: ");
- auto text_size = wxWindow::GetTextExtent(start_pa_str);
- text_size.IncTo(wxWindow::GetTextExtent(end_pa_str));
- text_size.IncTo(wxWindow::GetTextExtent(PA_step_str));
- text_size.IncTo(wxWindow::GetTextExtent(sp_accel_str));
- text_size.IncTo(wxWindow::GetTextExtent(sp_speed_str));
- text_size.x = text_size.x * 1.1;
- wxStaticBoxSizer* settings_sizer = new wxStaticBoxSizer(wxVERTICAL, this, _L("Settings"));
+ wxString start_pa_str = _L("Start PA: ");
+ wxString end_pa_str = _L("End PA: ");
+ wxString PA_step_str = _L("PA step: ");
+ wxString sp_accel_str = _L("Accelerations: ");
+ wxString sp_speed_str = _L("Speeds: ");
+ wxString cb_print_no_str = _L("Print numbers");
+
+ int text_max = GetTextMax(this, std::vector{start_pa_str, end_pa_str, PA_step_str, sp_accel_str, sp_speed_str, cb_print_no_str});
+
+ auto st_size = FromDIP(wxSize(text_max, -1));
+ auto ti_size = FromDIP(wxSize(120, -1));
+
+ LabeledStaticBox* stb = new LabeledStaticBox(this, _L("Settings"));
+ wxStaticBoxSizer* settings_sizer = new wxStaticBoxSizer(stb, wxVERTICAL);
+
+ settings_sizer->AddSpacer(FromDIP(5));
- auto st_size = FromDIP(wxSize(text_size.x, -1));
- auto ti_size = FromDIP(wxSize(140, -1));
// start PA
auto start_PA_sizer = new wxBoxSizer(wxHORIZONTAL);
auto start_pa_text = new wxStaticText(this, wxID_ANY, start_pa_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiStartPA = new TextInput(this, "", "", "", wxDefaultPosition, ti_size, wxTE_CENTRE | wxTE_PROCESS_ENTER);
+ m_tiStartPA = new TextInput(this, "", "", "", wxDefaultPosition, ti_size, wxTE_PROCESS_ENTER);
m_tiStartPA->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
-
- start_PA_sizer->Add(start_pa_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- start_PA_sizer->Add(m_tiStartPA, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(start_PA_sizer);
+ start_PA_sizer->Add(start_pa_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ start_PA_sizer->Add(m_tiStartPA , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(start_PA_sizer, 0, wxLEFT, FromDIP(3));
// end PA
auto end_PA_sizer = new wxBoxSizer(wxHORIZONTAL);
auto end_pa_text = new wxStaticText(this, wxID_ANY, end_pa_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiEndPA = new TextInput(this, "", "", "", wxDefaultPosition, ti_size, wxTE_CENTRE | wxTE_PROCESS_ENTER);
+ m_tiEndPA = new TextInput(this, "", "", "", wxDefaultPosition, ti_size, wxTE_PROCESS_ENTER);
m_tiStartPA->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- end_PA_sizer->Add(end_pa_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- end_PA_sizer->Add(m_tiEndPA, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(end_PA_sizer);
+ end_PA_sizer->Add(end_pa_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ end_PA_sizer->Add(m_tiEndPA , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(end_PA_sizer, 0, wxLEFT, FromDIP(3));
// PA step
auto PA_step_sizer = new wxBoxSizer(wxHORIZONTAL);
auto PA_step_text = new wxStaticText(this, wxID_ANY, PA_step_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiPAStep = new TextInput(this, "", "", "", wxDefaultPosition, ti_size, wxTE_CENTRE | wxTE_PROCESS_ENTER);
+ m_tiPAStep = new TextInput(this, "", "", "", wxDefaultPosition, ti_size, wxTE_PROCESS_ENTER);
m_tiStartPA->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- PA_step_sizer->Add(PA_step_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- PA_step_sizer->Add(m_tiPAStep, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(PA_step_sizer);
+ PA_step_sizer->Add(PA_step_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ PA_step_sizer->Add(m_tiPAStep , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(PA_step_sizer, 0, wxLEFT, FromDIP(3));
- settings_sizer->Add(create_item_checkbox(_L("Print numbers"), this, &m_params.print_numbers, m_cbPrintNum));
+ // Print Numbers
+ wxBoxSizer* cb_sizer = new wxBoxSizer(wxHORIZONTAL);
+ auto cb_title = new wxStaticText(this, wxID_ANY, cb_print_no_str, wxDefaultPosition, st_size, 0);
+ m_cbPrintNum = new CheckBox(this);
m_cbPrintNum->SetValue(false);
+ m_cbPrintNum->Bind(wxEVT_TOGGLEBUTTON, [this](wxCommandEvent& e) {
+ (m_params.print_numbers) = (m_params.print_numbers) ? false : true;
+ e.Skip();
+ });
+ cb_sizer->Add(cb_title , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ cb_sizer->Add(m_cbPrintNum , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(cb_sizer, 0, wxLEFT | wxTOP | wxBOTTOM, FromDIP(3));
wxTextValidator val_list_validator(wxFILTER_INCLUDE_CHAR_LIST);
val_list_validator.SetCharIncludes(wxString("0123456789,"));
@@ -124,21 +122,21 @@ PA_Calibration_Dlg::PA_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plater*
m_tiBMAccels = new TextInput(this, "", "", "", wxDefaultPosition, ti_size, wxTE_PROCESS_ENTER);
m_tiBMAccels->SetToolTip(_L("Comma-separated list of printing accelerations"));
m_tiBMAccels->GetTextCtrl()->SetValidator(val_list_validator);
- sp_accel_sizer->Add(sp_accel_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- sp_accel_sizer->Add(m_tiBMAccels, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(sp_accel_sizer);
+ sp_accel_sizer->Add(sp_accel_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ sp_accel_sizer->Add(m_tiBMAccels , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(sp_accel_sizer, 0, wxLEFT, FromDIP(3));
auto sp_speed_sizer = new wxBoxSizer(wxHORIZONTAL);
auto sp_speed_text = new wxStaticText(this, wxID_ANY, sp_speed_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
m_tiBMSpeeds = new TextInput(this, "", "", "", wxDefaultPosition, ti_size, wxTE_PROCESS_ENTER);
m_tiBMSpeeds->SetToolTip(_L("Comma-separated list of printing speeds"));
m_tiBMSpeeds->GetTextCtrl()->SetValidator(val_list_validator);
- sp_speed_sizer->Add(sp_speed_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- sp_speed_sizer->Add(m_tiBMSpeeds, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(sp_speed_sizer);
+ sp_speed_sizer->Add(sp_speed_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ sp_speed_sizer->Add(m_tiBMSpeeds , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(sp_speed_sizer, 0, wxLEFT, FromDIP(3));
- v_sizer->Add(settings_sizer);
- v_sizer->Add(0, FromDIP(10), 0, wxEXPAND, 5);
+ v_sizer->Add(settings_sizer, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
+ v_sizer->AddSpacer(FromDIP(5));
auto dlg_btns = new DialogButtons(this, {"OK"});
v_sizer->Add(dlg_btns , 0, wxEXPAND);
@@ -151,7 +149,8 @@ PA_Calibration_Dlg::PA_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plater*
m_rbExtruderType->Connect(wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler(PA_Calibration_Dlg::on_extruder_type_changed), NULL, this);
m_rbMethod->Connect(wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler(PA_Calibration_Dlg::on_method_changed), NULL, this);
this->Connect(wxEVT_SHOW, wxShowEventHandler(PA_Calibration_Dlg::on_show));
- //wxGetApp().UpdateDlgDarkUI(this);
+
+ wxGetApp().UpdateDlgDarkUI(this);
Layout();
Fit();
@@ -273,67 +272,69 @@ enum FILAMENT_TYPE : int
};
Temp_Calibration_Dlg::Temp_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plater* plater)
- : DPIDialog(parent, id, _L("Temperature calibration"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER), m_plater(plater)
+ : DPIDialog(parent, id, _L("Temperature calibration"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE), m_plater(plater)
{
+ SetBackgroundColour(*wxWHITE); // make sure background color set for dialog
+ SetForegroundColour(wxColour("#363636"));
+ SetFont(Label::Body_14);
+
wxBoxSizer* v_sizer = new wxBoxSizer(wxVERTICAL);
SetSizer(v_sizer);
- wxBoxSizer* choice_sizer = new wxBoxSizer(wxHORIZONTAL);
- wxString m_rbFilamentTypeChoices[] = { _L("PLA"), _L("ABS/ASA"), _L("PETG"), _L("PCTG"), _L("TPU"), _L("PA-CF"), _L("PET-CF"), _L("Custom") };
- int m_rbFilamentTypeNChoices = sizeof(m_rbFilamentTypeChoices) / sizeof(wxString);
- m_rbFilamentType = new wxRadioBox(this, wxID_ANY, _L("Filament type"), wxDefaultPosition, wxDefaultSize, m_rbFilamentTypeNChoices, m_rbFilamentTypeChoices, 2, wxRA_SPECIFY_COLS);
- m_rbFilamentType->SetSelection(0);
- m_rbFilamentType->Select(0);
- choice_sizer->Add(m_rbFilamentType, 0, wxALL, 5);
- choice_sizer->Add(FromDIP(5), 0, 0, wxEXPAND, 5);
- wxString m_rbMethodChoices[] = { _L("PA Tower"), _L("PA Line") };
+ // Method Radio Group
+ auto labeled_box_method = new LabeledStaticBox(this, _L("Filament type"));
+ auto method_box = new wxStaticBoxSizer(labeled_box_method, wxHORIZONTAL);
- v_sizer->Add(choice_sizer);
+ m_rbFilamentType = new RadioGroup(this, { _L("PLA"), _L("ABS/ASA"), _L("PETG"), _L("PCTG"), _L("TPU"), _L("PA-CF"), _L("PET-CF"), _L("Custom") }, wxVERTICAL, 2);
+ method_box->Add(m_rbFilamentType, 0, wxALL | wxEXPAND, FromDIP(4));
+ v_sizer->Add(method_box, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
// Settings
- //
wxString start_temp_str = _L("Start temp: ");
- wxString end_temp_str = _L("End temp: ");
- wxString temp_step_str = _L("Temp step: ");
- auto text_size = wxWindow::GetTextExtent(start_temp_str);
- text_size.IncTo(wxWindow::GetTextExtent(end_temp_str));
- text_size.IncTo(wxWindow::GetTextExtent(temp_step_str));
- text_size.x = text_size.x * 1.5;
- wxStaticBoxSizer* settings_sizer = new wxStaticBoxSizer(wxVERTICAL, this, _L("Settings"));
+ wxString end_temp_str = _L("End temp: ");
+ wxString temp_step_str = _L("Temp step: ");
+ int text_max = GetTextMax(this, std::vector{start_temp_str, end_temp_str, temp_step_str});
+
+ auto st_size = FromDIP(wxSize(text_max, -1));
+ auto ti_size = FromDIP(wxSize(120, -1));
+
+ LabeledStaticBox* stb = new LabeledStaticBox(this, _L("Settings"));
+ wxStaticBoxSizer* settings_sizer = new wxStaticBoxSizer(stb, wxVERTICAL);
+
+ settings_sizer->AddSpacer(FromDIP(5));
- auto st_size = FromDIP(wxSize(text_size.x, -1));
- auto ti_size = FromDIP(wxSize(90, -1));
// start temp
auto start_temp_sizer = new wxBoxSizer(wxHORIZONTAL);
auto start_temp_text = new wxStaticText(this, wxID_ANY, start_temp_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiStart = new TextInput(this, std::to_string(230), _L("\u2103"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ m_tiStart = new TextInput(this, std::to_string(230), _L("\u2103"), "", wxDefaultPosition, ti_size);
m_tiStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
-
- start_temp_sizer->Add(start_temp_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- start_temp_sizer->Add(m_tiStart, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(start_temp_sizer);
+ start_temp_sizer->Add(start_temp_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ start_temp_sizer->Add(m_tiStart , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(start_temp_sizer, 0, wxLEFT, FromDIP(3));
// end temp
auto end_temp_sizer = new wxBoxSizer(wxHORIZONTAL);
auto end_temp_text = new wxStaticText(this, wxID_ANY, end_temp_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiEnd = new TextInput(this, std::to_string(190), _L("\u2103"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ m_tiEnd = new TextInput(this, std::to_string(190), _L("\u2103"), "", wxDefaultPosition, ti_size);
m_tiStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- end_temp_sizer->Add(end_temp_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- end_temp_sizer->Add(m_tiEnd, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(end_temp_sizer);
+ end_temp_sizer->Add(end_temp_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ end_temp_sizer->Add(m_tiEnd , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(end_temp_sizer, 0, wxLEFT, FromDIP(3));
// temp step
auto temp_step_sizer = new wxBoxSizer(wxHORIZONTAL);
auto temp_step_text = new wxStaticText(this, wxID_ANY, temp_step_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiStep = new TextInput(this, wxString::FromDouble(5),_L("\u2103"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ m_tiStep = new TextInput(this, wxString::FromDouble(5),_L("\u2103"), "", wxDefaultPosition, ti_size);
m_tiStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
m_tiStep->Enable(false);
- temp_step_sizer->Add(temp_step_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- temp_step_sizer->Add(m_tiStep, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(temp_step_sizer);
+ temp_step_sizer->Add(temp_step_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ temp_step_sizer->Add(m_tiStep , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(temp_step_sizer, 0, wxLEFT, FromDIP(3));
- v_sizer->Add(settings_sizer);
- v_sizer->Add(0, FromDIP(10), 0, wxEXPAND, 5);
+ settings_sizer->AddSpacer(FromDIP(5));
+
+ v_sizer->Add(settings_sizer, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
+ v_sizer->AddSpacer(FromDIP(5));
auto dlg_btns = new DialogButtons(this, {"OK"});
v_sizer->Add(dlg_btns , 0, wxEXPAND);
@@ -342,7 +343,7 @@ Temp_Calibration_Dlg::Temp_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plat
m_rbFilamentType->Connect(wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler(Temp_Calibration_Dlg::on_filament_type_changed), NULL, this);
- //wxGetApp().UpdateDlgDarkUI(this);
+ wxGetApp().UpdateDlgDarkUI(this);
Layout();
Fit();
@@ -452,64 +453,66 @@ void Temp_Calibration_Dlg::on_dpi_changed(const wxRect& suggested_rect) {
//
MaxVolumetricSpeed_Test_Dlg::MaxVolumetricSpeed_Test_Dlg(wxWindow* parent, wxWindowID id, Plater* plater)
- : DPIDialog(parent, id, _L("Max volumetric speed test"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER), m_plater(plater)
+ : DPIDialog(parent, id, _L("Max volumetric speed test"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE), m_plater(plater)
{
+ SetBackgroundColour(*wxWHITE); // make sure background color set for dialog
+ SetForegroundColour(wxColour("#363636"));
+ SetFont(Label::Body_14);
+
wxBoxSizer* v_sizer = new wxBoxSizer(wxVERTICAL);
SetSizer(v_sizer);
// Settings
- //
wxString start_vol_str = _L("Start volumetric speed: ");
- wxString end_vol_str = _L("End volumetric speed: ");
- wxString vol_step_str = _L("step: ");
- auto text_size = wxWindow::GetTextExtent(start_vol_str);
- text_size.IncTo(wxWindow::GetTextExtent(end_vol_str));
- text_size.IncTo(wxWindow::GetTextExtent(vol_step_str));
- text_size.x = text_size.x * 1.5;
- wxStaticBoxSizer* settings_sizer = new wxStaticBoxSizer(wxVERTICAL, this, _L("Settings"));
+ wxString end_vol_str = _L("End volumetric speed: ");
+ wxString vol_step_str = _L("Step") + ": ";
+ int text_max = GetTextMax(this, std::vector{start_vol_str, end_vol_str, vol_step_str});
- wxString input_str = _L("mm³/s");
- auto input_text_size = wxWindow::GetTextExtent(input_str);
+ auto st_size = FromDIP(wxSize(text_max, -1));
+ auto ti_size = FromDIP(wxSize(120, -1));
+
+ LabeledStaticBox* stb = new LabeledStaticBox(this, _L("Settings"));
+ wxStaticBoxSizer* settings_sizer = new wxStaticBoxSizer(stb, wxVERTICAL);
+
+ settings_sizer->AddSpacer(FromDIP(5));
- auto st_size = FromDIP(wxSize(text_size.x, -1));
- auto ti_size = FromDIP(wxSize(input_text_size.x + 90, -1));
// start vol
auto start_vol_sizer = new wxBoxSizer(wxHORIZONTAL);
auto start_vol_text = new wxStaticText(this, wxID_ANY, start_vol_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiStart = new TextInput(this, std::to_string(5), _L("mm³/s"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ m_tiStart = new TextInput(this, std::to_string(5), _L("mm³/s"), "", wxDefaultPosition, ti_size);
m_tiStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- start_vol_sizer->Add(start_vol_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- start_vol_sizer->Add(m_tiStart, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(start_vol_sizer);
+ start_vol_sizer->Add(start_vol_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ start_vol_sizer->Add(m_tiStart , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(start_vol_sizer, 0, wxLEFT, FromDIP(3));
// end vol
auto end_vol_sizer = new wxBoxSizer(wxHORIZONTAL);
auto end_vol_text = new wxStaticText(this, wxID_ANY, end_vol_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiEnd = new TextInput(this, std::to_string(20), _L("mm³/s"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ m_tiEnd = new TextInput(this, std::to_string(20), _L("mm³/s"), "", wxDefaultPosition, ti_size);
m_tiStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- end_vol_sizer->Add(end_vol_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- end_vol_sizer->Add(m_tiEnd, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(end_vol_sizer);
+ end_vol_sizer->Add(end_vol_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ end_vol_sizer->Add(m_tiEnd , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(end_vol_sizer, 0, wxLEFT, FromDIP(3));
// vol step
auto vol_step_sizer = new wxBoxSizer(wxHORIZONTAL);
auto vol_step_text = new wxStaticText(this, wxID_ANY, vol_step_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiStep = new TextInput(this, wxString::FromDouble(0.5), _L("mm³/s"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ m_tiStep = new TextInput(this, wxString::FromDouble(0.5), _L("mm³/s"), "", wxDefaultPosition, ti_size);
m_tiStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- vol_step_sizer->Add(vol_step_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- vol_step_sizer->Add(m_tiStep, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(vol_step_sizer);
+ vol_step_sizer->Add(vol_step_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ vol_step_sizer->Add(m_tiStep , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(vol_step_sizer, 0, wxLEFT, FromDIP(3));
- v_sizer->Add(settings_sizer);
- v_sizer->Add(0, FromDIP(10), 0, wxEXPAND, 5);
+ v_sizer->Add(settings_sizer, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
+ v_sizer->AddSpacer(FromDIP(5));
auto dlg_btns = new DialogButtons(this, {"OK"});
v_sizer->Add(dlg_btns , 0, wxEXPAND);
dlg_btns->GetOK()->Bind(wxEVT_BUTTON, &MaxVolumetricSpeed_Test_Dlg::on_start, this);
- //wxGetApp().UpdateDlgDarkUI(this);
+ wxGetApp().UpdateDlgDarkUI(this);
Layout();
Fit();
@@ -548,65 +551,69 @@ void MaxVolumetricSpeed_Test_Dlg::on_dpi_changed(const wxRect& suggested_rect) {
//
VFA_Test_Dlg::VFA_Test_Dlg(wxWindow* parent, wxWindowID id, Plater* plater)
- : DPIDialog(parent, id, _L("VFA test"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
+ : DPIDialog(parent, id, _L("VFA test"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE)
, m_plater(plater)
{
+ SetBackgroundColour(*wxWHITE); // make sure background color set for dialog
+ SetForegroundColour(wxColour("#363636"));
+ SetFont(Label::Body_14);
+
wxBoxSizer* v_sizer = new wxBoxSizer(wxVERTICAL);
SetSizer(v_sizer);
// Settings
- //
- wxString start_str = _L("Start speed: ");
- wxString end_vol_str = _L("End speed: ");
- wxString vol_step_str = _L("step: ");
- auto text_size = wxWindow::GetTextExtent(start_str);
- text_size.IncTo(wxWindow::GetTextExtent(end_vol_str));
- text_size.IncTo(wxWindow::GetTextExtent(vol_step_str));
- text_size.x = text_size.x * 1.5;
- wxStaticBoxSizer* settings_sizer = new wxStaticBoxSizer(wxVERTICAL, this, _L("Settings"));
+ wxString start_str = _L("Start speed: ");
+ wxString end_vol_str = _L("End speed: ");
+ wxString vol_step_str = _L("Step") + ": ";
+ int text_max = GetTextMax(this, std::vector{start_str, end_vol_str, vol_step_str});
- wxString input_str = _L("mm/s");
- auto input_text_size = wxWindow::GetTextExtent(input_str);
+ auto st_size = FromDIP(wxSize(text_max, -1));
+ auto ti_size = FromDIP(wxSize(120, -1));
+
+ LabeledStaticBox* stb = new LabeledStaticBox(this, _L("Settings"));
+ wxStaticBoxSizer* settings_sizer = new wxStaticBoxSizer(stb, wxVERTICAL);
+
+ settings_sizer->AddSpacer(FromDIP(5));
- auto st_size = FromDIP(wxSize(text_size.x, -1));
- auto ti_size = FromDIP(wxSize(input_text_size.x + 90, -1));
// start vol
auto start_vol_sizer = new wxBoxSizer(wxHORIZONTAL);
auto start_vol_text = new wxStaticText(this, wxID_ANY, start_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiStart = new TextInput(this, std::to_string(40), _L("mm/s"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ m_tiStart = new TextInput(this, std::to_string(40), _L("mm/s"), "", wxDefaultPosition, ti_size);
m_tiStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- start_vol_sizer->Add(start_vol_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- start_vol_sizer->Add(m_tiStart, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(start_vol_sizer);
+ start_vol_sizer->Add(start_vol_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ start_vol_sizer->Add(m_tiStart , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(start_vol_sizer, 0, wxLEFT, FromDIP(3));
// end vol
auto end_vol_sizer = new wxBoxSizer(wxHORIZONTAL);
auto end_vol_text = new wxStaticText(this, wxID_ANY, end_vol_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiEnd = new TextInput(this, std::to_string(200), _L("mm/s"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ m_tiEnd = new TextInput(this, std::to_string(200), _L("mm/s"), "", wxDefaultPosition, ti_size);
m_tiStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- end_vol_sizer->Add(end_vol_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- end_vol_sizer->Add(m_tiEnd, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(end_vol_sizer);
+ end_vol_sizer->Add(end_vol_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ end_vol_sizer->Add(m_tiEnd , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(end_vol_sizer, 0, wxLEFT, FromDIP(3));
// vol step
auto vol_step_sizer = new wxBoxSizer(wxHORIZONTAL);
auto vol_step_text = new wxStaticText(this, wxID_ANY, vol_step_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiStep = new TextInput(this, wxString::FromDouble(10), _L("mm/s"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ m_tiStep = new TextInput(this, wxString::FromDouble(10), _L("mm/s"), "", wxDefaultPosition, ti_size);
m_tiStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- vol_step_sizer->Add(vol_step_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- vol_step_sizer->Add(m_tiStep, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(vol_step_sizer);
+ vol_step_sizer->Add(vol_step_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ vol_step_sizer->Add(m_tiStep , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(vol_step_sizer, 0, wxLEFT, FromDIP(3));
- v_sizer->Add(settings_sizer);
- v_sizer->Add(0, FromDIP(10), 0, wxEXPAND, 5);
+ settings_sizer->AddSpacer(FromDIP(5));
+
+ v_sizer->Add(settings_sizer, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
+ v_sizer->AddSpacer(FromDIP(5));
auto dlg_btns = new DialogButtons(this, {"OK"});
v_sizer->Add(dlg_btns , 0, wxEXPAND);
dlg_btns->GetOK()->Bind(wxEVT_BUTTON, &VFA_Test_Dlg::on_start, this);
- // wxGetApp().UpdateDlgDarkUI(this);
+ wxGetApp().UpdateDlgDarkUI(this);
Layout();
Fit();
@@ -647,64 +654,68 @@ void VFA_Test_Dlg::on_dpi_changed(const wxRect& suggested_rect)
//
Retraction_Test_Dlg::Retraction_Test_Dlg(wxWindow* parent, wxWindowID id, Plater* plater)
- : DPIDialog(parent, id, _L("Retraction test"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER), m_plater(plater)
+ : DPIDialog(parent, id, _L("Retraction test"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE), m_plater(plater)
{
+ SetBackgroundColour(*wxWHITE); // make sure background color set for dialog
+ SetForegroundColour(wxColour("#363636"));
+ SetFont(Label::Body_14);
+
wxBoxSizer* v_sizer = new wxBoxSizer(wxVERTICAL);
SetSizer(v_sizer);
// Settings
- //
wxString start_length_str = _L("Start retraction length: ");
- wxString end_length_str = _L("End retraction length: ");
- wxString length_step_str = _L("step: ");
- auto text_size = wxWindow::GetTextExtent(start_length_str);
- text_size.IncTo(wxWindow::GetTextExtent(end_length_str));
- text_size.IncTo(wxWindow::GetTextExtent(length_step_str));
- text_size.x = text_size.x * 1.5;
- wxStaticBoxSizer* settings_sizer = new wxStaticBoxSizer(wxVERTICAL, this, _L("Settings"));
+ wxString end_length_str = _L("End retraction length: ");
+ wxString length_step_str = _L("Step") + ": ";
+ int text_max = GetTextMax(this, std::vector{start_length_str, end_length_str, length_step_str});
- wxString input_text_str = _L("mm/mm");
- auto input_text_size = wxWindow::GetTextExtent(input_text_str);
+ auto st_size = FromDIP(wxSize(text_max, -1));
+ auto ti_size = FromDIP(wxSize(120, -1));
+
+ LabeledStaticBox* stb = new LabeledStaticBox(this, _L("Settings"));
+ wxStaticBoxSizer* settings_sizer = new wxStaticBoxSizer(stb, wxVERTICAL);
+
+ settings_sizer->AddSpacer(FromDIP(5));
- auto st_size = FromDIP(wxSize(text_size.x, -1));
- auto ti_size = FromDIP(wxSize(input_text_size.x + 90, -1));
// start length
auto start_length_sizer = new wxBoxSizer(wxHORIZONTAL);
auto start_length_text = new wxStaticText(this, wxID_ANY, start_length_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiStart = new TextInput(this, std::to_string(0), _L("mm"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ m_tiStart = new TextInput(this, std::to_string(0), _L("mm"), "", wxDefaultPosition, ti_size);
m_tiStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- start_length_sizer->Add(start_length_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- start_length_sizer->Add(m_tiStart, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(start_length_sizer);
+ start_length_sizer->Add(start_length_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ start_length_sizer->Add(m_tiStart , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(start_length_sizer, 0, wxLEFT, FromDIP(3));
// end length
auto end_length_sizer = new wxBoxSizer(wxHORIZONTAL);
auto end_length_text = new wxStaticText(this, wxID_ANY, end_length_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiEnd = new TextInput(this, std::to_string(2), _L("mm"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ m_tiEnd = new TextInput(this, std::to_string(2), _L("mm"), "", wxDefaultPosition, ti_size);
m_tiStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- end_length_sizer->Add(end_length_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- end_length_sizer->Add(m_tiEnd, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(end_length_sizer);
+ end_length_sizer->Add(end_length_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ end_length_sizer->Add(m_tiEnd , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(end_length_sizer, 0, wxLEFT, FromDIP(3));
// length step
auto length_step_sizer = new wxBoxSizer(wxHORIZONTAL);
auto length_step_text = new wxStaticText(this, wxID_ANY, length_step_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiStep = new TextInput(this, wxString::FromDouble(0.1), _L("mm/mm"), "", wxDefaultPosition, ti_size, wxTE_RIGHT);
+ m_tiStep = new TextInput(this, wxString::FromDouble(0.1), _L("mm"), "", wxDefaultPosition, ti_size);
m_tiStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- length_step_sizer->Add(length_step_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- length_step_sizer->Add(m_tiStep, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(length_step_sizer);
+ length_step_sizer->Add(length_step_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ length_step_sizer->Add(m_tiStep , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(length_step_sizer, 0, wxLEFT, FromDIP(3));
- v_sizer->Add(settings_sizer);
- v_sizer->Add(0, FromDIP(10), 0, wxEXPAND, 5);
+ settings_sizer->AddSpacer(FromDIP(5));
+
+ v_sizer->Add(settings_sizer, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
+ v_sizer->AddSpacer(FromDIP(5));
auto dlg_btns = new DialogButtons(this, {"OK"});
v_sizer->Add(dlg_btns , 0, wxEXPAND);
dlg_btns->GetOK()->Bind(wxEVT_BUTTON, &Retraction_Test_Dlg::on_start, this);
- //wxGetApp().UpdateDlgDarkUI(this);
+ wxGetApp().UpdateDlgDarkUI(this);
Layout();
Fit();
@@ -742,89 +753,91 @@ void Retraction_Test_Dlg::on_dpi_changed(const wxRect& suggested_rect) {
//
Input_Shaping_Freq_Test_Dlg::Input_Shaping_Freq_Test_Dlg(wxWindow* parent, wxWindowID id, Plater* plater)
- : DPIDialog(parent, id, _L("Input shaping Frequency test"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER), m_plater(plater)
+ : DPIDialog(parent, id, _L("Input shaping Frequency test"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE), m_plater(plater)
{
+ SetBackgroundColour(*wxWHITE); // make sure background color set for dialog
+ SetForegroundColour(wxColour("#363636"));
+ SetFont(Label::Body_14);
+
wxBoxSizer* v_sizer = new wxBoxSizer(wxVERTICAL);
SetSizer(v_sizer);
// Model selection
- wxString m_rbModelChoices[] = { _L("Ringing Tower"), _L("Fast Tower") };
- int m_rbModelNChoices = sizeof(m_rbModelChoices) / sizeof(wxString);
- m_rbModel = new wxRadioBox(this, wxID_ANY, _L("Test model"), wxDefaultPosition, wxDefaultSize, m_rbModelNChoices, m_rbModelChoices, 1, wxRA_SPECIFY_ROWS);
- m_rbModel->SetSelection(0);
- v_sizer->Add(m_rbModel, 0, wxALL | wxEXPAND, 5);
+ auto labeled_box_model = new LabeledStaticBox(this, _L("Test model"));
+ auto model_box = new wxStaticBoxSizer(labeled_box_model, wxHORIZONTAL);
+
+ m_rbModel = new RadioGroup(this, { _L("Ringing Tower"), _L("Fast Tower") }, wxHORIZONTAL);
+ model_box->Add(m_rbModel, 0, wxALL | wxEXPAND, FromDIP(4));
+ v_sizer->Add(model_box, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
// Settings
- //
- wxString start_x_str = _L("Start X: ");
- wxString end_x_str = _L("End X: ");
- wxString start_y_str = _L("Start Y: ");
- wxString end_y_str = _L("End Y: ");
- auto text_size = wxWindow::GetTextExtent(start_x_str);
- text_size.IncTo(wxWindow::GetTextExtent(end_x_str));
- text_size.IncTo(wxWindow::GetTextExtent(start_y_str));
- text_size.IncTo(wxWindow::GetTextExtent(end_y_str));
- text_size.x = text_size.x * 1.5;
- wxStaticBoxSizer* settings_sizer = new wxStaticBoxSizer(wxVERTICAL, this, _L("Frequency settings"));
+ wxString x_axis_str = "X " + _L("Start / End") + ": ";
+ wxString y_axis_str = "Y " + _L("Start / End") + ": ";
+ int text_max = GetTextMax(this, std::vector{x_axis_str, y_axis_str});
- auto st_size = FromDIP(wxSize(text_size.x, -1));
- auto ti_size = FromDIP(wxSize(90, -1));
+ auto st_size = FromDIP(wxSize(text_max, -1));
+ auto ti_size = FromDIP(wxSize(120, -1));
+
+ LabeledStaticBox* stb = new LabeledStaticBox(this, _L("Frequency settings"));
+ wxStaticBoxSizer* settings_sizer = new wxStaticBoxSizer(stb, wxVERTICAL);
+
+ settings_sizer->AddSpacer(FromDIP(5));
// X axis frequencies
auto x_freq_sizer = new wxBoxSizer(wxHORIZONTAL);
- auto start_x_text = new wxStaticText(this, wxID_ANY, start_x_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiFreqStartX = new TextInput(this, std::to_string(15), _L("HZ"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ auto start_x_text = new wxStaticText(this, wxID_ANY, x_axis_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
+ m_tiFreqStartX = new TextInput(this, std::to_string(15) , _L("hz"), "", wxDefaultPosition, ti_size);
m_tiFreqStartX->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- auto end_x_text = new wxStaticText(this, wxID_ANY, end_x_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiFreqEndX = new TextInput(this, std::to_string(110), _L("HZ"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ m_tiFreqEndX = new TextInput(this, std::to_string(110), _L("hz"), "", wxDefaultPosition, ti_size);
m_tiFreqEndX->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- x_freq_sizer->Add(start_x_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- x_freq_sizer->Add(m_tiFreqStartX, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- x_freq_sizer->Add(end_x_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- x_freq_sizer->Add(m_tiFreqEndX, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(x_freq_sizer);
+ x_freq_sizer->Add(start_x_text , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ x_freq_sizer->Add(m_tiFreqStartX, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ x_freq_sizer->Add(m_tiFreqEndX , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(x_freq_sizer, 0, wxLEFT, FromDIP(3));
// Y axis frequencies
auto y_freq_sizer = new wxBoxSizer(wxHORIZONTAL);
- auto start_y_text = new wxStaticText(this, wxID_ANY, start_y_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiFreqStartY = new TextInput(this, std::to_string(15), _L("HZ"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ auto start_y_text = new wxStaticText(this, wxID_ANY, y_axis_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
+ m_tiFreqStartY = new TextInput(this, std::to_string(15) , _L("hz"), "", wxDefaultPosition, ti_size);
m_tiFreqStartY->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- auto end_y_text = new wxStaticText(this, wxID_ANY, end_y_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiFreqEndY = new TextInput(this, std::to_string(110), _L("HZ"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ m_tiFreqEndY = new TextInput(this, std::to_string(110), _L("hz"), "", wxDefaultPosition, ti_size);
m_tiFreqEndY->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- y_freq_sizer->Add(start_y_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- y_freq_sizer->Add(m_tiFreqStartY, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- y_freq_sizer->Add(end_y_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- y_freq_sizer->Add(m_tiFreqEndY, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(y_freq_sizer);
+ y_freq_sizer->Add(start_y_text , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ y_freq_sizer->Add(m_tiFreqStartY, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ y_freq_sizer->Add(m_tiFreqEndY , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(y_freq_sizer, 0, wxLEFT, FromDIP(3));
// Damping Factor
wxString damping_factor_str = _L("Damp: ");
auto damping_factor_sizer = new wxBoxSizer(wxHORIZONTAL);
auto damping_factor_text = new wxStaticText(this, wxID_ANY, damping_factor_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiDampingFactor = new TextInput(this, wxString::Format("%.3f", 0.15), "", "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ m_tiDampingFactor = new TextInput(this, wxString::Format("%.3f", 0.15), "", "", wxDefaultPosition, ti_size);
m_tiDampingFactor->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- damping_factor_sizer->Add(damping_factor_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- damping_factor_sizer->Add(m_tiDampingFactor, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(damping_factor_sizer);
+ damping_factor_sizer->Add(damping_factor_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ damping_factor_sizer->Add(m_tiDampingFactor , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(damping_factor_sizer, 0, wxLEFT, FromDIP(3));
+ settings_sizer->AddSpacer(FromDIP(5));
+
// Add a note explaining that 0 means use default value
auto note_text = new wxStaticText(this, wxID_ANY, _L("Recommended: Set Damp to 0.\nThis will use the printer's default or the last saved value."), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT);
note_text->SetForegroundColour(wxColour(128, 128, 128));
- settings_sizer->Add(note_text, 0, wxALL, 5);
+ settings_sizer->Add(note_text, 0, wxALL, FromDIP(5));
- v_sizer->Add(settings_sizer);
- v_sizer->Add(0, FromDIP(10), 0, wxEXPAND, 5);
+ settings_sizer->AddSpacer(FromDIP(5));
+
+ v_sizer->Add(settings_sizer, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
+ v_sizer->AddSpacer(FromDIP(5));
auto dlg_btns = new DialogButtons(this, {"OK"});
v_sizer->Add(dlg_btns , 0, wxEXPAND);
dlg_btns->GetOK()->Bind(wxEVT_BUTTON, &Input_Shaping_Freq_Test_Dlg::on_start, this);
- //wxGetApp().UpdateDlgDarkUI(this);//FIXME: dark mode background color
+ wxGetApp().UpdateDlgDarkUI(this);
Layout();
Fit();
@@ -876,80 +889,77 @@ void Input_Shaping_Freq_Test_Dlg::on_dpi_changed(const wxRect& suggested_rect) {
//
Input_Shaping_Damp_Test_Dlg::Input_Shaping_Damp_Test_Dlg(wxWindow* parent, wxWindowID id, Plater* plater)
- : DPIDialog(parent, id, _L("Input shaping Damp test"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER), m_plater(plater)
+ : DPIDialog(parent, id, _L("Input shaping Damp test"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE), m_plater(plater)
{
+ SetBackgroundColour(*wxWHITE); // make sure background color set for dialog
+ SetForegroundColour(wxColour("#363636"));
+ SetFont(Label::Body_14);
+
wxBoxSizer* v_sizer = new wxBoxSizer(wxVERTICAL);
SetSizer(v_sizer);
// Model selection
- wxString m_rbModelChoices[] = { _L("Ringing Tower"), _L("Fast Tower") };
- int m_rbModelNChoices = sizeof(m_rbModelChoices) / sizeof(wxString);
- m_rbModel = new wxRadioBox(this, wxID_ANY, _L("Test model"), wxDefaultPosition, wxDefaultSize, m_rbModelNChoices, m_rbModelChoices, 1, wxRA_SPECIFY_ROWS);
- m_rbModel->SetSelection(0);
- v_sizer->Add(m_rbModel, 0, wxALL | wxEXPAND, 5);
+ auto labeled_box_model = new LabeledStaticBox(this, _L("Test model"));
+ auto model_box = new wxStaticBoxSizer(labeled_box_model, wxHORIZONTAL);
- // Settings
- //
- wxString freq_x_str = _L("Freq X: ");
- wxString freq_y_str = _L("Freq Y: ");
- wxString damp_start_str = _L("Start damp: ");
- wxString damp_end_str = _L("End damp: ");
- auto text_size = wxWindow::GetTextExtent(freq_x_str);
- text_size.IncTo(wxWindow::GetTextExtent(freq_y_str));
- text_size.IncTo(wxWindow::GetTextExtent(damp_start_str));
- text_size.IncTo(wxWindow::GetTextExtent(damp_end_str));
- text_size.x = text_size.x * 1.5;
- wxStaticBoxSizer* settings_sizer = new wxStaticBoxSizer(wxVERTICAL, this, _L("Frequency settings"));
+ m_rbModel = new RadioGroup(this, { _L("Ringing Tower"), _L("Fast Tower") }, wxHORIZONTAL);
+ model_box->Add(m_rbModel, 0, wxALL | wxEXPAND, FromDIP(4));
+ v_sizer->Add(model_box, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
- auto st_size = FromDIP(wxSize(text_size.x, -1));
- auto ti_size = FromDIP(wxSize(90, -1));
+ // Settings
+ wxString freq_str = _L("Frequency") + " X / Y: ";
+ wxString damp_str = _L("Damp") + " " + _L("Start / End") + ": ";
+ int text_max = GetTextMax(this, std::vector{freq_str, damp_str});
+
+ auto st_size = FromDIP(wxSize(text_max, -1));
+ auto ti_size = FromDIP(wxSize(120, -1));
+
+ LabeledStaticBox* stb = new LabeledStaticBox(this, _L("Frequency settings"));
+ wxStaticBoxSizer* settings_sizer = new wxStaticBoxSizer(stb, wxVERTICAL);
+
+ settings_sizer->AddSpacer(FromDIP(5));
auto freq_sizer = new wxBoxSizer(wxHORIZONTAL);
- auto freq_x_text = new wxStaticText(this, wxID_ANY, freq_x_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiFreqX = new TextInput(this, std::to_string(30), _L("HZ"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ auto freq_text = new wxStaticText(this, wxID_ANY, freq_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
+ m_tiFreqX = new TextInput(this, std::to_string(30), _L("hz"), "", wxDefaultPosition, ti_size);
m_tiFreqX->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- auto freq_y_text = new wxStaticText(this, wxID_ANY, freq_y_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiFreqY = new TextInput(this, std::to_string(30), _L("HZ"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ m_tiFreqY = new TextInput(this, std::to_string(30), _L("hz"), "", wxDefaultPosition, ti_size);
m_tiFreqY->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
-
- freq_sizer->Add(freq_x_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- freq_sizer->Add(m_tiFreqX, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- freq_sizer->Add(freq_y_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- freq_sizer->Add(m_tiFreqY, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(freq_sizer);
+ freq_sizer->Add(freq_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ freq_sizer->Add(m_tiFreqX, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ freq_sizer->Add(m_tiFreqY, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(freq_sizer, 0, wxLEFT, FromDIP(3));
// Damping Factor Start and End
auto damp_sizer = new wxBoxSizer(wxHORIZONTAL);
- auto damp_start_text = new wxStaticText(this, wxID_ANY, damp_start_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiDampingFactorStart = new TextInput(this, wxString::Format("%.3f", 0.00), "", "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ auto damp_text = new wxStaticText(this, wxID_ANY, damp_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
+ m_tiDampingFactorStart = new TextInput(this, wxString::Format("%.3f", 0.00), "", "", wxDefaultPosition, ti_size);
m_tiDampingFactorStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- auto damp_end_text = new wxStaticText(this, wxID_ANY, damp_end_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiDampingFactorEnd = new TextInput(this, wxString::Format("%.3f", 0.40), "", "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ m_tiDampingFactorEnd = new TextInput(this, wxString::Format("%.3f", 0.40), "", "", wxDefaultPosition, ti_size);
m_tiDampingFactorEnd->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
-
- damp_sizer->Add(damp_start_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- damp_sizer->Add(m_tiDampingFactorStart, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- damp_sizer->Add(damp_end_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- damp_sizer->Add(m_tiDampingFactorEnd, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(damp_sizer);
-
+ damp_sizer->Add(damp_text , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ damp_sizer->Add(m_tiDampingFactorStart, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ damp_sizer->Add(m_tiDampingFactorEnd , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(damp_sizer, 0, wxLEFT, FromDIP(3));
+
+ settings_sizer->AddSpacer(FromDIP(5));
+
// Add a note to explain users to use their previously calculated frequency
auto note_text = new wxStaticText(this, wxID_ANY, _L("Note: Use previously calculated frequencies."), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT);
note_text->SetForegroundColour(wxColour(128, 128, 128));
- settings_sizer->Add(note_text, 0, wxALL, 5);
+ settings_sizer->Add(note_text, 0, wxALL, FromDIP(5));
- note_text->SetForegroundColour(wxColour(128, 128, 128));
- settings_sizer->Add(note_text, 0, wxALL, 5);
+ settings_sizer->AddSpacer(FromDIP(5));
- v_sizer->Add(settings_sizer);
- v_sizer->Add(0, FromDIP(10), 0, wxEXPAND, 5);
+ v_sizer->Add(settings_sizer, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
+ v_sizer->AddSpacer(FromDIP(5));
auto dlg_btns = new DialogButtons(this, {"OK"});
v_sizer->Add(dlg_btns , 0, wxEXPAND);
dlg_btns->GetOK()->Bind(wxEVT_BUTTON, &Input_Shaping_Damp_Test_Dlg::on_start, this);
- //wxGetApp().UpdateDlgDarkUI(this);//FIXME: dark mode background color
+ wxGetApp().UpdateDlgDarkUI(this);
Layout();
Fit();
@@ -1000,61 +1010,72 @@ void Input_Shaping_Damp_Test_Dlg::on_dpi_changed(const wxRect& suggested_rect) {
//
Junction_Deviation_Test_Dlg::Junction_Deviation_Test_Dlg(wxWindow* parent, wxWindowID id, Plater* plater)
- : DPIDialog(parent, id, _L("Junction Deviation test"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER), m_plater(plater)
+ : DPIDialog(parent, id, _L("Junction Deviation test"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE), m_plater(plater)
{
+ SetBackgroundColour(*wxWHITE); // make sure background color set for dialog
+ SetForegroundColour(wxColour("#363636"));
+ SetFont(Label::Body_14);
+
wxBoxSizer* v_sizer = new wxBoxSizer(wxVERTICAL);
SetSizer(v_sizer);
// Model selection
- wxString m_rbModelChoices[] = { _L("Ringing Tower"), _L("Fast Tower") };
- int m_rbModelNChoices = sizeof(m_rbModelChoices) / sizeof(wxString);
- m_rbModel = new wxRadioBox(this, wxID_ANY, _L("Test model"), wxDefaultPosition, wxDefaultSize, m_rbModelNChoices, m_rbModelChoices, 1, wxRA_SPECIFY_ROWS);
- m_rbModel->SetSelection(1);
- v_sizer->Add(m_rbModel, 0, wxALL | wxEXPAND, 5);
+ auto labeled_box_model = new LabeledStaticBox(this, _L("Test model"));
+ auto model_box = new wxStaticBoxSizer(labeled_box_model, wxHORIZONTAL);
+
+ m_rbModel = new RadioGroup(this, { _L("Ringing Tower"), _L("Fast Tower") }, wxHORIZONTAL);
+ model_box->Add(m_rbModel, 0, wxALL | wxEXPAND, FromDIP(4));
+ v_sizer->Add(model_box, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
// Settings
wxString start_jd_str = _L("Start junction deviation: ");
- wxString end_jd_str = _L("End junction deviation: ");
- auto text_size = wxWindow::GetTextExtent(start_jd_str);
- text_size.IncTo(wxWindow::GetTextExtent(end_jd_str));
- text_size.x = text_size.x * 1.5;
- wxStaticBoxSizer* settings_sizer = new wxStaticBoxSizer(wxVERTICAL, this, _L("Junction Deviation settings"));
+ wxString end_jd_str = _L("End junction deviation: ");
+ int text_max = GetTextMax(this, std::vector{start_jd_str, end_jd_str});
- auto st_size = FromDIP(wxSize(text_size.x, -1));
- auto ti_size = FromDIP(wxSize(90, -1));
+ auto st_size = FromDIP(wxSize(text_max, -1));
+ auto ti_size = FromDIP(wxSize(120, -1));
+
+ LabeledStaticBox* stb = new LabeledStaticBox(this, _L("Junction Deviation settings"));
+ wxStaticBoxSizer* settings_sizer = new wxStaticBoxSizer(stb, wxVERTICAL);
+
+ settings_sizer->AddSpacer(FromDIP(5));
// Start junction deviation
auto start_jd_sizer = new wxBoxSizer(wxHORIZONTAL);
auto start_jd_text = new wxStaticText(this, wxID_ANY, start_jd_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiJDStart = new TextInput(this, wxString::Format("%.3f", 0.000), _L("mm"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ m_tiJDStart = new TextInput(this, wxString::Format("%.3f", 0.000), _L("mm"), "", wxDefaultPosition, ti_size);
m_tiJDStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- start_jd_sizer->Add(start_jd_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- start_jd_sizer->Add(m_tiJDStart, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(start_jd_sizer);
+ start_jd_sizer->Add(start_jd_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ start_jd_sizer->Add(m_tiJDStart , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(start_jd_sizer, 0, wxLEFT, FromDIP(3));
// End junction deviation
auto end_jd_sizer = new wxBoxSizer(wxHORIZONTAL);
auto end_jd_text = new wxStaticText(this, wxID_ANY, end_jd_str, wxDefaultPosition, st_size, wxALIGN_LEFT);
- m_tiJDEnd = new TextInput(this, wxString::Format("%.3f", 0.250), _L("mm"), "", wxDefaultPosition, ti_size, wxTE_CENTRE);
+ m_tiJDEnd = new TextInput(this, wxString::Format("%.3f", 0.250), _L("mm"), "", wxDefaultPosition, ti_size);
m_tiJDEnd->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
- end_jd_sizer->Add(end_jd_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- end_jd_sizer->Add(m_tiJDEnd, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
- settings_sizer->Add(end_jd_sizer);
+ end_jd_sizer->Add(end_jd_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ end_jd_sizer->Add(m_tiJDEnd , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ settings_sizer->Add(end_jd_sizer, 0, wxLEFT, FromDIP(3));
+
+ settings_sizer->AddSpacer(FromDIP(5));
// Add note about junction deviation
auto note_text = new wxStaticText(this, wxID_ANY, _L("Note: Lower values = sharper corners but slower speeds"),
wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT);
note_text->SetForegroundColour(wxColour(128, 128, 128));
- settings_sizer->Add(note_text, 0, wxALL, 5);
+ settings_sizer->Add(note_text, 0, wxALL, FromDIP(5));
- v_sizer->Add(settings_sizer);
- v_sizer->Add(0, FromDIP(10), 0, wxEXPAND, 5);
+ v_sizer->Add(settings_sizer, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
+ v_sizer->AddSpacer(FromDIP(5));
auto dlg_btns = new DialogButtons(this, {"OK"});
v_sizer->Add(dlg_btns , 0, wxEXPAND);
dlg_btns->GetOK()->Bind(wxEVT_BUTTON, &Junction_Deviation_Test_Dlg::on_start, this);
+ wxGetApp().UpdateDlgDarkUI(this);
+
Layout();
Fit();
}
diff --git a/src/slic3r/GUI/calib_dlg.hpp b/src/slic3r/GUI/calib_dlg.hpp
index ea68f22d26..fd21c59ca9 100644
--- a/src/slic3r/GUI/calib_dlg.hpp
+++ b/src/slic3r/GUI/calib_dlg.hpp
@@ -3,13 +3,14 @@
#include "wxExtensions.hpp"
#include "GUI_Utils.hpp"
-#include "Widgets/RadioBox.hpp"
#include "Widgets/Button.hpp"
#include "Widgets/RoundedRectangle.hpp"
#include "Widgets/Label.hpp"
#include "Widgets/CheckBox.hpp"
#include "Widgets/ComboBox.hpp"
#include "Widgets/TextInput.hpp"
+#include "Widgets/LabeledStaticBox.hpp"
+#include "Widgets/RadioGroup.hpp"
#include "GUI_App.hpp"
#include "wx/hyperlink.h"
#include
@@ -35,8 +36,8 @@ protected:
Calib_Params m_params;
- wxRadioBox* m_rbExtruderType;
- wxRadioBox* m_rbMethod;
+ RadioGroup* m_rbExtruderType;
+ RadioGroup* m_rbMethod;
TextInput* m_tiStartPA;
TextInput* m_tiEndPA;
TextInput* m_tiPAStep;
@@ -60,7 +61,7 @@ protected:
virtual void on_filament_type_changed(wxCommandEvent& event);
Calib_Params m_params;
- wxRadioBox* m_rbFilamentType;
+ RadioGroup* m_rbFilamentType;
TextInput* m_tiStart;
TextInput* m_tiEnd;
TextInput* m_tiStep;
@@ -132,7 +133,7 @@ protected:
virtual void on_start(wxCommandEvent& event);
Calib_Params m_params;
- wxRadioBox* m_rbModel;
+ RadioGroup* m_rbModel;
TextInput* m_tiFreqStartX;
TextInput* m_tiFreqEndX;
TextInput* m_tiFreqStartY;
@@ -153,7 +154,7 @@ protected:
virtual void on_start(wxCommandEvent& event);
Calib_Params m_params;
- wxRadioBox* m_rbModel;
+ RadioGroup* m_rbModel;
TextInput* m_tiFreqX;
TextInput* m_tiFreqY;
TextInput* m_tiDampingFactorStart;
@@ -172,7 +173,7 @@ protected:
virtual void on_start(wxCommandEvent& event);
Calib_Params m_params;
- wxRadioBox* m_rbModel;
+ RadioGroup* m_rbModel;
TextInput* m_tiJDStart;
TextInput* m_tiJDEnd;
Plater* m_plater;