Beispiel #1
0
        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();
        }
Beispiel #2
0
        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;
 *                      }*/
        }
Beispiel #3
0
        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();
            }
        }
Beispiel #4
0
        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);
                }
            }
        }