Skip to content

Commit 7800d15

Browse files
committed
Mostly reinstate sink handlers--may be some bugs still
1 parent f29c94b commit 7800d15

File tree

64 files changed

+834
-703
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+834
-703
lines changed

RetailCoder.VBE/API/ParserState.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,13 @@ public sealed class ParserState : IParserState, IDisposable
4747
private const string ClassId = "28754D11-10CC-45FD-9F6A-525A65412B7A";
4848
private const string ProgId = "Rubberduck.ParserState";
4949

50-
private readonly RubberduckParserState _state;
50+
private RubberduckParserState _state;
5151
private AttributeParser _attributeParser;
5252
private RubberduckParser _parser;
5353

5454
public ParserState()
5555
{
5656
UiDispatcher.Initialize();
57-
_state = new RubberduckParserState();
58-
59-
_state.StateChanged += _state_StateChanged;
6057
}
6158

6259
public void Initialize(VBE vbe)
@@ -65,6 +62,10 @@ public void Initialize(VBE vbe)
6562
{
6663
throw new InvalidOperationException("ParserState is already initialized.");
6764
}
65+
66+
_state = new RubberduckParserState(vbe, new Sinks(vbe));
67+
_state.StateChanged += _state_StateChanged;
68+
6869
Func<IVBAPreprocessor> preprocessorFactory = () => new VBAPreprocessor(double.Parse(vbe.Version, CultureInfo.InvariantCulture));
6970
_attributeParser = new AttributeParser(new ModuleExporter(), preprocessorFactory);
7071
_parser = new RubberduckParser(vbe, _state, _attributeParser, preprocessorFactory,

RetailCoder.VBE/App.cs

Lines changed: 0 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -58,22 +58,6 @@ public App(VBE vbe, IMessageBox messageBox,
5858
UiDispatcher.Initialize();
5959
}
6060

61-
/*private void EnableSinkEventHandlersAndUpdateCache(object sender, EventArgs e)
62-
{
63-
_handleSinkEvents = true;
64-
65-
// update cache
66-
_parser.State.RemoveProject(_vbe.ActiveVBProject.HelpFile);
67-
_parser.State.AddProject(_vbe.ActiveVBProject);
68-
69-
_parser.State.OnParseRequested(this);
70-
}
71-
72-
private void DisableSinkEventHandlers(object sender, EventArgs e)
73-
{
74-
_handleSinkEvents = false;
75-
}*/
76-
7761
private void State_StatusMessageUpdate(object sender, RubberduckStatusMessageEventArgs e)
7862
{
7963
var message = e.Message;
@@ -189,25 +173,8 @@ async void sink_ProjectRemoved(object sender, DispatcherEventArgs<VBProject> e)
189173
var projectId = e.Item.HelpFile;
190174
Debug.Assert(projectId != null);
191175
192-
_componentsEventsSinks.Remove(projectId);
193-
_referencesEventsSinks.Remove(projectId);
194176
_parser.State.RemoveProject(e.Item);
195177
_parser.State.OnParseRequested(this);
196-
197-
Logger.Debug("Project '{0}' was removed.", e.Item.Name);
198-
Tuple<IConnectionPoint, int> componentsTuple;
199-
if (_componentsEventsConnectionPoints.TryGetValue(projectId, out componentsTuple))
200-
{
201-
componentsTuple.Item1.Unadvise(componentsTuple.Item2);
202-
_componentsEventsConnectionPoints.Remove(projectId);
203-
}
204-
205-
Tuple<IConnectionPoint, int> referencesTuple;
206-
if (_referencesEventsConnectionPoints.TryGetValue(projectId, out referencesTuple))
207-
{
208-
referencesTuple.Item1.Unadvise(referencesTuple.Item2);
209-
_referencesEventsConnectionPoints.Remove(projectId);
210-
}
211178
}
212179
213180
async void sink_ProjectAdded(object sender, DispatcherEventArgs<VBProject> e)
@@ -274,25 +241,8 @@ async void sink_ComponentRenamed(object sender, DispatcherRenamedEventArgs<VBCom
274241
// with two Document-component types just skip the Worksheet component
275242
((ClassModuleDeclaration) componentDeclaration).Supertypes.All(a => a.IdentifierName != "Worksheet"))
276243
{
277-
_componentsEventsSinks.Remove(projectId);
278-
_referencesEventsSinks.Remove(projectId);
279244
_parser.State.RemoveProject(projectId);
280245
281-
Logger.Debug("Project '{0}' was removed.", e.Item.Name);
282-
Tuple<IConnectionPoint, int> componentsTuple;
283-
if (_componentsEventsConnectionPoints.TryGetValue(projectId, out componentsTuple))
284-
{
285-
componentsTuple.Item1.Unadvise(componentsTuple.Item2);
286-
_componentsEventsConnectionPoints.Remove(projectId);
287-
}
288-
289-
Tuple<IConnectionPoint, int> referencesTuple;
290-
if (_referencesEventsConnectionPoints.TryGetValue(projectId, out referencesTuple))
291-
{
292-
referencesTuple.Item1.Unadvise(referencesTuple.Item2);
293-
_referencesEventsConnectionPoints.Remove(projectId);
294-
}
295-
296246
_parser.State.AddProject(e.Item.Collection.Parent);
297247
}
298248
else
@@ -349,18 +299,6 @@ async void sink_ComponentAdded(object sender, DispatcherEventArgs<VBComponent> e
349299
_parser.State.OnParseRequested(sender, e.Item);
350300
}
351301
352-
async void sink_ComponentActivated(object sender, DispatcherEventArgs<VBComponent> e)
353-
{
354-
if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
355-
356-
if (!_parser.State.AllDeclarations.Any())
357-
{
358-
return;
359-
}
360-
361-
// do something?
362-
}
363-
364302
async void sink_ProjectRenamed(object sender, DispatcherRenamedEventArgs<VBProject> e)
365303
{
366304
if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
@@ -379,18 +317,6 @@ async void sink_ProjectRenamed(object sender, DispatcherRenamedEventArgs<VBProje
379317
380318
_parser.State.OnParseRequested(sender);
381319
}
382-
383-
async void sink_ProjectActivated(object sender, DispatcherEventArgs<VBProject> e)
384-
{
385-
if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
386-
387-
if (!_parser.State.AllDeclarations.Any())
388-
{
389-
return;
390-
}
391-
392-
// todo: keep Code Explorer in sync with Project Explorer
393-
}
394320
#endregion*/
395321

396322
private void _stateBar_Refresh(object sender, EventArgs e)

RetailCoder.VBE/Common/Dispatch/DispatcherEventArgs.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
using System;
2+
using Rubberduck.Parsing;
23

34
namespace Rubberduck.Common.Dispatch
45
{
5-
public class DispatcherEventArgs<T> : EventArgs
6+
public class DispatcherEventArgs<T> : EventArgs, IDispatcherEventArgs<T>
67
where T : class
78
{
89
private readonly T _item;

RetailCoder.VBE/Common/Dispatch/DispatcherRenamedEventArgs.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
namespace Rubberduck.Common.Dispatch
1+
using Rubberduck.Parsing;
2+
3+
namespace Rubberduck.Common.Dispatch
24
{
3-
public class DispatcherRenamedEventArgs<T> : DispatcherEventArgs<T>
5+
public class DispatcherRenamedEventArgs<T> : DispatcherEventArgs<T>, IDispatcherRenamedEventArgs<T>
46
where T : class
57
{
68
private readonly string _oldName;

RetailCoder.VBE/Root/RubberduckModule.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ public override void Load()
8383
ApplyAbstractFactoryConvention(assemblies);
8484

8585
BindCommandsToMenuItems();
86-
86+
87+
Rebind<Rubberduck.Parsing.ISinks>().To<Sinks>().InSingletonScope();
8788
Rebind<IIndenter>().To<Indenter>().InSingletonScope();
8889
Rebind<IIndenterSettings>().To<IndenterSettings>();
8990
Bind<Func<IIndenterSettings>>().ToMethod(t => () => Kernel.Get<IGeneralConfigService>().LoadConfiguration().UserSettings.IndenterSettings);

0 commit comments

Comments
 (0)