diff --git a/src/App/Application.cpp b/src/App/Application.cpp index 08c92b9bb6..5b6ef6f265 100644 --- a/src/App/Application.cpp +++ b/src/App/Application.cpp @@ -2057,6 +2057,8 @@ std::list Application::processFiles(const std::list& f std::vector mods = App::GetApplication().getImportModules(ext.c_str()); if (!mods.empty()) { std::string escapedstr = Base::Tools::escapedUnicodeFromUtf8(file.filePath().c_str()); + escapedstr = Base::Tools::escapeEncodeFilename(escapedstr); + Base::Interpreter().loadModule(mods.front().c_str()); Base::Interpreter().runStringArg("import %s",mods.front().c_str()); Base::Interpreter().runStringArg("%s.open(u\"%s\")",mods.front().c_str(), @@ -2107,6 +2109,8 @@ void Application::processCmdLineFiles(void) std::map::const_iterator it = cfg.find("SaveFile"); if (it != cfg.end()) { std::string output = it->second; + output = Base::Tools::escapeEncodeFilename(output); + Base::FileInfo fi(output); std::string ext = fi.extension(); try { @@ -2452,7 +2456,7 @@ void Application::ParseOptions(int ac, char ** av) if (vm.count("help")) { std::stringstream str; str << mConfig["ExeName"] << endl << endl; - str << "For a detailed description see https://www.freecadweb.org/wiki/Start_up_and_Configuration" << endl<FileName.getValue()), QObject::tr("%1 document (*.FCStd)").arg(exe)); if (!fn.isEmpty()) { - QFileInfo fi; - fi.setFile(fn); - const char * DocName = App::GetApplication().getDocumentName(getDocument()); // save as new file name Gui::WaitCursor wc; + QString pyfn = Base::Tools::escapeEncodeFilename(fn); Command::doCommand(Command::Doc,"App.getDocument(\"%s\").saveCopy(\"%s\")" - , DocName, (const char*)fn.toUtf8()); + , DocName, (const char*)pyfn.toUtf8()); return true; } diff --git a/src/Mod/Image/Gui/Command.cpp b/src/Mod/Image/Gui/Command.cpp index 98b089b895..ab09cee293 100644 --- a/src/Mod/Image/Gui/Command.cpp +++ b/src/Mod/Image/Gui/Command.cpp @@ -25,6 +25,7 @@ #endif #include +#include #include #include #include @@ -75,7 +76,8 @@ void CmdImageOpen::activated(int iMsg) QString s = QFileDialog::getOpenFileName(Gui::getMainWindow(), QObject::tr("Choose an image file to open"), QString::null, formats); if (!s.isEmpty()) { - try{ + try { + s = Base::Tools::escapeEncodeFilename(s); // load the file with the module Command::doCommand(Command::Gui, "import Image, ImageGui"); #if PY_MAJOR_VERSION < 3 @@ -148,9 +150,11 @@ void CmdCreateImagePlane::activated(int iMsg) height = height * 1000 / yPixelsPerM; int nHeight = static_cast(height+0.5); + QString pyfile = Base::Tools::escapeEncodeFilename(s); + openCommand("Create ImagePlane"); doCommand(Doc,"App.activeDocument().addObject('Image::ImagePlane','%s\')",FeatName.c_str()); - doCommand(Doc,"App.activeDocument().%s.ImageFile = '%s'",FeatName.c_str(),(const char*)s.toUtf8()); + doCommand(Doc,"App.activeDocument().%s.ImageFile = '%s'",FeatName.c_str(),(const char*)pyfile.toUtf8()); doCommand(Doc,"App.activeDocument().%s.XSize = %d",FeatName.c_str(),nWidth); doCommand(Doc,"App.activeDocument().%s.YSize = %d",FeatName.c_str(),nHeight); doCommand(Doc,"App.activeDocument().%s.Placement = App.Placement(App.Vector(%f,%f,%f),App.Rotation(%f,%f,%f,%f))"