Try to fix correct extruder updating on all OS
This commit is contained in:
parent
1148c8c018
commit
575b85bfd6
2 changed files with 29 additions and 28 deletions
|
@ -56,6 +56,10 @@ int m_event_update_scene = 0;
|
||||||
bool m_parts_changed = false;
|
bool m_parts_changed = false;
|
||||||
bool m_part_settings_changed = false;
|
bool m_part_settings_changed = false;
|
||||||
|
|
||||||
|
#ifdef __WXOSX__
|
||||||
|
wxString g_selected_extruder = "";
|
||||||
|
#endif //__WXOSX__
|
||||||
|
|
||||||
// typedef std::map<std::string, std::string> t_category_icon;
|
// typedef std::map<std::string, std::string> t_category_icon;
|
||||||
typedef std::map<std::string, wxBitmap> t_category_icon;
|
typedef std::map<std::string, wxBitmap> t_category_icon;
|
||||||
inline t_category_icon& get_category_icon() {
|
inline t_category_icon& get_category_icon() {
|
||||||
|
@ -188,10 +192,10 @@ wxBoxSizer* content_objects_list(wxWindow *win)
|
||||||
|
|
||||||
m_objects_ctrl->Bind(wxEVT_DATAVIEW_SELECTION_CHANGED, [](wxEvent& event)
|
m_objects_ctrl->Bind(wxEVT_DATAVIEW_SELECTION_CHANGED, [](wxEvent& event)
|
||||||
{
|
{
|
||||||
#ifdef __WXOSX__
|
|
||||||
wxMessageBox("DATAVIEW_SELECTION_CHANGED");
|
|
||||||
#endif //__WXOSX__
|
|
||||||
object_ctrl_selection_changed();
|
object_ctrl_selection_changed();
|
||||||
|
#ifdef __WXOSX__
|
||||||
|
update_extruder_in_config(g_selected_extruder);
|
||||||
|
#endif //__WXOSX__
|
||||||
});
|
});
|
||||||
|
|
||||||
m_objects_ctrl->Bind(wxEVT_DATAVIEW_ITEM_CONTEXT_MENU, [](wxEvent& event)
|
m_objects_ctrl->Bind(wxEVT_DATAVIEW_ITEM_CONTEXT_MENU, [](wxEvent& event)
|
||||||
|
@ -218,39 +222,20 @@ wxBoxSizer* content_objects_list(wxWindow *win)
|
||||||
#ifdef __WXMSW__
|
#ifdef __WXMSW__
|
||||||
m_objects_ctrl->Bind(wxEVT_CHOICE, [](wxCommandEvent& event)
|
m_objects_ctrl->Bind(wxEVT_CHOICE, [](wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
if (!*m_config)
|
update_extruder_in_config(event.GetString());
|
||||||
return;
|
|
||||||
|
|
||||||
wxString str = event.GetString();
|
|
||||||
int extruder = str.size() > 1 ? 0 : atoi(str.c_str());
|
|
||||||
(*m_config)->set_key_value("extruder", new ConfigOptionInt(extruder));
|
|
||||||
|
|
||||||
if (m_event_update_scene > 0) {
|
|
||||||
wxCommandEvent e(m_event_update_scene);
|
|
||||||
get_main_frame()->ProcessWindowEvent(e);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
#else
|
#else
|
||||||
m_objects_ctrl->Bind(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, [](wxDataViewEvent& event)
|
m_objects_ctrl->Bind(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, [](wxDataViewEvent& event)
|
||||||
{
|
{
|
||||||
#ifdef __WXOSX__
|
|
||||||
wxMessageBox("DATAVIEW_ITEM_VALUE_CHANGED");
|
|
||||||
#endif //__WXOSX__
|
|
||||||
if (!*m_config)
|
|
||||||
return;
|
|
||||||
if (event.GetColumn() == 3)
|
if (event.GetColumn() == 3)
|
||||||
{
|
{
|
||||||
wxVariant variant;
|
wxVariant variant;
|
||||||
m_objects_model->GetValue(variant, event.GetItem(), 3);
|
m_objects_model->GetValue(variant, event.GetItem(), 3);
|
||||||
auto str = variant.GetString();
|
#ifdef __WXOSX__
|
||||||
int extruder = str.size() > 1 ? 0 : atoi(str.c_str());
|
g_selected_extruder = variant.GetString();
|
||||||
|
#else // --> for Linux
|
||||||
(*m_config)->set_key_value("extruder", new ConfigOptionInt(extruder));
|
update_extruder_in_config(variant.GetString());
|
||||||
|
#endif //__WXOSX__
|
||||||
if (m_event_update_scene > 0) {
|
|
||||||
wxCommandEvent e(m_event_update_scene);
|
|
||||||
get_main_frame()->ProcessWindowEvent(e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
#endif //__WXMSW__
|
#endif //__WXMSW__
|
||||||
|
@ -1292,5 +1277,19 @@ void set_extruder_column_hidden(bool hide)
|
||||||
m_objects_ctrl->GetColumn(3)->SetHidden(hide);
|
m_objects_ctrl->GetColumn(3)->SetHidden(hide);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void update_extruder_in_config(const wxString& selection)
|
||||||
|
{
|
||||||
|
if (!*m_config || selection.empty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
int extruder = selection.size() > 1 ? 0 : atoi(selection.c_str());
|
||||||
|
(*m_config)->set_key_value("extruder", new ConfigOptionInt(extruder));
|
||||||
|
|
||||||
|
if (m_event_update_scene > 0) {
|
||||||
|
wxCommandEvent e(m_event_update_scene);
|
||||||
|
get_main_frame()->ProcessWindowEvent(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} //namespace GUI
|
} //namespace GUI
|
||||||
} //namespace Slic3r
|
} //namespace Slic3r
|
|
@ -97,6 +97,8 @@ void part_selection_changed();
|
||||||
|
|
||||||
// show/hide "Extruder" column for Objects List
|
// show/hide "Extruder" column for Objects List
|
||||||
void set_extruder_column_hidden(bool hide);
|
void set_extruder_column_hidden(bool hide);
|
||||||
|
// update extruder in current config
|
||||||
|
void update_extruder_in_config(const wxString& selection);
|
||||||
} //namespace GUI
|
} //namespace GUI
|
||||||
} //namespace Slic3r
|
} //namespace Slic3r
|
||||||
#endif //slic3r_GUI_ObjectParts_hpp_
|
#endif //slic3r_GUI_ObjectParts_hpp_
|
Loading…
Reference in a new issue