コード例 #1
0
ファイル: MainForm.cs プロジェクト: Kybs0/Diversos
        /// <summary>
        /// Cancel the current build process
        /// </summary>
        /// <param name="sender">The sender of the event</param>
        /// <param name="e">The event arguments</param>
        private void miCancelBuild_Click(object sender, EventArgs e)
        {
            if (buildThread != null && buildThread.IsAlive)
            {
                try
                {
                    this.Cursor = Cursors.WaitCursor;
                    StatusBarTextProvider.UpdateProgress("Cancelling build...");
                    buildThread.Abort();

                    while (buildThread != null && !buildThread.Join(1000))
                    {
                        Application.DoEvents();
                    }

                    StatusBarTextProvider.ResetProgressBar();
                    System.Diagnostics.Debug.WriteLine("Thread stopped");
                }
                finally
                {
                    this.Cursor  = Cursors.Default;
                    buildThread  = null;
                    buildProcess = null;
                }
            }

            this.SetUIEnabledState(true);
        }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: Kybs0/Diversos
        /// <summary>
        /// This is called by the build process thread to update the main
        /// window with information about its progress.
        /// </summary>
        /// <param name="sender">The sender of the event</param>
        /// <param name="e">The event arguments</param>
        private void buildProcess_BuildProgress(object sender,
                                                BuildProgressEventArgs e)
        {
            if (this.InvokeRequired)
            {
                // Ignore it if we've already shut down
                if (!this.IsDisposed)
                {
                    this.Invoke(new EventHandler <BuildProgressEventArgs>(
                                    buildProcess_BuildProgress),
                                new object[] { sender, e });
                }
            }
            else
            {
                if (e.BuildStep < BuildStep.Completed)
                {
                    StatusBarTextProvider.UpdateProgress((int)e.BuildStep);
                }

                if (Settings.Default.VerboseLogging ||
                    e.BuildStep == BuildStep.Failed)
                {
                    txtOutput.AppendText(e.Message);
                    txtOutput.AppendText("\r\n");
                }
            }
        }
コード例 #3
0
        /// <summary>
        /// Utilize the status strip label and progress bar via the status bar
        /// text provider.
        /// </summary>
        /// <param name="sender">The sender of the event</param>
        /// <param name="e">The event argumnents</param>
        private void btnProgress_Click(object sender, EventArgs e)
        {
            StatusBarTextProvider.InitializeProgressBar(100);

            for (int i = 0; i < 100; i++)
            {
                StatusBarTextProvider.UpdateProgress(i + 1,
                                                     String.Format("Step #{0}", i + 1));

                System.Threading.Thread.Sleep(25);
            }

            StatusBarTextProvider.ResetProgressBar();
        }
コード例 #4
0
ファイル: MainForm.cs プロジェクト: Kybs0/Diversos
        /// <summary>
        /// Build the help file using the current project settings
        /// </summary>
        /// <param name="sender">The sender of the event</param>
        /// <param name="e">The event arguments</param>
        private void miBuildProject_Click(object sender, EventArgs e)
        {
            // If it's a new project without a name, ask the
            // user to save it now.  This is required as we need
            // a base folder for any relative paths in the project.
            if (project.Filename == SandcastleProject.DefaultName)
            {
                miSaveProjectAs_Click(sender, e);

                if (project.Filename == SandcastleProject.DefaultName)
                {
                    return;
                }
            }

            this.SetUIEnabledState(false);
            lastBuiltHelpFile = null;
            txtOutput.Text    = String.Empty;

            buildProcess = new BuildProcess(project);
            buildProcess.BuildStepChanged +=
                new EventHandler <BuildProgressEventArgs>(
                    buildProcess_BuildStepChanged);
            buildProcess.BuildProgress +=
                new EventHandler <BuildProgressEventArgs>(
                    buildProcess_BuildProgress);

            StatusBarTextProvider.InitializeProgressBar(0,
                                                        (int)BuildStep.Completed, "Building help file");

            buildThread = new Thread(new ThreadStart(
                                         buildProcess.Build));
            buildThread.Name         = "Help file builder thread";
            buildThread.IsBackground = true;
            buildThread.Start();
        }
コード例 #5
0
ファイル: MainForm.cs プロジェクト: Kybs0/Diversos
        /// <summary>
        /// This is called by the build process thread to update the main
        /// window with the current build step.
        /// </summary>
        /// <param name="sender">The sender of the event</param>
        /// <param name="e">The event arguments</param>
        private void buildProcess_BuildStepChanged(object sender,
                                                   BuildProgressEventArgs e)
        {
            string outputPath;

            if (this.InvokeRequired)
            {
                // Ignore it if we've already shut down or it hasn't
                // completed yet.
                if (!this.IsDisposed)
                {
                    this.Invoke(new EventHandler <BuildProgressEventArgs>(
                                    buildProcess_BuildStepChanged),
                                new object[] { sender, e });
                }
            }
            else
            {
                if (!Settings.Default.VerboseLogging)
                {
                    txtOutput.AppendText(e.BuildStep.ToString());
                    txtOutput.AppendText("\r\n");
                }

                if (e.HasCompleted)
                {
                    StatusBarTextProvider.ResetProgressBar();
                    this.SetUIEnabledState(true);

                    // Save the output log filename and help filename on
                    // completion if possible
                    outputPath = buildProcess.OutputFolder;

                    if (Directory.Exists(outputPath))
                    {
                        lastOutputLog = buildProcess.LogFilename;
                    }
                    else
                    {
                        lastOutputLog = null;
                    }

                    // Store the help file filename so that it can be viewed
                    // if it exists.
                    if (e.BuildStep == BuildStep.Completed)
                    {
                        switch (project.HelpFileFormat)
                        {
                        case HelpFileFormat.HtmlHelp1x:
                        case HelpFileFormat.Help1xAndHelp2x:
                            outputPath += project.HtmlHelpName + ".chm";
                            break;

                        case HelpFileFormat.HtmlHelp2x:
                            outputPath += project.HtmlHelpName + ".hxs";
                            break;

                        default:
                            outputPath += "Index.html";
                            break;
                        }

                        if (File.Exists(outputPath))
                        {
                            lastBuiltHelpFile = outputPath;
                        }
                    }

                    buildThread  = null;
                    buildProcess = null;
                }
            }
        }