Skip to content

Commit 8283155

Browse files
authored
Merge pull request #2448 from ThunderFrame/next
Adds Window Settings to Rubberduck Settings
2 parents c3b2e9d + 228e76b commit 8283155

32 files changed

+513
-30
lines changed

RetailCoder.VBE/Root/RubberduckModule.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ private void ApplyConfigurationConvention(IEnumerable<Assembly> assemblies)
194194
Bind<IPersistanceService<HotkeySettings>>().To<XmlPersistanceService<HotkeySettings>>().InCallScope();
195195
Bind<IPersistanceService<ToDoListSettings>>().To<XmlPersistanceService<ToDoListSettings>>().InCallScope();
196196
Bind<IPersistanceService<UnitTestSettings>>().To<XmlPersistanceService<UnitTestSettings>>().InCallScope();
197+
Bind<IPersistanceService<WindowSettings>>().To<XmlPersistanceService<WindowSettings>>().InCallScope();
197198
Bind<IPersistanceService<IndenterSettings>>().To<XmlPersistanceService<IndenterSettings>>().InCallScope();
198199
Bind<IFilePersistanceService<SourceControlSettings>>().To<XmlPersistanceService<SourceControlSettings>>().InCallScope();
199200

@@ -205,6 +206,7 @@ private void ApplyConfigurationConvention(IEnumerable<Assembly> assemblies)
205206
Bind<IHotkeySettings>().To<HotkeySettings>().InCallScope();
206207
Bind<IToDoListSettings>().To<ToDoListSettings>().InCallScope();
207208
Bind<IUnitTestSettings>().To<UnitTestSettings>().InCallScope();
209+
Bind<IWindowSettings>().To<WindowSettings>().InCallScope();
208210
Bind<IIndenterSettings>().To<IndenterSettings>().InCallScope();
209211
Bind<ISourceControlSettings>().To<SourceControlSettings>().InCallScope();
210212
}

RetailCoder.VBE/Rubberduck.csproj

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,8 @@
445445
<Compile Include="Settings\ToDoListConfigProvider.cs" />
446446
<Compile Include="Settings\UnitTestConfigProvider.cs" />
447447
<Compile Include="Settings\WhitelistedIdentifierSetting.cs" />
448+
<Compile Include="Settings\WindowConfigProvider.cs" />
449+
<Compile Include="Settings\WindowSettings.cs" />
448450
<Compile Include="UI\About\AboutControl.xaml.cs">
449451
<DependentUpon>AboutControl.xaml</DependentUpon>
450452
</Compile>
@@ -843,6 +845,10 @@
843845
<Compile Include="UI\IdentifierReferences\ListItemActionEventArgs.cs" />
844846
<Compile Include="UI\ParserErrors\ParserErrorsPresenter.cs" />
845847
<Compile Include="Refactorings\ExtractMethod\ExtractMethodModel.cs" />
848+
<Compile Include="UI\Settings\WindowSettings.xaml.cs">
849+
<DependentUpon>WindowSettings.xaml</DependentUpon>
850+
</Compile>
851+
<Compile Include="UI\Settings\WindowSettingsViewModel.cs" />
846852
<Compile Include="UI\SimpleListControl.cs">
847853
<SubType>UserControl</SubType>
848854
</Compile>
@@ -1483,6 +1489,10 @@
14831489
<SubType>Designer</SubType>
14841490
<Generator>MSBuild:Compile</Generator>
14851491
</Page>
1492+
<Page Include="UI\Settings\WindowSettings.xaml">
1493+
<SubType>Designer</SubType>
1494+
<Generator>MSBuild:Compile</Generator>
1495+
</Page>
14861496
<Page Include="UI\SourceControl\BranchesView.xaml">
14871497
<SubType>Designer</SubType>
14881498
<Generator>MSBuild:Compile</Generator>

RetailCoder.VBE/Settings/ConfigurationLoader.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,18 @@ public class ConfigurationLoader : IGeneralConfigService
3232
private readonly IConfigProvider<CodeInspectionSettings> _inspectionProvider;
3333
private readonly IConfigProvider<UnitTestSettings> _unitTestProvider;
3434
private readonly IConfigProvider<IndenterSettings> _indenterProvider;
35+
private readonly IConfigProvider<WindowSettings> _windowProvider;
3536

3637
public ConfigurationLoader(IConfigProvider<GeneralSettings> generalProvider, IConfigProvider<HotkeySettings> hotkeyProvider, IConfigProvider<ToDoListSettings> todoProvider,
37-
IConfigProvider<CodeInspectionSettings> inspectionProvider, IConfigProvider<UnitTestSettings> unitTestProvider, IConfigProvider<IndenterSettings> indenterProvider)
38+
IConfigProvider<CodeInspectionSettings> inspectionProvider, IConfigProvider<UnitTestSettings> unitTestProvider, IConfigProvider<IndenterSettings> indenterProvider, IConfigProvider<WindowSettings> windowProvider)
3839
{
3940
_generalProvider = generalProvider;
4041
_hotkeyProvider = hotkeyProvider;
4142
_todoProvider = todoProvider;
4243
_inspectionProvider = inspectionProvider;
4344
_unitTestProvider = unitTestProvider;
4445
_indenterProvider = indenterProvider;
46+
_windowProvider = windowProvider;
4547
}
4648

4749
/// <summary>
@@ -58,7 +60,8 @@ public virtual Configuration LoadConfiguration()
5860
_todoProvider.Create(),
5961
_inspectionProvider.Create(),
6062
_unitTestProvider.Create(),
61-
_indenterProvider.Create()
63+
_indenterProvider.Create(),
64+
_windowProvider.Create()
6265
)
6366
};
6467
return config;
@@ -75,7 +78,8 @@ public Configuration GetDefaultConfiguration()
7578
_todoProvider.CreateDefaults(),
7679
_inspectionProvider.CreateDefaults(),
7780
_unitTestProvider.CreateDefaults(),
78-
_indenterProvider.CreateDefaults()
81+
_indenterProvider.CreateDefaults(),
82+
_windowProvider.CreateDefaults()
7983
)
8084
};
8185
}
@@ -93,6 +97,7 @@ public void SaveConfiguration(Configuration toSerialize)
9397
_inspectionProvider.Save(toSerialize.UserSettings.CodeInspectionSettings);
9498
_unitTestProvider.Save(toSerialize.UserSettings.UnitTestSettings);
9599
_indenterProvider.Save(toSerialize.UserSettings.IndenterSettings);
100+
_windowProvider.Save(toSerialize.UserSettings.WindowSettings);
96101

97102
OnSettingsChanged(new ConfigurationChangedEventArgs(inspectOnReparse, langChanged, !oldInspectionSettings.SequenceEqual(newInspectionSettings)));
98103
}

RetailCoder.VBE/Settings/UserSettings.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,23 @@ public class UserSettings
1212
public CodeInspectionSettings CodeInspectionSettings { get; set; }
1313
public UnitTestSettings UnitTestSettings { get; set; }
1414
public IndenterSettings IndenterSettings { get; set; }
15+
public WindowSettings WindowSettings { get; set; }
1516

1617
public UserSettings(GeneralSettings generalSettings,
1718
HotkeySettings hotkeySettings,
1819
ToDoListSettings todoSettings,
1920
CodeInspectionSettings codeInspectionSettings,
2021
UnitTestSettings unitTestSettings,
21-
IndenterSettings indenterSettings)
22+
IndenterSettings indenterSettings,
23+
WindowSettings windowSettings)
2224
{
2325
GeneralSettings = generalSettings;
2426
HotkeySettings = hotkeySettings;
2527
ToDoListSettings = todoSettings;
2628
CodeInspectionSettings = codeInspectionSettings;
2729
UnitTestSettings = unitTestSettings;
2830
IndenterSettings = indenterSettings;
31+
WindowSettings = windowSettings;
2932
}
3033
}
3134
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
using Rubberduck.SettingsProvider;
2+
3+
namespace Rubberduck.Settings
4+
{
5+
public class WindowConfigProvider : IConfigProvider<WindowSettings>
6+
{
7+
private readonly IPersistanceService<WindowSettings> _persister;
8+
9+
public WindowConfigProvider(IPersistanceService<WindowSettings> persister)
10+
{
11+
_persister = persister;
12+
}
13+
14+
public WindowSettings Create()
15+
{
16+
var prototype = new WindowSettings();
17+
return _persister.Load(prototype) ?? prototype;
18+
}
19+
20+
public WindowSettings CreateDefaults()
21+
{
22+
return new WindowSettings();
23+
}
24+
25+
public void Save(WindowSettings settings)
26+
{
27+
_persister.Save(settings);
28+
}
29+
}
30+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using System.Xml.Serialization;
2+
3+
namespace Rubberduck.Settings
4+
{
5+
public interface IWindowSettings
6+
{
7+
bool CodeExplorerVisibleOnStartup { get; set; }
8+
bool CodeInspectionsVisibleOnStartup { get; set; }
9+
bool SourceControlVisibleOnStartup { get; set; }
10+
bool TestExplorerVisibleOnStartup { get; set; }
11+
bool TodoExplorerVisibleOnStartup { get; set; }
12+
}
13+
14+
[XmlType(AnonymousType = true)]
15+
public class WindowSettings : IWindowSettings
16+
{
17+
public WindowSettings()
18+
: this(false, false, false, false, false)
19+
{
20+
//empty constructor needed for serialization
21+
}
22+
23+
public WindowSettings(bool codeExplorerVisibleOnStartup, bool codeInspectionsVisibleOnStartup, bool sourceControlVisibleOnStartup, bool testExplorerVisibleOnStartup, bool todoExplorerVisibleOnStartup)
24+
{
25+
CodeExplorerVisibleOnStartup = codeExplorerVisibleOnStartup;
26+
CodeInspectionsVisibleOnStartup = codeInspectionsVisibleOnStartup;
27+
SourceControlVisibleOnStartup = sourceControlVisibleOnStartup;
28+
TestExplorerVisibleOnStartup = testExplorerVisibleOnStartup;
29+
TodoExplorerVisibleOnStartup = todoExplorerVisibleOnStartup;
30+
}
31+
32+
public bool CodeExplorerVisibleOnStartup { get; set; }
33+
public bool CodeInspectionsVisibleOnStartup { get; set; }
34+
public bool SourceControlVisibleOnStartup { get; set; }
35+
public bool TestExplorerVisibleOnStartup { get; set; }
36+
public bool TodoExplorerVisibleOnStartup { get; set; }
37+
}
38+
}

RetailCoder.VBE/UI/RubberduckUI.Designer.cs

Lines changed: 45 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

RetailCoder.VBE/UI/RubberduckUI.resx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,6 +1084,9 @@ Are you sure you want to proceed with this rename?</value>
10841084
<data name="SettingsCaption_UnitTestSettings" xml:space="preserve">
10851085
<value>Unit Test Settings</value>
10861086
</data>
1087+
<data name="SettingsCaption_WindowSettings" xml:space="preserve">
1088+
<value>Window Settings</value>
1089+
</data>
10871090
<data name="SeverityLabelText" xml:space="preserve">
10881091
<value>Severity:</value>
10891092
</data>
@@ -1096,6 +1099,9 @@ Are you sure you want to proceed with this rename?</value>
10961099
<data name="SettingsInstructions_UnitTestSettings" xml:space="preserve">
10971100
<value>Configure the settings for new unit test modules and methods.</value>
10981101
</data>
1102+
<data name="SettingsInstructions_WindowSettings" xml:space="preserve">
1103+
<value>Configure the settings for window visibility.</value>
1104+
</data>
10991105
<data name="UnitTestSettings_AssertMode" xml:space="preserve">
11001106
<value>Type safety:</value>
11011107
</data>
@@ -1126,6 +1132,9 @@ Are you sure you want to proceed with this rename?</value>
11261132
<data name="UnitTestSettings_TestModuleTemplateHeader" xml:space="preserve">
11271133
<value>Test Module Template</value>
11281134
</data>
1135+
<data name="WindowSettings_StartupVisibilityHeader" xml:space="preserve">
1136+
<value>Window visibility at startup</value>
1137+
</data>
11291138
<data name="TestOutcome_Failed" xml:space="preserve">
11301139
<value>Failed</value>
11311140
</data>
@@ -1867,6 +1876,9 @@ End Sub</value>
18671876
<data name="DialogCaption_LoadUnitTestSettings" xml:space="preserve">
18681877
<value>Load Unit Test Settings</value>
18691878
</data>
1879+
<data name="DialogCaption_LoadWindowSettings" xml:space="preserve">
1880+
<value>Load Window Settings</value>
1881+
</data>
18701882
<data name="DialogCaption_SaveGeneralSettings" xml:space="preserve">
18711883
<value>Save General Settings</value>
18721884
</data>
@@ -1879,6 +1891,9 @@ End Sub</value>
18791891
<data name="DialogCaption_SaveUnitTestSettings" xml:space="preserve">
18801892
<value>Save Unit Test Settings</value>
18811893
</data>
1894+
<data name="DialogCaption_SaveWindowSettings" xml:space="preserve">
1895+
<value>Save Window Settings</value>
1896+
</data>
18821897
<data name="ContextReferences" xml:space="preserve">
18831898
<value>references</value>
18841899
<comment>Used to display number of references in commandbar's context selection</comment>

RetailCoder.VBE/UI/Settings/SettingsControlViewModel.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,15 @@ public SettingsControlViewModel(IGeneralConfigService configService,
1919
SettingsView inspectionSettings,
2020
SettingsView unitTestSettings,
2121
SettingsView indenterSettings,
22+
SettingsView windowSettings,
2223
SettingsViews activeView = UI.Settings.SettingsViews.GeneralSettings)
2324
{
2425
_configService = configService;
2526
_config = config;
2627

2728
SettingsViews = new ObservableCollection<SettingsView>
2829
{
29-
generalSettings, todoSettings, inspectionSettings, unitTestSettings, indenterSettings
30+
generalSettings, todoSettings, inspectionSettings, unitTestSettings, indenterSettings, windowSettings
3031
};
3132

3233
SelectedSettingsView = SettingsViews.First(v => v.View == activeView);

RetailCoder.VBE/UI/Settings/SettingsForm.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ public SettingsForm(IGeneralConfigService configService, IOperatingSystem operat
4242
Control = new IndenterSettings(new IndenterSettingsViewModel(config)),
4343
View = SettingsViews.IndenterSettings
4444
},
45+
new SettingsView
46+
{
47+
Control = new WindowSettings(new WindowSettingsViewModel(config)),
48+
View = SettingsViews.WindowSettings
49+
},
4550
activeView);
4651

4752
ViewModel.OnWindowClosed += ViewModel_OnWindowClosed;

RetailCoder.VBE/UI/Settings/SettingsViews.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ public enum SettingsViews
66
TodoSettings,
77
InspectionSettings,
88
UnitTestSettings,
9-
IndenterSettings
9+
IndenterSettings,
10+
WindowSettings
1011
}
1112
}

0 commit comments

Comments
 (0)