Skip to content

Commit

Permalink
Merge pull request #12 from galadril/feature/preferences
Browse files Browse the repository at this point in the history
Added resolution preferences option
  • Loading branch information
galadril authored Apr 17, 2024
2 parents 8fa439b + c18d488 commit 90b5b35
Show file tree
Hide file tree
Showing 12 changed files with 456 additions and 6 deletions.
15 changes: 15 additions & 0 deletions Windows/CaptureWolf.Form/App.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="CaptureWolf.UI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<CaptureWolf.UI.Properties.Settings>
<setting name="Resolution" serializeAs="String">
<value />
</setting>
</CaptureWolf.UI.Properties.Settings>
</userSettings>
</configuration>
12 changes: 12 additions & 0 deletions Windows/CaptureWolf.Form/CaptureWolf.UI.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Update="Properties\Settings.Designer.cs">
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
</Compile>
</ItemGroup>

<ItemGroup>
Expand All @@ -52,4 +57,11 @@
</EmbeddedResource>
</ItemGroup>

<ItemGroup>
<None Update="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
</ItemGroup>

</Project>
38 changes: 38 additions & 0 deletions Windows/CaptureWolf.Form/Properties/Settings.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions Windows/CaptureWolf.Form/Properties/Settings.settings
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="CaptureWolf.UI.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="Resolution" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>
19 changes: 18 additions & 1 deletion Windows/CaptureWolf.Form/frmCaptureWolf.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 22 additions & 1 deletion Windows/CaptureWolf.Form/frmCaptureWolf.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ public frmCaptureWolf()

private void startButton_Click(object sender, EventArgs e)
{
LoadPreferences();

Handler.PreventScreenSaver(true);
Handler.MinimizeAll();

Expand All @@ -31,6 +33,19 @@ private void WhenCompleted(object sender, RunWorkerCompletedEventArgs e)
: $"Image saved successfully!";
}

private void LoadPreferences()
{
string resolution = Properties.Settings.Default.Resolution;
if (!string.IsNullOrEmpty(resolution))
{
var parts = resolution.Split('x');
var width = int.Parse(parts[0].Trim());
var height = int.Parse(parts[1].Trim());
var frameSize = new Size(width, height);
Handler.FrameSize = frameSize;
}
}

private bool OnCapture(Image image)
{
pictureBox.Image = image;
Expand All @@ -43,7 +58,7 @@ private bool OnCapture(Image image)
WindowState = FormWindowState.Normal;
Activate();
});

SetupTooltip();
return true;
}
Expand Down Expand Up @@ -80,4 +95,10 @@ private void SetupTooltip()
toolTip.ForeColor = Color.White;
toolTip.SetToolTip(this.pictureBox, "Click the image to save it.");
}

private void btnConfig_Click(object sender, EventArgs e)
{
var settingsForm = new frmSettings();
settingsForm.ShowDialog();
}
}
155 changes: 155 additions & 0 deletions Windows/CaptureWolf.Form/frmSettings.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

50 changes: 50 additions & 0 deletions Windows/CaptureWolf.Form/frmSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
using System;
namespace CaptureWolf.UI
{
public partial class frmSettings : Form
{
public event Action SettingsChanged;

public frmSettings()
{
InitializeComponent();
}

private void btnClose_Click(object sender, EventArgs e)
{
if (SettingsChanged != null)
{
SettingsChanged();
}

Close();
}

private void frmSettings_Load(object sender, EventArgs e)
{
var webcam = new WebCam(1); // Initialize with your desired frame rate
webcam.Start(); // Start the webcam
var resolutions = webcam.GetAvailableResolutions();

foreach (Size resolution in resolutions)
{
comboBox.Items.Add($"{resolution.Width} x {resolution.Height}");
}

string selectedResolution = Properties.Settings.Default.Resolution;
if (!string.IsNullOrEmpty(selectedResolution))
{
comboBox.SelectedItem = selectedResolution;
}

webcam.Stop(); // Stop the webcam
}

private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
// Store the selected resolution in the settings
Properties.Settings.Default.Resolution = comboBox.SelectedItem.ToString();
Properties.Settings.Default.Save();
}
}
}
Loading

0 comments on commit 90b5b35

Please sign in to comment.