Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuSanka <yusanka@gmail.com>2019-06-04 12:51:25 +0300
committerYuSanka <yusanka@gmail.com>2019-06-04 12:56:59 +0300
commit79a89c4c8fd5b09374ba981fea7c3a3da6711236 (patch)
tree27dd63b7d50d156ded105be5260c7dfb83baceeb /src/slic3r/GUI/GUI_ObjectLayers.cpp
parent51b18fddeb1b22310171e27b8e606cc0d621f17d (diff)
Some code review for avoid use of OptionsGroup
Diffstat (limited to 'src/slic3r/GUI/GUI_ObjectLayers.cpp')
-rw-r--r--src/slic3r/GUI/GUI_ObjectLayers.cpp153
1 files changed, 78 insertions, 75 deletions
diff --git a/src/slic3r/GUI/GUI_ObjectLayers.cpp b/src/slic3r/GUI/GUI_ObjectLayers.cpp
index 8dae64f3c..1bd57e0d8 100644
--- a/src/slic3r/GUI/GUI_ObjectLayers.cpp
+++ b/src/slic3r/GUI/GUI_ObjectLayers.cpp
@@ -21,90 +21,100 @@ namespace GUI
ObjectLayers::ObjectLayers(wxWindow* parent) :
OG_Settings(parent, true)
{
- m_og->label_width = 1;
- m_og->set_grid_vgap(5);
+ m_grid_sizer = new wxFlexGridSizer(3, 5, 5); // "Min Z", "Max Z", "Layer height" & buttons sizer
+ m_grid_sizer->SetFlexibleDirection(wxHORIZONTAL);
- m_og->m_on_change = std::bind(&ObjectLayers::on_change, this, std::placeholders::_1, std::placeholders::_2);
-
// Legend for object layers
- Line line = Line{ "", "" };
-
- ConfigOptionDef def;
- def.label = "";
- def.gui_type = "legend";
- def.type = coString;
- def.width = field_width;
-
for (const std::string col : { "Min Z", "Max Z", "Layer height" }) {
- def.set_default_value(new ConfigOptionString{ col });
- std::string label = boost::algorithm::replace_all_copy(col, " ", "_");
- boost::algorithm::to_lower(label);
- line.append_option(Option(def, label + "_legend"));
+ auto temp = new wxStaticText(m_parent, wxID_ANY, _(L(col)), wxDefaultPosition, /*size*/wxDefaultSize, wxST_ELLIPSIZE_MIDDLE);
+ temp->SetFont(Slic3r::GUI::wxGetApp().normal_font());
+ temp->SetBackgroundStyle(wxBG_STYLE_PAINT);
+ temp->SetFont(wxGetApp().bold_font());
- m_legends.push_back(label + "_legend");
+ m_grid_sizer->Add(temp);
}
- m_og->append_line(line);
+ m_og->sizer->Clear(true);
+ m_og->sizer->Add(m_grid_sizer, 0, wxEXPAND | wxALL, wxOSX ? 0 : 5);
m_bmp_delete = ScalableBitmap(parent, "remove_copies"/*"cross"*/);
m_bmp_add = ScalableBitmap(parent, "add_copies");
}
-static Line create_new_layer(const t_layer_config_ranges::value_type& layer, const int idx)
+wxSizer* ObjectLayers::create_layer_without_buttons(const t_layer_config_ranges::value_type& layer)
{
- Line line = Line{ "", "" };
- ConfigOptionDef def;
- def.label = "";
- def.gui_type = "";
- def.type = coFloat;
- def.width = field_width;
-
- std::string label = (boost::format("min_z_%d") % idx).str();
- def.set_default_value(new ConfigOptionFloat(layer.first.first));
- line.append_option(Option(def, label));
-
- label = (boost::format("max_z_%d") % idx).str();
- def.set_default_value(new ConfigOptionFloat(layer.first.second));
- line.append_option(Option(def, label));
-
- label = (boost::format("layer_height_%d") % idx).str();
- def.set_default_value(new ConfigOptionFloat(layer.second.option("layer_height")->getFloat()));
- line.append_option(Option(def, label));
-
- return line;
+ auto size = wxSize(field_width * em_unit(m_parent), wxDefaultCoord);
+
+ // Add control for the "Min Z"
+ wxString text_value = double_to_string(layer.first.first);
+ auto temp = new wxTextCtrl(m_parent, wxID_ANY, text_value, wxDefaultPosition, size, wxTE_PROCESS_ENTER);
+ temp->SetFont(Slic3r::GUI::wxGetApp().normal_font());
+
+ temp->Bind(wxEVT_TEXT_ENTER, ([this, temp](wxEvent& e)
+ {
+
+ }), temp->GetId());
+
+ temp->Bind(wxEVT_KILL_FOCUS, ([this, temp](wxEvent& e)
+ {
+
+ }), temp->GetId());
+
+
+ temp->Bind(wxEVT_CHAR, ([temp](wxKeyEvent& event)
+ {
+ // select all text using Ctrl+A
+ if (wxGetKeyState(wxKeyCode('A')) && wxGetKeyState(WXK_CONTROL))
+ temp->SetSelection(-1, -1); //select all
+ event.Skip();
+ }));
+
+ m_grid_sizer->Add(temp);
+
+ // Add control for the "Max Z"
+ text_value = double_to_string(layer.first.second);
+ temp = new wxTextCtrl(m_parent, wxID_ANY, text_value, wxDefaultPosition, size, wxTE_PROCESS_ENTER);
+ temp->SetFont(Slic3r::GUI::wxGetApp().normal_font());
+
+ m_grid_sizer->Add(temp);
+
+ // Add control for the "Layer height"
+ auto sizer = new wxBoxSizer(wxHORIZONTAL);
+
+ text_value = double_to_string(layer.second.option("layer_height")->getFloat());
+ temp = new wxTextCtrl(m_parent, wxID_ANY, text_value, wxDefaultPosition, size, wxTE_PROCESS_ENTER);
+ temp->SetFont(Slic3r::GUI::wxGetApp().normal_font());
+ sizer->Add(temp);
+
+ m_grid_sizer->Add(sizer);
+
+ return sizer;
}
void ObjectLayers::create_layers_list()
{
for (const auto layer : m_object->layer_config_ranges)
{
- auto create_btns = [this, layer](wxWindow* parent) {
- auto sizer = new wxBoxSizer(wxHORIZONTAL);
+ auto sizer = create_layer_without_buttons(layer);
- auto del_btn = new ScalableButton(parent, wxID_ANY, m_bmp_delete);
- del_btn->SetToolTip(_(L("Remove layer")));
+ wxWindow* parent = m_parent;
+ auto del_btn = new ScalableButton(parent, wxID_ANY, m_bmp_delete);
+ del_btn->SetToolTip(_(L("Remove layer")));
- sizer->Add(del_btn, 0, wxRIGHT, em_unit(parent));
+ sizer->Add(del_btn, 0, wxRIGHT | wxLEFT, em_unit(parent));
- del_btn->Bind(wxEVT_BUTTON, [this, layer](wxEvent &event) {
- wxGetApp().obj_list()->del_layer_range(layer.first);
- });
+ del_btn->Bind(wxEVT_BUTTON, [this, layer](wxEvent &event) {
+ wxGetApp().obj_list()->del_layer_range(layer.first);
+ });
- auto add_btn = new ScalableButton(parent, wxID_ANY, m_bmp_add);
- add_btn->SetToolTip(_(L("Add layer")));
+ auto add_btn = new ScalableButton(parent, wxID_ANY, m_bmp_add);
+ add_btn->SetToolTip(_(L("Add layer")));
- sizer->Add(add_btn, 0, wxRIGHT, em_unit(parent));
+ sizer->Add(add_btn, 0, wxRIGHT, em_unit(parent));
- add_btn->Bind(wxEVT_BUTTON, [this, layer](wxEvent &event) {
- wxGetApp().obj_list()->add_layer_range(layer.first);
- });
-
- return sizer;
- };
-
- Line line = create_new_layer(layer, m_og->get_grid_sizer()->GetEffectiveRowsCount()-1);
- line.append_widget(create_btns);
- m_og->append_line(line);
+ add_btn->Bind(wxEVT_BUTTON, [this, layer](wxEvent &event) {
+ wxGetApp().obj_list()->add_layer_range(layer.first);
+ });
}
}
@@ -117,8 +127,8 @@ void ObjectLayers::create_layer(int id)
++layer_range;
id--;
}
-
- m_og->append_line(create_new_layer(*layer_range, m_og->get_grid_sizer()->GetEffectiveRowsCount()-1));
+
+ create_layer_without_buttons(*layer_range);
}
void ObjectLayers::update_layers_list()
@@ -140,19 +150,17 @@ void ObjectLayers::update_layers_list()
// Delete all controls from options group except of the legends
- auto grid_sizer = m_og->get_grid_sizer();
- const int cols = grid_sizer->GetEffectiveColsCount();
- const int rows = grid_sizer->GetEffectiveRowsCount();
+ const int cols = m_grid_sizer->GetEffectiveColsCount();
+ const int rows = m_grid_sizer->GetEffectiveRowsCount();
for (int idx = cols*rows-1; idx >= cols; idx--) {
- wxSizerItem* t = grid_sizer->GetItem(idx);
+ wxSizerItem* t = m_grid_sizer->GetItem(idx);
if (t->IsSizer())
t->GetSizer()->Clear(true);
- grid_sizer->Remove(idx);
+ else
+ t->DeleteWindows();
+ m_grid_sizer->Remove(idx);
}
- m_og->clear_fields_except_of(m_legends);
-
-
// Add new control according to the selected item
if (type & itLayerRoot)
@@ -177,10 +185,5 @@ void ObjectLayers::msw_rescale()
m_bmp_add.msw_rescale();
}
-void ObjectLayers::on_change(t_config_option_key opt_key, const boost::any& value)
-{
-
-}
-
} //namespace GUI
} //namespace Slic3r \ No newline at end of file