Skip to content

Commit 493ed59

Browse files
updates (#35)
* updates * installer and readme update
1 parent 2be72f0 commit 493ed59

File tree

8 files changed

+129
-81
lines changed

8 files changed

+129
-81
lines changed

FlexASIOGUI.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
</PropertyGroup>
1010

1111
<ItemGroup>
12+
<PackageReference Include="Microsoft.Win32.Registry" Version="5.0.0" />
1213
<PackageReference Include="Nett" Version="0.15.0" />
13-
<PackageReference Include="System.Text.Encoding.CodePages" Version="5.0.0" />
14+
<PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" />
1415
</ItemGroup>
1516

1617
<ItemGroup>

Form1.Designer.cs

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

Form1.cs

Lines changed: 74 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
using System;
22
using System.Collections.Generic;
3-
using System.ComponentModel;
43
using System.Data;
5-
using System.Drawing;
64
using System.Linq;
75
using System.Text;
8-
using System.Threading.Tasks;
96
using System.Windows.Forms;
107
using Commons.Media.PortAudio;
118
using System.Diagnostics;
@@ -23,8 +20,8 @@ public partial class Form1 : Form
2320
private string TOMLPath;
2421
private FlexGUIConfig flexGUIConfig;
2522
private Encoding legacyEncoding;
26-
private string flexasioGuiVersion = "0.33";
27-
private string flexasioVersion = "1.8";
23+
private string flexasioGuiVersion = "0.34";
24+
private string flexasioVersion = "1.9";
2825
private string tomlName = "FlexASIO.toml";
2926
private string docUrl = "https://github.com/dechamps/FlexASIO/blob/master/CONFIGURATION.md";
3027

@@ -52,11 +49,20 @@ public Form1()
5249
CultureInfo.DefaultThreadCurrentUICulture = customCulture;
5350

5451
TOMLPath = $"{Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)}\\{tomlName}";
52+
53+
this.LoadFlexASIOConfig(TOMLPath);
5554

55+
InitDone = true;
56+
SetStatusMessage($"FlexASIO GUI for FlexASIO {flexasioVersion} started ({Configuration.VersionString})");
57+
GenerateOutput();
58+
}
59+
60+
private FlexGUIConfig LoadFlexASIOConfig(string tomlPath)
61+
{
5662
flexGUIConfig = new FlexGUIConfig();
57-
if (File.Exists(TOMLPath))
63+
if (File.Exists(tomlPath))
5864
{
59-
flexGUIConfig = Toml.ReadFile<FlexGUIConfig>(TOMLPath);
65+
flexGUIConfig = Toml.ReadFile<FlexGUIConfig>(tomlPath);
6066
}
6167

6268
numericBufferSize.Maximum = 8192;
@@ -65,7 +71,7 @@ public Form1()
6571
numericLatencyInput.Increment = 0.1m;
6672
numericLatencyOutput.Increment = 0.1m;
6773

68-
for (var i=0; i<Configuration.HostApiCount; i++)
74+
for (var i = 0; i < Configuration.HostApiCount; i++)
6975
{
7076
comboBackend.Items.Add(Configuration.GetHostApiInfo(i).name);
7177
}
@@ -82,7 +88,7 @@ public Form1()
8288
if (flexGUIConfig.bufferSizeSamples != null)
8389
numericBufferSize.Value = (Int64)flexGUIConfig.bufferSizeSamples;
8490
checkBoxSetBufferSize.Checked = numericBufferSize.Enabled = flexGUIConfig.bufferSizeSamples != null;
85-
91+
8692
treeDevicesInput.SelectedNode = treeDevicesInput.Nodes.Cast<TreeNode>().FirstOrDefault(x => x.Text == (flexGUIConfig.input.device == "" ? "(None)" : flexGUIConfig.input.device));
8793
treeDevicesOutput.SelectedNode = treeDevicesOutput.Nodes.Cast<TreeNode>().FirstOrDefault(x => x.Text == (flexGUIConfig.output.device == "" ? "(None)" : flexGUIConfig.output.device));
8894

@@ -109,10 +115,7 @@ public Form1()
109115
wasapiAutoConvertInput.Checked = flexGUIConfig.input.wasapiAutoConvert ?? false;
110116
wasapiAutoConvertOutput.Enabled = flexGUIConfig.output.wasapiAutoConvert != null;
111117
wasapiAutoConvertOutput.Checked = flexGUIConfig.output.wasapiAutoConvert ?? false;
112-
113-
InitDone = true;
114-
SetStatusMessage($"FlexASIO GUI for FlexASIO {flexasioVersion} started ({Configuration.VersionString})");
115-
GenerateOutput();
118+
return flexGUIConfig;
116119
}
117120

118121
private string DescrambleUTF8(string s)
@@ -256,65 +259,68 @@ private void btSaveAs_Click(object sender, EventArgs e)
256259
SetStatusMessage($"Configuration written to {saveFileDialog.FileName}");
257260
}
258261

259-
private void treeDevicesInput_BeforeSelect(object sender, TreeViewCancelEventArgs e)
262+
private void treeDevicesInput_AfterSelect(object sender, TreeViewEventArgs e)
260263
{
261-
var o = sender as TreeView;
262-
if (o.SelectedNode != null)
264+
if (sender == null) return;
265+
else
263266
{
264-
o.SelectedNode.Checked = false;
267+
e.Node.Checked = true;
268+
this.onTreeViewSelected(eventArgs: e, forInput: true);
265269
}
266270
}
267271

268-
private void treeDevicesOutput_BeforeSelect(object sender, TreeViewCancelEventArgs e)
272+
private void treeDevicesOutput_AfterSelect(object sender, TreeViewEventArgs e)
269273
{
270-
var o = sender as TreeView;
271-
if (o.SelectedNode != null)
274+
if (sender == null) return;
275+
else
272276
{
273-
o.SelectedNode.Checked = false;
277+
e.Node.Checked = true;
278+
this.onTreeViewSelected(eventArgs: e, forInput: false);
274279
}
275280
}
276281

277-
private void treeDevicesInput_BeforeCheck(object sender, TreeViewCancelEventArgs e)
282+
private void treeDevicesOutput_AfterCheck(object sender, TreeViewEventArgs e)
278283
{
279-
if (e.Node.IsSelected == false)
284+
if (sender == null) return;
285+
else
280286
{
281-
e.Cancel = true;
287+
this.onTreeViewSelected(eventArgs: e, forInput: false);
282288
}
283289
}
284290

285-
private void treeDevicesOutput_BeforeCheck(object sender, TreeViewCancelEventArgs e)
291+
private void treeDevicesInput_AfterCheck(object sender, TreeViewEventArgs e)
286292
{
287-
if (e.Node.IsSelected == false)
293+
if (sender == null) return;
294+
else
288295
{
289-
e.Cancel = true;
296+
this.onTreeViewSelected(eventArgs: e, forInput: true);
290297
}
291298
}
292299

293-
private void treeDevicesInput_AfterSelect(object sender, TreeViewEventArgs e)
300+
private void unCheckAllOthers(TreeNode treeNode)
294301
{
295-
var o = sender as TreeView;
296-
if (o == null) return;
297-
if (o.SelectedNode != null)
302+
foreach (TreeNode node in treeNode.TreeView.Nodes)
298303
{
299-
o.SelectedNode.Checked = true;
300-
flexGUIConfig.input.device = o.SelectedNode.Text == "(None)" ? "" : o.SelectedNode.Text;
301-
GenerateOutput();
304+
if (node != treeNode)
305+
{
306+
node.Checked = false;
307+
}
302308
}
303309
}
304310

305-
private void treeDevicesOutput_AfterSelect(object sender, TreeViewEventArgs e)
311+
private void onTreeViewSelected(TreeViewEventArgs eventArgs, bool forInput)
306312
{
307-
var o = sender as TreeView;
308-
if (o == null) return;
309-
if (o.SelectedNode != null)
313+
if (eventArgs.Node.Checked == true)
310314
{
311-
o.SelectedNode.Checked = true;
312-
flexGUIConfig.output.device = o.SelectedNode.Text == "(None)" ? "" : o.SelectedNode.Text;
315+
if (forInput == true)
316+
flexGUIConfig.input.device = eventArgs.Node.Text == "(None)" ? "" : eventArgs.Node.Text;
317+
else
318+
flexGUIConfig.output.device = eventArgs.Node.Text == "(None)" ? "" : eventArgs.Node.Text;
319+
this.unCheckAllOthers(eventArgs.Node);
313320
GenerateOutput();
314321
}
315322
}
316323

317-
318324
private void numericChannelsOutput_ValueChanged(object sender, EventArgs e)
319325
{
320326
var o = sender as NumericUpDown;
@@ -393,15 +399,7 @@ private void numericBufferSize_ValueChanged(object sender, EventArgs e)
393399
GenerateOutput();
394400
}
395401

396-
private void treeDevicesOutput_AfterCheck(object sender, TreeViewEventArgs e)
397-
{
398-
}
399-
400-
private void treeDevicesInput_AfterCheck(object sender, TreeViewEventArgs e)
401-
{
402-
403-
}
404-
402+
405403
private void checkBoxSetInputLatency_CheckedChanged(object sender, EventArgs e)
406404
{
407405
var o = sender as CheckBox;
@@ -499,5 +497,31 @@ private void linkLabelDocs_LinkClicked(object sender, LinkLabelLinkClickedEventA
499497
{
500498
System.Diagnostics.Process.Start(new ProcessStartInfo(docUrl) { UseShellExecute = true });
501499
}
500+
501+
private void btLoadFrom_Click(object sender, EventArgs e)
502+
{
503+
OpenFileDialog openFileDialog = new OpenFileDialog();
504+
505+
openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
506+
openFileDialog.FileName = tomlName;
507+
openFileDialog.Filter = "FlexASIO Config (*.toml)|*.toml";
508+
openFileDialog.CheckFileExists = true;
509+
var ret = openFileDialog.ShowDialog();
510+
if (ret == DialogResult.OK)
511+
{
512+
try
513+
{
514+
this.LoadFlexASIOConfig(openFileDialog.FileName);
515+
}
516+
catch (Exception)
517+
{
518+
SetStatusMessage($"Error loading from {openFileDialog.FileName}");
519+
this.LoadFlexASIOConfig(TOMLPath);
520+
return;
521+
}
522+
523+
}
524+
SetStatusMessage($"Configuration loaded from {openFileDialog.FileName}");
525+
}
502526
}
503527
}

0 commit comments

Comments
 (0)