Skip to content

Commit 682e627

Browse files
committed
Migrated Settings to a settings.json file.
1 parent f541300 commit 682e627

33 files changed

+974
-785
lines changed

DiskImageTool/App.config

Lines changed: 0 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,10 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<configuration>
33
<configSections>
4-
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
5-
<section name="DiskImageTool.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
6-
</sectionGroup>
74
</configSections>
85
<startup>
96
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
107
</startup>
11-
<userSettings>
12-
<DiskImageTool.My.MySettings>
13-
<setting name="WindowWidth" serializeAs="String">
14-
<value>0</value>
15-
</setting>
16-
<setting name="WindowHeight" serializeAs="String">
17-
<value>0</value>
18-
</setting>
19-
<setting name="CreateBackups" serializeAs="String">
20-
<value>True</value>
21-
</setting>
22-
<setting name="Debug" serializeAs="String">
23-
<value>False</value>
24-
</setting>
25-
<setting name="DragAndDrop" serializeAs="String">
26-
<value>True</value>
27-
</setting>
28-
<setting name="ChangeLogETag" serializeAs="String">
29-
<value />
30-
</setting>
31-
<setting name="AppUpdateETag" serializeAs="String">
32-
<value />
33-
</setting>
34-
<setting name="CheckUpdateOnStartup" serializeAs="String">
35-
<value>True</value>
36-
</setting>
37-
<setting name="DisplayTitles" serializeAs="String">
38-
<value>True</value>
39-
</setting>
40-
<setting name="Language" serializeAs="String">
41-
<value />
42-
</setting>
43-
<setting name="GW_Path" serializeAs="String">
44-
<value />
45-
</setting>
46-
<setting name="GW_Interface" serializeAs="String">
47-
<value />
48-
</setting>
49-
<setting name="GW_DriveType0" serializeAs="String">
50-
<value />
51-
</setting>
52-
<setting name="GW_DriveType1" serializeAs="String">
53-
<value />
54-
</setting>
55-
<setting name="GW_DriveType2" serializeAs="String">
56-
<value />
57-
</setting>
58-
<setting name="GW_Tracks0" serializeAs="String">
59-
<value>0</value>
60-
</setting>
61-
<setting name="GW_Tracks1" serializeAs="String">
62-
<value>0</value>
63-
</setting>
64-
<setting name="GW_Tracks2" serializeAs="String">
65-
<value>0</value>
66-
</setting>
67-
<setting name="GW_COMPort" serializeAs="String">
68-
<value />
69-
</setting>
70-
<setting name="GW_DefaultRevs" serializeAs="String">
71-
<value>3</value>
72-
</setting>
73-
<setting name="GW_LogFileName" serializeAs="String">
74-
<value>log.txt</value>
75-
</setting>
76-
<setting name="DTC_Path" serializeAs="String">
77-
<value />
78-
</setting>
79-
<setting name="DTC_LogFileName" serializeAs="String">
80-
<value>log.txt</value>
81-
</setting>
82-
</DiskImageTool.My.MySettings>
83-
</userSettings>
848
<runtime>
859
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
8610
<dependentAssembly>

DiskImageTool/ApplicationEvents.vb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Imports System.Threading
55
Namespace My
66
Partial Friend Class MyApplication
77
Private Sub MyApplication_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup
8-
If My.Settings.Language <> "" Then
8+
If App.Globals.AppSettings.Language <> "" Then
99
' Set desired culture here
10-
Thread.CurrentThread.CurrentUICulture = New CultureInfo(My.Settings.Language)
11-
Thread.CurrentThread.CurrentCulture = New CultureInfo(My.Settings.Language)
10+
Thread.CurrentThread.CurrentUICulture = New CultureInfo(App.Globals.AppSettings.Language)
11+
Thread.CurrentThread.CurrentCulture = New CultureInfo(App.Globals.AppSettings.Language)
1212
End If
1313
End Sub
1414

DiskImageTool/DiskImageLib.vb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ Module DiskImageLib
245245
NewFilePath = Image.ImageData.GetSaveFile
246246
End If
247247

248-
Dim SaveImageResponse = SaveDiskImageToFile(Image.Disk, NewFilePath, My.Settings.CreateBackups)
248+
Dim SaveImageResponse = SaveDiskImageToFile(Image.Disk, NewFilePath, App.Globals.AppSettings.CreateBackups)
249249
Result = (SaveImageResponse = SaveImageResponse.Success)
250250

251251
If SaveImageResponse = SaveImageResponse.Unsupported Then
@@ -681,7 +681,7 @@ Module DiskImageLib
681681
Private Function ImageImport(ParentDirectory As IDirectory, Multiselect As Boolean, Optional Index As Integer = -1) As Boolean
682682
Dim FileNames() As String = New String(-1) {}
683683

684-
If My.Settings.DragAndDrop Then
684+
If App.Globals.AppSettings.DragAndDrop Then
685685
Dim frmFileDrop As New FileDropForm()
686686

687687
If frmFileDrop.ShowDialog() <> DialogResult.OK Then

DiskImageTool/DiskImageTool.vbproj

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,14 +213,13 @@
213213
<Compile Include="Flux\Greaseweazle\Forms\ReadDiskForm.vb">
214214
<SubType>Form</SubType>
215215
</Compile>
216-
<Compile Include="Flux\Greaseweazle\Settings.vb" />
217216
<Compile Include="Flux\Greaseweazle\Forms\ImageImportForm.vb">
218217
<SubType>Form</SubType>
219218
</Compile>
220219
<Compile Include="Flux\Greaseweazle\Forms\WriteDiskForm.vb">
221220
<SubType>Form</SubType>
222221
</Compile>
223-
<Compile Include="Flux\Kryoflux\Settings.vb" />
222+
<Compile Include="Flux\Kryoflux\KryofluxSettings.vb" />
224223
<Compile Include="Lib\ConsoleProcessRunner.vb" />
225224
<Compile Include="MenuHelp.vb" />
226225
<Compile Include="MenuTools.vb" />
@@ -370,6 +369,12 @@
370369
<Compile Include="Modules\LoadedImageList.vb" />
371370
<Compile Include="Modules\Reports.vb" />
372371
<Compile Include="Modules\SummaryPanel.vb" />
372+
<Compile Include="Settings\AppSettings.vb" />
373+
<Compile Include="Flux\Greaseweazle\DriveSettings.vb" />
374+
<Compile Include="Settings\ETagSettings.vb" />
375+
<Compile Include="Flux\Greaseweazle\GreaseweazleSettings.vb" />
376+
<Compile Include="Settings\ISettingsGroup.vb" />
377+
<Compile Include="Settings\Shared.vb" />
373378
<Compile Include="Testing\DebugScript.vb" />
374379
<Compile Include="DiskImage\SectorData.vb" />
375380
<Compile Include="DiskImage\BasicSectorImage.vb" />

DiskImageTool/Filters/ImageFilters.vb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ Namespace Filters
214214
Else
215215
Image_Unverified = True
216216
End If
217-
If My.Settings.Debug Then
217+
If App.Globals.AppSettings.Debug Then
218218
FileData = New FloppyDB.FileNameData(ImageData.FileName)
219219
If TitleFindResult.TitleData.GetStatus <> FileData.Status Then
220220
Database_MismatchedStatus = True
@@ -251,7 +251,7 @@ Namespace Filters
251251
FilterUpdate(ImageData, UpdateFilters, Filters.FilterTypes.Disk_HasWriteSplices, Disk_HasWriteSplices)
252252
End If
253253

254-
If My.Settings.Debug And Disk IsNot Nothing Then
254+
If App.Globals.AppSettings.Debug And Disk IsNot Nothing Then
255255
FilterUpdate(ImageData, UpdateFilters, Filters.FilterTypes.Database_MismatchedStatus, Database_MismatchedStatus)
256256

257257
If _ExportUnknownImages Then
@@ -306,7 +306,7 @@ Namespace Filters
306306
End If
307307
End If
308308

309-
If My.Settings.Debug Then
309+
If App.Globals.AppSettings.Debug Then
310310
FilterUpdate(ImageData, UpdateFilters, Filters.FilterTypes.Bootstrap_Unknown, Bootstrap_Unknown)
311311
End If
312312
FilterUpdate(ImageData, UpdateFilters, Filters.FilterTypes.OEMName_Windows9x, OEMName_Windows9x)
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
Imports CompactJson
2+
Imports DiskImageTool.DiskImage.FloppyDiskFunctions
3+
4+
Namespace Flux.Greaseweazle
5+
Public Class DriveSettings
6+
Implements DiskImageTool.Settings.ISettingsGroup
7+
8+
Public Const MAX_TRACKS As Byte = 84
9+
Public Const MAX_TRACKS_525DD As Byte = 42
10+
Public Const MIN_TRACKS As Byte = 80
11+
Public Const MIN_TRACKS_525DD As Byte = 40
12+
13+
Private _isDirty As Boolean
14+
Private _tracks As Byte = 0
15+
16+
Private _Type As FloppyMediaType = FloppyMediaType.MediaUnknown
17+
18+
Public Property IsDirty As Boolean Implements DiskImageTool.Settings.ISettingsGroup.IsDirty
19+
Get
20+
Return _isDirty
21+
End Get
22+
Set(value As Boolean)
23+
_isDirty = value
24+
End Set
25+
End Property
26+
27+
Public ReadOnly Property Tracks As Byte
28+
Get
29+
Return _tracks
30+
End Get
31+
End Property
32+
33+
Public ReadOnly Property Type As FloppyMediaType
34+
Get
35+
Return _Type
36+
End Get
37+
End Property
38+
39+
Public Shared Function GetMinMax(Type As FloppyMediaType) As (Min As Byte, Max As Byte)
40+
Dim Result As (Min As Byte, Max As Byte)
41+
42+
If Type = FloppyMediaType.MediaUnknown Then
43+
Return (0, 0)
44+
ElseIf Type = FloppyMediaType.Media525DoubleDensity Then
45+
Return (MIN_TRACKS_525DD, MAX_TRACKS_525DD)
46+
Else
47+
Return (MIN_TRACKS, MAX_TRACKS)
48+
End If
49+
50+
Return Result
51+
End Function
52+
53+
Public Sub LoadFromDictionary(dict As Dictionary(Of String, JsonValue))
54+
If dict Is Nothing Then
55+
MarkClean()
56+
Return
57+
End If
58+
59+
_Type = GetFloppyTypeFromName(ReadValue(dict, "typeName", GetFloppyTypeName(_Type)))
60+
Dim Tracks As Integer = ReadValue(dict, "tracks", _tracks)
61+
_tracks = AdjustedTrackCount(Tracks, _Type)
62+
63+
MarkClean()
64+
End Sub
65+
66+
Public Sub MarkClean() Implements DiskImageTool.Settings.ISettingsGroup.MarkClean
67+
_isDirty = False
68+
End Sub
69+
70+
Public Sub SetDrive(Type As FloppyMediaType, Optional TrackCount As Byte = 0)
71+
Dim Tracks = AdjustedTrackCount(TrackCount, Type)
72+
73+
If _Type <> Type Then
74+
_Type = Type
75+
_isDirty = True
76+
End If
77+
78+
If _tracks <> Tracks Then
79+
_tracks = Tracks
80+
_isDirty = True
81+
End If
82+
End Sub
83+
84+
Public Function ToJsonObject() As Dictionary(Of String, Object)
85+
Return New Dictionary(Of String, Object) From {
86+
{"typeName", GetFloppyTypeName(_Type)},
87+
{"tracks", CInt(_tracks)}
88+
}
89+
End Function
90+
91+
Private Shared Function AdjustedTrackCount(Value As Integer, DriveType As FloppyMediaType) As Byte
92+
Dim MinMax = GetMinMax(DriveType)
93+
94+
If Value = 0 Then
95+
Value = MinMax.Max
96+
ElseIf Value < MinMax.Min Then
97+
Value = MinMax.Min
98+
ElseIf Value > MinMax.Max Then
99+
Value = MinMax.Max
100+
End If
101+
102+
Return Value
103+
End Function
104+
105+
Private Shared Function GetFloppyTypeFromName(Value As String) As FloppyMediaType
106+
Select Case Value
107+
Case "360"
108+
Return FloppyMediaType.Media525DoubleDensity
109+
Case "720"
110+
Return FloppyMediaType.Media35DoubleDensity
111+
Case "1200"
112+
Return FloppyMediaType.Media525HighDensity
113+
Case "1440"
114+
Return FloppyMediaType.Media35HighDensity
115+
Case "2880"
116+
Return FloppyMediaType.Media35ExtraHighDensity
117+
Case Else
118+
Return FloppyMediaType.MediaUnknown
119+
End Select
120+
End Function
121+
122+
Private Shared Function GetFloppyTypeName(Value As FloppyMediaType) As String
123+
Select Case Value
124+
Case FloppyMediaType.Media525DoubleDensity
125+
Return "360"
126+
Case FloppyMediaType.Media35DoubleDensity
127+
Return "720"
128+
Case FloppyMediaType.Media525HighDensity
129+
Return "1200"
130+
Case FloppyMediaType.Media35HighDensity
131+
Return "1440"
132+
Case FloppyMediaType.Media35ExtraHighDensity
133+
Return "2880"
134+
Case Else
135+
Return ""
136+
End Select
137+
End Function
138+
139+
Private Shared Function ReadValue(Of T)(
140+
dict As Dictionary(Of String, JsonValue),
141+
key As String,
142+
defaultValue As T) As T
143+
144+
Dim jv As JsonValue = Nothing
145+
If dict Is Nothing OrElse Not dict.TryGetValue(key, jv) OrElse jv Is Nothing Then
146+
Return defaultValue
147+
End If
148+
149+
Try
150+
Dim raw = jv.ToString()
151+
Return Serializer.Parse(Of T)(raw)
152+
Catch
153+
Return defaultValue
154+
End Try
155+
End Function
156+
End Class
157+
End Namespace

DiskImageTool/Flux/Greaseweazle/Enums.vb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,9 @@ Namespace Flux.Greaseweazle
139139
End Select
140140
End Function
141141

142-
Public Function GreaseweazleInterfaceName(Value As Settings.GreaseweazleInterface) As String
142+
Public Function GreaseweazleInterfaceName(Value As GreaseweazleSettings.GreaseweazleInterface) As String
143143
Select Case Value
144-
Case Settings.GreaseweazleInterface.Shugart
144+
Case GreaseweazleSettings.GreaseweazleInterface.Shugart
145145
Return "Shugart"
146146
Case Else
147147
Return "IBM"

DiskImageTool/Flux/Greaseweazle/Forms/CleanDiskForm.vb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Namespace Flux.Greaseweazle
1313
Private NumericPasses As NumericUpDown
1414

1515
Public Sub New()
16-
MyBase.New(GreaseweazleSettings.LogFileName, False)
16+
MyBase.New(Settings.LogFileName, False)
1717
InitializeControls()
1818

1919
Me.Text = My.Resources.Label_CleanDisk
@@ -40,7 +40,7 @@ Namespace Flux.Greaseweazle
4040
ResetState()
4141

4242
Dim Builder = New CommandLineBuilder(CommandLineBuilder.CommandAction.clean) With {
43-
.Device = GreaseweazleSettings.COMPort,
43+
.Device = Settings.ComPort,
4444
.Drive = Opt.Id,
4545
.Cyls = NumericCyls.Value,
4646
.Linger = NumericLinger.Value,
@@ -50,7 +50,7 @@ Namespace Flux.Greaseweazle
5050
Dim Arguments = Builder.Arguments
5151

5252
ToggleProcessRunning(True)
53-
Process.StartAsyncRaw(GreaseweazleSettings.AppPath, Arguments)
53+
Process.StartAsyncRaw(Settings.AppPath, Arguments)
5454
End Sub
5555

5656
Private Sub InitializeControls()

0 commit comments

Comments
 (0)