示例#1
0
        public void OnConnection(object Application, ext_ConnectMode ConnectMode, object AddInInst, ref Array custom)
        {
            try
            {
                _vbe = Application as VBE;
                _addin = AddInInst as AddIn;

                switch (ConnectMode)
                {
                    case ext_ConnectMode.ext_cm_AfterStartup:
                        InitializeAddIn();
                        break;
                    case ext_ConnectMode.ext_cm_Startup:
                        break;
                    case ext_ConnectMode.ext_cm_External:
                        break;
                    case ext_ConnectMode.ext_cm_CommandLine:
                        break;
                    default:
                        throw new ArgumentOutOfRangeException("ConnectMode");
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
示例#2
0
 public void LogVbProjects(VBE vbe)
 {
     foreach (VBProject vbProject in vbe.VBProjects)
     {
         LogVbProject(vbProject, isActiveVbProject: vbProject == vbe.ActiveVBProject);
     }
 }
示例#3
0
        public RubberduckMenu(VBE vbe, AddIn addIn, IGeneralConfigService configService, IRubberduckParser parser, IActiveCodePaneEditor editor, IInspector inspector)
            : base(vbe, addIn)
        {
            _addIn = addIn;
            _parser = parser;
            _configService = configService;

            var testExplorer = new TestExplorerWindow();
            var testEngine = new TestEngine();
            var testGridViewSort = new GridViewSort<TestExplorerItem>(RubberduckUI.Result, false);
            var testPresenter = new TestExplorerDockablePresenter(vbe, addIn, testExplorer, testEngine, testGridViewSort);
            _testMenu = new TestMenu(vbe, addIn, testExplorer, testPresenter);

            var codeExplorer = new CodeExplorerWindow();
            var codePresenter = new CodeExplorerDockablePresenter(parser, vbe, addIn, codeExplorer);
            codePresenter.RunAllTests += CodePresenterRunAllAllTests;
            codePresenter.RunInspections += codePresenter_RunInspections;
            codePresenter.Rename += codePresenter_Rename;
            codePresenter.FindAllReferences += codePresenter_FindAllReferences;
            codePresenter.FindAllImplementations += codePresenter_FindAllImplementations;
            _codeExplorerMenu = new CodeExplorerMenu(vbe, addIn, codeExplorer, codePresenter);

            var todoSettings = configService.LoadConfiguration().UserSettings.ToDoListSettings;
            var todoExplorer = new ToDoExplorerWindow();
            var todoGridViewSort = new GridViewSort<ToDoItem>(RubberduckUI.Priority, false);
            var todoPresenter = new ToDoExplorerDockablePresenter(parser, todoSettings.ToDoMarkers, vbe, addIn, todoExplorer, todoGridViewSort);
            _todoItemsMenu = new ToDoItemsMenu(vbe, addIn, todoExplorer, todoPresenter);

            var inspectionExplorer = new CodeInspectionsWindow();
            var inspectionGridViewSort = new GridViewSort<CodeInspectionResultGridViewItem>(RubberduckUI.Component, false);
            var inspectionPresenter = new CodeInspectionsDockablePresenter(inspector, vbe, addIn, inspectionExplorer, inspectionGridViewSort);
            _codeInspectionsMenu = new CodeInspectionsMenu(vbe, addIn, inspectionExplorer, inspectionPresenter);

            _refactorMenu = new RefactorMenu(IDE, AddIn, parser, editor);
        }
示例#4
0
 public static RubberduckParser Create(VBE vbe, RubberduckParserState state)
 {
     var attributeParser = new Mock<IAttributeParser>();
     attributeParser.Setup(m => m.Parse(It.IsAny<VBComponent>()))
                    .Returns(() => new Dictionary<Tuple<string, DeclarationType>, Attributes>());
     return Create(vbe, state, attributeParser.Object);
 }
        public TestExplorerViewModel(VBE vbe, ITestEngine testEngine, TestExplorerModelBase model, IClipboardWriter clipboard)
        {
            _testEngine = testEngine;
            _testEngine.TestCompleted += TestEngineTestCompleted;
            _model = model;
            _clipboard = clipboard;

            _navigateCommand = new NavigateCommand();

            _runAllTestsCommand = new RunAllTestsCommand(testEngine, model);
            _addTestModuleCommand = new AddTestModuleCommand(vbe);
            _addTestMethodCommand = new AddTestMethodCommand(vbe, model);
            _addErrorTestMethodCommand = new AddTestMethodExpectedErrorCommand(vbe, model);

            _refreshCommand = new DelegateCommand(ExecuteRefreshCommand, CanExecuteRefreshCommand);
            _repeatLastRunCommand = new DelegateCommand(ExecuteRepeatLastRunCommand, CanExecuteRepeatLastRunCommand);
            _runNotExecutedTestsCommand = new DelegateCommand(ExecuteRunNotExecutedTestsCommand, CanExecuteRunNotExecutedTestsCommand);
            _runFailedTestsCommand = new DelegateCommand(ExecuteRunFailedTestsCommand, CanExecuteRunFailedTestsCommand);
            _runPassedTestsCommand = new DelegateCommand(ExecuteRunPassedTestsCommand, CanExecuteRunPassedTestsCommand);
            _runSelectedTestCommand = new DelegateCommand(ExecuteSelectedTestCommand, CanExecuteSelectedTestCommand);

            _copyResultsCommand = new DelegateCommand(ExecuteCopyResultsCommand);


        }
        public static void NewUnitTestModule(VBE vbe)
        {
            try
            {
                var project = vbe.ActiveVBProject;
                project.EnsureReferenceToAddInLibrary();

                var module = project.VBComponents.Add(vbext_ComponentType.vbext_ct_StdModule);
                module.Name = GetNextTestModuleName(project);

                var hasOptionExplicit = false;
                if (module.CodeModule.CountOfLines > 0 && module.CodeModule.CountOfDeclarationLines > 0)
                {
                    hasOptionExplicit = module.CodeModule.Lines[1, module.CodeModule.CountOfDeclarationLines].Contains("Option Explicit");
                }

                var options = string.Concat(hasOptionExplicit ? string.Empty : "Option Explicit\n", "Option Private Module\n\n");

                module.CodeModule.AddFromString(options + TestModuleEmptyTemplate);
                module.Activate();
            }
            catch (Exception exception)
            {
                //can we please comment when we swallow every possible exception?
            }
        }
        public static TestMethod NewExpectedErrorTestMethod(VBE vbe)
        {
            if (vbe.ActiveCodePane == null)
            {
                return null;
            }

            try
            {
                if (vbe.ActiveCodePane.CodeModule.HasAttribute<TestModuleAttribute>())
                {
                    var module = vbe.ActiveCodePane.CodeModule;
                    var name = GetNextTestMethodName(module.Parent);
                    var body = TestMethodExpectedErrorTemplate.Replace(NamePlaceholder, name);
                    module.InsertLines(module.CountOfLines, body);

                    var qualifiedModuleName = new QualifiedModuleName(module.Parent);
                    return new TestMethod(new QualifiedMemberName(qualifiedModuleName, name), vbe);
                }
            }
            catch (COMException)
            {
            }

            return null;
        }
 protected DockablePresenterBase(VBE vbe, AddIn addin, IDockableUserControl control)
 {
     _vbe = vbe;
     _addin = addin;
     UserControl = control as UserControl;
     _window = CreateToolWindow(control);
 }
 public ParameterNotUsedInspection(VBE vbe, RubberduckParserState state, IMessageBox messageBox)
     : base(state)
 {
     _vbe = vbe;
     _messageBox = messageBox;
     _wrapperFactory = new CodePaneWrapperFactory();
 }
示例#10
0
 private void LoadAllTests(VBE vbe)
 {
     _engine.AllTests = vbe.VBProjects
                     .Cast<VBProject>().Where(project => project.Protection != vbext_ProjectProtection.vbext_pp_locked)
                     .SelectMany(project => project.TestMethods())
                     .ToDictionary(test => test, test => _engine.AllTests.ContainsKey(test) ? _engine.AllTests[test] : null);
 }
 public RubberduckCommandBar(RubberduckParserState state, VBE vbe, IShowParserErrorsCommand command)
 {
     _state = state;
     _vbe = vbe;
     _command = command;
     _state.StateChanged += State_StateChanged;
     Initialize();
 }
示例#12
0
        public RefactorMenu(VBE vbe, AddIn addin, IRubberduckParser parser, IActiveCodePaneEditor editor)
            : base(vbe, addin)
        {
            _parser = parser;
            _editor = editor;

            _iconCache = new SearchResultIconCache();
        }
 public CodeExplorerDockablePresenter(IRubberduckParser parser, VBE vbe, AddIn addIn, CodeExplorerWindow view)
     : base(vbe, addIn, view)
 {
     _parser = parser;
     _parser.ParseStarted += _parser_ParseStarted;
     _parser.ParseCompleted += _parser_ParseCompleted;
     RegisterControlEvents();
 }
 public FindAllReferencesCommand(INavigateCommand navigateCommand, IMessageBox messageBox, RubberduckParserState state, VBE vbe, ISearchResultsWindowViewModel viewModel, SearchResultPresenterInstanceManager presenterService)
 {
     _navigateCommand = navigateCommand;
     _messageBox = messageBox;
     _state = state;
     _vbe = vbe;
     _viewModel = viewModel;
     _presenterService = presenterService;
 }
示例#15
0
        public void Initialize(VBE vbe)
        {
            if (_parser != null)
            {
                throw new InvalidOperationException("ParserState is already initialized.");
            }

            _parser = new RubberduckParser(vbe, _state, _attributeParser);
        }
 protected DockableToolwindowPresenter(VBE vbe, AddIn addin, IDockableUserControl view)
 {
     _vbe = vbe;
     _addin = addin;
     _logger = LogManager.GetCurrentClassLogger();
     _logger.Trace(string.Format("Initializing Dockable Panel ({0})", GetType().Name));
     UserControl = view as UserControl;
     _window = CreateToolWindow(view);
 }
示例#17
0
        public RenameModel(VBE vbe, VBProjectParseResult parseResult, QualifiedSelection selection)
        {
            _vbe = vbe;
            _parseResult = parseResult;
            _declarations = parseResult.Declarations;
            _selection = selection;

            AcquireTarget(out _target, Selection);
        }
示例#18
0
        public RenamePresenter(VBE vbe, IRenameView view, VBProjectParseResult parseResult, QualifiedSelection selection)
        {
            _vbe  = vbe;
            _view = view;
            _view.OkButtonClicked += OnOkButtonClicked;

            _parseResult  = parseResult;
            _declarations = parseResult.Declarations;
            _selection    = selection;
        }
示例#19
0
        public TestMenu(VBE vbe, AddIn addInInstance) : base(vbe, addInInstance)
        {
            var testExplorer = new TestExplorerWindow();
            var toolWindow   = CreateToolWindow("Test Explorer", testExplorer);

            _engine = new TestEngine(vbe, testExplorer, toolWindow);

            //hack: to keep testexplorer from being visible when testmenu is added
            toolWindow.Visible = false;
        }
示例#20
0
        public RenameModel(VBE vbe, RubberduckParserState state, QualifiedSelection selection, IMessageBox messageBox)
        {
            _vbe          = vbe;
            _state        = state;
            _declarations = state.AllDeclarations.ToList();
            _selection    = selection;
            _messageBox   = messageBox;

            AcquireTarget(out _target, Selection);
        }
示例#21
0
        public RenameModel(VBE vbe, RubberduckParserState parseResult, QualifiedSelection selection, IMessageBox messageBox)
        {
            _vbe = vbe;
            _parseResult = parseResult;
            _declarations = parseResult.AllDeclarations.ToList();
            _selection = selection;
            _messageBox = messageBox;

            AcquireTarget(out _target, Selection);
        }
示例#22
0
        public AutoSave(VBE vbe, IGeneralConfigService configService)
        {
            _vbe           = vbe;
            _configService = configService;

            _configService.SettingsChanged += ConfigServiceSettingsChanged;
            _timer.Elapsed += _timer_Elapsed;

            ConfigServiceSettingsChanged(null, EventArgs.Empty);
        }
示例#23
0
 public static void NewTestMethod(VBE vbe)
 {
     if (vbe.ActiveCodePane.CodeModule.HasAttribute <TestModuleAttribute>())
     {
         var module = vbe.ActiveCodePane.CodeModule;
         var name   = GetNextTestMethodName(module.Parent);
         var method = TestMethodTemplate.Replace(NamePlaceholder, name);
         module.InsertLines(module.CountOfLines, method);
     }
 }
 public static void NewExpectedErrorTestMethod(VBE vbe)
 {
     if (vbe.ActiveCodePane.CodeModule.HasAttribute<TestModuleAttribute>())
     {
         var module = vbe.ActiveCodePane.CodeModule;
         var name = GetNextTestMethodName(module.Parent);
         var method = TestMethodExpectedErrorTemplate.Replace(NamePlaceholder, name);
         module.InsertLines(module.CountOfLines, method);
     }
 }
示例#25
0
        /// <summary>
        /// Imports form to active project with additional checks.
        /// Forms will not get unique name from VBE (as it's done for classes or modules)
        /// If user wants to add a form which already exists, an exception occurs.
        /// The form needs to be copied and renamed the attributes inside the frm file and the
        /// frx file needs to be renamed
        /// </summary>
        /// <param name="vbe">a reference to the VBE</param>
        /// <param name="item">a form to be imported</param>
        /// <param name="shouldOverride">true if the component should be overridden</param>
        public void Import(VBE vbe, Component item, bool shouldOverride)
        {
            VBProject vbProject   = vbe.ActiveVBProject;
            bool      isInProject = Extensions.VbeExtensions.HasCodeModule(vbe, item.ToString());

            if (isInProject)
            {
                item = CopyAndRename(item);
            }
            vbProject.VBComponents.Import(item.FullPath);
        }
示例#26
0
        private void SpecifyOptionExplicit(VBE vbe)
        {
            var module = QualifiedName.Component.CodeModule;

            if (module == null)
            {
                return;
            }

            module.InsertLines(1, Tokens.Option + ' ' + Tokens.Explicit + "\n");
        }
示例#27
0
        public static CodeModuleSelection FindInstruction(this VBE vbe, QualifiedModuleName qualifiedModuleName, Selection selection)
        {
            var module = qualifiedModuleName.Component.CodeModule;

            if (module == null)
            {
                return(null);
            }

            return(new CodeModuleSelection(module, selection));
        }
 public ParameterNotUsedInspectionResult(IInspection inspection, Declaration target,
                                         ParserRuleContext context, QualifiedMemberName qualifiedName, bool isInterfaceImplementation,
                                         VBE vbe, RubberduckParserState state, IMessageBox messageBox)
     : base(inspection, qualifiedName.QualifiedModuleName, context, target)
 {
     _quickFixes = isInterfaceImplementation ? new CodeInspectionQuickFix[] {} : new CodeInspectionQuickFix[]
     {
         new RemoveUnusedParameterQuickFix(Context, QualifiedSelection, vbe, state, messageBox),
         new IgnoreOnceQuickFix(Context, QualifiedSelection, Inspection.AnnotationName),
     };
 }
示例#29
0
        /// <summary>
        /// Finds all code modules that match the specified project and component names.
        /// </summary>
        /// <param name="vbe"></param>
        /// <param name="projectName"></param>
        /// <param name="componentName"></param>
        /// <returns></returns>
        public static IEnumerable <CodeModule> FindCodeModules(this VBE vbe, string projectName, string componentName)
        {
            var matches =
                vbe.VBProjects.Cast <VBProject>()
                .Where(project => project.Name == projectName)
                .SelectMany(project => project.VBComponents.Cast <VBComponent>()
                            .Where(component => component.Name == componentName))
                .Select(component => component.CodeModule);

            return(matches);
        }
示例#30
0
        public void Initialize(VBE vbe)
        {
            if (_parser != null)
            {
                throw new InvalidOperationException("ParserState is already initialized.");
            }
            Func <IVBAPreprocessor> preprocessorFactory = () => new VBAPreprocessor(double.Parse(vbe.Version, CultureInfo.InvariantCulture));

            _attributeParser = new AttributeParser(new ModuleExporter(), preprocessorFactory);
            _parser          = new RubberduckParser(vbe, _state, _attributeParser, preprocessorFactory);
        }
示例#31
0
        public RegexSearchReplacePresenter(VBE vbe, IRubberduckParser parser /*, IRegexSearchReplaceDialog view*/)
        {
            _vbe = vbe;
            //_view = view;
            _parser = parser;

            //_view.FindButtonClicked += _view_FindButtonClicked;
            //_view.ReplaceButtonClicked += _view_ReplaceButtonClicked;
            //_view.ReplaceAllButtonClicked += _view_ReplaceAllButtonClicked;
            //_view.CancelButtonClicked += _view_CancelButtonClicked;
        }
示例#32
0
        public RubberduckHooks(VBE vbe, IGeneralConfigService config, IEnumerable <CommandBase> commands)
        {
            _mainWindowHandle = (IntPtr)vbe.MainWindow.HWnd;
            _oldWndProc       = WindowProc;
            _newWndProc       = WindowProc;
            _oldWndPointer    = User32.SetWindowLong(_mainWindowHandle, (int)WindowLongFlags.GWL_WNDPROC, _newWndProc);
            _oldWndProc       = (User32.WndProc)Marshal.GetDelegateForFunctionPointer(_oldWndPointer, typeof(User32.WndProc));

            _commands = commands;
            _config   = config;
        }
        public RegexSearchReplacePresenter(VBE vbe, IRubberduckParser parser/*, IRegexSearchReplaceDialog view*/)
        {
            _vbe = vbe;
            //_view = view;
            _parser = parser;

            //_view.FindButtonClicked += _view_FindButtonClicked;
            //_view.ReplaceButtonClicked += _view_ReplaceButtonClicked;
            //_view.ReplaceAllButtonClicked += _view_ReplaceAllButtonClicked;
            //_view.CancelButtonClicked += _view_CancelButtonClicked;
        }
示例#34
0
 public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
 {
     try
     {
         _vbe   = (VBE)application;
         _addIn = (AddIn)addInInst;
     }
     catch (Exception ex)
     {
         MessageBox.Show(string.Format(strings.AddInCouldNotBeLoaded, ex.Message));
     }
 }
示例#35
0
        public RubberduckHooks(VBE vbe, IGeneralConfigService config)
        {
            _vbe = vbe;
            _mainWindowHandle = (IntPtr)vbe.MainWindow.HWnd;
            _oldWndProc = WindowProc;
            _newWndProc = WindowProc;
            _oldWndPointer = User32.SetWindowLong(_mainWindowHandle, (int)WindowLongFlags.GWL_WNDPROC, _newWndProc);
            _oldWndProc = (User32.WndProc)Marshal.GetDelegateForFunctionPointer(_oldWndPointer, typeof(User32.WndProc));

            _config = config;

        }
示例#36
0
        private void SpecifyOptionExplicit(VBE vbe)
        {
            var instruction = Node.Instruction;
            var modules     = vbe.FindCodeModules(instruction.Line.ProjectName, instruction.Line.ComponentName);

            foreach (var codeModule in modules)
            {
                codeModule.InsertLines(1, string.Concat(ReservedKeywords.Option, " ", ReservedKeywords.Explicit));
            }

            Handled = true;
        }
        public TestExplorerDockablePresenter(VBE vbe, AddIn addin, IDockableUserControl control, ITestEngine testEngine)
            : base(vbe, addin, control)
        {
            _testEngine = testEngine;

            _testEngine.ModuleInitialize += _testEngine_ModuleInitialize;
            _testEngine.ModuleCleanup    += _testEngine_ModuleCleanup;
            _testEngine.MethodInitialize += TestEngineMethodInitialize;
            _testEngine.MethodCleanup    += TestEngineMethodCleanup;

            RegisterTestExplorerEvents();
        }
        private void DeclareAsExplicitVariant(VBE vbe)
        {
            var instruction = Node.Instruction;
            var newContent  = string.Concat(_identifier.Name, " ", ReservedKeywords.As, " ", ReservedKeywords.Variant);
            var oldContent  = instruction.Line.Content;

            var result = oldContent.Replace(_identifier.Name, newContent);
            var module = vbe.FindCodeModules(instruction.Line.ProjectName, instruction.Line.ComponentName).First();

            module.ReplaceLine(instruction.Line.StartLineNumber, result);
            Handled = true;
        }
示例#39
0
        /// <summary> Returns whether the host supports unit tests.</summary>
        public static bool HostSupportsUnitTests(this VBE vbe)
        {
            if (vbe.ActiveVBProject == null)
            {
                const int ctlViewHost = 106;

                var hostAppControl = vbe.CommandBars.FindControl(MsoControlType.msoControlButton, ctlViewHost);

                if (hostAppControl == null)
                {
                    return(false);
                }

                switch (hostAppControl.Caption)
                {
                case "Microsoft Excel":
                case "Microsoft Access":
                case "Microsoft Word":
                case "Microsoft PowerPoint":
                case "Microsoft Outlook":
                case "Microsoft Project":
                case "Microsoft Publisher":
                case "Microsoft Visio":
                case "AutoCAD":
                case "CorelDRAW":
                    return(true);

                default:
                    return(false);
                }
            }

            foreach (var reference in vbe.ActiveVBProject.References.Cast <Reference>()
                     .Where(reference => (reference.BuiltIn && reference.Name != "VBA") || (reference.Name == "AutoCAD")))
            {
                switch (reference.Name)
                {
                case "Excel":
                case "Access":
                case "Word":
                case "PowerPoint":
                case "Outlook":
                case "MSProject":
                case "Publisher":
                case "Visio":
                case "AutoCAD":
                case "CorelDRAW":
                    return(true);
                }
            }

            return(false);
        }
示例#40
0
        /// <summary>
        /// Gets the whole code of given component
        /// </summary>
        /// <param name="vbe"></param>
        /// <param name="componentName">a name of component to get text from</param>
        /// <returns>code of the component</returns>
        public static string GetComponentText(this VBE vbe, string componentName)
        {
            var module = vbe.ActiveVBProject.VBComponents.Cast <VBComponent>()
                         .FirstOrDefault(component => component.Name == componentName);
            string retVal = null;

            if (module.CodeModule.CountOfLines > 0)
            {
                retVal = module.CodeModule.get_Lines(1, module.CodeModule.CountOfLines);
            }
            return(retVal);
        }
示例#41
0
        public RubberduckParser(VBE vbe, RubberduckParserState state, IAttributeParser attributeParser)
        {
            _resolverTokenSource = CancellationTokenSource.CreateLinkedTokenSource(_central.Token);
            _vbe = vbe;
            _state = state;
            _attributeParser = attributeParser;

            _comReflector = new ReferencedDeclarationsCollector();

            state.ParseRequest += ReparseRequested;
            state.StateChanged += StateOnStateChanged;
        }
示例#42
0
        public CodeInspectionsDockablePresenter(IInspector inspector, VBE vbe, AddIn addin, CodeInspectionsWindow window)
            : base(vbe, addin, window)
        {
            _inspector              = inspector;
            _inspector.IssuesFound += OnIssuesFound;
            _inspector.Reset       += OnReset;

            Control.RefreshCodeInspections += OnRefreshCodeInspections;
            Control.NavigateCodeIssue      += OnNavigateCodeIssue;
            Control.QuickFix    += OnQuickFix;
            Control.CopyResults += OnCopyResultsToClipboard;
        }
示例#43
0
        public RubberduckParser(VBE vbe, RubberduckParserState state, IAttributeParser attributeParser)
        {
            _resolverTokenSource = CancellationTokenSource.CreateLinkedTokenSource(_central.Token);
            _vbe             = vbe;
            _state           = state;
            _attributeParser = attributeParser;

            _comReflector = new ReferencedDeclarationsCollector();

            state.ParseRequest += ReparseRequested;
            state.StateChanged += StateOnStateChanged;
        }
        private void SplitDeclarations(VBE vbe)
        {
            var    newContent = new StringBuilder();
            var    selection  = QualifiedSelection.Selection;
            string keyword    = string.Empty;

            var variables = Context.Parent as VBAParser.VariableStmtContext;

            if (variables != null)
            {
                if (variables.DIM() != null)
                {
                    keyword += Tokens.Dim + ' ';
                }
                else if (variables.visibility() != null)
                {
                    keyword += variables.visibility().GetText() + ' ';
                }
                else if (variables.STATIC() != null)
                {
                    keyword += variables.STATIC().GetText() + ' ';
                }

                foreach (var variable in variables.variableListStmt().variableSubStmt())
                {
                    newContent.AppendLine(keyword + variable.GetText());
                }
            }

            var consts = Context as VBAParser.ConstStmtContext;

            if (consts != null)
            {
                var keywords = string.Empty;

                if (consts.visibility() != null)
                {
                    keywords += consts.visibility().GetText() + ' ';
                }

                keywords += consts.CONST().GetText() + ' ';

                foreach (var constant in consts.constSubStmt())
                {
                    newContent.AppendLine(keywords + constant.GetText());
                }
            }

            var module = QualifiedName.Component.CodeModule;

            module.ReplaceLine(selection.StartLine, newContent.ToString());
        }
        private void PassParameterByValue(VBE vbe)
        {
            var parameter  = Context.GetText();
            var newContent = string.Concat(Tokens.ByVal, " ", parameter.Replace(Tokens.ByRef, string.Empty).Trim());
            var selection  = QualifiedSelection.Selection;

            var module = QualifiedName.Component.CodeModule;
            var lines  = module.get_Lines(selection.StartLine, selection.LineCount);

            var result = lines.Replace(parameter, newContent);

            module.ReplaceLine(selection.StartLine, result);
        }
        public ToDoExplorerDockablePresenter(IRubberduckParser parser, IEnumerable<ToDoMarker> markers, VBE vbe, AddIn addin, IToDoExplorerWindow window, GridViewSort<ToDoItem> gridViewSort)
            : base(vbe, addin, window)
        {
            _parser = parser;
            _markers = markers;
            _gridViewSort = gridViewSort;

            _view = window;
            _view.NavigateToDoItem += NavigateToDoItem;
            _view.RefreshToDoItems += RefreshToDoList;
            _view.RemoveToDoMarker += RemoveMarker;
            _view.SortColumn += SortColumn;
        }
示例#47
0
        private void ChangeParameterPassing(VBE vbe, string newValue)
        {
            var parameter  = Context.GetText();
            var newContent = string.Concat(newValue, " ", parameter);
            var selection  = QualifiedSelection.Selection;

            var module = QualifiedName.Component.CodeModule;
            var lines  = module.get_Lines(selection.StartLine, selection.LineCount);

            var result = lines.Replace(parameter, newContent);

            module.ReplaceLine(selection.StartLine, result);
        }
示例#48
0
        public void Parse(VBE vbe, object owner)
        {
            if (!_isParsing)
            {
                _isParsing = true;

                var projects = vbe.VBProjects.Cast <VBProject>().ToList();
                OnParseStarted(projects.Select(project => project.Name), owner);

                var results = projects.AsParallel().Select(project => Parse(project)).ToList();
                OnParseCompleted(results, owner);
            }
        }
        public RubberduckCommandBar(RubberduckParserState state, VBE vbe, ISinks sinks, IShowParserErrorsCommand command)
        {
            _state               = state;
            _vbe                 = vbe;
            _sinks               = sinks;
            _command             = command;
            _state.StateChanged += State_StateChanged;
            Initialize();

            _sinks.ProjectRemoved     += ProjectRemoved;
            _sinks.ComponentActivated += ComponentActivated;
            _sinks.ComponentSelected  += ComponentSelected;
        }
示例#50
0
        public FindAllReferencesCommand(INavigateCommand navigateCommand, IMessageBox messageBox,
                                        RubberduckParserState state, VBE vbe, ISearchResultsWindowViewModel viewModel,
                                        SearchResultPresenterInstanceManager presenterService)
        {
            _navigateCommand  = navigateCommand;
            _messageBox       = messageBox;
            _state            = state;
            _vbe              = vbe;
            _viewModel        = viewModel;
            _presenterService = presenterService;

            _state.StateChanged += _state_StateChanged;
        }
示例#51
0
        public ImportCommand(VBE vbe, IOpenFileDialog openFileDialog) : base(LogManager.GetCurrentClassLogger())
        {
            _vbe            = vbe;
            _openFileDialog = openFileDialog;

            _openFileDialog.AddExtension       = true;
            _openFileDialog.AutoUpgradeEnabled = true;
            _openFileDialog.CheckFileExists    = true;
            _openFileDialog.Multiselect        = true;
            _openFileDialog.ShowHelp           = false; // we don't want 1996's file picker.
            _openFileDialog.Filter             = @"VB Files|*.cls;*.bas;*.frm";
            _openFileDialog.CheckFileExists    = true;
        }
示例#52
0
        public string RunAllTests(VBE vbe, string outputFilePath = null)
        {
            LoadAllTests(vbe);
            _engine.Run(_engine.AllTests.Keys);

            var results = OutputToString();

            if (outputFilePath != null)
            {
                OutputToFile(outputFilePath, results);
            }

            return results;
        }
示例#53
0
        public string RunAllTests(VBE vbe, string outputFilePath = null)
        {
            LoadAllTests(vbe);
            _engine.Run(_engine.AllTests.Keys);

            var results = OutputToString();

            if (outputFilePath != null)
            {
                OutputToFile(outputFilePath, results);
            }

            return(results);
        }
示例#54
0
        public App(VBE vbe, IMessageBox messageBox,
                   IRubberduckParser parser,
                   IGeneralConfigService configService,
                   IAppMenu appMenus,
                   RubberduckCommandBar stateBar,
                   IRubberduckHooks hooks,
                   SourceControlDockablePresenter sourceControlPresenter)
        {
            _vbe           = vbe;
            _messageBox    = messageBox;
            _parser        = parser;
            _configService = configService;
            _autoSave      = new AutoSave.AutoSave(_vbe, _configService);
            _appMenus      = appMenus;
            _stateBar      = stateBar;
            _hooks         = hooks;
            _logger        = LogManager.GetCurrentClassLogger();

            var sourceControlPanel = (SourceControlPanel)sourceControlPresenter.Window();

            _sourceControlPanelVM = (SourceControlViewViewModel)sourceControlPanel.ViewModel;
            _branchesVM           = (BranchesViewViewModel)_sourceControlPanelVM.TabItems.Single(t => t.ViewModel.Tab == SourceControlTab.Branches).ViewModel;

            _sourceControlPanelVM.OpenRepoStarted   += DisableSinkEventHandlers;
            _sourceControlPanelVM.OpenRepoCompleted += EnableSinkEventHandlersAndUpdateCache;

            _branchesVM.LoadingComponentsStarted   += DisableSinkEventHandlers;
            _branchesVM.LoadingComponentsCompleted += EnableSinkEventHandlersAndUpdateCache;

            _hooks.MessageReceived            += _hooks_MessageReceived;
            _configService.SettingsChanged    += _configService_SettingsChanged;
            _configService.LanguageChanged    += ConfigServiceLanguageChanged;
            _parser.State.StateChanged        += Parser_StateChanged;
            _parser.State.StatusMessageUpdate += State_StatusMessageUpdate;
            _stateBar.Refresh += _stateBar_Refresh;

            _sink = new VBProjectsEventsSink();
            var connectionPointContainer = (IConnectionPointContainer)_vbe.VBProjects;
            var interfaceId = typeof(_dispVBProjectsEvents).GUID;

            connectionPointContainer.FindConnectionPoint(ref interfaceId, out _projectsEventsConnectionPoint);

            _sink.ProjectAdded     += sink_ProjectAdded;
            _sink.ProjectRemoved   += sink_ProjectRemoved;
            _sink.ProjectActivated += sink_ProjectActivated;
            _sink.ProjectRenamed   += sink_ProjectRenamed;

            _projectsEventsConnectionPoint.Advise(_sink, out _projectsEventsCookie);
            UiDispatcher.Initialize();
        }
 public RegexSearchReplace(VBE vbe, IRubberduckParser parser, ICodePaneWrapperFactory codePaneFactory)
 {
     _vbe = vbe;
     _parser = parser;
     _codePaneFactory = codePaneFactory;
     _search = new Dictionary<RegexSearchReplaceScope, Func<string, IEnumerable<RegexSearchResult>>>
     {
         { RegexSearchReplaceScope.Selection, SearchSelection},
         { RegexSearchReplaceScope.CurrentBlock, SearchCurrentBlock},
         { RegexSearchReplaceScope.CurrentFile, SearchCurrentFile},
         { RegexSearchReplaceScope.AllOpenedFiles, SearchOpenFiles},
         { RegexSearchReplaceScope.CurrentProject, SearchCurrentProject},
         { RegexSearchReplaceScope.AllOpenProjects, SearchOpenProjects},
     };
 }
示例#56
0
        public App(VBE vbe, AddIn addIn)
        {
            _vbe = vbe;
            _addIn = addIn;

            _parserErrorsPresenter = new ParserErrorsPresenter(vbe, addIn);
            _configService.SettingsChanged += _configService_SettingsChanged;

            _editor = new ActiveCodePaneEditor(vbe);

            LoadConfig();

            CleanUp();

            Setup();
        }
        public TestExplorerDockablePresenter(VBE vbe, AddIn addin, ITestExplorerWindow control, ITestEngine testEngine, GridViewSort<TestExplorerItem> gridViewSort)
            : base(vbe, addin, control)
        {
            _testEngine = testEngine;
            _gridViewSort = gridViewSort;

            _testEngine.ModuleInitialize += _testEngine_ModuleInitialize;
            _testEngine.ModuleCleanup += _testEngine_ModuleCleanup;
            _testEngine.MethodInitialize += TestEngineMethodInitialize;
            _testEngine.MethodCleanup += TestEngineMethodCleanup;

            _view = control; 
            _view.SortColumn += SortColumn;

            RegisterTestExplorerEvents();
        }
示例#58
0
        public Indenter(VBE vbe, Func<IIndenterSettings> settings)
        {
            _vbe = vbe;
            _settings = settings;

            foreach (var scope in ProcedureLevelScopeTokens)
            {
                foreach (var modifier in ProcedureLevelStaticTokens)
                {
                    foreach (var token in ProcedureLevelTypeTokens)
                    {
                        _inProcedure.Add(string.Join(" ", new [] {scope, modifier, token}.Where(x => !string.IsNullOrEmpty(x))));
                    }
                }
            }
        }
        public SourceControlPresenter(
            VBE vbe, AddIn addin, 
            IConfigurationService<SourceControlConfiguration> configService, 
            ISourceControlView view, 
            IChangesPresenter changesPresenter, 
            IBranchesPresenter branchesPresenter, 
            ISettingsPresenter settingsPresenter, 
            IUnsyncedCommitsPresenter unsyncedPresenter, 
            IFolderBrowserFactory folderBrowserFactory, 
            ISourceControlProviderFactory providerFactory, 
            IFailedMessageView failedMessageView, 
            ILoginView loginView
            )
            : base(vbe, addin, view)
        {
            _configService = configService;
            _config = _configService.LoadConfiguration();

            _changesPresenter = changesPresenter;
            _changesPresenter.ActionFailed += OnActionFailed;

            _branchesPresenter = branchesPresenter;
            _branchesPresenter.ActionFailed += OnActionFailed;

            _settingsPresenter = settingsPresenter;
            _settingsPresenter.ActionFailed += OnActionFailed;

            _unsyncedPresenter = unsyncedPresenter;
            _unsyncedPresenter.ActionFailed += OnActionFailed;

            _folderBrowserFactory = folderBrowserFactory;
            _providerFactory = providerFactory;
            _branchesPresenter.BranchChanged += _branchesPresenter_BranchChanged;

            _loginView = loginView;
            _loginView.Confirm += _loginView_Confirm;

            _failedMessageView = failedMessageView;
            _failedMessageView.DismissSecondaryPanel += DismissSecondaryPanel;

            _view = view;
            _view.SecondaryPanel = _failedMessageView;

            _view.RefreshData += OnRefreshChildren;
            _view.OpenWorkingDirectory += OnOpenWorkingDirectory;
            _view.InitializeNewRepository += OnInitNewRepository;
        }
示例#60
0
        public AutoSave(VBE vbe, IGeneralConfigService configService)
        {
            _vbe = vbe;
            _configService = configService;

            _configService.SettingsChanged += ConfigServiceSettingsChanged;

            // todo: move this out of ctor
            //_timer.Enabled = _config.UserSettings.GeneralSettings.AutoSaveEnabled 
            //    && _config.UserSettings.GeneralSettings.AutoSavePeriod != 0;

            //if (_config.UserSettings.GeneralSettings.AutoSavePeriod != 0)
            //{
            //    _timer.Interval = _config.UserSettings.GeneralSettings.AutoSavePeriod * 1000;
            //    _timer.Elapsed += _timer_Elapsed;
            //}
        }