diff --git a/src/downloader/CMakeLists.txt b/src/downloader/CMakeLists.txt index b6412de133..3f89d6ec7c 100644 --- a/src/downloader/CMakeLists.txt +++ b/src/downloader/CMakeLists.txt @@ -1,7 +1,8 @@ #cmake_minimum_required(VERSION 3.13) #project(PrusaSlicer_Downloader) -add_executable(PrusaSlicer_Downloader WIN32 +#add_executable(PrusaSlicer_Downloader WIN32 +add_executable(PrusaSlicer_Downloader DownloaderApp.cpp DownloaderApp.hpp Download.cpp diff --git a/src/downloader/DownloaderApp.cpp b/src/downloader/DownloaderApp.cpp index 68e09b82b9..4cf3b5369f 100644 --- a/src/downloader/DownloaderApp.cpp +++ b/src/downloader/DownloaderApp.cpp @@ -125,10 +125,10 @@ bool DownloadApp::OnCmdLineParsed(wxCmdLineParser& parser) m_frame->Close(true); return false; } else { - if (!url.empty() && m_frame != nullptr) + if (!url.empty() && m_frame != nullptr) { m_frame->start_download(std::move(url)); - - //m_frame->start_download("open?file=https%3A%2F%2Fmedia.printables.com%2Fmedia%2Fprints%2F152208%2Fstls%2F1431590_8b8287b3-03b1-4cbe-82d0-268a0affa171%2Ff1_logo.stl"); + //m_frame->start_download("prusaslicer://open?file=https%3A%2F%2Fmedia.printables.com%2Fmedia%2Fprints%2F152208%2Fstls%2F1431590_8b8287b3-03b1-4cbe-82d0-268a0affa171%2Ff1_logo.stl"); + } return wxApp::OnCmdLineParsed(parser); } @@ -207,10 +207,12 @@ DownloadFrame::DownloadFrame(const wxString& title, const wxPoint& pos, const wx void DownloadFrame::start_download(wxString url) { + printf("start_download %s \n", boost::nowide::narrow(url).c_str()); // prusaslicer://open?file=https%3A%2F%2Fmedia.printables.com%2Fmedia%2Fprints%2F152208%2Fstls%2F1431590_8b8287b3-03b1-4cbe-82d0-268a0affa171%2Ff1_logo.stl - if (url.starts_with("prusaslicer://open/?file=")) { + if (url.starts_with("prusaslicer://open?file=")) { int id = get_next_id(); - std::string escaped_url = FileGet::escape_url(boost::nowide::narrow(url.substr(25))); + std::string escaped_url = FileGet::escape_url(boost::nowide::narrow(url.substr(24))); + printf("escaped url %s \n", escaped_url.c_str()); //log(std::to_string(id) + ": start " + escaped_url); //escaped_url = "https://media.printables.com/media/prints/216267/gcodes/1974221_32d21613-b567-4328-8261-49b46d9dd249/01_big_trex_skull_with_threads_015mm_pla_mk3_2d.gcode"; m_downloads.emplace_back(std::make_unique(id, std::move(escaped_url), this, m_dest_folder)); @@ -229,11 +231,17 @@ void DownloadFrame::start_download(wxString url) break; } } + printf("can start %d \n", can_start); if (can_start) m_downloads.back()->start(); } else { - //log("wrong url: " + url); + printf("Did not parse \n"); + if (url.size() > 24) + { + printf("%s\n", boost::nowide::narrow(url.substr(0,24)).c_str()); + printf("prusaslicer://open?file=\n"); + } } } diff --git a/src/downloader/FromSlicer/Http.cpp b/src/downloader/FromSlicer/Http.cpp index e96ea18e3e..29fad9c71d 100644 --- a/src/downloader/FromSlicer/Http.cpp +++ b/src/downloader/FromSlicer/Http.cpp @@ -1,5 +1,8 @@ #include "Http.hpp" +#include "slic3r/GUI/I18N.hpp" +#include "slic3r/GUI/format.hpp" + #include #include #include diff --git a/src/slic3r/GUI/DesktopIntegrationDialog.cpp b/src/slic3r/GUI/DesktopIntegrationDialog.cpp index 9348c759ae..1ae701c338 100644 --- a/src/slic3r/GUI/DesktopIntegrationDialog.cpp +++ b/src/slic3r/GUI/DesktopIntegrationDialog.cpp @@ -423,16 +423,18 @@ void DesktopIntegrationDialog::perform_desktop_integration() bool url_destop_file = true; if (url_destop_file) { + boost::filesystem::path path(excutable_path); + std::string downloader_path = (path.parent_path() / "downloader/prusa-slicer-downloader").string(); // no need for icon right? std::string desktop_file = GUI::format( "[Desktop Entry]\n" "Name=PrusaSlicer URL Protocol%1%\n" - "Exec=\"%3%\" %%u\n" + "Exec=\"%3%\" -u %%u\n" "Terminal=false\n" "Type=Application\n" "MimeType=x-scheme-handler/prusaslicer;\n" "StartupNotify=false\n" - , name_suffix, version_suffix, excutable_path); + , name_suffix, version_suffix, downloader_path); std::string desktop_path = GUI::format("%1%/applications/PrusaSlicerURLProtocol%2%.desktop", target_dir_desktop, version_suffix); if (create_desktop_file(desktop_path, desktop_file)) {