CLI option for single instance only with prusaslicer:// url

This commit is contained in:
David Kocik 2024-08-14 16:00:55 +02:00 committed by Lukas Matena
parent c93631a504
commit e6313aa5e0
2 changed files with 16 additions and 1 deletions

View File

@ -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.");

View File

@ -69,18 +69,29 @@ namespace instance_check_internal
//if (argc < 2)
// return ret;
std::vector<std::string> 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;