diff --git a/xs/src/slic3r/GUI/GUI.hpp b/xs/src/slic3r/GUI/GUI.hpp index 8240fc7c1..58a927cf6 100644 --- a/xs/src/slic3r/GUI/GUI.hpp +++ b/xs/src/slic3r/GUI/GUI.hpp @@ -64,15 +64,15 @@ typedef std::map<std::string, std::string> t_file_wild_card; inline t_file_wild_card& get_file_wild_card() { static t_file_wild_card FILE_WILDCARDS; if (FILE_WILDCARDS.empty()){ - FILE_WILDCARDS["known"] = "Known files (*.stl, *.obj, *.amf, *.xml, *.prusa)|*.stl;*.STL;*.obj;*.OBJ;*.amf;*.AMF;*.xml;*.XML;*.prusa;*.PRUSA"; - FILE_WILDCARDS["stl"] = "STL files (*.stl)|*.stl;*.STL"; - FILE_WILDCARDS["obj"] = "OBJ files (*.obj)|*.obj;*.OBJ"; - FILE_WILDCARDS["amf"] = "AMF files (*.amf)|*.zip.amf;*.amf;*.AMF;*.xml;*.XML"; - FILE_WILDCARDS["3mf"] = "3MF files (*.3mf)|*.3mf;*.3MF;"; - FILE_WILDCARDS["prusa"] = "Prusa Control files (*.prusa)|*.prusa;*.PRUSA"; - FILE_WILDCARDS["ini"] = "INI files *.ini|*.ini;*.INI"; + FILE_WILDCARDS["known"] = "Known files (*.stl, *.obj, *.amf, *.xml, *.prusa)|*.stl;*.STL;*.obj;*.OBJ;*.amf;*.AMF;*.xml;*.XML;*.prusa;*.PRUSA"; + FILE_WILDCARDS["stl"] = "STL files (*.stl)|*.stl;*.STL"; + FILE_WILDCARDS["obj"] = "OBJ files (*.obj)|*.obj;*.OBJ"; + FILE_WILDCARDS["amf"] = "AMF files (*.amf)|*.zip.amf;*.amf;*.AMF;*.xml;*.XML"; + FILE_WILDCARDS["3mf"] = "3MF files (*.3mf)|*.3mf;*.3MF;"; + FILE_WILDCARDS["prusa"] = "Prusa Control files (*.prusa)|*.prusa;*.PRUSA"; + FILE_WILDCARDS["ini"] = "INI files *.ini|*.ini;*.INI"; FILE_WILDCARDS["gcode"] = "G-code files (*.gcode, *.gco, *.g, *.ngc)|*.gcode;*.GCODE;*.gco;*.GCO;*.g;*.G;*.ngc;*.NGC"; - FILE_WILDCARDS["svg"] = "SVG files *.svg|*.svg;*.SVG"; + FILE_WILDCARDS["svg"] = "SVG files *.svg|*.svg;*.SVG"; } return FILE_WILDCARDS; } diff --git a/xs/src/slic3r/GUI/GUI_ObjectParts.cpp b/xs/src/slic3r/GUI/GUI_ObjectParts.cpp index 0cc5557fc..759c43156 100644 --- a/xs/src/slic3r/GUI/GUI_ObjectParts.cpp +++ b/xs/src/slic3r/GUI/GUI_ObjectParts.cpp @@ -48,6 +48,28 @@ int m_event_remove_object = 0; bool m_parts_changed = false; bool m_part_settings_changed = false; +// typedef std::map<std::string, std::string> t_category_icon; +typedef std::map<std::string, wxBitmap> t_category_icon; +inline t_category_icon& get_category_icon() { + static t_category_icon CATEGORY_ICON; + if (CATEGORY_ICON.empty()){ + CATEGORY_ICON[L("Layers and Perimeters")] = wxBitmap(from_u8(Slic3r::var("layers.png")), wxBITMAP_TYPE_PNG); + CATEGORY_ICON[L("Infill")] = wxBitmap(from_u8(Slic3r::var("infill.png")), wxBITMAP_TYPE_PNG); + CATEGORY_ICON[L("Support material")] = wxBitmap(from_u8(Slic3r::var("building.png")), wxBITMAP_TYPE_PNG); + CATEGORY_ICON[L("Speed")] = wxBitmap(from_u8(Slic3r::var("time.png")), wxBITMAP_TYPE_PNG); + CATEGORY_ICON[L("Extruders")] = wxBitmap(from_u8(Slic3r::var("funnel.png")), wxBITMAP_TYPE_PNG); + CATEGORY_ICON[L("Extrusion Width")] = wxBitmap(from_u8(Slic3r::var("funnel.png")), wxBITMAP_TYPE_PNG); +// CATEGORY_ICON[L("Skirt and brim")] = wxBitmap(from_u8(Slic3r::var("box.png")), wxBITMAP_TYPE_PNG); +// CATEGORY_ICON[L("Speed > Acceleration")] = wxBitmap(from_u8(Slic3r::var("time.png")), wxBITMAP_TYPE_PNG); + CATEGORY_ICON[L("Advanced")] = wxBitmap(from_u8(Slic3r::var("wand.png")), wxBITMAP_TYPE_PNG); + } + return CATEGORY_ICON; +} + +// C++ class Slic3r::DynamicPrintConfig, initially empty. +std::shared_ptr<DynamicPrintConfig> default_config = std::make_shared<DynamicPrintConfig>(); +std::shared_ptr<DynamicPrintConfig> config = std::make_shared<DynamicPrintConfig>(); + void set_event_object_selection_changed(const int& event){ m_event_object_selection_changed = event; } @@ -560,7 +582,7 @@ void object_ctrl_selection_changed() } } -wxMenu *CreateAddPartPopupMenu(){ +wxMenu *create_add_part_popupmenu(){ wxMenu *menu = new wxMenu; wxWindowID config_id_base = wxWindow::NewControlId(3); @@ -590,6 +612,35 @@ wxMenu *CreateAddPartPopupMenu(){ return menu; } +wxMenu *create_add_settings_popupmenu() +{ + wxMenu *menu = new wxMenu; + + auto categories = get_category_icon(); + int category_cnt = categories.size(); + wxWindowID config_id_base = wxWindow::NewControlId(category_cnt); + + int inc = 0; + for (auto cat : categories) + { + auto menu_item = new wxMenuItem(menu, config_id_base + inc, _(cat.first)); + menu_item->SetBitmap(cat.second); + + auto sub_menu = new wxMenu; + sub_menu->AppendCheckItem(wxID_ANY, "Check#1"); + sub_menu->AppendCheckItem(wxID_ANY, "Check#2"); + sub_menu->AppendCheckItem(wxID_ANY, "Check#3"); + sub_menu->AppendCheckItem(wxID_ANY, "Check#4"); + + menu_item->SetSubMenu(sub_menu); + + menu->Append(menu_item); + inc++; + } + + return menu; +} + void object_ctrl_context_menu() { // auto cur_column = m_objects_ctrl->GetCurrentColumn(); @@ -600,15 +651,18 @@ void object_ctrl_context_menu() if (item) { if (m_objects_model->GetParent(item) == wxDataViewItem(0)) { - auto menu = CreateAddPartPopupMenu(); + auto menu = create_add_part_popupmenu(); + get_tab_panel()->GetPage(0)->PopupMenu(menu); + } + else { +// auto parent = m_objects_model->GetParent(item); +// // Take ID of the parent object to "inform" perl-side which object have to be selected on the scene +// obj_idx = m_objects_model->GetIdByItem(parent); +// auto volume_id = m_objects_model->GetVolumeIdByItem(item); +// if (volume_id < 0) return; + auto menu = create_add_settings_popupmenu(); get_tab_panel()->GetPage(0)->PopupMenu(menu); -// wxMessageBox(m_objects_model->GetName(item)); } - // else { - // auto parent = m_objects_model->GetParent(item); - // // Take ID of the parent object to "inform" perl-side which object have to be selected on the scene - // obj_idx = m_objects_model->GetIdByItem(parent); - // } } } }