Improvement of extruder selection for the object/part according to the actually extruders count

This commit is contained in:
YuSanka 2018-08-15 11:18:20 +02:00
parent f0095d19be
commit 3e549c153d
3 changed files with 27 additions and 13 deletions

View File

@ -8,7 +8,6 @@
#include "../../libslic3r/Utils.hpp"
#include <wx/msgdlg.h>
#include <wx/frame.h>
#include <boost/filesystem.hpp>
#include <boost/algorithm/string.hpp>
#include "Geometry.hpp"
@ -210,6 +209,18 @@ wxPoint get_mouse_position_in_control() {
pt.y - win->GetScreenPosition().y);
}
wxDataViewColumn* object_ctrl_create_extruder_column(int extruders_count)
{
wxArrayString choices;
choices.Add("default");
for (int i = 1; i <= extruders_count; ++i)
choices.Add(wxString::Format("%d", i));
wxDataViewChoiceRenderer *c =
new wxDataViewChoiceRenderer(choices, wxDATAVIEW_CELL_EDITABLE, wxALIGN_CENTER_HORIZONTAL);
wxDataViewColumn* column = new wxDataViewColumn(_(L("Extruder")), c, 3, 60, wxALIGN_CENTER_HORIZONTAL, wxDATAVIEW_COL_RESIZABLE);
return column;
}
void create_objects_ctrl(wxWindow* win, wxBoxSizer*& objects_sz)
{
m_objects_ctrl = new wxDataViewCtrl(win, wxID_ANY, wxDefaultPosition, wxDefaultSize);
@ -238,17 +249,7 @@ void create_objects_ctrl(wxWindow* win, wxBoxSizer*& objects_sz)
wxALIGN_CENTER_HORIZONTAL, wxDATAVIEW_COL_RESIZABLE);
// column 3 of the view control:
wxArrayString choices;
choices.Add("default");
choices.Add("1");
choices.Add("2");
choices.Add("3");
choices.Add("4");
wxDataViewChoiceRenderer *c =
new wxDataViewChoiceRenderer(choices, wxDATAVIEW_CELL_EDITABLE, wxALIGN_CENTER_HORIZONTAL);
wxDataViewColumn *column3 =
new wxDataViewColumn(_(L("Extruder")), c, 3, 60, wxALIGN_CENTER_HORIZONTAL, wxDATAVIEW_COL_RESIZABLE);
m_objects_ctrl->AppendColumn(column3);
m_objects_ctrl->AppendColumn(object_ctrl_create_extruder_column(4));
// column 4 of the view control:
m_objects_ctrl->AppendBitmapColumn(" ", 4, wxDATAVIEW_CELL_INERT, 25,
@ -1608,5 +1609,15 @@ void on_drop(wxDataViewEvent &event)
g_prevent_list_events = false;
}
void update_objects_list_extruder_column(const int extruders_count)
{
// delete old 3rd column
m_objects_ctrl->DeleteColumn(m_objects_ctrl->GetColumnAt(3));
// insert new created 3rd column
m_objects_ctrl->InsertColumn(3, object_ctrl_create_extruder_column(extruders_count));
// set show/hide for this column
set_extruder_column_hidden(extruders_count <= 1);
}
} //namespace GUI
} //namespace Slic3r

View File

@ -118,6 +118,9 @@ void on_begin_drag(wxDataViewEvent &event);
void on_drop_possible(wxDataViewEvent &event);
void on_drop(wxDataViewEvent &event);
// update extruder column for objects_ctrl according to extruders count
void update_objects_list_extruder_column(const int extruders_count);
} //namespace GUI
} //namespace Slic3r
#endif //slic3r_GUI_ObjectParts_hpp_

View File

@ -1698,6 +1698,7 @@ void TabPrinter::extruders_count_changed(size_t extruders_count){
build_extruder_pages();
reload_config();
on_value_change("extruders_count", extruders_count);
update_objects_list_extruder_column(extruders_count);
}
void TabPrinter::append_option_line(ConfigOptionsGroupShp optgroup, const std::string opt_key)
@ -2010,7 +2011,6 @@ void Tab::load_current_preset()
const Preset* parent_preset = m_presets->get_selected_preset_parent();
static_cast<TabPrinter*>(this)->m_sys_extruders_count = parent_preset == nullptr ? 0 :
static_cast<const ConfigOptionFloats*>(parent_preset->config.option("nozzle_diameter"))->values.size();
set_extruder_column_hidden(static_cast<TabPrinter*>(this)->m_sys_extruders_count <= 1);
}
m_opt_status_value = (m_presets->get_selected_preset_parent() ? osSystemValue : 0) | osInitValue;
init_options_list();