Skip to content

Commit 3b760cb

Browse files
authored
Merge pull request #184 from rubberduck-vba/next
sync with main repo
2 parents 549b881 + 69c3587 commit 3b760cb

Some content is hidden

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

48 files changed

+1944
-775
lines changed

RetailCoder.VBE/App.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
using System.IO;
1+
using System.Collections.Generic;
2+
using System.IO;
3+
using System.Reflection;
24
using Infralution.Localization.Wpf;
35
using NLog;
6+
using NLog.Fluent;
47
using Rubberduck.Common;
58
using Rubberduck.Parsing;
69
using Rubberduck.Parsing.Symbols;
@@ -145,6 +148,7 @@ private void UpdateLoggingLevel()
145148
public void Startup()
146149
{
147150
EnsureLogFolderPathExists();
151+
LogRubberduckSart();
148152
LoadConfig();
149153
CheckForLegacyIndenterSettings();
150154
_appMenus.Initialize();
@@ -223,6 +227,21 @@ private void CheckForLegacyIndenterSettings()
223227
}
224228
}
225229

230+
private void LogRubberduckSart()
231+
{
232+
var version = GetType().Assembly.GetName().Version.ToString();
233+
GlobalDiagnosticsContext.Set("RubberduckVersion", version);
234+
var headers = new List<string>
235+
{
236+
string.Format("Rubberduck version {0} loading:", version),
237+
string.Format("\tOperating System: {0} {1}", Environment.OSVersion.VersionString, Environment.Is64BitOperatingSystem ? "x64" : "x86"),
238+
string.Format("\tHost Product: {0} {1}", Application.ProductName, Environment.Is64BitProcess ? "x64" : "x86"),
239+
string.Format("\tHost Version: {0}", Application.ProductVersion),
240+
string.Format("\tHost Executable: {0}", Path.GetFileName(Application.ExecutablePath)),
241+
};
242+
Logger.Log(LogLevel.Info, string.Join(Environment.NewLine, headers));
243+
}
244+
226245
private bool _disposed;
227246
public void Dispose()
228247
{

RetailCoder.VBE/Inspections/UnassignedVariableUsageInspection.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,9 @@ public override IEnumerable<InspectionResultBase> GetInspectionResults()
3030
&& !declaration.IsSelfAssigned
3131
&& !declaration.References.Any(reference => reference.IsAssignment));
3232

33-
var lenFunction = BuiltInDeclarations.SingleOrDefault(s => s.Scope == "VBE7.DLL;VBA.Strings.Len");
34-
var lenbFunction = BuiltInDeclarations.SingleOrDefault(s => s.Scope == "VBE7.DLL;VBA.Strings.LenB");
33+
//The parameter scoping was apparently incorrect before - need to filter for the actual function.
34+
var lenFunction = BuiltInDeclarations.SingleOrDefault(s => s.DeclarationType == DeclarationType.Function && s.Scope.Equals("VBE7.DLL;VBA.Strings.Len"));
35+
var lenbFunction = BuiltInDeclarations.SingleOrDefault(s => s.DeclarationType == DeclarationType.Function && s.Scope.Equals("VBE7.DLL;VBA.Strings.Len"));
3536

3637
return from issue in declarations
3738
where issue.References.Any()

RetailCoder.VBE/NLog.dll.nlog

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
xsi:type="File"
88
name="file"
99
fileName="${specialfolder:folder=ApplicationData}/Rubberduck/Logs/RubberduckLog.txt"
10-
layout="${longdate};${uppercase:${level}};${logger};${message};${exception:format=tostring}"
10+
layout="${longdate};${uppercase:${level}}-${gdc:item=RubberduckVersion};${logger};${message};${exception:format=tostring}"
1111
archiveFileName="${specialfolder:folder=ApplicationData}/Rubberduck/Logs/archives/RubberduckLog.{#}.txt"
1212
archiveAboveSize="5242880"
1313
archiveNumbering="Sequence"

RetailCoder.VBE/Settings/WindowSettings.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
11
using System.Xml.Serialization;
2+
using Rubberduck.Properties;
3+
using Rubberduck.UI;
4+
using Rubberduck.UI.CodeExplorer;
5+
using Rubberduck.UI.Inspections;
6+
using Rubberduck.UI.SourceControl;
7+
using Rubberduck.UI.ToDoItems;
8+
using Rubberduck.UI.UnitTesting;
29

310
namespace Rubberduck.Settings
411
{
@@ -9,6 +16,8 @@ public interface IWindowSettings
916
bool SourceControlVisibleOnStartup { get; set; }
1017
bool TestExplorerVisibleOnStartup { get; set; }
1118
bool TodoExplorerVisibleOnStartup { get; set; }
19+
20+
bool IsWindowVisible(DockableToolwindowPresenter candidate);
1221
}
1322

1423
[XmlType(AnonymousType = true)]
@@ -34,5 +43,33 @@ public WindowSettings(bool codeExplorerVisibleOnStartup, bool codeInspectionsVis
3443
public bool SourceControlVisibleOnStartup { get; set; }
3544
public bool TestExplorerVisibleOnStartup { get; set; }
3645
public bool TodoExplorerVisibleOnStartup { get; set; }
46+
47+
public bool IsWindowVisible(DockableToolwindowPresenter candidate)
48+
{
49+
//I'm sure there's a better way to do this, because this is a lazy-ass way to do it.
50+
//We're injecting into the base class, so check the derived class:
51+
if (candidate is CodeExplorerDockablePresenter)
52+
{
53+
return CodeExplorerVisibleOnStartup;
54+
}
55+
if (candidate is CodeInspectionsDockablePresenter)
56+
{
57+
return CodeInspectionsVisibleOnStartup;
58+
}
59+
if (candidate is SourceControlDockablePresenter)
60+
{
61+
return SourceControlVisibleOnStartup;
62+
}
63+
if (candidate is TestExplorerDockablePresenter)
64+
{
65+
return TestExplorerVisibleOnStartup;
66+
}
67+
if (candidate is ToDoExplorerDockablePresenter)
68+
{
69+
return TodoExplorerVisibleOnStartup;
70+
}
71+
//Oh. Hello. I have no clue who you are...
72+
return false;
73+
}
3774
}
3875
}

RetailCoder.VBE/UI/CodeExplorer/CodeExplorerDockablePresenter.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
1+
using Rubberduck.Settings;
2+
using Rubberduck.SettingsProvider;
3+
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
24

35
namespace Rubberduck.UI.CodeExplorer
46
{
57
public class CodeExplorerDockablePresenter : DockableToolwindowPresenter
68
{
7-
public CodeExplorerDockablePresenter(IVBE vbe, IAddIn addIn, CodeExplorerWindow view)
8-
: base(vbe, addIn, view)
9+
public CodeExplorerDockablePresenter(IVBE vbe, IAddIn addIn, CodeExplorerWindow view, IConfigProvider<WindowSettings> settings)
10+
: base(vbe, addIn, view, settings)
911
{
1012
}
1113
}

RetailCoder.VBE/UI/Controls/SearchResultsDockablePresenter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ namespace Rubberduck.UI.Controls
44
{
55
public class SearchResultsDockablePresenter : DockableToolwindowPresenter
66
{
7-
public SearchResultsDockablePresenter(IVBE vbe, IAddIn addin, IDockableUserControl view)
8-
: base(vbe, addin, view)
7+
public SearchResultsDockablePresenter(IVBE vbe, IAddIn addin, IDockableUserControl view)
8+
: base(vbe, addin, view, null)
99
{
1010
}
1111

RetailCoder.VBE/UI/DockableToolwindowPresenter.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
using System;
2+
using System.Configuration;
23
using System.Runtime.InteropServices;
34
using System.Windows.Forms;
45
using NLog;
6+
using Rubberduck.Settings;
7+
using Rubberduck.SettingsProvider;
58
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
69

710
namespace Rubberduck.UI
@@ -23,13 +26,18 @@ public abstract class DockableToolwindowPresenter : IDockablePresenter, IDisposa
2326
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
2427
private readonly IWindow _window;
2528
private readonly UserControl _userControl;
29+
private readonly WindowSettings _settings; //Storing this really doesn't matter - it's only checked on startup and never persisted.
2630

27-
protected DockableToolwindowPresenter(IVBE vbe, IAddIn addin, IDockableUserControl view)
31+
protected DockableToolwindowPresenter(IVBE vbe, IAddIn addin, IDockableUserControl view, IConfigProvider<WindowSettings> settingsProvider)
2832
{
2933
_vbe = vbe;
3034
_addin = addin;
3135
Logger.Trace(string.Format("Initializing Dockable Panel ({0})", GetType().Name));
3236
_userControl = view as UserControl;
37+
if (settingsProvider != null)
38+
{
39+
_settings = settingsProvider.Create();
40+
}
3341
_window = CreateToolWindow(view);
3442
}
3543

@@ -69,7 +77,7 @@ private IWindow CreateToolWindow(IDockableUserControl control)
6977

7078
EnsureMinimumWindowSize(toolWindow);
7179

72-
toolWindow.IsVisible = false; //hide it again
80+
toolWindow.IsVisible = _settings != null && _settings.IsWindowVisible(this);
7381

7482
userControlHost.AddUserControl(control as UserControl, new IntPtr(_vbe.MainWindow.HWnd));
7583
return toolWindow;

RetailCoder.VBE/UI/IdentifierReferences/IdentifierReferencesListDockablePresenter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace Rubberduck.UI.IdentifierReferences
77
public class IdentifierReferencesListDockablePresenter : DockableToolwindowPresenter
88
{
99
public IdentifierReferencesListDockablePresenter(IVBE vbe, IAddIn addin, SimpleListControl control, Declaration target)
10-
: base(vbe, addin, control)
10+
: base(vbe, addin, control, null)
1111
{
1212
BindTarget(target);
1313
}

RetailCoder.VBE/UI/IdentifierReferences/ImplementationsListDockablePresenter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace Rubberduck.UI.IdentifierReferences
99
public class ImplementationsListDockablePresenter : DockableToolwindowPresenter
1010
{
1111
public ImplementationsListDockablePresenter(IVBE vbe, IAddIn addin, IDockableUserControl control, IEnumerable<Declaration> implementations)
12-
: base(vbe, addin, control)
12+
: base(vbe, addin, control, null)
1313
{
1414
BindTarget(implementations);
1515
}

RetailCoder.VBE/UI/Inspections/CodeInspectionsDockablePresenter.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
1+
using Rubberduck.Settings;
2+
using Rubberduck.SettingsProvider;
3+
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
24

35
namespace Rubberduck.UI.Inspections
46
{
57
public class CodeInspectionsDockablePresenter : DockableToolwindowPresenter
68
{
7-
public CodeInspectionsDockablePresenter(IVBE vbe, IAddIn addin, CodeInspectionsWindow window)
8-
:base(vbe, addin, window)
9+
public CodeInspectionsDockablePresenter(IVBE vbe, IAddIn addin, CodeInspectionsWindow window, IConfigProvider<WindowSettings> settings)
10+
: base(vbe, addin, window, settings)
911
{
1012
}
1113
}

0 commit comments

Comments
 (0)