示例#1
0
        private bool RunCreateBazaarBranch(ref string LocalFolderLocation)
        {
            // Standard method to create a new branch.  This can be called from the link to change the branch location
            //   or from the Source Code drop down option
            if (LocalFolderLocation == String.Empty)
            {
                // we need to find out where to create the branch on the file system...
                FolderBrowserDialog dlg = new FolderBrowserDialog();
                InitialiseFolderBrowserDialog(dlg);

                DialogResult result = dlg.ShowDialog();

                if (result != DialogResult.OK)
                {
                    return false;
                }

                LocalFolderLocation = dlg.SelectedPath;

                if ((Directory.GetDirectories(LocalFolderLocation).GetLength(0) > 0) || (Directory.GetFiles(LocalFolderLocation).GetLength(0) > 0))
                {
                    MessageBox.Show("The folder that you selected is not empty.  Please choose an empty folder.",
                        Program.APP_TITLE, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return false;
                }
            }

            BazaarTask task = new BazaarTask(BazaarTask.TaskItem.qbranch);
            string cmd = task.GetBazaarCommand();

            if (txtLaunchpadUserName.Text == String.Empty)
            {
                // We need to know the user's ID on Launchpad
                DlgLaunchpadUserName dlgLaunchpad = new DlgLaunchpadUserName();
                dlgLaunchpad.BranchName = LocalFolderLocation.Substring(LocalFolderLocation.LastIndexOf('\\') + 1);

                if (dlgLaunchpad.ShowDialog() != DialogResult.OK)
                {
                    return false;
                }

                txtLaunchpadUserName.Text = dlgLaunchpad.txtLaunchpadUserName.Text;
            }

            string newLaunchpadUrl = linkLabel_LaunchpadUrl.Text.Substring(0, linkLabel_LaunchpadUrl.Text.LastIndexOf('/') + 1);
            newLaunchpadUrl += LocalFolderLocation.Substring(LocalFolderLocation.LastIndexOf('\\') + 1);

            System.Diagnostics.ProcessStartInfo si = new System.Diagnostics.ProcessStartInfo(cmd);
            si.Arguments = task.GetBazaarArgs(LocalFolderLocation, newLaunchpadUrl);
            si.UseShellExecute = false;

            try
            {
                Process p = Process.Start(si);
                p.WaitForExit();

                if (p.ExitCode != 0)
                {
                    return false;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("The Assistant failed to launch the first qbranch command.  The system error message was: " + ex.Message,
                    Program.APP_TITLE);
                return false;
            }

            // Now we have to do it again with qbranch2
            task = new BazaarTask(BazaarTask.TaskItem.qbranch2);
            si = new System.Diagnostics.ProcessStartInfo(cmd);
            si.Arguments = task.GetBazaarArgs(LocalFolderLocation, newLaunchpadUrl);
            si.UseShellExecute = false;

            try
            {
                Process p = Process.Start(si);
                p.WaitForExit();

                if (p.ExitCode != 0)
                {
                    return false;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("The Assistant failed to launch the second qbranch command.  The system error message was: " + ex.Message,
                    Program.APP_TITLE);
                return false;
            }

            return true;
        }
示例#2
0
        private void PopulateCombos()
        {
            // Code generation
            for (NantTask.TaskItem i = NantTask.FirstCodeGenItem; i <= NantTask.LastCodeGenItem; i++)
            {
                NantTask t = new NantTask(i);
                cboCodeGeneration.Items.Add(t.ShortDescription);
            }

            // Compile
            for (NantTask.TaskItem i = NantTask.FirstCompileItem; i <= NantTask.LastCompileItem; i++)
            {
                NantTask t = new NantTask(i);
                cboCompilation.Items.Add(t.ShortDescription);
            }

            // Misc
            for (NantTask.TaskItem i = NantTask.FirstMiscItem; i <= NantTask.LastMiscItem; i++)
            {
                NantTask t = new NantTask(i);
                cboMiscellaneous.Items.Add(t.ShortDescription);
            }

            // Database
            for (NantTask.TaskItem i = NantTask.FirstDatabaseItem; i <= NantTask.LastDatabaseItem; i++)
            {
                NantTask t = new NantTask(i);
                cboDatabase.Items.Add(t.ShortDescription);
            }

            // Source Code Control
            for (BazaarTask.TaskItem i = BazaarTask.FirstBazaarItem; i <= BazaarTask.LastBazaarItem; i++)
            {
                BazaarTask t = new BazaarTask(i);
                cboSourceCode.Items.Add(t.Description);
            }
        }
示例#3
0
        private void btnSourceCode_Click(object sender, EventArgs e)
        {
            BazaarTask task = new BazaarTask((BazaarTask.TaskItem)cboSourceCode.SelectedIndex + 1);

            if ((task.Item != BazaarTask.TaskItem.winexplore) && (txtBazaarPath.Text == String.Empty))
            {
                string msg = "The Assistant cannot find the installed location for Bazaar.  It was expected to be in the Program Files (86) folder.";
                msg += "  You can select the 'Options' tab and manually browse to the file bzrw.exe.  Then try this action again.";
                MessageBox.Show(msg, Program.APP_TITLE);
                return;
            }

            if (task.Item == BazaarTask.TaskItem.qbranch)
            {
                // Special code to handle qbranch because we need two actions for this
                string tryPath = String.Empty;

                if (!RunCreateBazaarBranch(ref tryPath))
                {
                    return;
                }

                if (ValidateBranchPath(ref tryPath))
                {
                    string msg = "The branch was created successfully.  Do you want to set this as the current branch?";

                    if (MessageBox.Show(msg, Program.APP_TITLE, MessageBoxButtons.YesNo,
                            MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                    {
                        ChangeBranchLocation(tryPath);
                    }
                }
                else
                {
                    string msg =
                        "A problem occurred while creating the new branch.  There is no source code in the target location.";
                    MessageBox.Show(msg, Program.APP_TITLE, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
            }
            else
            {
                // A standard Bazaar or winexplore command is simple...
                string cmd = task.GetBazaarCommand();
                System.Diagnostics.ProcessStartInfo si = new System.Diagnostics.ProcessStartInfo(cmd);
                si.Arguments = task.GetBazaarArgs(BranchLocation, linkLabel_LaunchpadUrl.Text);
                si.UseShellExecute = false;     // OS needs this because we access environment variables
                si.WorkingDirectory = BranchLocation;
                bool waitForExit = (si.Arguments.IndexOf("--ui-mode") > 0);

                try
                {
                    Process p = Process.Start(si);

                    if (waitForExit)
                    {
                        p.WaitForExit();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("The Assistant failed to launch the specified command.  The system error message was: " + ex.Message,
                        Program.APP_TITLE);
                }
            }
        }