예제 #1
0
        /// <summary>Implements the Exec method of the IDTCommandTarget interface. This is called when the command is invoked.</summary>
        /// <param term='commandName'>The name of the command to execute.</param>
        /// <param term='executeOption'>Describes how the command should be run.</param>
        /// <param term='varIn'>Parameters passed from the caller to the command handler.</param>
        /// <param term='varOut'>Parameters passed from the command handler to the caller.</param>
        /// <param term='handled'>Informs the caller if the command was handled or not.</param>
        /// <seealso class='Exec' />
        public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut,
                         ref bool handled)
        {
            handled = false;
            if (executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault)
            {
                String cmd = GetCommandShortName(commandName);
                switch (cmd)
                {
                case COMMAND_CLANG_SETTINGS_DLG:
                {
                    handled = true;
                    ShowCVXSettingsDialog();
                }
                break;

                case COMMAND_CLANG_CANCEL_BUILD:
                {
                    handled         = true;
                    BuildCancelFlag = true;
                }
                break;

                case COMMAND_CLANG_RELINK_ACTIVE:
                case COMMAND_CLANG_REBUILD_ACTIVE:
                {
                    handled = true;
                    _applicationObject.Documents.SaveAll();

                    try
                    {
                        BuildCancelFlag = false;

                        // build a config options block, set the delegates for build events to toggle
                        // our local build-is-running variable that will disable all other Clang actions until it finishes
                        var pbc = new ClangOps.ProjectBuildConfig();
                        pbc.BuildBegun        = (bool success) => { BuildInProgress = true; };
                        pbc.BuildFinished     = (bool success) => { BuildInProgress = false; };
                        pbc.BuildShouldCancel = this;
                        pbc.JustLink          = (cmd == COMMAND_CLANG_RELINK_ACTIVE);

                        // start the build on another thread so the output pane updates asynchronously
                        ParameterizedThreadStart buildDelegate =
                            _CVXOps.BuildActiveProject;
                        var newThread = new Thread(buildDelegate);
                        newThread.Start(pbc);
                    }
                    catch (Exception ex)
                    {
                        BuildInProgress = false;
                        MessageBox.Show(ex.Message, "ClangVSx - Project Build Error", MessageBoxButtons.OK,
                                        MessageBoxIcon.Error);
                    }
                }
                break;
                }
            }
        }
예제 #2
0
        /// <summary>Implements the Exec method of the IDTCommandTarget interface. This is called when the command is invoked.</summary>
        /// <param term='commandName'>The name of the command to execute.</param>
        /// <param term='executeOption'>Describes how the command should be run.</param>
        /// <param term='varIn'>Parameters passed from the caller to the command handler.</param>
        /// <param term='varOut'>Parameters passed from the command handler to the caller.</param>
        /// <param term='handled'>Informs the caller if the command was handled or not.</param>
        /// <seealso class='Exec' />
        public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut,
            ref bool handled)
        {
            handled = false;
              if (executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault)
              {
            String cmd = GetCommandShortName(commandName);
            switch (cmd)
            {
              case COMMAND_CLANG_SETTINGS_DLG:
            {
              handled = true;
              ShowCVXSettingsDialog();
            }
            break;

              case COMMAND_CLANG_CANCEL_BUILD:
            {
              handled = true;
              BuildCancelFlag = true;
            }
            break;

              case COMMAND_CLANG_RELINK_ACTIVE:
              case COMMAND_CLANG_REBUILD_ACTIVE:
            {
              handled = true;
              _applicationObject.Documents.SaveAll();

              try
              {
                BuildCancelFlag = false;

                // build a config options block, set the delegates for build events to toggle
                // our local build-is-running variable that will disable all other Clang actions until it finishes
                var pbc = new ClangOps.ProjectBuildConfig();
                pbc.BuildBegun = (bool success) => { BuildInProgress = true; };
                pbc.BuildFinished = (bool success) => { BuildInProgress = false; };
                pbc.BuildShouldCancel = this;
                pbc.JustLink = (cmd == COMMAND_CLANG_RELINK_ACTIVE);

                // start the build on another thread so the output pane updates asynchronously
                ParameterizedThreadStart buildDelegate =
                    _CVXOps.BuildActiveProject;
                var newThread = new Thread(buildDelegate);
                newThread.Start(pbc);
              }
              catch (Exception ex)
              {
                BuildInProgress = false;
                MessageBox.Show(ex.Message, "ClangVSx - Project Build Error", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
              }
            }
            break;
            }
              }
        }