From 11d8a2ad8e8635a568d1ba4f6ea5e83151eb4d2f Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Fri, 2 Oct 2020 11:40:21 +0200 Subject: [PATCH] Start PrusaSlicer in gcode viewer mode when dragging and dropping a .gcode file on the application icon --- src/PrusaSlicer.cpp | 11 +++++++++++ src/libslic3r/Technologies.hpp | 1 + src/slic3r/GUI/MainFrame.cpp | 19 +++++++++++++++++-- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/PrusaSlicer.cpp b/src/PrusaSlicer.cpp index d79196cfa..8f96de3ed 100644 --- a/src/PrusaSlicer.cpp +++ b/src/PrusaSlicer.cpp @@ -154,6 +154,17 @@ int CLI::run(int argc, char **argv) // Read input file(s) if any. #if ENABLE_GCODE_VIEWER +#if ENABLE_GCODE_DRAG_AND_DROP_GCODE_FILES + for (const std::string& file : m_input_files) { + std::string ext = boost::filesystem::path(file).extension().string(); + if (boost::filesystem::path(file).extension().string() == ".gcode") { + if (boost::filesystem::exists(file)) { + start_as_gcodeviewer = true; + break; + } + } + } +#endif // ENABLE_GCODE_DRAG_AND_DROP_GCODE_FILES if (!start_as_gcodeviewer) { #endif // ENABLE_GCODE_VIEWER for (const std::string& file : m_input_files) { diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index a0484b259..786557cf1 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -59,5 +59,6 @@ #define ENABLE_GCODE_VIEWER_STATISTICS (0 && ENABLE_GCODE_VIEWER) #define ENABLE_GCODE_VIEWER_DATA_CHECKING (0 && ENABLE_GCODE_VIEWER) #define ENABLE_GCODE_VIEWER_TASKBAR_ICON (0 && ENABLE_GCODE_VIEWER) +#define ENABLE_GCODE_DRAG_AND_DROP_GCODE_FILES (1 && ENABLE_GCODE_VIEWER) #endif // _prusaslicer_technologies_h_ diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index ca9ddf512..4ecd36c7f 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -89,10 +89,26 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S // Load the icon either from the exe, or from the ico file. #if _WIN32 { - +#if ENABLE_GCODE_DRAG_AND_DROP_GCODE_FILES + switch (wxGetApp().get_app_mode()) + { + default: + case GUI_App::EAppMode::Editor: + { + SetIcon(wxIcon(Slic3r::var("PrusaSlicer.ico"), wxBITMAP_TYPE_ICO)); + break; + } + case GUI_App::EAppMode::GCodeViewer: + { + SetIcon(wxIcon(Slic3r::var("PrusaSlicer-gcodeviewer.ico"), wxBITMAP_TYPE_ICO)); + break; + } + } +#else TCHAR szExeFileName[MAX_PATH]; GetModuleFileName(nullptr, szExeFileName, MAX_PATH); SetIcon(wxIcon(szExeFileName, wxBITMAP_TYPE_ICO)); +#endif // ENABLE_GCODE_DRAG_AND_DROP_GCODE_FILES } #else #if ENABLE_GCODE_VIEWER @@ -1965,7 +1981,6 @@ SettingsDialog::SettingsDialog(MainFrame* mainframe) // Load the icon either from the exe, or from the ico file. #if _WIN32 { - TCHAR szExeFileName[MAX_PATH]; GetModuleFileName(nullptr, szExeFileName, MAX_PATH); SetIcon(wxIcon(szExeFileName, wxBITMAP_TYPE_ICO));