void CPatcherService::Patch(const boost::filesystem::path& patchSrcPath, const boost::filesystem::path& patchDstPath, const ContinuationFunction& continuation) { PATCHER_SERVICE_COMMAND command; command.patchDstPath = patchDstPath; command.patchSrcPath = patchSrcPath; LaunchCommand(command, continuation); }
bool RunExternalMerge(std::string fileMine, std::string fileYours, DirectoryGroups& dirGroups, std::string fileOlder) { TDEBUG_ENTER("RunExternalMerge"); TDEBUG_TRACE("File mine: " << fileMine); TDEBUG_TRACE("File yours: " << fileYours); bool bResult = true; bool again = false; std::string command; std::string externalApp; std::string externalParams; // Perform merge, waiting for it to finish if (fileOlder.empty()) { externalParams = dirGroups.GetStringPreference("External Merge2 Params"); std::map<std::string, std::string> params; params["mine"] = fileMine; params["yours"] = fileYours; externalParams = ReplaceParams(externalParams, params); } else externalParams = dirGroups.GetStringPreference("External Merge3 Params"); do { externalApp = GetExternalApplication("Merge", dirGroups, again); again = false; if (externalApp.empty()) { goto Cleanup; } command = "\"" + externalApp + "\" " + externalParams; if (!LaunchCommand(command, true)) { DoMessageDialog(0, wxString(_("Failed to launch external merge application")) + wxString(wxT("\n")) + wxString(wxText(command))); again = true; } } while (again); bResult = true; Cleanup: return bResult; }
bool RunExternalDiff(std::string filename1, std::string filename2, DirectoryGroups& dirGroups, std::string filename3) { TDEBUG_ENTER("RunExternalDiff"); TDEBUG_TRACE("File 1: " << filename1); TDEBUG_TRACE("File 2: " << filename2); bool bResult = true; bool again = false; std::string command; std::string externalApp; std::string externalParams; // Perform diff, waiting for it to finish if (filename3.empty()) { externalParams = dirGroups.GetStringPreference("External Diff2 Params"); std::map<std::string, std::string> params; params["1"] = filename1; params["2"] = filename2; externalParams = ReplaceParams(externalParams, params); } else externalParams = dirGroups.GetStringPreference("External Diff3 Params"); do { externalApp = GetExternalApplication("Diff", dirGroups, again); again = false; if (externalApp.empty()) return false; command = "\"" + externalApp + "\" " + externalParams; if (!LaunchCommand(command, true)) { DoMessageDialog(0, wxString(_("Failed to launch external diff application")) + wxString(wxT("\n")) + wxString(wxText(command))); again = true; } } while (again); return true; }
void LaunchCommandActuator::KeyEventAsync(const BMessage* keyMessage, void* asyncData) { if (be_roster == NULL) return; status_t result = B_OK; BString string; if (fArgc < 1) string << "You didn't specify a command for this hotkey."; else if ((result = LaunchCommand(fArgv, fArgc)) != B_OK) { string << "Can't launch " << fArgv[0]; string << ", no such file exists."; string << " Please check your Shortcuts settings."; } if (fArgc < 1 || result != B_OK) { BAlert* alert = new BAlert("Shortcuts launcher error", string.String(), "OK"); alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE); alert->Go(NULL); } }