public static void DoClean(PerforceConnection PerforceClient, string LocalRootPath, string ClientRootPath, IReadOnlyList <string> SyncPaths, TextWriter Log) { // Figure out which folders to clean FolderToClean RootFolderToClean = new FolderToClean(new DirectoryInfo(LocalRootPath)); using (FindFoldersToCleanTask QueryWorkspace = new FindFoldersToCleanTask(PerforceClient, RootFolderToClean, ClientRootPath, SyncPaths, Log)) { string ErrorMessage; if (!ModalTaskWindow.Execute(QueryWorkspace, "Clean Workspace", "Querying files in Perforce, please wait...", out ErrorMessage)) { if (!String.IsNullOrEmpty(ErrorMessage)) { MessageBox.Show(ErrorMessage); } return; } } // If there's nothing to delete, don't bother displaying the dialog at all if (RootFolderToClean.FilesToClean.Count == 0 && RootFolderToClean.SubFolders.Count == 0) { MessageBox.Show("You have no local files which are not in Perforce.", "Workspace Clean", MessageBoxButtons.OK); return; } // Populate the tree CleanWorkspaceWindow CleanWorkspace = new CleanWorkspaceWindow(RootFolderToClean); CleanWorkspace.ShowDialog(); }
private void ChangeLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { // Detect the default Perforce settings for the selected project string DefaultServerAndPort = "perforce:1666"; string DefaultUserName = Environment.UserName; DetectConnectionSettingsTask DetectConnectionTask = new DetectConnectionSettingsTask(null); string ErrorMessage; if (ModalTaskWindow.Execute(Owner, DetectConnectionTask, "Connection Settings", "Detecting settings, please wait...", out ErrorMessage) == ModalTaskResult.Succeeded) { DefaultServerAndPort = DetectConnectionTask.ServerAndPort ?? DetectConnectionTask.PerforceInfo.HostName ?? DefaultServerAndPort; DefaultUserName = DetectConnectionTask.PerforceInfo.UserName ?? DefaultUserName; } // Show the connection window /* ConnectWindow Connect = new ConnectWindow(SelectedProject.bUseDefaultServer, SelectedProject.ServerAndPort, SelectedProject.UserName, DefaultServerAndPort, DefaultUserName); * if(Connect.ShowDialog() == DialogResult.OK) * { * SelectedProject.bUseDefaultServer = Connect.bUseDefaultSettings; * SelectedProject.ServerAndPort = Connect.ServerAndPort; * SelectedProject.UserName = Connect.UserName; * }*/ }
private void DeleteBtn_Click(object sender, EventArgs e) { List <FileInfo> Files = new List <FileInfo>(); List <DirectoryInfo> Directories = new List <DirectoryInfo>(); foreach (TreeNode RootNode in TreeView.Nodes) { FindSelection(RootNode, Files, Directories); } string ErrorMessage; if (!ModalTaskWindow.Execute(new DeleteFilesTask(Files, Directories), "Clean Workspace", "Deleting files, please wait...", out ErrorMessage) && !String.IsNullOrEmpty(ErrorMessage)) { FailedToDeleteWindow FailedToDelete = new FailedToDeleteWindow(); FailedToDelete.FileList.Text = ErrorMessage; FailedToDelete.FileList.SelectionStart = 0; FailedToDelete.FileList.SelectionLength = 0; FailedToDelete.ShowDialog(); } }
int TryOpenProject(string ProjectFileName, int ReplaceTabIdx = -1) { Log.WriteLine("Trying to open project {0}", ProjectFileName); // Normalize the filename ProjectFileName = Path.GetFullPath(ProjectFileName).Replace('/', Path.DirectorySeparatorChar); // Make sure the project exists if (!File.Exists(ProjectFileName)) { ShowErrorDialog("{0} does not exist.", ProjectFileName); return(-1); } // Check that none of the other tabs already have it open for (int TabIdx = 0; TabIdx < TabControl.GetTabCount(); TabIdx++) { if (ReplaceTabIdx != TabIdx) { WorkspaceControl Workspace = (WorkspaceControl)TabControl.GetTabData(TabIdx); if (Workspace.SelectedFileName.Equals(ProjectFileName, StringComparison.InvariantCultureIgnoreCase)) { TabControl.SelectTab(TabIdx); return(TabIdx); } else if (ProjectFileName.StartsWith(Workspace.BranchDirectoryName + Path.DirectorySeparatorChar, StringComparison.InvariantCultureIgnoreCase)) { if (MessageBox.Show(String.Format("{0} is already open under {1}.\n\nWould you like to close it?", Path.GetFileNameWithoutExtension(Workspace.SelectedFileName), Workspace.BranchDirectoryName, Path.GetFileNameWithoutExtension(ProjectFileName)), "Branch already open", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes) { TabControl.RemoveTab(TabIdx); } else { return(-1); } } } } // Make sure the path case is correct. This can cause UBT intermediates to be out of date if the case mismatches. ProjectFileName = Utility.GetPathWithCorrectCase(new FileInfo(ProjectFileName)); // Detect the project settings in a background thread using (DetectProjectSettingsTask DetectSettings = new DetectProjectSettingsTask(ProjectFileName, Log)) { string ErrorMessage; if (!ModalTaskWindow.Execute(this, DetectSettings, "Opening Project", "Opening project, please wait...", out ErrorMessage)) { if (!String.IsNullOrEmpty(ErrorMessage)) { ShowErrorDialog("{0}", ErrorMessage); } return(-1); } // Hide the default control if it's visible DefaultControl.Hide(); // Now that we have the project settings, we can construct the tab WorkspaceControl Workspace = new WorkspaceControl(this, SqlConnectionString, DataFolder, bRestoreStateOnLoad, OriginalExecutableFileName, ProjectFileName, bUnstable, DetectSettings, Log, Settings); Workspace.Parent = TabPanel; Workspace.Location = new Point(0, 0); Workspace.Size = new Size(TabPanel.Width, TabPanel.Height); Workspace.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom; Workspace.Hide(); // Add the tab string NewTabName = GetTabName(Workspace); if (ReplaceTabIdx == -1) { int NewTabIdx = TabControl.InsertTab(-1, NewTabName, Workspace); return(NewTabIdx); } else { TabControl.InsertTab(ReplaceTabIdx + 1, NewTabName, Workspace); TabControl.RemoveTab(ReplaceTabIdx); return(ReplaceTabIdx); } } }