private void ConnectBtn_Click(object sender, EventArgs e) { // Update the settings string ServerAndPort = ServerTextBox.Text.Trim(); if (ServerAndPort.Length == 0) { ServerAndPort = null; } string UserName = UserNameTextBox.Text.Trim(); if (UserName.Length == 0) { UserName = null; } string DepotPath = DepotPathTextBox.Text.Trim(); if (DepotPath.Length == 0) { DepotPath = null; } Program.SaveSettings(ServerAndPort, UserName, DepotPath); // Create the task for connecting to this server StringWriter Log = new StringWriter(); SyncAndRunPerforceTask SyncApplication = new SyncAndRunPerforceTask((Perforce, LogWriter) => SyncAndRun(Perforce, DepotPath, UseUnstableBuildCheckBox.Checked, LogWriter)); // Attempt to sync through a modal dialog string ErrorMessage; ModalTaskResult Result = PerforceModalTask.Execute(this, null, ServerAndPort, UserName, SyncApplication, "Updating", "Checking for updates, please wait...", Log, out ErrorMessage); if (Result == ModalTaskResult.Succeeded) { Program.SaveSettings(ServerAndPort, UserName, DepotPath); DialogResult = DialogResult.OK; Close(); } if (ErrorMessage != null) { PromptLabel.Text = ErrorMessage; } LogText = Log.ToString(); ViewLogBtn.Visible = true; }
static int Main(string[] Args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); bool bFirstInstance; using (Mutex InstanceMutex = new Mutex(true, "UnrealGameSyncRunning", out bFirstInstance)) { if (!bFirstInstance) { using (EventWaitHandle ActivateEvent = new EventWaitHandle(false, EventResetMode.AutoReset, "ActivateUnrealGameSync")) { ActivateEvent.Set(); } return(0); } // Try to find Perforce in the path string PerforceFileName = null; foreach (string PathDirectoryName in (Environment.GetEnvironmentVariable("PATH") ?? "").Split(new char[] { Path.PathSeparator }, StringSplitOptions.RemoveEmptyEntries)) { try { string PossibleFileName = Path.Combine(PathDirectoryName, "p4.exe"); if (File.Exists(PossibleFileName)) { PerforceFileName = PossibleFileName; break; } } catch { } } // If it doesn't exist, don't continue if (PerforceFileName == null) { MessageBox.Show("UnrealGameSync requires the Perforce command-line tools. Please download and install from http://www.perforce.com/."); return(1); } // Figure out if we should sync the unstable build by default bool bUnstable = Args.Contains("-unstable", StringComparer.InvariantCultureIgnoreCase); // Read the settings string ServerAndPort = null; string UserName = null; string DepotPath = DeploymentSettings.DefaultDepotPath; Utility.ReadGlobalPerforceSettings(ref ServerAndPort, ref UserName, ref DepotPath); // If the shift key is held down, immediately show the settings window if ((Control.ModifierKeys & Keys.Shift) != 0) { // Show the settings window immediately SettingsWindow UpdateError = new SettingsWindow(null, null, ServerAndPort, UserName, DepotPath, bUnstable, (Perforce, DepotParam, bUnstableParam, LogWriter) => SyncAndRun(Perforce, DepotParam, bUnstableParam, Args, InstanceMutex, LogWriter)); if (UpdateError.ShowDialog() == DialogResult.OK) { return(0); } } else { // Try to do a sync with the current settings first StringWriter Log = new StringWriter(); SyncAndRunPerforceTask SyncApplication = new SyncAndRunPerforceTask((Perforce, LogWriter) => SyncAndRun(Perforce, DepotPath, bUnstable, Args, InstanceMutex, LogWriter)); string ErrorMessage; if (PerforceModalTask.Execute(null, new PerforceConnection(UserName, null, ServerAndPort), SyncApplication, "Updating", "Checking for updates, please wait...", Log, out ErrorMessage) == ModalTaskResult.Succeeded) { return(0); } SettingsWindow UpdateError = new SettingsWindow("Unable to update UnrealGameSync from Perforce. Verify that your connection settings are correct.", Log.ToString(), ServerAndPort, UserName, DepotPath, bUnstable, (Perforce, DepotParam, bUnstableParam, LogWriter) => SyncAndRun(Perforce, DepotParam, bUnstableParam, Args, InstanceMutex, LogWriter)); if (UpdateError.ShowDialog() == DialogResult.OK) { return(0); } } } return(1); }