11
11
using Rubberduck . UI . Command . MenuItems ;
12
12
using System ;
13
13
using System . Globalization ;
14
- using System . Threading . Tasks ;
15
14
using System . Windows . Forms ;
16
15
17
16
namespace Rubberduck
@@ -141,8 +140,12 @@ public void Startup()
141
140
_appMenus . Initialize ( ) ;
142
141
_hooks . HookHotkeys ( ) ; // need to hook hotkeys before we localize menus, to correctly display ShortcutTexts
143
142
_appMenus . Localize ( ) ;
144
- Task . Delay ( 1000 ) . ContinueWith ( t => UiDispatcher . Invoke ( ( ) => _parser . State . OnParseRequested ( this ) ) ) ;
145
143
UpdateLoggingLevel ( ) ;
144
+
145
+ if ( _vbe . VBProjects . Count != 0 )
146
+ {
147
+ _parser . State . OnParseRequested ( this ) ;
148
+ }
146
149
}
147
150
148
151
public void Shutdown ( )
@@ -157,168 +160,6 @@ public void Shutdown()
157
160
}
158
161
}
159
162
160
- /*#region sink handlers.
161
- async void sink_ProjectRemoved(object sender, DispatcherEventArgs<VBProject> e)
162
- {
163
- if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
164
-
165
- if (e.Item.Protection == vbext_ProjectProtection.vbext_pp_locked)
166
- {
167
- Logger.Debug("Locked project '{0}' was removed.", e.Item.Name);
168
- return;
169
- }
170
-
171
- _parser.Cancel();
172
-
173
- var projectId = e.Item.HelpFile;
174
- Debug.Assert(projectId != null);
175
-
176
- _parser.State.RemoveProject(e.Item);
177
- _parser.State.OnParseRequested(this);
178
- }
179
-
180
- async void sink_ProjectAdded(object sender, DispatcherEventArgs<VBProject> e)
181
- {
182
- if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
183
-
184
- Logger.Debug("Project '{0}' was added.", e.Item.Name);
185
- if (e.Item.Protection == vbext_ProjectProtection.vbext_pp_locked)
186
- {
187
- Logger.Debug("Project is protected and will not be added to parser state.");
188
- return;
189
- }
190
-
191
- _parser.State.AddProject(e.Item); // note side-effect: assigns ProjectId/HelpFile
192
- var projectId = e.Item.HelpFile;
193
- RegisterComponentsEventSink(e.Item.VBComponents, projectId);
194
-
195
- if (!_parser.State.AllDeclarations.Any())
196
- {
197
- // forces menus to evaluate their CanExecute state:
198
- Parser_StateChanged(this, new ParserStateEventArgs(ParserState.Pending));
199
- _stateBar.SetStatusText();
200
- return;
201
- }
202
-
203
- _parser.State.OnParseRequested(sender);
204
- }
205
-
206
- async void sink_ComponentSelected(object sender, DispatcherEventArgs<VBComponent> e)
207
- {
208
- if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
209
-
210
- if (!_parser.State.AllDeclarations.Any())
211
- {
212
- return;
213
- }
214
- }
215
-
216
- async void sink_ComponentRenamed(object sender, DispatcherRenamedEventArgs<VBComponent> e)
217
- {
218
- if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
219
-
220
- if (!_parser.State.AllDeclarations.Any())
221
- {
222
- return;
223
- }
224
-
225
- _parser.Cancel();
226
-
227
- _sourceControlPanelVM.HandleRenamedComponent(e.Item, e.OldName);
228
-
229
- Logger.Debug("Component '{0}' was renamed to '{1}'.", e.OldName, e.Item.Name);
230
-
231
- var projectId = e.Item.Collection.Parent.HelpFile;
232
- var componentDeclaration = _parser.State.AllDeclarations.FirstOrDefault(f =>
233
- f.ProjectId == projectId &&
234
- f.DeclarationType == DeclarationType.ClassModule &&
235
- f.IdentifierName == e.OldName);
236
-
237
- if (e.Item.Type == vbext_ComponentType.vbext_ct_Document &&
238
- componentDeclaration != null &&
239
-
240
- // according to ThunderFrame, Excel is the only one we explicitly support
241
- // with two Document-component types just skip the Worksheet component
242
- ((ClassModuleDeclaration) componentDeclaration).Supertypes.All(a => a.IdentifierName != "Worksheet"))
243
- {
244
- _parser.State.RemoveProject(projectId);
245
-
246
- _parser.State.AddProject(e.Item.Collection.Parent);
247
- }
248
- else
249
- {
250
- _parser.State.RemoveRenamedComponent(e.Item, e.OldName);
251
- }
252
-
253
- _parser.State.OnParseRequested(this);
254
- }
255
-
256
- async void sink_ComponentRemoved(object sender, DispatcherEventArgs<VBComponent> e)
257
- {
258
- if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
259
-
260
- if (!_parser.State.AllDeclarations.Any())
261
- {
262
- return;
263
- }
264
-
265
- _parser.Cancel(e.Item);
266
-
267
- _sourceControlPanelVM.HandleRemovedComponent(e.Item);
268
-
269
- Logger.Debug("Component '{0}' was removed.", e.Item.Name);
270
- _parser.State.ClearStateCache(e.Item, true);
271
- }
272
-
273
- async void sink_ComponentReloaded(object sender, DispatcherEventArgs<VBComponent> e)
274
- {
275
- if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
276
-
277
- if (!_parser.State.AllDeclarations.Any())
278
- {
279
- return;
280
- }
281
-
282
- _parser.Cancel(e.Item);
283
-
284
- _parser.State.OnParseRequested(sender, e.Item);
285
- }
286
-
287
- async void sink_ComponentAdded(object sender, DispatcherEventArgs<VBComponent> e)
288
- {
289
- if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
290
-
291
- if (!_parser.State.AllDeclarations.Any())
292
- {
293
- return;
294
- }
295
-
296
- _sourceControlPanelVM.HandleAddedComponent(e.Item);
297
-
298
- Logger.Debug("Component '{0}' was added.", e.Item.Name);
299
- _parser.State.OnParseRequested(sender, e.Item);
300
- }
301
-
302
- async void sink_ProjectRenamed(object sender, DispatcherRenamedEventArgs<VBProject> e)
303
- {
304
- if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
305
-
306
- if (!_parser.State.AllDeclarations.Any())
307
- {
308
- return;
309
- }
310
-
311
- _parser.Cancel();
312
-
313
- Logger.Debug("Project '{0}' (ID {1}) was renamed to '{2}'.", e.OldName, e.Item.HelpFile, e.Item.Name);
314
-
315
- _parser.State.RemoveProject(e.Item.HelpFile);
316
- _parser.State.AddProject(e.Item);
317
-
318
- _parser.State.OnParseRequested(sender);
319
- }
320
- #endregion*/
321
-
322
163
private void _stateBar_Refresh ( object sender , EventArgs e )
323
164
{
324
165
// handles "refresh" button click on "Rubberduck" command bar
0 commit comments