@@ -96,6 +96,14 @@ async void sink_ProjectRemoved(object sender, DispatcherEventArgs<VBProject> e)
96
96
97
97
async void sink_ProjectAdded ( object sender , DispatcherEventArgs < VBProject > e )
98
98
{
99
+ if ( ! _parser . State . AllDeclarations . Any ( ) )
100
+ {
101
+ // forces menus to evaluate their CanExecute state:
102
+ Parser_StateChanged ( this , new ParserStateEventArgs ( ParserState . Pending ) ) ;
103
+ _stateBar . SetStatusText ( ) ;
104
+ return ;
105
+ }
106
+
99
107
Debug . WriteLine ( string . Format ( "Project '{0}' was added." , e . Item . Name ) ) ;
100
108
var connectionPointContainer = ( IConnectionPointContainer ) e . Item . VBComponents ;
101
109
var interfaceId = typeof ( _dispVBComponentsEvents ) . GUID ;
@@ -115,57 +123,95 @@ async void sink_ProjectAdded(object sender, DispatcherEventArgs<VBProject> e)
115
123
connectionPoint . Advise ( sink , out cookie ) ;
116
124
117
125
_componentsEventsConnectionPoints . Add ( e . Item . VBComponents , Tuple . Create ( connectionPoint , cookie ) ) ;
118
- _parser . State . OnParseRequested ( ) ;
126
+ _parser . State . OnParseRequested ( sender ) ;
119
127
}
120
128
121
129
async void sink_ComponentSelected ( object sender , DispatcherEventArgs < VBComponent > e )
122
130
{
131
+ if ( ! _parser . State . AllDeclarations . Any ( ) )
132
+ {
133
+ return ;
134
+ }
135
+
123
136
Debug . WriteLine ( string . Format ( "Component '{0}' was selected." , e . Item . Name ) ) ;
124
137
// do something?
125
138
}
126
139
127
140
async void sink_ComponentRenamed ( object sender , DispatcherRenamedEventArgs < VBComponent > e )
128
141
{
142
+ if ( ! _parser . State . AllDeclarations . Any ( ) )
143
+ {
144
+ return ;
145
+ }
146
+
129
147
Debug . WriteLine ( string . Format ( "Component '{0}' was renamed." , e . Item . Name ) ) ;
130
148
131
- _parser . State . ClearDeclarations ( e . Item ) ;
132
- _parser . State . OnParseRequested ( e . Item ) ;
149
+ _parser . State . OnParseRequested ( sender , e . Item ) ;
133
150
}
134
151
135
152
async void sink_ComponentRemoved ( object sender , DispatcherEventArgs < VBComponent > e )
136
153
{
154
+ if ( ! _parser . State . AllDeclarations . Any ( ) )
155
+ {
156
+ return ;
157
+ }
158
+
137
159
Debug . WriteLine ( string . Format ( "Component '{0}' was removed." , e . Item . Name ) ) ;
138
160
_parser . State . ClearDeclarations ( e . Item ) ;
139
161
}
140
162
141
163
async void sink_ComponentReloaded ( object sender , DispatcherEventArgs < VBComponent > e )
142
164
{
165
+ if ( ! _parser . State . AllDeclarations . Any ( ) )
166
+ {
167
+ return ;
168
+ }
169
+
143
170
Debug . WriteLine ( string . Format ( "Component '{0}' was reloaded." , e . Item . Name ) ) ;
144
- _parser . State . ClearDeclarations ( e . Item ) ;
145
- _parser . State . OnParseRequested ( e . Item ) ;
171
+ _parser . State . OnParseRequested ( sender , e . Item ) ;
146
172
}
147
173
148
174
async void sink_ComponentAdded ( object sender , DispatcherEventArgs < VBComponent > e )
149
175
{
176
+ if ( ! _parser . State . AllDeclarations . Any ( ) )
177
+ {
178
+ return ;
179
+ }
180
+
150
181
Debug . WriteLine ( string . Format ( "Component '{0}' was added." , e . Item . Name ) ) ;
151
- _parser . State . OnParseRequested ( e . Item ) ;
182
+ _parser . State . OnParseRequested ( sender , e . Item ) ;
152
183
}
153
184
154
185
async void sink_ComponentActivated ( object sender , DispatcherEventArgs < VBComponent > e )
155
186
{
187
+ if ( ! _parser . State . AllDeclarations . Any ( ) )
188
+ {
189
+ return ;
190
+ }
191
+
156
192
Debug . WriteLine ( string . Format ( "Component '{0}' was activated." , e . Item . Name ) ) ;
157
193
// do something?
158
194
}
159
195
160
196
async void sink_ProjectRenamed ( object sender , DispatcherRenamedEventArgs < VBProject > e )
161
197
{
198
+ if ( ! _parser . State . AllDeclarations . Any ( ) )
199
+ {
200
+ return ;
201
+ }
202
+
162
203
Debug . WriteLine ( string . Format ( "Project '{0}' was renamed." , e . Item . Name ) ) ;
163
204
_parser . State . ClearDeclarations ( e . Item ) ;
164
- _parser . State . OnParseRequested ( ) ;
205
+ _parser . State . OnParseRequested ( sender ) ;
165
206
}
166
207
167
208
async void sink_ProjectActivated ( object sender , DispatcherEventArgs < VBProject > e )
168
209
{
210
+ if ( ! _parser . State . AllDeclarations . Any ( ) )
211
+ {
212
+ return ;
213
+ }
214
+
169
215
Debug . WriteLine ( string . Format ( "Project '{0}' was activated." , e . Item . Name ) ) ;
170
216
// do something?
171
217
}
@@ -244,11 +290,12 @@ private async void hooks_MessageReceived(object sender, HookEventArgs e)
244
290
245
291
private void _stateBar_Refresh ( object sender , EventArgs e )
246
292
{
247
- _parser . State . OnParseRequested ( ) ;
293
+ _parser . State . OnParseRequested ( sender ) ;
248
294
}
249
295
250
- private void Parser_StateChanged ( object sender , ParserStateEventArgs e )
296
+ private void Parser_StateChanged ( object sender , EventArgs e )
251
297
{
298
+ Debug . WriteLine ( "App handles StateChanged ({0}), evaluating menu states..." , _parser . State . Status ) ;
252
299
_appMenus . EvaluateCanExecute ( _parser . State ) ;
253
300
}
254
301
0 commit comments