diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index fbe9fbaa51..9a0bd956e6 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -5664,6 +5664,10 @@ CLIMiscConfigDef::CLIMiscConfigDef() "or an existing PrusaSlicer window is activated. " "Overrides the \"single_instance\" configuration value from application preferences."); + def = this->add("single_instance_on_url", coBool); + def->label = L("Single instance mode for prusaslicer url"); + def->tooltip = L("Works as single_instance but only if prusaslicer url is present."); + def = this->add("datadir", coString); def->label = L("Data directory"); def->tooltip = L("Load and store settings at the given directory. This is useful for maintaining different profiles or including configurations from a network storage."); diff --git a/src/slic3r/GUI/InstanceCheck.cpp b/src/slic3r/GUI/InstanceCheck.cpp index ce96c1c42f..882e2e3259 100644 --- a/src/slic3r/GUI/InstanceCheck.cpp +++ b/src/slic3r/GUI/InstanceCheck.cpp @@ -69,18 +69,29 @@ namespace instance_check_internal //if (argc < 2) // return ret; std::vector arguments { argv[0] }; + bool send_if_url = false; + bool has_url = false; for (int i = 1; i < argc; ++i) { const std::string token = argv[i]; + if (token.find("prusaslicer://") == 0) { + BOOST_LOG_TRIVIAL(info) << "url found: " << token; + has_url = true; + } // Processing of boolean command line arguments shall match DynamicConfig::read_cli(). if (token == "--single-instance") ret.should_send = true; else if (token == "--no-single-instance") ret.should_send = false; + else if (token == "--single-instance-on-url") + send_if_url = true; else arguments.emplace_back(token); } + if (send_if_url && has_url) { + ret.should_send = true; + } ret.cl_string = escape_strings_cstyle(arguments); - BOOST_LOG_TRIVIAL(debug) << "single instance: " << + BOOST_LOG_TRIVIAL(info) << "single instance: " << (ret.should_send.has_value() ? (*ret.should_send ? "true" : "false") : "undefined") << ". other params: " << ret.cl_string; return ret;