From cd9a77fed6c9a0a709bcc542bb773f3e34af64e5 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Mon, 29 Apr 2019 16:42:22 +0200 Subject: [PATCH 1/9] Remove back offset from the print statistic calculation. --- src/libslic3r/SLAPrint.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index 3122beece4..9be438eda9 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -1174,8 +1174,9 @@ void SLAPrint::process() for(const SliceRecord& record : layer.slices()) { const SLAPrintObject *po = record.print_obj(); - const ExPolygons &rawmodelslices = record.get_slice(soModel); - const ExPolygons &modelslices = clpr_back_offs != 0 ? offset_ex(rawmodelslices, clpr_back_offs) : rawmodelslices; + // const ExPolygons &rawmodelslices = record.get_slice(soModel); + // const ExPolygons &modelslices = clpr_back_offs != 0 ? offset_ex(rawmodelslices, clpr_back_offs) : rawmodelslices; + const ExPolygons &modelslices = record.get_slice(soModel); bool is_lefth = record.print_obj()->is_left_handed(); if (!modelslices.empty()) { @@ -1183,8 +1184,9 @@ void SLAPrint::process() for(ClipperPolygon& p_tmp : v) model_polygons.emplace_back(std::move(p_tmp)); } - const ExPolygons &rawsupportslices = record.get_slice(soSupport); - const ExPolygons &supportslices = clpr_back_offs != 0 ? offset_ex(rawsupportslices, clpr_back_offs) : rawsupportslices; + // const ExPolygons &rawsupportslices = record.get_slice(soSupport); + // const ExPolygons &supportslices = clpr_back_offs != 0 ? offset_ex(rawsupportslices, clpr_back_offs) : rawsupportslices; + const ExPolygons &supportslices = record.get_slice(soSupport); if (!supportslices.empty()) { ClipperPolygons v = get_all_polygons(supportslices, po->instances(), is_lefth); From bfcd9f3c299b84ae94e1d522865f97da295c38aa Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Mon, 29 Apr 2019 16:53:16 +0200 Subject: [PATCH 2/9] Fix for unregistered scaling correction values. --- src/libslic3r/PrintConfig.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index a143051e0f..3e1fc5c3d9 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2266,7 +2266,7 @@ void PrintConfigDef::init_sla_params() def->tooltip = L("Printer scaling correction"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats( { 1., 1., 1. } ); + def->default_value = new ConfigOptionFloats( { 1., 1. } ); def = this->add("absolute_correction", coFloat); def->label = L("Printer absolute correction"); @@ -2323,7 +2323,7 @@ void PrintConfigDef::init_sla_params() def->tooltip = L("Correction for expansion"); def->min = 0; def->mode = comExpert; - def->default_value = new ConfigOptionFloats( { 1. , 1., 1. } ); + def->default_value = new ConfigOptionFloats( { 1. , 1. } ); def = this->add("material_notes", coString); def->label = L("SLA print material notes"); From 8098c09589f9af6ca3cda86bafb7d0cec49bf514 Mon Sep 17 00:00:00 2001 From: Vojtech Kral Date: Mon, 29 Apr 2019 16:55:41 +0200 Subject: [PATCH 3/9] MainFrame: Maximize by default (at first start) --- src/slic3r/GUI/GUI_App.cpp | 16 +++++++++++----- src/slic3r/GUI/GUI_App.hpp | 4 ++-- src/slic3r/GUI/MainFrame.cpp | 2 +- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 87f58aa1af..595a968bd2 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -466,7 +466,7 @@ void GUI_App::update_ui_from_settings() mainframe->update_ui_from_settings(); } -void GUI_App::persist_window_geometry(wxTopLevelWindow *window) +void GUI_App::persist_window_geometry(wxTopLevelWindow *window, bool default_maximized) { const std::string name = into_u8(window->GetName()); @@ -475,7 +475,7 @@ void GUI_App::persist_window_geometry(wxTopLevelWindow *window) event.Skip(); }); - window_pos_restore(window, name); + window_pos_restore(window, name, default_maximized); on_window_geometry(window, [=]() { window_pos_sanitize(window); @@ -883,15 +883,21 @@ void GUI_App::window_pos_save(wxTopLevelWindow* window, const std::string &name) app_config->save(); } -void GUI_App::window_pos_restore(wxTopLevelWindow* window, const std::string &name) +void GUI_App::window_pos_restore(wxTopLevelWindow* window, const std::string &name, bool default_maximized) { if (name.empty()) { return; } const auto config_key = (boost::format("window_%1%") % name).str(); - if (! app_config->has(config_key)) { return; } + if (! app_config->has(config_key)) { + window->Maximize(default_maximized); + return; + } auto metrics = WindowMetrics::deserialize(app_config->get(config_key)); - if (! metrics) { return; } + if (! metrics) { + window->Maximize(default_maximized); + return; + } window->SetSize(metrics->get_rect()); window->Maximize(metrics->get_maximized()); diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 5ee0c15095..3a6a443f06 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -124,7 +124,7 @@ public: const std::string& err); // void notify(/*message*/); - void persist_window_geometry(wxTopLevelWindow *window); + void persist_window_geometry(wxTopLevelWindow *window, bool default_maximized = false); void update_ui_from_settings(); bool select_language(wxArrayString & names, wxArrayLong & identifiers); @@ -176,7 +176,7 @@ public: private: bool on_init_inner(); void window_pos_save(wxTopLevelWindow* window, const std::string &name); - void window_pos_restore(wxTopLevelWindow* window, const std::string &name); + void window_pos_restore(wxTopLevelWindow* window, const std::string &name, bool default_maximized = false); void window_pos_sanitize(wxTopLevelWindow* window); }; DECLARE_APP(GUI_App) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 571b57235f..3e3642af52 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -129,7 +129,7 @@ DPIFrame(NULL, wxID_ANY, SLIC3R_BUILD, wxDefaultPosition, wxDefaultSize, wxDEFAU event.Skip(); }); - wxGetApp().persist_window_geometry(this); + wxGetApp().persist_window_geometry(this, true); update_ui_from_settings(); // FIXME (?) } From a7d57de6f3635aae28ca74289d7e9d7caffe7bdf Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Mon, 29 Apr 2019 17:07:55 +0200 Subject: [PATCH 4/9] Fix for possible clash with old correction vectors in config --- src/libslic3r/SLAPrint.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index 9be438eda9..4210b46d5a 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -1664,16 +1664,16 @@ Vec3d SLAPrint::relative_correction() const { Vec3d corr(1., 1., 1.); - if(printer_config().relative_correction.values.size() == 2) { + if(printer_config().relative_correction.values.size() >= 2) { corr(X) = printer_config().relative_correction.values[0]; corr(Y) = printer_config().relative_correction.values[0]; - corr(Z) = printer_config().relative_correction.values[1]; - } + corr(Z) = printer_config().relative_correction.values.back(); + } - if(material_config().material_correction.values.size() == 2) { + if(material_config().material_correction.values.size() >= 2) { corr(X) *= material_config().material_correction.values[0]; corr(Y) *= material_config().material_correction.values[0]; - corr(Z) *= material_config().material_correction.values[1]; + corr(Z) *= material_config().material_correction.values.back(); } return corr; From 0a1c092d756fed3001a5498a9f104336281aa7ef Mon Sep 17 00:00:00 2001 From: bubnikv Date: Tue, 30 Apr 2019 12:00:23 +0200 Subject: [PATCH 5/9] Use Prusa3D patched wxWidgets 3.1.1 --- deps/deps-macos.cmake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/deps/deps-macos.cmake b/deps/deps-macos.cmake index 790a65aeba..a47b229461 100644 --- a/deps/deps-macos.cmake +++ b/deps/deps-macos.cmake @@ -89,8 +89,10 @@ ExternalProject_Add(dep_libcurl ExternalProject_Add(dep_wxwidgets EXCLUDE_FROM_ALL 1 - URL "https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.2/wxWidgets-3.1.2.tar.bz2" - URL_HASH SHA256=4cb8d23d70f9261debf7d6cfeca667fc0a7d2b6565adb8f1c484f9b674f1f27a + GIT_REPOSITORY "https://github.com/prusa3d/wxWidgets" + GIT_TAG v3.1.1-patched +# URL "https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.2/wxWidgets-3.1.2.tar.bz2" +# URL_HASH SHA256=4cb8d23d70f9261debf7d6cfeca667fc0a7d2b6565adb8f1c484f9b674f1f27a BUILD_IN_SOURCE 1 PATCH_COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/wxwidgets-pngprefix.h" src/png/pngprefix.h CONFIGURE_COMMAND env "CXXFLAGS=${DEP_WERRORS_SDK}" "CFLAGS=${DEP_WERRORS_SDK}" ./configure From 52c28578d66050f86599688a7957afb0f3568e43 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Tue, 30 Apr 2019 12:19:29 +0200 Subject: [PATCH 6/9] Fixed compilation of dependencies on OSX --- deps/deps-macos.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/deps-macos.cmake b/deps/deps-macos.cmake index a47b229461..c7c6819e33 100644 --- a/deps/deps-macos.cmake +++ b/deps/deps-macos.cmake @@ -94,7 +94,7 @@ ExternalProject_Add(dep_wxwidgets # URL "https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.2/wxWidgets-3.1.2.tar.bz2" # URL_HASH SHA256=4cb8d23d70f9261debf7d6cfeca667fc0a7d2b6565adb8f1c484f9b674f1f27a BUILD_IN_SOURCE 1 - PATCH_COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/wxwidgets-pngprefix.h" src/png/pngprefix.h +# PATCH_COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/wxwidgets-pngprefix.h" src/png/pngprefix.h CONFIGURE_COMMAND env "CXXFLAGS=${DEP_WERRORS_SDK}" "CFLAGS=${DEP_WERRORS_SDK}" ./configure "--prefix=${DESTDIR}/usr/local" --disable-shared From 646986348a2534be397f3e496a5227727672694a Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 30 Apr 2019 13:51:36 +0200 Subject: [PATCH 7/9] Fixed menubar item's name in respect to printer_technology --- src/slic3r/GUI/MainFrame.cpp | 19 +++++++++++++++++-- src/slic3r/GUI/MainFrame.hpp | 11 +++++++++++ src/slic3r/GUI/Plater.cpp | 3 +++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 3e3642af52..cbc85ef238 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -332,6 +332,7 @@ void MainFrame::init_menubar() wxMenu* export_menu = new wxMenu(); wxMenuItem* item_export_gcode = append_menu_item(export_menu, wxID_ANY, _(L("Export &G-code")) + dots +"\tCtrl+G", _(L("Export current plate as G-code")), [this](wxCommandEvent&) { if (m_plater) m_plater->export_gcode(); }, "export_gcode"); + m_changeable_menu_items.push_back(item_export_gcode); export_menu->AppendSeparator(); wxMenuItem* item_export_stl = append_menu_item(export_menu, wxID_ANY, _(L("Export plate as &STL")) + dots, _(L("Export current plate as STL")), [this](wxCommandEvent&) { if (m_plater) m_plater->export_stl(); }, "export_plater"); @@ -444,8 +445,9 @@ void MainFrame::init_menubar() } append_menu_item(windowMenu, wxID_HIGHEST + 2, _(L("P&rint Settings Tab")) + "\tCtrl+2", _(L("Show the print settings")), [this, tab_offset](wxCommandEvent&) { select_tab(tab_offset + 0); }, "cog"); - append_menu_item(windowMenu, wxID_HIGHEST + 3, _(L("&Filament Settings Tab")) + "\tCtrl+3", _(L("Show the filament settings")), - [this, tab_offset](wxCommandEvent&) { select_tab(tab_offset + 1); }, "spool.png"); + wxMenuItem* item_material_tab = append_menu_item(windowMenu, wxID_HIGHEST + 3, _(L("&Filament Settings Tab")) + "\tCtrl+3", _(L("Show the filament settings")), + [this, tab_offset](wxCommandEvent&) { select_tab(tab_offset + 1); }, "spool"); + m_changeable_menu_items.push_back(item_material_tab); append_menu_item(windowMenu, wxID_HIGHEST + 4, _(L("Print&er Settings Tab")) + "\tCtrl+4", _(L("Show the printer settings")), [this, tab_offset](wxCommandEvent&) { select_tab(tab_offset + 2); }, "printer"); if (m_plater) { @@ -554,6 +556,19 @@ void MainFrame::init_menubar() }, wxID_EXIT); } #endif + + if (plater()->printer_technology() == ptSLA) + update_menubar(); +} + +void MainFrame::update_menubar() +{ + const bool is_fff = plater()->printer_technology() == ptFFF; + + m_changeable_menu_items[miExport] ->SetItemLabel((is_fff ? _(L("Export &G-code")) : _(L("Export")) ) + dots + "\tCtrl+G"); + + m_changeable_menu_items[miMaterialTab] ->SetItemLabel((is_fff ? _(L("&Filament Settings Tab")) : _(L("Mate&rial Settings Tab"))) + "\tCtrl+3"); + m_changeable_menu_items[miMaterialTab] ->SetBitmap(create_scaled_bitmap(this, is_fff ? "spool": "resin")); } // To perform the "Quck Slice", "Quick Slice and Save As", "Repeat last Quick Slice" and "Slice to SVG". diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index a8b2be2bc7..13bf07922f 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -70,6 +70,16 @@ class MainFrame : public DPIFrame bool can_delete() const; bool can_delete_all() const; + // MenuBar items changeable in respect to printer technology + enum MenuItems + { // FFF SLA + miExport = 0, // Export G-code Export + miMaterialTab, // Filament Settings Material Settings + }; + + // vector of a MenuBar items changeable in respect to printer technology + std::vector m_changeable_menu_items; + protected: virtual void on_dpi_changed(const wxRect &suggested_rect); @@ -83,6 +93,7 @@ public: void create_preset_tabs(); void add_created_tab(Tab* panel); void init_menubar(); + void update_menubar(); void update_ui_from_settings(); bool is_loaded() const { return m_loaded; } diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 02cdaf2082..2195471daa 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -3747,6 +3747,9 @@ void Plater::set_printer_technology(PrinterTechnology printer_technology) p->label_btn_export = printer_technology == ptFFF ? L("Export G-code") : L("Export"); p->label_btn_send = printer_technology == ptFFF ? L("Send G-code") : L("Send to printer"); + + if (wxGetApp().mainframe) + wxGetApp().mainframe->update_menubar(); } void Plater::changed_object(int obj_idx) From 3a5485a1790b30dcccefa1009a5c7010fdf2fc78 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Tue, 30 Apr 2019 15:09:25 +0200 Subject: [PATCH 8/9] Flip X mouse deltas if bed is upside down (when camera up vector has negative Z) --- src/slic3r/GUI/Camera.cpp | 1 + src/slic3r/GUI/Camera.hpp | 1 + src/slic3r/GUI/GLCanvas3D.cpp | 6 +++++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Camera.cpp b/src/slic3r/GUI/Camera.cpp index 7a1023e621..dd6cbefe19 100644 --- a/src/slic3r/GUI/Camera.cpp +++ b/src/slic3r/GUI/Camera.cpp @@ -25,6 +25,7 @@ Camera::Camera() , phi(45.0f) // , distance(0.0f) , requires_zoom_to_bed(false) + , inverted_phi(false) , m_theta(45.0f) , m_target(Vec3d::Zero()) { diff --git a/src/slic3r/GUI/Camera.hpp b/src/slic3r/GUI/Camera.hpp index d19bc870ef..b9c5dfc32c 100644 --- a/src/slic3r/GUI/Camera.hpp +++ b/src/slic3r/GUI/Camera.hpp @@ -22,6 +22,7 @@ struct Camera float phi; // float distance; bool requires_zoom_to_bed; + bool inverted_phi; private: Vec3d m_target; diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index dfddc7f452..d02878a1ad 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2729,7 +2729,8 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) if ((m_hover_volume_id == -1) && m_mouse.is_start_position_3D_defined()) { const Vec3d& orig = m_mouse.drag.start_position_3D; - m_camera.phi += (((float)pos(0) - (float)orig(0)) * TRACKBALLSIZE); + float sign = m_camera.inverted_phi ? -1.0f : 1.0f; + m_camera.phi += sign * ((float)pos(0) - (float)orig(0)) * TRACKBALLSIZE; m_camera.set_theta(m_camera.get_theta() - ((float)pos(1) - (float)orig(1)) * TRACKBALLSIZE, wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology() != ptSLA); m_dirty = true; } @@ -2781,6 +2782,9 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) post_event(SimpleEvent(EVT_GLCANVAS_OBJECT_SELECT)); } } + else if (evt.LeftUp() && m_mouse.dragging) + // Flips X mouse deltas if bed is upside down + m_camera.inverted_phi = (m_camera.get_dir_up()(2) < 0.0); else if (evt.RightUp()) { m_mouse.position = pos.cast(); From f18ebec8e94dcb1a507a69ddf698220b36e363c9 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 30 Apr 2019 15:13:38 +0200 Subject: [PATCH 9/9] Added menu icons for a dark mode --- resources/icons/layers.svg | 8 +- resources/icons/white/add_copies.svg | 19 ++++ resources/icons/white/add_modifier.svg | 13 +++ resources/icons/white/add_part.svg | 20 ++++ resources/icons/white/advanced+wrench.svg | 43 +++++++++ resources/icons/white/advanced_plus.svg | 24 +++++ resources/icons/white/cog.svg | 17 ++++ resources/icons/white/cooling.svg | 25 +++++ resources/icons/white/copy_menu.svg | 37 ++++++++ resources/icons/white/delete.svg | 22 +++++ resources/icons/white/delete_all_menu.svg | 31 ++++++ resources/icons/white/editor_menu.svg | 20 ++++ resources/icons/white/export_config.svg | 20 ++++ .../icons/white/export_config_bundle.svg | 50 ++++++++++ resources/icons/white/export_gcode.svg | 14 +++ resources/icons/white/export_plate.svg | 15 +++ resources/icons/white/export_plater.svg | 12 +++ resources/icons/white/extruder+funnel.svg | 15 +++ resources/icons/white/flag_green.svg | 10 ++ resources/icons/white/flag_red.svg | 10 ++ resources/icons/white/import_config.svg | 25 +++++ .../icons/white/import_config_bundle.svg | 61 ++++++++++++ resources/icons/white/import_plate.svg | 38 ++++++++ resources/icons/white/import_plater.svg | 17 ++++ resources/icons/white/infill.svg | 35 +++++++ resources/icons/white/layers.svg | 27 ++++++ resources/icons/white/lock2_closed.svg | 10 ++ resources/icons/white/lock_closed.svg | 10 ++ resources/icons/white/machine+cog.svg | 30 ++++++ resources/icons/white/notes.svg | 25 +++++ resources/icons/white/number_of_copies.svg | 29 ++++++ resources/icons/white/open.svg | 11 +++ resources/icons/white/output+page_white.svg | 20 ++++ resources/icons/white/pad.svg | 83 ++++++++++++++++ resources/icons/white/paste_menu.svg | 27 ++++++ resources/icons/white/plater.svg | 12 +++ resources/icons/white/preview_menu.svg | 48 ++++++++++ resources/icons/white/printer.svg | 14 +++ resources/icons/white/re_slice.svg | 19 ++++ resources/icons/white/remove_copies.svg | 15 +++ resources/icons/white/remove_menu.svg | 44 +++++++++ resources/icons/white/resin.svg | 10 ++ resources/icons/white/save.svg | 25 +++++ resources/icons/white/set_separate_obj.svg | 29 ++++++ resources/icons/white/skirt+brim.svg | 15 +++ resources/icons/white/split_object_SMALL.svg | 19 ++++ resources/icons/white/split_parts_SMALL.svg | 18 ++++ resources/icons/white/spool.svg | 21 +++++ resources/icons/white/support.svg | 94 +++++++++++++++++++ resources/icons/white/support_blocker.svg | 48 ++++++++++ resources/icons/white/support_enforcer.svg | 19 ++++ resources/icons/white/test.svg | 37 ++++++++ resources/icons/white/time.svg | 16 ++++ resources/icons/white/upload_queue.svg | 29 ++++++ resources/icons/white/wrench.svg | 20 ++++ resources/icons/wrench_white.svg | 20 ++++ src/slic3r/GUI/MainFrame.cpp | 62 +++++++----- 57 files changed, 1477 insertions(+), 30 deletions(-) create mode 100644 resources/icons/white/add_copies.svg create mode 100644 resources/icons/white/add_modifier.svg create mode 100644 resources/icons/white/add_part.svg create mode 100644 resources/icons/white/advanced+wrench.svg create mode 100644 resources/icons/white/advanced_plus.svg create mode 100644 resources/icons/white/cog.svg create mode 100644 resources/icons/white/cooling.svg create mode 100644 resources/icons/white/copy_menu.svg create mode 100644 resources/icons/white/delete.svg create mode 100644 resources/icons/white/delete_all_menu.svg create mode 100644 resources/icons/white/editor_menu.svg create mode 100644 resources/icons/white/export_config.svg create mode 100644 resources/icons/white/export_config_bundle.svg create mode 100644 resources/icons/white/export_gcode.svg create mode 100644 resources/icons/white/export_plate.svg create mode 100644 resources/icons/white/export_plater.svg create mode 100644 resources/icons/white/extruder+funnel.svg create mode 100644 resources/icons/white/flag_green.svg create mode 100644 resources/icons/white/flag_red.svg create mode 100644 resources/icons/white/import_config.svg create mode 100644 resources/icons/white/import_config_bundle.svg create mode 100644 resources/icons/white/import_plate.svg create mode 100644 resources/icons/white/import_plater.svg create mode 100644 resources/icons/white/infill.svg create mode 100644 resources/icons/white/layers.svg create mode 100644 resources/icons/white/lock2_closed.svg create mode 100644 resources/icons/white/lock_closed.svg create mode 100644 resources/icons/white/machine+cog.svg create mode 100644 resources/icons/white/notes.svg create mode 100644 resources/icons/white/number_of_copies.svg create mode 100644 resources/icons/white/open.svg create mode 100644 resources/icons/white/output+page_white.svg create mode 100644 resources/icons/white/pad.svg create mode 100644 resources/icons/white/paste_menu.svg create mode 100644 resources/icons/white/plater.svg create mode 100644 resources/icons/white/preview_menu.svg create mode 100644 resources/icons/white/printer.svg create mode 100644 resources/icons/white/re_slice.svg create mode 100644 resources/icons/white/remove_copies.svg create mode 100644 resources/icons/white/remove_menu.svg create mode 100644 resources/icons/white/resin.svg create mode 100644 resources/icons/white/save.svg create mode 100644 resources/icons/white/set_separate_obj.svg create mode 100644 resources/icons/white/skirt+brim.svg create mode 100644 resources/icons/white/split_object_SMALL.svg create mode 100644 resources/icons/white/split_parts_SMALL.svg create mode 100644 resources/icons/white/spool.svg create mode 100644 resources/icons/white/support.svg create mode 100644 resources/icons/white/support_blocker.svg create mode 100644 resources/icons/white/support_enforcer.svg create mode 100644 resources/icons/white/test.svg create mode 100644 resources/icons/white/time.svg create mode 100644 resources/icons/white/upload_queue.svg create mode 100644 resources/icons/white/wrench.svg create mode 100644 resources/icons/wrench_white.svg diff --git a/resources/icons/layers.svg b/resources/icons/layers.svg index cd71fab3a3..da5dec21d5 100644 --- a/resources/icons/layers.svg +++ b/resources/icons/layers.svg @@ -5,13 +5,13 @@ - + - + - + @@ -20,7 +20,7 @@ - + diff --git a/resources/icons/white/add_copies.svg b/resources/icons/white/add_copies.svg new file mode 100644 index 0000000000..17eff0179e --- /dev/null +++ b/resources/icons/white/add_copies.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/white/add_modifier.svg b/resources/icons/white/add_modifier.svg new file mode 100644 index 0000000000..09c3ce27dc --- /dev/null +++ b/resources/icons/white/add_modifier.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/resources/icons/white/add_part.svg b/resources/icons/white/add_part.svg new file mode 100644 index 0000000000..b7c800bbb2 --- /dev/null +++ b/resources/icons/white/add_part.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/white/advanced+wrench.svg b/resources/icons/white/advanced+wrench.svg new file mode 100644 index 0000000000..5e878cb3cc --- /dev/null +++ b/resources/icons/white/advanced+wrench.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/white/advanced_plus.svg b/resources/icons/white/advanced_plus.svg new file mode 100644 index 0000000000..db532ec4b1 --- /dev/null +++ b/resources/icons/white/advanced_plus.svg @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/resources/icons/white/cog.svg b/resources/icons/white/cog.svg new file mode 100644 index 0000000000..773e4d65dd --- /dev/null +++ b/resources/icons/white/cog.svg @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/resources/icons/white/cooling.svg b/resources/icons/white/cooling.svg new file mode 100644 index 0000000000..29bd04c368 --- /dev/null +++ b/resources/icons/white/cooling.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/copy_menu.svg b/resources/icons/white/copy_menu.svg new file mode 100644 index 0000000000..d660aab6a2 --- /dev/null +++ b/resources/icons/white/copy_menu.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/delete.svg b/resources/icons/white/delete.svg new file mode 100644 index 0000000000..91d5ce74c5 --- /dev/null +++ b/resources/icons/white/delete.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/delete_all_menu.svg b/resources/icons/white/delete_all_menu.svg new file mode 100644 index 0000000000..5d825c424c --- /dev/null +++ b/resources/icons/white/delete_all_menu.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/editor_menu.svg b/resources/icons/white/editor_menu.svg new file mode 100644 index 0000000000..649d2c40fa --- /dev/null +++ b/resources/icons/white/editor_menu.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/export_config.svg b/resources/icons/white/export_config.svg new file mode 100644 index 0000000000..22f8ebe1a6 --- /dev/null +++ b/resources/icons/white/export_config.svg @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/resources/icons/white/export_config_bundle.svg b/resources/icons/white/export_config_bundle.svg new file mode 100644 index 0000000000..99bd62b6c3 --- /dev/null +++ b/resources/icons/white/export_config_bundle.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/export_gcode.svg b/resources/icons/white/export_gcode.svg new file mode 100644 index 0000000000..39f5225cbe --- /dev/null +++ b/resources/icons/white/export_gcode.svg @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/resources/icons/white/export_plate.svg b/resources/icons/white/export_plate.svg new file mode 100644 index 0000000000..18159d2a87 --- /dev/null +++ b/resources/icons/white/export_plate.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/resources/icons/white/export_plater.svg b/resources/icons/white/export_plater.svg new file mode 100644 index 0000000000..e71b38a0aa --- /dev/null +++ b/resources/icons/white/export_plater.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/resources/icons/white/extruder+funnel.svg b/resources/icons/white/extruder+funnel.svg new file mode 100644 index 0000000000..de6b227da2 --- /dev/null +++ b/resources/icons/white/extruder+funnel.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/resources/icons/white/flag_green.svg b/resources/icons/white/flag_green.svg new file mode 100644 index 0000000000..8479d0e9a9 --- /dev/null +++ b/resources/icons/white/flag_green.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/resources/icons/white/flag_red.svg b/resources/icons/white/flag_red.svg new file mode 100644 index 0000000000..a9b1cf8fed --- /dev/null +++ b/resources/icons/white/flag_red.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/resources/icons/white/import_config.svg b/resources/icons/white/import_config.svg new file mode 100644 index 0000000000..001277f738 --- /dev/null +++ b/resources/icons/white/import_config.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/white/import_config_bundle.svg b/resources/icons/white/import_config_bundle.svg new file mode 100644 index 0000000000..c16cd7b3c6 --- /dev/null +++ b/resources/icons/white/import_config_bundle.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/import_plate.svg b/resources/icons/white/import_plate.svg new file mode 100644 index 0000000000..7f888e3d78 --- /dev/null +++ b/resources/icons/white/import_plate.svg @@ -0,0 +1,38 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/import_plater.svg b/resources/icons/white/import_plater.svg new file mode 100644 index 0000000000..1dc5aae6eb --- /dev/null +++ b/resources/icons/white/import_plater.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + diff --git a/resources/icons/white/infill.svg b/resources/icons/white/infill.svg new file mode 100644 index 0000000000..0860430998 --- /dev/null +++ b/resources/icons/white/infill.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/layers.svg b/resources/icons/white/layers.svg new file mode 100644 index 0000000000..cd71fab3a3 --- /dev/null +++ b/resources/icons/white/layers.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/lock2_closed.svg b/resources/icons/white/lock2_closed.svg new file mode 100644 index 0000000000..726c850a11 --- /dev/null +++ b/resources/icons/white/lock2_closed.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/resources/icons/white/lock_closed.svg b/resources/icons/white/lock_closed.svg new file mode 100644 index 0000000000..1665dc9a08 --- /dev/null +++ b/resources/icons/white/lock_closed.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/resources/icons/white/machine+cog.svg b/resources/icons/white/machine+cog.svg new file mode 100644 index 0000000000..ec49265b81 --- /dev/null +++ b/resources/icons/white/machine+cog.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + diff --git a/resources/icons/white/notes.svg b/resources/icons/white/notes.svg new file mode 100644 index 0000000000..25de4191e8 --- /dev/null +++ b/resources/icons/white/notes.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/number_of_copies.svg b/resources/icons/white/number_of_copies.svg new file mode 100644 index 0000000000..7c9d78a801 --- /dev/null +++ b/resources/icons/white/number_of_copies.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/open.svg b/resources/icons/white/open.svg new file mode 100644 index 0000000000..0ea9ecdb2c --- /dev/null +++ b/resources/icons/white/open.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/resources/icons/white/output+page_white.svg b/resources/icons/white/output+page_white.svg new file mode 100644 index 0000000000..0838740032 --- /dev/null +++ b/resources/icons/white/output+page_white.svg @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/resources/icons/white/pad.svg b/resources/icons/white/pad.svg new file mode 100644 index 0000000000..cddb2da022 --- /dev/null +++ b/resources/icons/white/pad.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/paste_menu.svg b/resources/icons/white/paste_menu.svg new file mode 100644 index 0000000000..465c2faf08 --- /dev/null +++ b/resources/icons/white/paste_menu.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + diff --git a/resources/icons/white/plater.svg b/resources/icons/white/plater.svg new file mode 100644 index 0000000000..d637a5e7e7 --- /dev/null +++ b/resources/icons/white/plater.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/resources/icons/white/preview_menu.svg b/resources/icons/white/preview_menu.svg new file mode 100644 index 0000000000..98095359c9 --- /dev/null +++ b/resources/icons/white/preview_menu.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/printer.svg b/resources/icons/white/printer.svg new file mode 100644 index 0000000000..d94f6fd5c4 --- /dev/null +++ b/resources/icons/white/printer.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + diff --git a/resources/icons/white/re_slice.svg b/resources/icons/white/re_slice.svg new file mode 100644 index 0000000000..b8d7dc7271 --- /dev/null +++ b/resources/icons/white/re_slice.svg @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/resources/icons/white/remove_copies.svg b/resources/icons/white/remove_copies.svg new file mode 100644 index 0000000000..5b277e45e9 --- /dev/null +++ b/resources/icons/white/remove_copies.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/resources/icons/white/remove_menu.svg b/resources/icons/white/remove_menu.svg new file mode 100644 index 0000000000..59360a33f4 --- /dev/null +++ b/resources/icons/white/remove_menu.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + diff --git a/resources/icons/white/resin.svg b/resources/icons/white/resin.svg new file mode 100644 index 0000000000..81abfae0ce --- /dev/null +++ b/resources/icons/white/resin.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/resources/icons/white/save.svg b/resources/icons/white/save.svg new file mode 100644 index 0000000000..3349a42dd5 --- /dev/null +++ b/resources/icons/white/save.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/set_separate_obj.svg b/resources/icons/white/set_separate_obj.svg new file mode 100644 index 0000000000..de083c1c99 --- /dev/null +++ b/resources/icons/white/set_separate_obj.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/skirt+brim.svg b/resources/icons/white/skirt+brim.svg new file mode 100644 index 0000000000..684e177d25 --- /dev/null +++ b/resources/icons/white/skirt+brim.svg @@ -0,0 +1,15 @@ + + + + + + diff --git a/resources/icons/white/split_object_SMALL.svg b/resources/icons/white/split_object_SMALL.svg new file mode 100644 index 0000000000..4795cab512 --- /dev/null +++ b/resources/icons/white/split_object_SMALL.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + diff --git a/resources/icons/white/split_parts_SMALL.svg b/resources/icons/white/split_parts_SMALL.svg new file mode 100644 index 0000000000..eba846c17f --- /dev/null +++ b/resources/icons/white/split_parts_SMALL.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/resources/icons/white/spool.svg b/resources/icons/white/spool.svg new file mode 100644 index 0000000000..7c9fbab977 --- /dev/null +++ b/resources/icons/white/spool.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/support.svg b/resources/icons/white/support.svg new file mode 100644 index 0000000000..52b7c6b40e --- /dev/null +++ b/resources/icons/white/support.svg @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/support_blocker.svg b/resources/icons/white/support_blocker.svg new file mode 100644 index 0000000000..17401e2ab2 --- /dev/null +++ b/resources/icons/white/support_blocker.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/support_enforcer.svg b/resources/icons/white/support_enforcer.svg new file mode 100644 index 0000000000..0de2dc6a79 --- /dev/null +++ b/resources/icons/white/support_enforcer.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/resources/icons/white/test.svg b/resources/icons/white/test.svg new file mode 100644 index 0000000000..639bbbde8e --- /dev/null +++ b/resources/icons/white/test.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/time.svg b/resources/icons/white/time.svg new file mode 100644 index 0000000000..d014286b5a --- /dev/null +++ b/resources/icons/white/time.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + diff --git a/resources/icons/white/upload_queue.svg b/resources/icons/white/upload_queue.svg new file mode 100644 index 0000000000..710e2be89d --- /dev/null +++ b/resources/icons/white/upload_queue.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + diff --git a/resources/icons/white/wrench.svg b/resources/icons/white/wrench.svg new file mode 100644 index 0000000000..714c5a82af --- /dev/null +++ b/resources/icons/white/wrench.svg @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/resources/icons/wrench_white.svg b/resources/icons/wrench_white.svg new file mode 100644 index 0000000000..714c5a82af --- /dev/null +++ b/resources/icons/wrench_white.svg @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index cbc85ef238..78d17a4f1a 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -298,6 +298,16 @@ void MainFrame::on_dpi_changed(const wxRect &suggested_rect) this->Maximize(is_maximized); } +static std::string menu_icon(const std::string& icon_name) +{ +#ifdef __WXMSW__ + const std::string folder = "white\\"; +#else + const std::string folder = "white/"; +#endif + return wxGetApp().dark_mode_menus() ? folder+icon_name : icon_name; +} + void MainFrame::init_menubar() { #ifdef __APPLE__ @@ -308,41 +318,41 @@ void MainFrame::init_menubar() wxMenu* fileMenu = new wxMenu; { wxMenuItem* item_open = append_menu_item(fileMenu, wxID_ANY, _(L("&Open Project")) + dots + "\tCtrl+O", _(L("Open a project file")), - [this](wxCommandEvent&) { if (m_plater) m_plater->load_project(); }, "open"); + [this](wxCommandEvent&) { if (m_plater) m_plater->load_project(); }, menu_icon("open")); wxMenuItem* item_save = append_menu_item(fileMenu, wxID_ANY, _(L("&Save Project")) + "\tCtrl+S", _(L("Save current project file")), - [this](wxCommandEvent&) { if (m_plater) m_plater->export_3mf(into_path(m_plater->get_project_filename())); }, "save"); + [this](wxCommandEvent&) { if (m_plater) m_plater->export_3mf(into_path(m_plater->get_project_filename())); }, menu_icon("save")); wxMenuItem* item_save_as = append_menu_item(fileMenu, wxID_ANY, _(L("Save Project &as")) + dots + "\tCtrl+Alt+S", _(L("Save current project file as")), - [this](wxCommandEvent&) { if (m_plater) m_plater->export_3mf(); }, "save"); + [this](wxCommandEvent&) { if (m_plater) m_plater->export_3mf(); }, menu_icon("save")); fileMenu->AppendSeparator(); wxMenu* import_menu = new wxMenu(); wxMenuItem* item_import_model = append_menu_item(import_menu, wxID_ANY, _(L("Import STL/OBJ/AM&F/3MF")) + dots + "\tCtrl+I", _(L("Load a model")), - [this](wxCommandEvent&) { if (m_plater) m_plater->add_model(); }, "import_plater"); + [this](wxCommandEvent&) { if (m_plater) m_plater->add_model(); }, menu_icon("import_plater")); import_menu->AppendSeparator(); append_menu_item(import_menu, wxID_ANY, _(L("Import &Config")) + dots + "\tCtrl+L", _(L("Load exported configuration file")), - [this](wxCommandEvent&) { load_config_file(); }, "import_config"); + [this](wxCommandEvent&) { load_config_file(); }, menu_icon("import_config")); append_menu_item(import_menu, wxID_ANY, _(L("Import Config from &project")) + dots +"\tCtrl+Alt+L", _(L("Load configuration from project file")), - [this](wxCommandEvent&) { if (m_plater) m_plater->extract_config_from_project(); }, "import_config"); + [this](wxCommandEvent&) { if (m_plater) m_plater->extract_config_from_project(); }, menu_icon("import_config")); import_menu->AppendSeparator(); append_menu_item(import_menu, wxID_ANY, _(L("Import Config &Bundle")) + dots, _(L("Load presets from a bundle")), - [this](wxCommandEvent&) { load_configbundle(); }, "import_config_bundle"); + [this](wxCommandEvent&) { load_configbundle(); }, menu_icon("import_config_bundle")); append_submenu(fileMenu, import_menu, wxID_ANY, _(L("&Import")), ""); wxMenu* export_menu = new wxMenu(); wxMenuItem* item_export_gcode = append_menu_item(export_menu, wxID_ANY, _(L("Export &G-code")) + dots +"\tCtrl+G", _(L("Export current plate as G-code")), - [this](wxCommandEvent&) { if (m_plater) m_plater->export_gcode(); }, "export_gcode"); + [this](wxCommandEvent&) { if (m_plater) m_plater->export_gcode(); }, menu_icon("export_gcode")); m_changeable_menu_items.push_back(item_export_gcode); export_menu->AppendSeparator(); wxMenuItem* item_export_stl = append_menu_item(export_menu, wxID_ANY, _(L("Export plate as &STL")) + dots, _(L("Export current plate as STL")), - [this](wxCommandEvent&) { if (m_plater) m_plater->export_stl(); }, "export_plater"); + [this](wxCommandEvent&) { if (m_plater) m_plater->export_stl(); }, menu_icon("export_plater")); wxMenuItem* item_export_amf = append_menu_item(export_menu, wxID_ANY, _(L("Export plate as &AMF")) + dots, _(L("Export current plate as AMF")), - [this](wxCommandEvent&) { if (m_plater) m_plater->export_amf(); }, "export_plater"); + [this](wxCommandEvent&) { if (m_plater) m_plater->export_amf(); }, menu_icon("export_plater")); export_menu->AppendSeparator(); append_menu_item(export_menu, wxID_ANY, _(L("Export &Config")) +dots +"\tCtrl+E", _(L("Export current configuration to file")), - [this](wxCommandEvent&) { export_config(); }, "export_config"); + [this](wxCommandEvent&) { export_config(); }, menu_icon("export_config")); append_menu_item(export_menu, wxID_ANY, _(L("Export Config &Bundle")) + dots, _(L("Export all presets to file")), - [this](wxCommandEvent&) { export_configbundle(); }, "export_config_bundle"); + [this](wxCommandEvent&) { export_configbundle(); }, menu_icon("export_config_bundle")); append_submenu(fileMenu, export_menu, wxID_ANY, _(L("&Export")), ""); fileMenu->AppendSeparator(); @@ -370,10 +380,10 @@ void MainFrame::init_menubar() fileMenu->AppendSeparator(); #endif m_menu_item_reslice_now = append_menu_item(fileMenu, wxID_ANY, _(L("(Re)Slice &Now")) + "\tCtrl+R", _(L("Start new slicing process")), - [this](wxCommandEvent&) { reslice_now(); }, "re_slice"); + [this](wxCommandEvent&) { reslice_now(); }, menu_icon("re_slice")); fileMenu->AppendSeparator(); append_menu_item(fileMenu, wxID_ANY, _(L("&Repair STL file")) + dots, _(L("Automatically repair an STL file")), - [this](wxCommandEvent&) { repair_stl(); }, "wrench"); + [this](wxCommandEvent&) { repair_stl(); }, menu_icon("wrench")); fileMenu->AppendSeparator(); append_menu_item(fileMenu, wxID_EXIT, _(L("&Quit")), wxString::Format(_(L("Quit %s")), SLIC3R_APP_NAME), [this](wxCommandEvent&) { Close(false); }); @@ -413,16 +423,16 @@ void MainFrame::init_menubar() [this](wxCommandEvent&) { m_plater->select_all(); }, ""); editMenu->AppendSeparator(); wxMenuItem* item_delete_sel = append_menu_item(editMenu, wxID_ANY, _(L("&Delete selected")) + sep + hotkey_delete, _(L("Deletes the current selection")), - [this](wxCommandEvent&) { m_plater->remove_selected(); }, "remove_menu"); + [this](wxCommandEvent&) { m_plater->remove_selected(); }, menu_icon("remove_menu")); wxMenuItem* item_delete_all = append_menu_item(editMenu, wxID_ANY, _(L("Delete &all")) + sep + GUI::shortkey_ctrl_prefix() + sep_space + hotkey_delete, _(L("Deletes all objects")), - [this](wxCommandEvent&) { m_plater->reset(); }, "delete_all_menu"); + [this](wxCommandEvent&) { m_plater->reset(); }, menu_icon("delete_all_menu")); editMenu->AppendSeparator(); wxMenuItem* item_copy = append_menu_item(editMenu, wxID_ANY, _(L("&Copy")) + sep + GUI::shortkey_ctrl_prefix() + sep_space + "C", _(L("Copy selection to clipboard")), - [this](wxCommandEvent&) { m_plater->copy_selection_to_clipboard(); }, "copy_menu"); + [this](wxCommandEvent&) { m_plater->copy_selection_to_clipboard(); }, menu_icon("copy_menu")); wxMenuItem* item_paste = append_menu_item(editMenu, wxID_ANY, _(L("&Paste")) + sep + GUI::shortkey_ctrl_prefix() + sep_space + "V", _(L("Paste clipboard")), - [this](wxCommandEvent&) { m_plater->paste_from_clipboard(); }, "paste_menu"); + [this](wxCommandEvent&) { m_plater->paste_from_clipboard(); }, menu_icon("paste_menu")); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_select()); }, item_select_all->GetId()); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_delete()); }, item_delete_sel->GetId()); @@ -437,25 +447,25 @@ void MainFrame::init_menubar() size_t tab_offset = 0; if (m_plater) { append_menu_item(windowMenu, wxID_HIGHEST + 1, _(L("&Plater Tab")) + "\tCtrl+1", _(L("Show the plater")), - [this](wxCommandEvent&) { select_tab(0); }, "plater"); + [this](wxCommandEvent&) { select_tab(0); }, menu_icon("plater")); tab_offset += 1; } if (tab_offset > 0) { windowMenu->AppendSeparator(); } append_menu_item(windowMenu, wxID_HIGHEST + 2, _(L("P&rint Settings Tab")) + "\tCtrl+2", _(L("Show the print settings")), - [this, tab_offset](wxCommandEvent&) { select_tab(tab_offset + 0); }, "cog"); + [this, tab_offset](wxCommandEvent&) { select_tab(tab_offset + 0); }, menu_icon("cog")); wxMenuItem* item_material_tab = append_menu_item(windowMenu, wxID_HIGHEST + 3, _(L("&Filament Settings Tab")) + "\tCtrl+3", _(L("Show the filament settings")), - [this, tab_offset](wxCommandEvent&) { select_tab(tab_offset + 1); }, "spool"); + [this, tab_offset](wxCommandEvent&) { select_tab(tab_offset + 1); }, menu_icon("spool")); m_changeable_menu_items.push_back(item_material_tab); append_menu_item(windowMenu, wxID_HIGHEST + 4, _(L("Print&er Settings Tab")) + "\tCtrl+4", _(L("Show the printer settings")), - [this, tab_offset](wxCommandEvent&) { select_tab(tab_offset + 2); }, "printer"); + [this, tab_offset](wxCommandEvent&) { select_tab(tab_offset + 2); }, menu_icon("printer")); if (m_plater) { windowMenu->AppendSeparator(); wxMenuItem* item_3d = append_menu_item(windowMenu, wxID_HIGHEST + 5, _(L("3&D")) + "\tCtrl+5", _(L("Show the 3D editing view")), - [this](wxCommandEvent&) { m_plater->select_view_3D("3D"); }, "editor_menu"); + [this](wxCommandEvent&) { m_plater->select_view_3D("3D"); }, menu_icon("editor_menu")); wxMenuItem* item_preview = append_menu_item(windowMenu, wxID_HIGHEST + 6, _(L("Pre&view")) + "\tCtrl+6", _(L("Show the 3D slices preview")), - [this](wxCommandEvent&) { m_plater->select_view_3D("Preview"); }, "preview_menu"); + [this](wxCommandEvent&) { m_plater->select_view_3D("Preview"); }, menu_icon("preview_menu")); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_change_view()); }, item_3d->GetId()); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_change_view()); }, item_preview->GetId()); @@ -476,7 +486,7 @@ void MainFrame::init_menubar() windowMenu->AppendSeparator(); append_menu_item(windowMenu, wxID_ANY, _(L("Print &Host Upload Queue")) + "\tCtrl+J", _(L("Display the Print Host Upload Queue window")), - [this](wxCommandEvent&) { m_printhost_queue_dlg->Show(); }, "upload_queue"); + [this](wxCommandEvent&) { m_printhost_queue_dlg->Show(); }, menu_icon("upload_queue")); } // View menu @@ -568,7 +578,7 @@ void MainFrame::update_menubar() m_changeable_menu_items[miExport] ->SetItemLabel((is_fff ? _(L("Export &G-code")) : _(L("Export")) ) + dots + "\tCtrl+G"); m_changeable_menu_items[miMaterialTab] ->SetItemLabel((is_fff ? _(L("&Filament Settings Tab")) : _(L("Mate&rial Settings Tab"))) + "\tCtrl+3"); - m_changeable_menu_items[miMaterialTab] ->SetBitmap(create_scaled_bitmap(this, is_fff ? "spool": "resin")); + m_changeable_menu_items[miMaterialTab] ->SetBitmap(create_scaled_bitmap(this, menu_icon(is_fff ? "spool": "resin"))); } // To perform the "Quck Slice", "Quick Slice and Save As", "Repeat last Quick Slice" and "Slice to SVG".