Merge remote-tracking branch 'origin/ys_bugfixing'
This commit is contained in:
commit
00ebd76431
@ -354,8 +354,8 @@ DynamicPrintConfig& ObjectList::get_item_config(const wxDataViewItem& item) cons
|
|||||||
const int vol_idx = type & itVolume ? m_objects_model->GetVolumeIdByItem(item) : -1;
|
const int vol_idx = type & itVolume ? m_objects_model->GetVolumeIdByItem(item) : -1;
|
||||||
|
|
||||||
assert(obj_idx >= 0 || ((type & itVolume) && vol_idx >=0));
|
assert(obj_idx >= 0 || ((type & itVolume) && vol_idx >=0));
|
||||||
return type & itObject|itInstance ? (*m_objects)[obj_idx]->config :
|
return type & itVolume ?(*m_objects)[obj_idx]->volumes[vol_idx]->config :
|
||||||
(*m_objects)[obj_idx]->volumes[vol_idx]->config;
|
(*m_objects)[obj_idx]->config;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxDataViewColumn* ObjectList::create_objects_list_extruder_column(int extruders_count)
|
wxDataViewColumn* ObjectList::create_objects_list_extruder_column(int extruders_count)
|
||||||
|
@ -259,29 +259,45 @@ wxBitmapComboBox(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(15 *
|
|||||||
if (preset_type == Slic3r::Preset::TYPE_FILAMENT)
|
if (preset_type == Slic3r::Preset::TYPE_FILAMENT)
|
||||||
{
|
{
|
||||||
Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &event) {
|
Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &event) {
|
||||||
if (extruder_idx < 0 || event.GetLogicalPosition(wxClientDC(this)).x > 24) {
|
int shifl_Left = 0;
|
||||||
|
float scale = m_em_unit*0.1f;
|
||||||
|
#if defined(wxBITMAPCOMBOBOX_OWNERDRAWN_BASED)
|
||||||
|
shifl_Left = int(scale * 4 + 0.5f); // IMAGE_SPACING_RIGHT = 4 for wxBitmapComboBox -> Space left of image
|
||||||
|
#endif
|
||||||
|
int icon_right_pos = int(scale * (24+4) + 0.5);
|
||||||
|
int mouse_pos = event.GetLogicalPosition(wxClientDC(this)).x;
|
||||||
|
// if (extruder_idx < 0 || event.GetLogicalPosition(wxClientDC(this)).x > 24) {
|
||||||
|
if ( extruder_idx < 0 || mouse_pos < shifl_Left || mouse_pos > icon_right_pos ) {
|
||||||
// Let the combo box process the mouse click.
|
// Let the combo box process the mouse click.
|
||||||
event.Skip();
|
event.Skip();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Swallow the mouse click and open the color picker.
|
// Swallow the mouse click and open the color picker.
|
||||||
|
|
||||||
|
// get current color
|
||||||
|
DynamicPrintConfig* cfg = wxGetApp().get_tab(Preset::TYPE_PRINTER)->get_config();
|
||||||
|
auto colors = static_cast<ConfigOptionStrings*>(cfg->option("extruder_colour")->clone());
|
||||||
|
wxColour clr(colors->values[extruder_idx]);
|
||||||
|
if (!clr.IsOk())
|
||||||
|
clr = wxTransparentColour;
|
||||||
|
|
||||||
auto data = new wxColourData();
|
auto data = new wxColourData();
|
||||||
data->SetChooseFull(1);
|
data->SetChooseFull(1);
|
||||||
auto dialog = new wxColourDialog(/* wxGetApp().mainframe */this, data);
|
data->SetColour(clr);
|
||||||
dialog->CenterOnParent();
|
|
||||||
if (dialog->ShowModal() == wxID_OK) {
|
|
||||||
DynamicPrintConfig cfg = *wxGetApp().get_tab(Preset::TYPE_PRINTER)->get_config();
|
|
||||||
|
|
||||||
//FIXME this is too expensive to call full_config to get just the extruder color!
|
auto dialog = new wxColourDialog(this, data);
|
||||||
auto colors = static_cast<ConfigOptionStrings*>(wxGetApp().preset_bundle->full_config().option("extruder_colour")->clone());
|
dialog->CenterOnParent();
|
||||||
|
if (dialog->ShowModal() == wxID_OK)
|
||||||
|
{
|
||||||
colors->values[extruder_idx] = dialog->GetColourData().GetColour().GetAsString(wxC2S_HTML_SYNTAX);
|
colors->values[extruder_idx] = dialog->GetColourData().GetColour().GetAsString(wxC2S_HTML_SYNTAX);
|
||||||
|
|
||||||
cfg.set_key_value("extruder_colour", colors);
|
DynamicPrintConfig cfg_new = *cfg;
|
||||||
|
cfg_new.set_key_value("extruder_colour", colors);
|
||||||
|
|
||||||
wxGetApp().get_tab(Preset::TYPE_PRINTER)->load_config(cfg);
|
wxGetApp().get_tab(Preset::TYPE_PRINTER)->load_config(cfg_new);
|
||||||
wxGetApp().preset_bundle->update_platter_filament_ui(extruder_idx, this);
|
wxGetApp().preset_bundle->update_platter_filament_ui(extruder_idx, this);
|
||||||
wxGetApp().plater()->on_config_change(cfg);
|
wxGetApp().plater()->on_config_change(cfg_new);
|
||||||
}
|
}
|
||||||
dialog->Destroy();
|
dialog->Destroy();
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user