diff --git a/.gitignore b/.gitignore
index bb575ffd82..25b19f15e5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,7 +36,8 @@ bin/
obj/
Debug/
Release/
-ipch/
+ipch/
+*.suo
*.opensdf
*.sdf
Final
@@ -53,4 +54,4 @@ packages/
/SoundSwitch160228.vspx
/SoundSwitch.VC.VC.opendb
/SoundSwitch.VC.db
-/SoundSwitch.psess
+/SoundSwitch.psess
diff --git a/README.md b/README.md
index 25ce6f558c..5f8cbf96aa 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,12 @@
# SoundSwitch [![Last Release](https://img.shields.io/github/release/Belphemur/SoundSwitch.svg)](https://github.com/Belphemur/SoundSwitch/releases) [![Downloads for last Release](https://img.shields.io/github/downloads/Belphemur/SoundSwitch/total.svg)](https://www.aaflalo.me/downloads/) [![AppVeyor branch](https://img.shields.io/badge/Donate-paypal%2Fcc-blue.svg)](https://www.aaflalo.me/donate/)
SoundSwitch makes it easier to switch playback devices (sound cards).
-Normally, to switch a Playback device you need to right click the sound icon in the bottom right corner of your screen (system tray), choose “Playback devices” and then change the default playback device. Every time you want to switch.
+Normally, to switch a playback device you need to right click the sound icon in the bottom right corner of your screen (system tray), choose 'Playback Devices' and then change the Default Playback Device. Every time you want to switch.
-With SoundSwitch you just configure once between which Playback devices you want to toggle and then you can press Ctrl+Alt+F11 to toggle automatically!
+With SoundSwitch you just configure once between which playback devices you want to toggle and then you can press Ctrl+Alt+F11 to toggle automatically!
+
+## Preview image
+![preview](img/preview.gif)
## Dependencies
You need .NET 4.6.2 installed to work: [Microsoft .NET Framework 4.6.2 (Web Installer)](https://www.microsoft.com/en-us/download/details.aspx?id=53345)
@@ -14,12 +17,12 @@ You also need [Visual C++ Redistributable for Visual Studio 2015](https://www.mi
If you want to donate for the development don't hesite to do it here: https://www.aaflalo.me/donate/
## Configuration
-Right click the SoundSwitch icon in your system tray and choose Settings. Now select the devices between which you want to toggle. Optionally you can also change the keyboard combination, by default this is {Ctrl + Alt + F11} If you want the application to start automatically when your PC boots up, check the box “Run at startup”.
+Right click the SoundSwitch icon in your system tray and choose Settings. Now select the devices between which you want to toggle. Optionally you can also change the keyboard combination, by default this is {Ctrl + Alt + F11} If you want the application to start automatically when your PC boots up, check the box 'Start automatically with Windows'.
## Usage
Press Ctrl + Alt + F11 to cycle through the playback devices. (Or a different key combination if you changed it)
-For Recording devices the default is: Ctrl + Alt + F7
+For recording devices the default is: Ctrl + Alt + F7
### Double clicks
You can also double click on the systray icon to switch audio devices.
@@ -30,34 +33,42 @@ If you use the left click on the systray icon, you'll see a menu appear where yo
## Features
### Recording Devices
-SoundSwitch can also take care of your recording devices. You can set specifics HotKeys as for the Playback devices.
+SoundSwitch can also take care of your recording devices. You can set specifics HotKeys as for the playback devices.
### Auto-Updater
-This is one of the interesting feature added in Isabelline Gold, the auto-updater. Every 12h SoundSwitch will check the GitHub repository (thanks to the GitHub API) for a new release, if a new one is available, the user will get a notification and the “No Update” in the context menu will change to “Update Available (X.X.X)” where X.X.X represent the new version number. When the user clicks on it, a new Window opens with a progress bar (see screenshots). The new version gets automatically downloaded in the temp folder of the user. When the download is finished, the user can install the Update by just clicking the install button. A changelog is also provided by getting the information set in the release on GitHub.
+This is one of the interesting feature added in Isabelline Gold, the auto-updater. Every 24h SoundSwitch will check the GitHub repository (thanks to the GitHub API) for a new release. If a new one is available the user will get a notification and the 'No update available' in the context menu will change to 'Update Available (X.X.X)' where X.X.X represent the new version number. When the user clicks on it, a new window opens with a progress bar (see screenshots). The new version gets automatically downloaded in the temp folder of the user. When the download is finished, the user can install the Update by just clicking the install button. A changelog is also provided by getting the information set in the release on GitHub.
-#### Stealth Update
-If you don't want to install manually the update, you can activate this feature to let SoundSwitch update itself when the AutoUpdater find a new suitable version (Enabled by default).
+#### Update Modes
+There are three different options available: Silent, means the program updates itself in the background without any prompts. Notify, you will be notified when there's an update available. Never, well this is self-explained.
### Communications
-SoundSwitch can also change the communications devices when asked in the Settings. Windows make a differentiation between Multimedia and Communication; it means if an application asks to have access to Communications Audio Device, it will receive the default Communications device. By default SoundSwitch only change the Multimedia device and not the communications. Now if the checkbox is checked in the settings, it will also change the Communications device.
+SoundSwitch can also change the 'Default Communication Device' when asked in the Settings. Windows makes a differentiation between Multimedia and Communication; it means if an application asks to have access to communications audio device, it will receive the Default Communication Device. By default SoundSwitch only changes the multimedia device and not the communication. Now if the checkbox is checked in the settings, it will also change the Communication Device.
### Notifications
-SoundSwitch provides three types of notification.
+SoundSwitch provides four types of notification.
#### Windows Notification
This is the default notification; it uses the balloon tip of Windows. In the case of Windows 7, it's the little balloon that opens next to the systray icon. For Windows 10, it's the notification system that slides from the right corner of the screen.
#### Sound Notification
-This notification is a sound played on the switched device. This way when you are switching device, the new device will "chime" to tell you it's selected.
+This notification is a sound played on the switched device. This way when you are switching devices, the new device will 'chime' to tell you it's selected.
+
+### Customized Sound Notification
+The same as a Sound Notification but you can specify the sound which is played.
-#### Toast Notification (>=Win 8)
-If you are on Windows 8 or more, you can use this type of Toast notification. More personalization is possible, by default the notification is silent, but you can set a custom sound for it (mp3 or wav for now).
+#### Toast Notification (≥Win 8)
+If you are on Windows 8 or later, you can use this type of Toast Notification. More personalization is possible, by default the notification is silent, but you can set a custom sound for it (mp3 or wav for now).
If you want to return to a silent Toast notification, open the file selector, and just do Cancel. Doing that will remove the set sound.
#### No Notification
In case you're not interested in getting any notification.
+### Multi-Language Support
+There are three languages available: English, French and German.
+
+Would you like to help us with the localization? Great! See [Add or modify another language](../../wiki/Add-or-modify-another-language) for further informations.
+
## Awards
### Giga 5 Stars
diff --git a/SoundSwitch.sln.DotSettings b/SoundSwitch.sln.DotSettings
new file mode 100644
index 0000000000..993cd6d0cc
--- /dev/null
+++ b/SoundSwitch.sln.DotSettings
@@ -0,0 +1,2 @@
+
+ <Policy Inspect="True" Prefix="_" Suffix="" Style="aaBb" />
\ No newline at end of file
diff --git a/SoundSwitch/CleanTranslationProjectFile.bat b/SoundSwitch/CleanTranslationProjectFile.bat
new file mode 100644
index 0000000000..4a65b9a0b6
--- /dev/null
+++ b/SoundSwitch/CleanTranslationProjectFile.bat
@@ -0,0 +1,37 @@
+@echo off
+REM *
+REM * Removes various informations (like absolute file paths) from the Zeta Resource Editor project file.
+REM * Run this script if you opened the *.zreproj project file at least once.
+REM *
+set filename="SoundSwitch.zreproj"
+
+setlocal
+setlocal enableDelayedExpansion
+if not exist %filename% call :error "file"
+findstr /v "" %filename% >%filename%.nouserdata || call :error %errorlevel%, "user"
+type "%filename%.nouserdata"|repl "absoluteFilePath=\q.*\q (/>)" "$1" x >%filename%.clean
+if not %errorlevel%==0 call :error %errorlevel%, "abspath"
+move /y %filename%.clean %filename% || call :error
+del %filename%.nouserdata || call :error
+
+echo %filename% successfully cleaned.
+goto :end
+
+:error
+if "%~1"=="file" (
+ echo %filename% doesn't exist.
+) else if "%~1"=="1" (
+ if "%~2"=="user" (
+ echo userSettings not found, skipped.
+ ) else if "%~2"=="abspath" (
+ echo absoluteFilePath attribute not found, skipped.
+ )
+) else (
+ echo Unknown error occured.
+ goto :end
+)
+exit /b 0
+
+:end
+pause
+exit
\ No newline at end of file
diff --git a/SoundSwitch/Framework/AppLogger.cs b/SoundSwitch/Framework/AppLogger.cs
index 4440c99170..fab0612a1b 100644
--- a/SoundSwitch/Framework/AppLogger.cs
+++ b/SoundSwitch/Framework/AppLogger.cs
@@ -1,12 +1,12 @@
/********************************************************************
* Copyright (C) 2015 Jeroen Pelgrims
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
diff --git a/SoundSwitch/Framework/ApplicationPath.cs b/SoundSwitch/Framework/ApplicationPath.cs
index 4c3db290ca..0a08a3d9b1 100644
--- a/SoundSwitch/Framework/ApplicationPath.cs
+++ b/SoundSwitch/Framework/ApplicationPath.cs
@@ -1,11 +1,11 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
diff --git a/SoundSwitch/Framework/Audio/CachedSound.cs b/SoundSwitch/Framework/Audio/CachedSound.cs
index 50b625b411..3c0147bcd9 100644
--- a/SoundSwitch/Framework/Audio/CachedSound.cs
+++ b/SoundSwitch/Framework/Audio/CachedSound.cs
@@ -1,3 +1,17 @@
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
using System;
using System.Collections.Generic;
using System.IO;
diff --git a/SoundSwitch/Framework/Audio/CachedSoundFileNotExistsException.cs b/SoundSwitch/Framework/Audio/CachedSoundFileNotExistsException.cs
index 0248ed0891..811db9baeb 100644
--- a/SoundSwitch/Framework/Audio/CachedSoundFileNotExistsException.cs
+++ b/SoundSwitch/Framework/Audio/CachedSoundFileNotExistsException.cs
@@ -1,3 +1,17 @@
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
using System;
using System.Runtime.Serialization;
diff --git a/SoundSwitch/Framework/Audio/CachedSoundWaveStream.cs b/SoundSwitch/Framework/Audio/CachedSoundWaveStream.cs
index 34710174b1..0fe63962b1 100644
--- a/SoundSwitch/Framework/Audio/CachedSoundWaveStream.cs
+++ b/SoundSwitch/Framework/Audio/CachedSoundWaveStream.cs
@@ -1,3 +1,17 @@
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
using System;
using NAudio.Wave;
diff --git a/SoundSwitch/Framework/AutoStart.cs b/SoundSwitch/Framework/AutoStart.cs
index 0a5f1f4bbe..833f4ad023 100644
--- a/SoundSwitch/Framework/AutoStart.cs
+++ b/SoundSwitch/Framework/AutoStart.cs
@@ -1,11 +1,11 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
diff --git a/SoundSwitch/Framework/Configuration/AppConfigs.cs b/SoundSwitch/Framework/Configuration/AppConfigs.cs
index 7c39825079..f57e4e271a 100644
--- a/SoundSwitch/Framework/Configuration/AppConfigs.cs
+++ b/SoundSwitch/Framework/Configuration/AppConfigs.cs
@@ -1,11 +1,11 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
@@ -16,9 +16,7 @@ namespace SoundSwitch.Framework.Configuration
{
public static class AppConfigs
{
- public static ISoundSwitchConfiguration Configuration { get; private set; } =
- ConfigurationManager.LoadConfiguration();
- public static IIPCConfiguration IPCConfiguration { get; private set; } =
- ConfigurationManager.LoadConfiguration();
+ public static ISoundSwitchConfiguration Configuration { get; private set; } = ConfigurationManager.LoadConfiguration();
+ public static IIPCConfiguration IPCConfiguration { get; private set; } = ConfigurationManager.LoadConfiguration();
}
}
\ No newline at end of file
diff --git a/SoundSwitch/Framework/Configuration/ConfigurationManager.cs b/SoundSwitch/Framework/Configuration/ConfigurationManager.cs
index b81ad86b49..39b3b38c2e 100644
--- a/SoundSwitch/Framework/Configuration/ConfigurationManager.cs
+++ b/SoundSwitch/Framework/Configuration/ConfigurationManager.cs
@@ -1,21 +1,19 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
********************************************************************/
-using System;
using System.Diagnostics;
using System.IO;
-using System.Windows.Forms;
using Newtonsoft.Json;
namespace SoundSwitch.Framework.Configuration
@@ -23,8 +21,8 @@ namespace SoundSwitch.Framework.Configuration
public interface IConfiguration
{
///
- /// Where is the configuration saved
- /// Any change to this will be discarded at the next loading of the configuration
+ /// Where is the configuration saved
+ /// Any change to this will be discarded at the next loading of the configuration
///
string FileLocation { get; set; }
@@ -44,7 +42,7 @@ static ConfigurationManager()
}
///
- /// Load a ConfigurationManager from its file
+ /// Load a ConfigurationManager from its file
///
/// The loaded configuration if the file exists, else a new instance of the configuration
public static T LoadConfiguration() where T : IConfiguration, new()
@@ -61,7 +59,7 @@ static ConfigurationManager()
obj = JsonConvert.DeserializeObject(contents);
if (obj == null)
{
- Trace.WriteLine("Problem with Deserializer");
+ Trace.WriteLine("Problem with deserialization");
Trace.WriteLine("Contents: " + contents);
obj = new T();
}
@@ -77,7 +75,7 @@ static ConfigurationManager()
}
///
- /// Save the configuration in a json file.
+ /// Save the configuration in a json file.
///
/// configuration object to save
public static void SaveConfiguration(T configuration) where T : IConfiguration, new()
diff --git a/SoundSwitch/Framework/Configuration/IIPCConfiguration.cs b/SoundSwitch/Framework/Configuration/IIPCConfiguration.cs
index 75e39a4300..37e2439c2e 100644
--- a/SoundSwitch/Framework/Configuration/IIPCConfiguration.cs
+++ b/SoundSwitch/Framework/Configuration/IIPCConfiguration.cs
@@ -1,4 +1,18 @@
-namespace SoundSwitch.Framework.Configuration
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+namespace SoundSwitch.Framework.Configuration
{
public interface IIPCConfiguration : IConfiguration
{
diff --git a/SoundSwitch/Framework/Configuration/IPCConfiguration.cs b/SoundSwitch/Framework/Configuration/IPCConfiguration.cs
index d8adea0e2e..ad25488dde 100644
--- a/SoundSwitch/Framework/Configuration/IPCConfiguration.cs
+++ b/SoundSwitch/Framework/Configuration/IPCConfiguration.cs
@@ -1,6 +1,18 @@
-using System;
-using System.Linq;
-using System.Security.Cryptography;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System;
namespace SoundSwitch.Framework.Configuration
{
@@ -39,6 +51,6 @@ public void Save()
{
ConfigurationManager.SaveConfiguration(this);
}
-
+
}
}
\ No newline at end of file
diff --git a/SoundSwitch/Framework/Configuration/ISoundSwitchConfiguration.cs b/SoundSwitch/Framework/Configuration/ISoundSwitchConfiguration.cs
index 7267ad87ae..8599b70182 100644
--- a/SoundSwitch/Framework/Configuration/ISoundSwitchConfiguration.cs
+++ b/SoundSwitch/Framework/Configuration/ISoundSwitchConfiguration.cs
@@ -1,5 +1,5 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
+* Copyright (C) 2015-2017 Antoine Aflalo
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -12,12 +12,12 @@
* GNU General Public License for more details.
********************************************************************/
-using System;
using System.Collections.Generic;
using SoundSwitch.Framework.DeviceCyclerManager;
using SoundSwitch.Framework.NotificationManager;
using SoundSwitch.Framework.TooltipInfoManager.TootipInfo;
using SoundSwitch.Framework.Updater;
+using SoundSwitch.Localization;
namespace SoundSwitch.Framework.Configuration
{
@@ -40,6 +40,7 @@ public interface ISoundSwitchConfiguration : IConfiguration
bool IncludeBetaVersions { get; set; }
string CustomNotificationFilePath { get; set; }
UpdateMode UpdateMode { get; set; }
+ Language Language { get; set; }
TooltipInfoTypeEnum TooltipInfo { get; set; }
DeviceCyclerTypeEnum CyclerType { get; set; }
bool KeepSystrayIcon { get; set; }
diff --git a/SoundSwitch/Framework/Configuration/SoundSwitchConfiguration.cs b/SoundSwitch/Framework/Configuration/SoundSwitchConfiguration.cs
index 73e2be84f0..4608dc69bc 100644
--- a/SoundSwitch/Framework/Configuration/SoundSwitchConfiguration.cs
+++ b/SoundSwitch/Framework/Configuration/SoundSwitchConfiguration.cs
@@ -1,5 +1,5 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
+* Copyright (C) 2015-2017 Antoine Aflalo
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -12,14 +12,14 @@
* GNU General Public License for more details.
********************************************************************/
-using System;
using System.Collections.Generic;
-using System.IO;
+using System.Globalization;
using System.Windows.Forms;
using SoundSwitch.Framework.DeviceCyclerManager;
using SoundSwitch.Framework.NotificationManager;
using SoundSwitch.Framework.TooltipInfoManager.TootipInfo;
using SoundSwitch.Framework.Updater;
+using SoundSwitch.Localization;
namespace SoundSwitch.Framework.Configuration
{
@@ -27,23 +27,31 @@ public class SoundSwitchConfiguration : ISoundSwitchConfiguration
{
public SoundSwitchConfiguration()
{
+ // Basic Settings
FirstRun = true;
+ KeepSystrayIcon = false;
+
+ // Audio Settings
ChangeCommunications = false;
+ NotificationSettings = NotificationTypeEnum.DefaultWindowsNotification;
+ TooltipInfo = TooltipInfoTypeEnum.Playback;
+ CyclerType = DeviceCyclerTypeEnum.Available;
+
+ // Update Settings
+ UpdateCheckInterval = 3600 * 24; // 24 hours
+ UpdateMode = UpdateMode.Notify;
+ IncludeBetaVersions = false;
+
+ // Language Settings
+ Language = LanguageParser.ParseLanguage(CultureInfo.InstalledUICulture);
+
+ // Misc
SelectedPlaybackDeviceList = null;
SelectedRecordingDeviceList = null;
- NotificationSettings = NotificationTypeEnum.DefaultWindowsNotification;
SelectedPlaybackDeviceListId = new HashSet();
SelectedRecordingDeviceListId = new HashSet();
PlaybackHotKeys = new HotKeys(Keys.F11, HotKeys.ModifierKeys.Alt | HotKeys.ModifierKeys.Control);
RecordingHotKeys = new HotKeys(Keys.F7, HotKeys.ModifierKeys.Alt | HotKeys.ModifierKeys.Control);
- // 24 hours
- UpdateCheckInterval = 3600 * 24;
- UpdateMode = UpdateMode.Notify;
- IncludeBetaVersions = false;
- TooltipInfo = TooltipInfoTypeEnum.Playback;
- CyclerType = DeviceCyclerTypeEnum.Available;
- KeepSystrayIcon = false;
-
}
/*TODO: Remove in next VERSION (3.6.6)*/
@@ -55,11 +63,10 @@ public SoundSwitchConfiguration()
public UpdateState UpdateState
{
set {
- UpdateMode = (value == UpdateState.Steath ? UpdateMode.Silent : UpdateMode.Notify);
- }
+ UpdateMode = value == UpdateState.Steath ? UpdateMode.Silent : UpdateMode.Notify;
+ }
}
-
public HashSet SelectedPlaybackDeviceListId { get; }
public HashSet SelectedRecordingDeviceListId { get; }
public bool FirstRun { get; set; }
@@ -71,12 +78,13 @@ public UpdateState UpdateState
public TooltipInfoTypeEnum TooltipInfo { get; set; }
public DeviceCyclerTypeEnum CyclerType { get; set; }
public NotificationTypeEnum NotificationSettings { get; set; }
+ public Language Language { get; set; }
public bool IncludeBetaVersions { get; set; }
public string CustomNotificationFilePath { get; set; }
public bool KeepSystrayIcon { get; set; }
- //Needed by Interface
+ // Needed by Interface
public string FileLocation { get; set; }
public void Save()
diff --git a/SoundSwitch/Framework/DeviceCyclerManager/DeviceCycler/ADeviceCycler.cs b/SoundSwitch/Framework/DeviceCyclerManager/DeviceCycler/ADeviceCycler.cs
index ba619c9289..a7349f40da 100644
--- a/SoundSwitch/Framework/DeviceCyclerManager/DeviceCycler/ADeviceCycler.cs
+++ b/SoundSwitch/Framework/DeviceCyclerManager/DeviceCycler/ADeviceCycler.cs
@@ -1,3 +1,17 @@
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
using System.Collections.Generic;
using System.Linq;
using AudioEndPointControllerWrapper;
@@ -7,20 +21,19 @@ namespace SoundSwitch.Framework.DeviceCyclerManager.DeviceCycler
{
public abstract class ADeviceCycler : IDeviceCycler
{
- private readonly IDictionary _lastDevices =
- new Dictionary();
+ private readonly IDictionary _lastDevices = new Dictionary();
public abstract DeviceCyclerTypeEnum TypeEnum { get; }
public abstract string Label { get; }
///
- /// Cycle the audio device for the given type
+ /// Cycle the audio device for the given type
///
///
public abstract bool CycleAudioDevice(AudioDeviceType type);
///
- /// Get the next device that need to be set as Default
+ /// Get the next device that need to be set as Default
///
///
///
@@ -39,7 +52,7 @@ protected IAudioDevice GetNextDevice(ICollection audioDevices, Aud
}
///
- /// Attempts to set active device to the specified name
+ /// Attempts to set active device to the specified name
///
///
public bool SetActiveDevice(IAudioDevice device)
diff --git a/SoundSwitch/Framework/DeviceCyclerManager/DeviceCycler/DeviceCyclerAll.cs b/SoundSwitch/Framework/DeviceCyclerManager/DeviceCycler/DeviceCyclerAll.cs
index ace30d02b9..26894e2de6 100644
--- a/SoundSwitch/Framework/DeviceCyclerManager/DeviceCycler/DeviceCyclerAll.cs
+++ b/SoundSwitch/Framework/DeviceCyclerManager/DeviceCycler/DeviceCyclerAll.cs
@@ -1,18 +1,32 @@
-using System;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System;
using System.Collections.Generic;
using AudioEndPointControllerWrapper;
using SoundSwitch.Model;
-using SoundSwitch.Properties;
+using SoundSwitch.Localization;
namespace SoundSwitch.Framework.DeviceCyclerManager.DeviceCycler
{
public class DeviceCyclerAll : ADeviceCycler
{
- public override DeviceCyclerTypeEnum TypeEnum { get; } = DeviceCyclerTypeEnum.All;
- public override string Label { get; } = AudioCycler.all;
+ public override DeviceCyclerTypeEnum TypeEnum => DeviceCyclerTypeEnum.All;
+ public override string Label => SettingsStrings.cycleThroughOptionAllAudioDevices;
///
- /// Cycle the audio device for the given type
+ /// Cycle the audio device for the given type
///
///
public override bool CycleAudioDevice(AudioDeviceType type)
diff --git a/SoundSwitch/Framework/DeviceCyclerManager/DeviceCycler/DeviceCyclerAvailable.cs b/SoundSwitch/Framework/DeviceCyclerManager/DeviceCycler/DeviceCyclerAvailable.cs
index 41e0917bbe..7604446d8f 100644
--- a/SoundSwitch/Framework/DeviceCyclerManager/DeviceCycler/DeviceCyclerAvailable.cs
+++ b/SoundSwitch/Framework/DeviceCyclerManager/DeviceCycler/DeviceCyclerAvailable.cs
@@ -1,18 +1,32 @@
-using System;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System;
using System.Collections.Generic;
using AudioEndPointControllerWrapper;
using SoundSwitch.Model;
-using SoundSwitch.Properties;
+using SoundSwitch.Localization;
namespace SoundSwitch.Framework.DeviceCyclerManager.DeviceCycler
{
public class DeviceCyclerAvailable : ADeviceCycler
{
- public override DeviceCyclerTypeEnum TypeEnum { get; } = DeviceCyclerTypeEnum.Available;
- public override string Label { get; } = AudioCycler.actives;
+ public override DeviceCyclerTypeEnum TypeEnum => DeviceCyclerTypeEnum.Available;
+ public override string Label => SettingsStrings.cycleThroughOptionOnlySelectedAudioDevices;
///
- /// Cycle the audio device for the given type
+ /// Cycle the audio device for the given type
///
///
public override bool CycleAudioDevice(AudioDeviceType type)
diff --git a/SoundSwitch/Framework/DeviceCyclerManager/DeviceCycler/IDeviceCycler.cs b/SoundSwitch/Framework/DeviceCyclerManager/DeviceCycler/IDeviceCycler.cs
index eae6b96070..aee2d307ac 100644
--- a/SoundSwitch/Framework/DeviceCyclerManager/DeviceCycler/IDeviceCycler.cs
+++ b/SoundSwitch/Framework/DeviceCyclerManager/DeviceCycler/IDeviceCycler.cs
@@ -1,3 +1,17 @@
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
using AudioEndPointControllerWrapper;
using SoundSwitch.Framework.Factory;
diff --git a/SoundSwitch/Framework/DeviceCyclerManager/DeviceCyclerFactory.cs b/SoundSwitch/Framework/DeviceCyclerManager/DeviceCyclerFactory.cs
index 7c49771c3a..4ac50431d0 100644
--- a/SoundSwitch/Framework/DeviceCyclerManager/DeviceCyclerFactory.cs
+++ b/SoundSwitch/Framework/DeviceCyclerManager/DeviceCyclerFactory.cs
@@ -1,4 +1,18 @@
-using SoundSwitch.Framework.DeviceCyclerManager.DeviceCycler;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using SoundSwitch.Framework.DeviceCyclerManager.DeviceCycler;
using SoundSwitch.Framework.Factory;
namespace SoundSwitch.Framework.DeviceCyclerManager
@@ -8,8 +22,8 @@ public class DeviceCyclerFactory : AbstractFactory AllCycler = new EnumImplList
{
- new DeviceCyclerAll(),
- new DeviceCyclerAvailable()
+ new DeviceCyclerAvailable(),
+ new DeviceCyclerAll()
};
public DeviceCyclerFactory() : base(AllCycler)
diff --git a/SoundSwitch/Framework/DeviceCyclerManager/DeviceCyclerManager.cs b/SoundSwitch/Framework/DeviceCyclerManager/DeviceCyclerManager.cs
index e8e3fe8a87..ab3a7d76b5 100644
--- a/SoundSwitch/Framework/DeviceCyclerManager/DeviceCyclerManager.cs
+++ b/SoundSwitch/Framework/DeviceCyclerManager/DeviceCyclerManager.cs
@@ -1,4 +1,18 @@
-using AudioEndPointControllerWrapper;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using AudioEndPointControllerWrapper;
using SoundSwitch.Framework.Configuration;
namespace SoundSwitch.Framework.DeviceCyclerManager
diff --git a/SoundSwitch/Framework/DeviceCyclerManager/DeviceCyclerTypeEnum.cs b/SoundSwitch/Framework/DeviceCyclerManager/DeviceCyclerTypeEnum.cs
index 4fa3aa8d59..579e5c786c 100644
--- a/SoundSwitch/Framework/DeviceCyclerManager/DeviceCyclerTypeEnum.cs
+++ b/SoundSwitch/Framework/DeviceCyclerManager/DeviceCyclerTypeEnum.cs
@@ -1,4 +1,18 @@
-namespace SoundSwitch.Framework.DeviceCyclerManager
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+namespace SoundSwitch.Framework.DeviceCyclerManager
{
public enum DeviceCyclerTypeEnum
{
diff --git a/SoundSwitch/Framework/Factory/AbstractFactory.cs b/SoundSwitch/Framework/Factory/AbstractFactory.cs
index 1d684e6e5d..b961c59049 100644
--- a/SoundSwitch/Framework/Factory/AbstractFactory.cs
+++ b/SoundSwitch/Framework/Factory/AbstractFactory.cs
@@ -1,4 +1,18 @@
-using System;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
@@ -7,7 +21,7 @@
namespace SoundSwitch.Framework.Factory
{
///
- /// Used to build factory based on Enums
+ /// Used to build factory based on Enums
///
/// The Enum defining the type
/// The implementation of the enum
@@ -22,7 +36,7 @@ protected AbstractFactory(IEnumImplList enumImplList)
public IReadOnlyDictionary AllImplementations { get; }
///
- /// Get the implementation for the given Enum
+ /// Get the implementation for the given Enum
///
///
///
@@ -37,7 +51,7 @@ public TImplementation Get(TEnum eEnum)
}
///
- /// Configure the list control DataSource, ValueMember and DisplayMember
+ /// Configure the list control DataSource, ValueMember and DisplayMember
///
///
public void ConfigureListControl(ListControl list)
diff --git a/SoundSwitch/Framework/Factory/EnumImplList.cs b/SoundSwitch/Framework/Factory/EnumImplList.cs
index de00605918..1b85e6a040 100644
--- a/SoundSwitch/Framework/Factory/EnumImplList.cs
+++ b/SoundSwitch/Framework/Factory/EnumImplList.cs
@@ -1,4 +1,18 @@
-using System;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
diff --git a/SoundSwitch/Framework/Factory/IEnumImpl.cs b/SoundSwitch/Framework/Factory/IEnumImpl.cs
index 91a3b11206..d70942a095 100644
--- a/SoundSwitch/Framework/Factory/IEnumImpl.cs
+++ b/SoundSwitch/Framework/Factory/IEnumImpl.cs
@@ -1,5 +1,18 @@
-using System;
-using SoundSwitch.Framework.TooltipInfoManager.TootipInfo;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System;
namespace SoundSwitch.Framework.Factory
{
diff --git a/SoundSwitch/Framework/Factory/IEnumImplList.cs b/SoundSwitch/Framework/Factory/IEnumImplList.cs
index a790369097..ed9d05e478 100644
--- a/SoundSwitch/Framework/Factory/IEnumImplList.cs
+++ b/SoundSwitch/Framework/Factory/IEnumImplList.cs
@@ -1,3 +1,17 @@
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
using System;
using System.Collections.Generic;
@@ -6,7 +20,7 @@ namespace SoundSwitch.Framework.Factory
public interface IEnumImplList : IList where TEnum : struct, IConvertible where TEnumImpl : IEnumImpl
{
///
- /// Convert the list into a ReadOnlyDictionary using the TypeEnum as Key
+ /// Convert the list into a ReadOnlyDictionary using the TypeEnum as Key
///
///
IReadOnlyDictionary ToReadOnlyDictionary();
diff --git a/SoundSwitch/Framework/HotKeys.cs b/SoundSwitch/Framework/HotKeys.cs
index bd15a81839..93d22cf0c9 100644
--- a/SoundSwitch/Framework/HotKeys.cs
+++ b/SoundSwitch/Framework/HotKeys.cs
@@ -1,11 +1,11 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
diff --git a/SoundSwitch/Framework/HourGlass.cs b/SoundSwitch/Framework/HourGlass.cs
index 61534d29d0..73dc35504a 100644
--- a/SoundSwitch/Framework/HourGlass.cs
+++ b/SoundSwitch/Framework/HourGlass.cs
@@ -1,11 +1,11 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
diff --git a/SoundSwitch/Framework/IPC/IPCClient.cs b/SoundSwitch/Framework/IPC/IPCClient.cs
index 7d085cf172..ad755ef28e 100644
--- a/SoundSwitch/Framework/IPC/IPCClient.cs
+++ b/SoundSwitch/Framework/IPC/IPCClient.cs
@@ -1,4 +1,18 @@
-using System;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Ipc;
diff --git a/SoundSwitch/Framework/IPC/IPCServer.cs b/SoundSwitch/Framework/IPC/IPCServer.cs
index 129ac568f9..cd8a623ac5 100644
--- a/SoundSwitch/Framework/IPC/IPCServer.cs
+++ b/SoundSwitch/Framework/IPC/IPCServer.cs
@@ -1,4 +1,18 @@
-using System;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Ipc;
diff --git a/SoundSwitch/Framework/IPC/RemoteObjects/RemoteObject.cs b/SoundSwitch/Framework/IPC/RemoteObjects/RemoteObject.cs
index 21ac1bb575..f1ca0414b6 100644
--- a/SoundSwitch/Framework/IPC/RemoteObjects/RemoteObject.cs
+++ b/SoundSwitch/Framework/IPC/RemoteObjects/RemoteObject.cs
@@ -1,4 +1,18 @@
-using System;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System;
using System.Windows.Forms;
namespace SoundSwitch.Framework.IPC.RemoteObjects
diff --git a/SoundSwitch/Framework/KeyboardWindowsAPI.cs b/SoundSwitch/Framework/KeyboardWindowsAPI.cs
index 02c3e43e34..6b7c8e7792 100644
--- a/SoundSwitch/Framework/KeyboardWindowsAPI.cs
+++ b/SoundSwitch/Framework/KeyboardWindowsAPI.cs
@@ -1,10 +1,22 @@
-using System;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System;
using System.Collections.Generic;
-using System.Collections.Specialized;
using System.Linq;
using System.Runtime.InteropServices;
using System.Windows.Forms;
-using System.Windows.Input;
namespace SoundSwitch.Framework
{
diff --git a/SoundSwitch/Framework/Minidump/MemoryDumper.cs b/SoundSwitch/Framework/Minidump/MemoryDumper.cs
index 89d61caaf4..b2d64f0a11 100644
--- a/SoundSwitch/Framework/Minidump/MemoryDumper.cs
+++ b/SoundSwitch/Framework/Minidump/MemoryDumper.cs
@@ -1,4 +1,18 @@
-using System;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
diff --git a/SoundSwitch/Framework/NotificationManager/Notification/INotification.cs b/SoundSwitch/Framework/NotificationManager/Notification/INotification.cs
index 9a4606d98c..392051c1fb 100644
--- a/SoundSwitch/Framework/NotificationManager/Notification/INotification.cs
+++ b/SoundSwitch/Framework/NotificationManager/Notification/INotification.cs
@@ -1,4 +1,18 @@
-using AudioEndPointControllerWrapper;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using AudioEndPointControllerWrapper;
using SoundSwitch.Framework.Audio;
using SoundSwitch.Framework.Factory;
using SoundSwitch.Framework.NotificationManager.Notification.Configuration;
@@ -8,30 +22,30 @@ namespace SoundSwitch.Framework.NotificationManager.Notification
public interface INotification : IEnumImpl
{
///
- /// Configuration of the Notification
+ /// Configuration of the Notification
///
INotificationConfiguration Configuration { get; set; }
///
- /// Notify the change of default audio device
+ /// Notify the change of default audio device
///
///
void NotifyDefaultChanged(IAudioDevice audioDevice);
///
- /// Called when the set sound changed
+ /// Called when the set sound changed
///
///
void OnSoundChanged(CachedSound newSound);
///
- /// Does the notification need a Custom Sound set to work
+ /// Does the notification need a Custom Sound set to work
///
///
bool NeedCustomSound();
///
- /// Is this notification available
+ /// Is this notification available
///
///
bool IsAvailable();
diff --git a/SoundSwitch/Framework/NotificationManager/Notification/NotificationCustom.cs b/SoundSwitch/Framework/NotificationManager/Notification/NotificationCustom.cs
index 35d04b02e0..ebabf385bf 100644
--- a/SoundSwitch/Framework/NotificationManager/Notification/NotificationCustom.cs
+++ b/SoundSwitch/Framework/NotificationManager/Notification/NotificationCustom.cs
@@ -1,20 +1,34 @@
-using System.Threading;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System.Threading;
using System.Threading.Tasks;
using AudioEndPointControllerWrapper;
using NAudio.CoreAudioApi;
using NAudio.Wave;
using SoundSwitch.Framework.Audio;
using SoundSwitch.Framework.NotificationManager.Notification.Configuration;
-using SoundSwitch.Properties;
+using SoundSwitch.Localization;
namespace SoundSwitch.Framework.NotificationManager.Notification
{
public class NotificationCustom : INotification
{
private readonly MMDeviceEnumerator _deviceEnumerator = new MMDeviceEnumerator();
- public NotificationTypeEnum TypeEnum { get; } = NotificationTypeEnum.CustomNotification;
- public string Label { get; } = Notifications.NotifCustom;
+ public NotificationTypeEnum TypeEnum => NotificationTypeEnum.CustomNotification;
+ public string Label => SettingsStrings.notificationOptionCustomized;
public INotificationConfiguration Configuration { get; set; }
diff --git a/SoundSwitch/Framework/NotificationManager/Notification/NotificationNone.cs b/SoundSwitch/Framework/NotificationManager/Notification/NotificationNone.cs
index fcf8522418..04a09691d9 100644
--- a/SoundSwitch/Framework/NotificationManager/Notification/NotificationNone.cs
+++ b/SoundSwitch/Framework/NotificationManager/Notification/NotificationNone.cs
@@ -1,14 +1,29 @@
-using AudioEndPointControllerWrapper;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using AudioEndPointControllerWrapper;
using SoundSwitch.Framework.Audio;
using SoundSwitch.Framework.NotificationManager.Notification.Configuration;
+using SoundSwitch.Localization;
using SoundSwitch.Properties;
namespace SoundSwitch.Framework.NotificationManager.Notification
{
public class NotificationNone : INotification
{
- public NotificationTypeEnum TypeEnum { get; } = NotificationTypeEnum.NoNotification;
- public string Label { get; } = Notifications.NotifNone;
+ public NotificationTypeEnum TypeEnum => NotificationTypeEnum.NoNotification;
+ public string Label => SettingsStrings.notificationOptionNone;
public INotificationConfiguration Configuration { get; set; }
diff --git a/SoundSwitch/Framework/NotificationManager/Notification/NotificationSound.cs b/SoundSwitch/Framework/NotificationManager/Notification/NotificationSound.cs
index 3c159ac4f5..22c5089809 100644
--- a/SoundSwitch/Framework/NotificationManager/Notification/NotificationSound.cs
+++ b/SoundSwitch/Framework/NotificationManager/Notification/NotificationSound.cs
@@ -1,4 +1,18 @@
-using System.IO;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System.IO;
using System.Threading;
using System.Threading.Tasks;
using AudioEndPointControllerWrapper;
@@ -6,7 +20,7 @@
using NAudio.Wave;
using SoundSwitch.Framework.Audio;
using SoundSwitch.Framework.NotificationManager.Notification.Configuration;
-using SoundSwitch.Properties;
+using SoundSwitch.Localization;
namespace SoundSwitch.Framework.NotificationManager.Notification
{
@@ -19,8 +33,8 @@ public NotificationSound()
_deviceEnumerator = new MMDeviceEnumerator();
}
- public NotificationTypeEnum TypeEnum { get; } = NotificationTypeEnum.SoundNotification;
- public string Label { get; } = Notifications.NotifSound;
+ public NotificationTypeEnum TypeEnum => NotificationTypeEnum.SoundNotification;
+ public string Label => SettingsStrings.notificationOptionSound;
public INotificationConfiguration Configuration { get; set; }
diff --git a/SoundSwitch/Framework/NotificationManager/Notification/NotificationToast.cs b/SoundSwitch/Framework/NotificationManager/Notification/NotificationToast.cs
index fbf20715fc..e4bffc537f 100644
--- a/SoundSwitch/Framework/NotificationManager/Notification/NotificationToast.cs
+++ b/SoundSwitch/Framework/NotificationManager/Notification/NotificationToast.cs
@@ -1,17 +1,31 @@
-using System;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System;
using System.IO;
using AudioEndPointControllerWrapper;
using SoundSwitch.Framework.Audio;
using SoundSwitch.Framework.NotificationManager.Notification.Configuration;
using SoundSwitch.Framework.Toast;
-using SoundSwitch.Properties;
+using SoundSwitch.Localization;
namespace SoundSwitch.Framework.NotificationManager.Notification
{
public class NotificationToast : INotification
{
- public NotificationTypeEnum TypeEnum { get; } = NotificationTypeEnum.ToastNotification;
- public string Label { get; } = Notifications.NotifToast;
+ public NotificationTypeEnum TypeEnum => NotificationTypeEnum.ToastNotification;
+ public string Label => SettingsStrings.notificationOptionToast;
public INotificationConfiguration Configuration { get; set; }
@@ -22,7 +36,7 @@ public void NotifyDefaultChanged(IAudioDevice audioDevice)
ImagePath = "file:///"+ApplicationPath.DefaultImagePath,
Title = audioDevice.FriendlyName
};
- if ((Configuration.CustomSound != null) && File.Exists(Configuration.CustomSound.FilePath))
+ if (Configuration.CustomSound != null && File.Exists(Configuration.CustomSound.FilePath))
{
toastData.Silent = false;
toastData.SoundFilePath = Configuration.CustomSound.FilePath;
@@ -31,11 +45,10 @@ public void NotifyDefaultChanged(IAudioDevice audioDevice)
switch (audioDevice.Type)
{
case AudioDeviceType.Playback:
- toastData.Line0 = Notifications.PlaybackChanged;
-
+ toastData.Line0 = SettingsStrings.tooltipOnHoverOptionPlaybackDevice;
break;
case AudioDeviceType.Recording:
- toastData.Line0 = Notifications.RecordingChanged;
+ toastData.Line0 = SettingsStrings.tooltipOnHoverOptionRecordingDevice;
break;
default:
throw new ArgumentOutOfRangeException(nameof(audioDevice.Type), audioDevice.Type, null);
@@ -55,7 +68,7 @@ public bool NeedCustomSound()
public bool IsAvailable()
{
- //Not available before windows 8
+ // Not available before Windows 8
return Environment.OSVersion.Version >= new Version(6, 2);
}
}
diff --git a/SoundSwitch/Framework/NotificationManager/Notification/NotificationWindows.cs b/SoundSwitch/Framework/NotificationManager/Notification/NotificationWindows.cs
index 62e89500ff..b89d045ecb 100644
--- a/SoundSwitch/Framework/NotificationManager/Notification/NotificationWindows.cs
+++ b/SoundSwitch/Framework/NotificationManager/Notification/NotificationWindows.cs
@@ -1,16 +1,30 @@
-using System;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System;
using System.Windows.Forms;
using AudioEndPointControllerWrapper;
using SoundSwitch.Framework.Audio;
using SoundSwitch.Framework.NotificationManager.Notification.Configuration;
-using SoundSwitch.Properties;
+using SoundSwitch.Localization;
namespace SoundSwitch.Framework.NotificationManager.Notification
{
public class NotificationWindows : INotification
{
- public NotificationTypeEnum TypeEnum { get; } = NotificationTypeEnum.DefaultWindowsNotification;
- public string Label { get; } = Notifications.NotifWindows;
+ public NotificationTypeEnum TypeEnum => NotificationTypeEnum.DefaultWindowsNotification;
+ public string Label => SettingsStrings.notificationOptionWindowsDefault;
public INotificationConfiguration Configuration { get; set; }
@@ -20,13 +34,13 @@ public void NotifyDefaultChanged(IAudioDevice audioDevice)
{
case AudioDeviceType.Playback:
Configuration.Icon.ShowBalloonTip(500,
- string.Format(TrayIconStrings.playbackChanged, Application.ProductName),
- audioDevice.FriendlyName, ToolTipIcon.Info);
+ string.Format(TrayIconStrings.playbackChanged, Application.ProductName),
+ audioDevice.FriendlyName, ToolTipIcon.Info);
break;
case AudioDeviceType.Recording:
Configuration.Icon.ShowBalloonTip(500,
- string.Format(TrayIconStrings.recordingChanged, Application.ProductName),
- audioDevice.FriendlyName, ToolTipIcon.Info);
+ string.Format(TrayIconStrings.recordingChanged, Application.ProductName),
+ audioDevice.FriendlyName, ToolTipIcon.Info);
break;
default:
throw new ArgumentOutOfRangeException(nameof(audioDevice.Type), audioDevice.Type, null);
diff --git a/SoundSwitch/Framework/NotificationManager/Notification/configuration/INotificationConfiguration.cs b/SoundSwitch/Framework/NotificationManager/Notification/configuration/INotificationConfiguration.cs
index 63557e7f38..0a3b58870f 100644
--- a/SoundSwitch/Framework/NotificationManager/Notification/configuration/INotificationConfiguration.cs
+++ b/SoundSwitch/Framework/NotificationManager/Notification/configuration/INotificationConfiguration.cs
@@ -1,4 +1,18 @@
-using System.IO;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System.IO;
using System.Windows.Forms;
using SoundSwitch.Framework.Audio;
diff --git a/SoundSwitch/Framework/NotificationManager/Notification/configuration/NotificationConfiguration.cs b/SoundSwitch/Framework/NotificationManager/Notification/configuration/NotificationConfiguration.cs
index ddf7283d83..bb8b50a400 100644
--- a/SoundSwitch/Framework/NotificationManager/Notification/configuration/NotificationConfiguration.cs
+++ b/SoundSwitch/Framework/NotificationManager/Notification/configuration/NotificationConfiguration.cs
@@ -1,4 +1,18 @@
-using System.IO;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System.IO;
using System.Windows.Forms;
using SoundSwitch.Framework.Audio;
diff --git a/SoundSwitch/Framework/NotificationManager/NotificationFactory.cs b/SoundSwitch/Framework/NotificationManager/NotificationFactory.cs
index 04bef1ea45..7e296b0eab 100644
--- a/SoundSwitch/Framework/NotificationManager/NotificationFactory.cs
+++ b/SoundSwitch/Framework/NotificationManager/NotificationFactory.cs
@@ -1,4 +1,18 @@
-using System.ComponentModel;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System.ComponentModel;
using System.Linq;
using System.Windows.Forms;
using SoundSwitch.Framework.Factory;
@@ -13,9 +27,9 @@ public class NotificationFactory : AbstractFactory
{
///
- /// The text to display for this tooltip
+ /// The text to display for this ToolTip
///
///
string TextToDisplay();
diff --git a/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/ToolTipInfoTypeEnum.cs b/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/ToolTipInfoTypeEnum.cs
index 3354dbef92..a08f9bfe3b 100644
--- a/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/ToolTipInfoTypeEnum.cs
+++ b/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/ToolTipInfoTypeEnum.cs
@@ -1,4 +1,18 @@
-namespace SoundSwitch.Framework.TooltipInfoManager.TootipInfo
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+namespace SoundSwitch.Framework.TooltipInfoManager.TootipInfo
{
public enum TooltipInfoTypeEnum
{
diff --git a/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/TooltipInfoBoth.cs b/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/TooltipInfoBoth.cs
index c3b89638a2..391d98dc87 100644
--- a/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/TooltipInfoBoth.cs
+++ b/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/TooltipInfoBoth.cs
@@ -1,14 +1,28 @@
-using SoundSwitch.Properties;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using SoundSwitch.Localization;
namespace SoundSwitch.Framework.TooltipInfoManager.TootipInfo
{
public class TooltipInfoBoth : ITooltipInfo
{
- public TooltipInfoTypeEnum TypeEnum { get; } = TooltipInfoTypeEnum.Both;
- public string Label { get; } = TooltipInfo.both;
+ public TooltipInfoTypeEnum TypeEnum => TooltipInfoTypeEnum.Both;
+ public string Label => SettingsStrings.tooltipOnHoverOptionBothDevices;
///
- /// The text to display for this tooltip
+ /// The text to display for this ToolTip
///
///
public string TextToDisplay()
@@ -16,11 +30,10 @@ public string TextToDisplay()
var playbackToDisplay = new TooltipInfoPlayback().TextToDisplay();
var recordingToDisplay = new TooltipInfoRecording().TextToDisplay();
- if(playbackToDisplay == null || recordingToDisplay == null)
+ if (playbackToDisplay == null || recordingToDisplay == null)
return null;
- return string.Concat(playbackToDisplay, "\n",
- recordingToDisplay);
+ return string.Concat(playbackToDisplay, "\n", recordingToDisplay);
}
public override string ToString()
diff --git a/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/TooltipInfoNone.cs b/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/TooltipInfoNone.cs
index 2ac001c091..5852f0e56e 100644
--- a/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/TooltipInfoNone.cs
+++ b/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/TooltipInfoNone.cs
@@ -1,18 +1,35 @@
-using SoundSwitch.Properties;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using SoundSwitch.Localization;
namespace SoundSwitch.Framework.TooltipInfoManager.TootipInfo
{
public class TooltipInfoNone : ITooltipInfo
{
- public TooltipInfoTypeEnum TypeEnum { get; } = TooltipInfoTypeEnum.None;
- public string Label { get; } = TooltipInfo.none;
+ public TooltipInfoTypeEnum TypeEnum => TooltipInfoTypeEnum.None;
+ public string Label => SettingsStrings.tooltipOnHoverOptionNone;
+ ///
+ /// The text to display for this ToolTip
+ ///
+ ///
public string TextToDisplay()
{
return null;
}
-
public override string ToString()
{
return Label;
diff --git a/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/TooltipInfoPlayback.cs b/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/TooltipInfoPlayback.cs
index ea15c57159..5038af0ce9 100644
--- a/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/TooltipInfoPlayback.cs
+++ b/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/TooltipInfoPlayback.cs
@@ -1,25 +1,38 @@
-using System.Linq;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System.Linq;
using AudioEndPointControllerWrapper;
+using SoundSwitch.Localization;
using SoundSwitch.Model;
-using SoundSwitch.Properties;
namespace SoundSwitch.Framework.TooltipInfoManager.TootipInfo
{
public class TooltipInfoPlayback : ITooltipInfo
{
- public TooltipInfoTypeEnum TypeEnum { get; } = TooltipInfoTypeEnum.Playback;
- public string Label { get; } = TooltipInfo.playback;
+ public TooltipInfoTypeEnum TypeEnum => TooltipInfoTypeEnum.Playback;
+ public string Label => SettingsStrings.tooltipOnHoverOptionPlaybackDevice;
///
- /// The text to display for this tooltip
+ /// The text to display for this ToolTip
///
///
public string TextToDisplay()
{
- var playbackDefaultDevice =
- AppModel.Instance.ActiveAudioDeviceLister.GetPlaybackDevices()
- .FirstOrDefault(device => device.IsDefault(Role.Console));
- return playbackDefaultDevice == null ? null : string.Format(TooltipInfo.playbackActive, playbackDefaultDevice);
+ var playbackDefaultDevice = AppModel.Instance.ActiveAudioDeviceLister.GetPlaybackDevices()
+ .FirstOrDefault(device => device.IsDefault(Role.Console));
+ return playbackDefaultDevice == null ? null : string.Format(SettingsStrings.activePlayback, playbackDefaultDevice);
}
public override string ToString()
diff --git a/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/TooltipInfoRecording.cs b/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/TooltipInfoRecording.cs
index b00d6e6fb7..aea842f323 100644
--- a/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/TooltipInfoRecording.cs
+++ b/SoundSwitch/Framework/TooltipInfoManager/TootipInfo/TooltipInfoRecording.cs
@@ -1,25 +1,38 @@
-using System.Linq;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System.Linq;
using AudioEndPointControllerWrapper;
+using SoundSwitch.Localization;
using SoundSwitch.Model;
-using SoundSwitch.Properties;
namespace SoundSwitch.Framework.TooltipInfoManager.TootipInfo
{
public class TooltipInfoRecording : ITooltipInfo
{
- public TooltipInfoTypeEnum TypeEnum { get; } = TooltipInfoTypeEnum.Recording;
- public string Label { get; } = TooltipInfo.recording;
+ public TooltipInfoTypeEnum TypeEnum => TooltipInfoTypeEnum.Recording;
+ public string Label => SettingsStrings.tooltipOnHoverOptionRecordingDevice;
///
- /// The text to display for this tooltip
+ /// The text to display for this ToolTip
///
///
public string TextToDisplay()
{
- var recordingDevice =
- AppModel.Instance.ActiveAudioDeviceLister.GetRecordingDevices()
- .FirstOrDefault(device => device.IsDefault(Role.Console));
- return recordingDevice == null ? null : string.Format(TooltipInfo.recordingActive, recordingDevice);
+ var recordingDevice = AppModel.Instance.ActiveAudioDeviceLister.GetRecordingDevices()
+ .FirstOrDefault(device => device.IsDefault(Role.Console));
+ return recordingDevice == null ? null : string.Format(SettingsStrings.activeRecording, recordingDevice);
}
public override string ToString()
diff --git a/SoundSwitch/Framework/Updater/AutoUpdater.cs b/SoundSwitch/Framework/Updater/AutoUpdater.cs
index b9c9cbfc6f..805c6badee 100644
--- a/SoundSwitch/Framework/Updater/AutoUpdater.cs
+++ b/SoundSwitch/Framework/Updater/AutoUpdater.cs
@@ -1,11 +1,11 @@
/********************************************************************
-* Copyright (C) 2016 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
diff --git a/SoundSwitch/Framework/Updater/GitHubRelease.cs b/SoundSwitch/Framework/Updater/GitHubRelease.cs
index 0d8a5f0fba..af5d46c4e3 100644
--- a/SoundSwitch/Framework/Updater/GitHubRelease.cs
+++ b/SoundSwitch/Framework/Updater/GitHubRelease.cs
@@ -1,11 +1,11 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
diff --git a/SoundSwitch/Framework/Updater/IntervalUpdateChecker.cs b/SoundSwitch/Framework/Updater/IntervalUpdateChecker.cs
index 0dcc7d9c93..9183d15a1b 100644
--- a/SoundSwitch/Framework/Updater/IntervalUpdateChecker.cs
+++ b/SoundSwitch/Framework/Updater/IntervalUpdateChecker.cs
@@ -1,11 +1,11 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
diff --git a/SoundSwitch/Framework/Updater/Release.cs b/SoundSwitch/Framework/Updater/Release.cs
index 712e52ea82..8bc587ce27 100644
--- a/SoundSwitch/Framework/Updater/Release.cs
+++ b/SoundSwitch/Framework/Updater/Release.cs
@@ -1,11 +1,11 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
diff --git a/SoundSwitch/Framework/Updater/SignatureChecker.cs b/SoundSwitch/Framework/Updater/SignatureChecker.cs
index c68168bb3a..fc3794da6c 100644
--- a/SoundSwitch/Framework/Updater/SignatureChecker.cs
+++ b/SoundSwitch/Framework/Updater/SignatureChecker.cs
@@ -1,4 +1,18 @@
-using System.Security.Cryptography.X509Certificates;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System.Security.Cryptography.X509Certificates;
namespace SoundSwitch.Framework.Updater
{
@@ -16,7 +30,7 @@ public static bool IsValid(string filename)
{
var certificate = X509Certificate.CreateFromSignedFile(filename);
return certificate.GetPublicKeyString() == _publicKey
- && certificate.Issuer.Contains("CN=aaflalo.me")
+ && certificate.Issuer.Contains("CN=aaflalo.me")
&& certificate.GetSerialNumberString() == _serialNumber;
}
}
diff --git a/SoundSwitch/Framework/Updater/UpdateChecker.cs b/SoundSwitch/Framework/Updater/UpdateChecker.cs
index 4bda9e9570..679624c57b 100644
--- a/SoundSwitch/Framework/Updater/UpdateChecker.cs
+++ b/SoundSwitch/Framework/Updater/UpdateChecker.cs
@@ -1,11 +1,11 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
@@ -16,7 +16,6 @@
using System.Collections.Generic;
using System.Linq;
using System.Net;
-using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -95,7 +94,7 @@ private bool ProcessRelease(GitHubRelease serverRelease)
}
///
- /// Check for update
+ /// Check for update
///
public void CheckForUpdate()
{
diff --git a/SoundSwitch/Framework/Updater/UpdateMode.cs b/SoundSwitch/Framework/Updater/UpdateMode.cs
index ebef5ee40b..2bb4d76a2d 100644
--- a/SoundSwitch/Framework/Updater/UpdateMode.cs
+++ b/SoundSwitch/Framework/Updater/UpdateMode.cs
@@ -1,4 +1,18 @@
-namespace SoundSwitch.Framework.Updater
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+namespace SoundSwitch.Framework.Updater
{
public enum UpdateMode
{
diff --git a/SoundSwitch/Framework/Updater/UpdateState.cs b/SoundSwitch/Framework/Updater/UpdateState.cs
index 8e530d1d11..1f10ee2b11 100644
--- a/SoundSwitch/Framework/Updater/UpdateState.cs
+++ b/SoundSwitch/Framework/Updater/UpdateState.cs
@@ -1,4 +1,18 @@
-namespace SoundSwitch.Framework.Updater
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+namespace SoundSwitch.Framework.Updater
{
public enum UpdateState
{
diff --git a/SoundSwitch/Framework/Updater/WebFile.cs b/SoundSwitch/Framework/Updater/WebFile.cs
index 091bc32261..14d11be394 100644
--- a/SoundSwitch/Framework/Updater/WebFile.cs
+++ b/SoundSwitch/Framework/Updater/WebFile.cs
@@ -1,11 +1,11 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the Lesser GNU General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
diff --git a/SoundSwitch/Framework/WindowsAPIAdapter.cs b/SoundSwitch/Framework/WindowsAPIAdapter.cs
index a37202e360..98b43d3148 100644
--- a/SoundSwitch/Framework/WindowsAPIAdapter.cs
+++ b/SoundSwitch/Framework/WindowsAPIAdapter.cs
@@ -1,12 +1,12 @@
/********************************************************************
* Copyright (C) 2015 Jeroen Pelgrims
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
@@ -58,7 +58,7 @@ private WindowsAPIAdapter()
public static event EventHandler HotKeyPressed;
///
- /// Star the Adapter thread
+ /// Start the Adapter thread
///
public static void Start(ThreadExceptionEventHandler exceptionEventHandler = null)
{
@@ -67,7 +67,7 @@ public static void Start(ThreadExceptionEventHandler exceptionEventHandler = nul
_exceptionEventHandler = exceptionEventHandler;
- var t = new Thread(RunForm) {Name = typeof (WindowsAPIAdapter).Name};
+ var t = new Thread(RunForm) {Name = typeof(WindowsAPIAdapter).Name};
t.SetApartmentState(ApartmentState.STA);
t.IsBackground = true;
t.Start();
diff --git a/SoundSwitch/Properties/AboutStrings.Designer.cs b/SoundSwitch/Localization/AboutStrings.Designer.cs
similarity index 91%
rename from SoundSwitch/Properties/AboutStrings.Designer.cs
rename to SoundSwitch/Localization/AboutStrings.Designer.cs
index e12e5bdd39..7be3462040 100644
--- a/SoundSwitch/Properties/AboutStrings.Designer.cs
+++ b/SoundSwitch/Localization/AboutStrings.Designer.cs
@@ -1,135 +1,135 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace SoundSwitch.Properties {
- using System;
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class AboutStrings {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal AboutStrings() {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SoundSwitch.Properties.AboutStrings", typeof(AboutStrings).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- ///
- /// Looks up a localized string similar to Author and Program Info.
- ///
- internal static string author {
- get {
- return ResourceManager.GetString("author", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Created by.
- ///
- internal static string created {
- get {
- return ResourceManager.GetString("created", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Credits and Attribution.
- ///
- internal static string credits {
- get {
- return ResourceManager.GetString("credits", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Default Playback device change.
- ///
- internal static string defPlaybacChg {
- get {
- return ResourceManager.GetString("defPlaybacChg", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Icons.
- ///
- internal static string icons {
- get {
- return ResourceManager.GetString("icons", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Keyboard HotKey system.
- ///
- internal static string keyboardHotkeys {
- get {
- return ResourceManager.GetString("keyboardHotkeys", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Mantained by.
- ///
- internal static string maintained {
- get {
- return ResourceManager.GetString("maintained", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Version.
- ///
- internal static string version {
- get {
- return ResourceManager.GetString("version", resourceCulture);
- }
- }
- }
-}
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace SoundSwitch.Localization {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class AboutStrings {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal AboutStrings() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SoundSwitch.Localization.AboutStrings", typeof(AboutStrings).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Author and Program Info.
+ ///
+ internal static string author {
+ get {
+ return ResourceManager.GetString("author", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Created by.
+ ///
+ internal static string created {
+ get {
+ return ResourceManager.GetString("created", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Credits and Attribution.
+ ///
+ internal static string credits {
+ get {
+ return ResourceManager.GetString("credits", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Default Playback device change.
+ ///
+ internal static string defaultPlaybackDeviceChange {
+ get {
+ return ResourceManager.GetString("defaultPlaybackDeviceChange", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Icons.
+ ///
+ internal static string icons {
+ get {
+ return ResourceManager.GetString("icons", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Keyboard HotKey system.
+ ///
+ internal static string keyboardHotkeys {
+ get {
+ return ResourceManager.GetString("keyboardHotkeys", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Mantained by.
+ ///
+ internal static string maintained {
+ get {
+ return ResourceManager.GetString("maintained", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Version.
+ ///
+ internal static string version {
+ get {
+ return ResourceManager.GetString("version", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/SoundSwitch/Properties/TooltipInfo.resx b/SoundSwitch/Localization/AboutStrings.de.resx
similarity index 84%
rename from SoundSwitch/Properties/TooltipInfo.resx
rename to SoundSwitch/Localization/AboutStrings.de.resx
index 33ace0fe36..ff9313f5d4 100644
--- a/SoundSwitch/Properties/TooltipInfo.resx
+++ b/SoundSwitch/Localization/AboutStrings.de.resx
@@ -1,121 +1,124 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 1.3
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Recording Device
-
-
- Playback Device
-
-
- Both Devices
-
-
- Active Device
-
-
- No tooltip
-
-
- Rec: {0}
-
-
- Play: {0}
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Erstellt von
+
+
+ Verwaltet von
+
+
+ Version
+
+
+ Autor und Informationen
+
+
+ Namensnennungen
+
+
+ Standard Wiedergabegerät Wechsel
+
+
+ Tastatur HotKey System
+
+
+ Symbole
+
\ No newline at end of file
diff --git a/SoundSwitch/Properties/AboutStrings.fr.resx b/SoundSwitch/Localization/AboutStrings.fr.resx
similarity index 96%
rename from SoundSwitch/Properties/AboutStrings.fr.resx
rename to SoundSwitch/Localization/AboutStrings.fr.resx
index 01e566fdc6..7f2c2a98f3 100644
--- a/SoundSwitch/Properties/AboutStrings.fr.resx
+++ b/SoundSwitch/Localization/AboutStrings.fr.resx
@@ -1,124 +1,124 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 1.3
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Créé par
-
-
- Maintenu par
-
-
- Créateur et Informations
-
-
- Version
-
-
- Contributeurs
-
-
- Changement de périphérique
-
-
- Raccourcis Clavier
-
-
- Icones
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Créé par
+
+
+ Maintenu par
+
+
+ Créateur et Informations
+
+
+ Version
+
+
+ Contributeurs
+
+
+ Changement de périphérique
+
+
+ Raccourcis Clavier
+
+
+ Icones
+
\ No newline at end of file
diff --git a/SoundSwitch/Properties/AboutStrings.resx b/SoundSwitch/Localization/AboutStrings.resx
similarity index 96%
rename from SoundSwitch/Properties/AboutStrings.resx
rename to SoundSwitch/Localization/AboutStrings.resx
index 61032e8128..110e0506b8 100644
--- a/SoundSwitch/Properties/AboutStrings.resx
+++ b/SoundSwitch/Localization/AboutStrings.resx
@@ -1,124 +1,124 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 1.3
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Created by
-
-
- Mantained by
-
-
- Version
-
-
- Author and Program Info
-
-
- Credits and Attribution
-
-
- Default Playback device change
-
-
- Keyboard HotKey system
-
-
- Icons
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Created by
+
+
+ Mantained by
+
+
+ Version
+
+
+ Author and Program Info
+
+
+ Credits and Attribution
+
+
+ Default Playback device change
+
+
+ Keyboard HotKey system
+
+
+ Icons
+
\ No newline at end of file
diff --git a/SoundSwitch/Localization/Language.cs b/SoundSwitch/Localization/Language.cs
new file mode 100644
index 0000000000..4007f615ab
--- /dev/null
+++ b/SoundSwitch/Localization/Language.cs
@@ -0,0 +1,27 @@
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+namespace SoundSwitch.Localization
+{
+ ///
+ /// The language of the program as enumeration.
+ ///
+ /// The integer representation has to match with the index of the ComboBox.
+ public enum Language
+ {
+ English = 0,
+ French = 1,
+ German = 2
+ }
+}
diff --git a/SoundSwitch/Localization/LanguageParser.cs b/SoundSwitch/Localization/LanguageParser.cs
new file mode 100644
index 0000000000..43c9674524
--- /dev/null
+++ b/SoundSwitch/Localization/LanguageParser.cs
@@ -0,0 +1,61 @@
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System.Globalization;
+
+namespace SoundSwitch.Localization
+{
+ ///
+ /// Provides methods to parse languages.
+ ///
+ public static class LanguageParser
+ {
+ ///
+ /// Parses the given Language to it's CultureInfo representation.
+ ///
+ /// The Language to parse.
+ /// The Language as CultureInfo. If the given Language isn't defined, English will be returned.
+ public static CultureInfo ParseLanguage(Language language)
+ {
+ switch (language)
+ {
+ case Language.French:
+ return CultureInfo.GetCultureInfo("fr");
+ case Language.German:
+ return CultureInfo.GetCultureInfo("de");
+ default:
+ return CultureInfo.GetCultureInfo("en");
+
+ }
+ }
+
+ ///
+ /// Parses the given CultureInfo to it's Language representation.
+ ///
+ /// The CultureInfo to parse.
+ /// The CultureInfo as Language. If the given CultureInfo isn't defined, English will be returned.
+ public static Language ParseLanguage(CultureInfo cultureInfo)
+ {
+ switch (cultureInfo.TwoLetterISOLanguageName)
+ {
+ case "fr":
+ return Language.French;
+ case "de":
+ return Language.German;
+ default:
+ return Language.English;
+ }
+ }
+ }
+}
diff --git a/SoundSwitch/Localization/SettingsStrings.Designer.cs b/SoundSwitch/Localization/SettingsStrings.Designer.cs
new file mode 100644
index 0000000000..eaf1d72f0e
--- /dev/null
+++ b/SoundSwitch/Localization/SettingsStrings.Designer.cs
@@ -0,0 +1,508 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace SoundSwitch.Localization {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class SettingsStrings {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal SettingsStrings() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SoundSwitch.Localization.SettingsStrings", typeof(SettingsStrings).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Play: {0}.
+ ///
+ internal static string activePlayback {
+ get {
+ return ResourceManager.GetString("activePlayback", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Rec: {0}.
+ ///
+ internal static string activeRecording {
+ get {
+ return ResourceManager.GetString("activeRecording", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The audio file you selected to be used as notification can't be found. {0} switched the notification setting back to {1}..
+ ///
+ internal static string audioFileNotFound {
+ get {
+ return ResourceManager.GetString("audioFileNotFound", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Audio file not found.
+ ///
+ internal static string audioFileNotFoundCaption {
+ get {
+ return ResourceManager.GetString("audioFileNotFoundCaption", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Audio Files.
+ ///
+ internal static string audioFiles {
+ get {
+ return ResourceManager.GetString("audioFiles", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Audio Settings.
+ ///
+ internal static string audioSettings {
+ get {
+ return ResourceManager.GetString("audioSettings", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Basic Settings.
+ ///
+ internal static string basicSettings {
+ get {
+ return ResourceManager.GetString("basicSettings", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Close.
+ ///
+ internal static string close {
+ get {
+ return ResourceManager.GetString("close", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Changes are automatically saved.
+ ///
+ internal static string closeTooltip {
+ get {
+ return ResourceManager.GetString("closeTooltip", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Switch Default Communication Device.
+ ///
+ internal static string communicationsDevice {
+ get {
+ return ResourceManager.GetString("communicationsDevice", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to When checked, the 'Default Communication Device' and 'Default Playback Device' are switched together (useful for Skype, TeamSpeak, e.g.)..
+ ///
+ internal static string communicationsDeviceTooltip {
+ get {
+ return ResourceManager.GetString("communicationsDeviceTooltip", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connected.
+ ///
+ internal static string connected {
+ get {
+ return ResourceManager.GetString("connected", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Cycle through.
+ ///
+ internal static string cycleThrough {
+ get {
+ return ResourceManager.GetString("cycleThrough", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to All audio devices.
+ ///
+ internal static string cycleThroughOptionAllAudioDevices {
+ get {
+ return ResourceManager.GetString("cycleThroughOptionAllAudioDevices", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Only selected audio devices.
+ ///
+ internal static string cycleThroughOptionOnlySelectedAudioDevices {
+ get {
+ return ResourceManager.GetString("cycleThroughOptionOnlySelectedAudioDevices", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Choose between which devices to switch. Either only between the selected or between all..
+ ///
+ internal static string cycleThroughTooltip {
+ get {
+ return ResourceManager.GetString("cycleThroughTooltip", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Disconnected.
+ ///
+ internal static string disconnected {
+ get {
+ return ResourceManager.GetString("disconnected", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Hotkeys.
+ ///
+ internal static string hotkeys {
+ get {
+ return ResourceManager.GetString("hotkeys", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Check to enable hotkeys..
+ ///
+ internal static string hotkeysTooltip {
+ get {
+ return ResourceManager.GetString("hotkeysTooltip", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Keep SoundSwitch's System Tray Icon.
+ ///
+ internal static string keepSystemTrayIcon {
+ get {
+ return ResourceManager.GetString("keepSystemTrayIcon", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to When checked, the System Tray Icon won't change when the 'Default Playback Device' changes..
+ ///
+ internal static string keepSystemTrayIconTooltip {
+ get {
+ return ResourceManager.GetString("keepSystemTrayIconTooltip", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Language.
+ ///
+ internal static string language {
+ get {
+ return ResourceManager.GetString("language", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The language will change after restarting {0}.
+ ///Do you want to restart now?.
+ ///
+ internal static string languageRestartRequired {
+ get {
+ return ResourceManager.GetString("languageRestartRequired", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Need a restart.
+ ///
+ internal static string languageRestartRequiredCaption {
+ get {
+ return ResourceManager.GetString("languageRestartRequiredCaption", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Notification.
+ ///
+ internal static string notification {
+ get {
+ return ResourceManager.GetString("notification", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Customized Sound Notification.
+ ///
+ internal static string notificationOptionCustomized {
+ get {
+ return ResourceManager.GetString("notificationOptionCustomized", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No Notification.
+ ///
+ internal static string notificationOptionNone {
+ get {
+ return ResourceManager.GetString("notificationOptionNone", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Sound Notification.
+ ///
+ internal static string notificationOptionSound {
+ get {
+ return ResourceManager.GetString("notificationOptionSound", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Toast Notification.
+ ///
+ internal static string notificationOptionToast {
+ get {
+ return ResourceManager.GetString("notificationOptionToast", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Windows Notification.
+ ///
+ internal static string notificationOptionWindowsDefault {
+ get {
+ return ResourceManager.GetString("notificationOptionWindowsDefault", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Windows Notification: The default windows tray pop-up.
+ ///Sound Notification: Plays a sound on the switched Playback Device.
+ ///Customized Sound Notification: Plays the specified sound on the switched Playback Device.
+ ///Toast Notification: Uses a special form of the windows tray pop-up version..
+ ///
+ internal static string notificationTooltip {
+ get {
+ return ResourceManager.GetString("notificationTooltip", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Playback.
+ ///
+ internal static string playback {
+ get {
+ return ResourceManager.GetString("playback", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Recording.
+ ///
+ internal static string recording {
+ get {
+ return ResourceManager.GetString("recording", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Selected.
+ ///
+ internal static string selected {
+ get {
+ return ResourceManager.GetString("selected", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Select the sound file for the notification..
+ ///
+ internal static string selectSoundButtonTooltip {
+ get {
+ return ResourceManager.GetString("selectSoundButtonTooltip", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Settings.
+ ///
+ internal static string settings {
+ get {
+ return ResourceManager.GetString("settings", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Start automatically with Windows.
+ ///
+ internal static string startWithWindows {
+ get {
+ return ResourceManager.GetString("startWithWindows", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Tooltip on Hover.
+ ///
+ internal static string tooltipOnHover {
+ get {
+ return ResourceManager.GetString("tooltipOnHover", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to For both Devices.
+ ///
+ internal static string tooltipOnHoverOptionBothDevices {
+ get {
+ return ResourceManager.GetString("tooltipOnHoverOptionBothDevices", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No Tooltip.
+ ///
+ internal static string tooltipOnHoverOptionNone {
+ get {
+ return ResourceManager.GetString("tooltipOnHoverOptionNone", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Playback Device.
+ ///
+ internal static string tooltipOnHoverOptionPlaybackDevice {
+ get {
+ return ResourceManager.GetString("tooltipOnHoverOptionPlaybackDevice", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Recording Device.
+ ///
+ internal static string tooltipOnHoverOptionRecordingDevice {
+ get {
+ return ResourceManager.GetString("tooltipOnHoverOptionRecordingDevice", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Include Beta versions.
+ ///
+ internal static string updateIncludeBetaVersions {
+ get {
+ return ResourceManager.GetString("updateIncludeBetaVersions", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to When checked, {0} will also check for pre-release versions on GitHub..
+ ///
+ internal static string updateIncludeBetaVersionsTooltip {
+ get {
+ return ResourceManager.GetString("updateIncludeBetaVersionsTooltip", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Install updates automatically.
+ ///
+ internal static string updateInstallAutomatically {
+ get {
+ return ResourceManager.GetString("updateInstallAutomatically", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Updates are installed automatically without any prompts..
+ ///
+ internal static string updateInstallAutomaticallyTooltip {
+ get {
+ return ResourceManager.GetString("updateInstallAutomaticallyTooltip", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Never check for updates.
+ ///
+ internal static string updateNever {
+ get {
+ return ResourceManager.GetString("updateNever", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Notify me when updates are available.
+ ///
+ internal static string updateNotify {
+ get {
+ return ResourceManager.GetString("updateNotify", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Update Settings.
+ ///
+ internal static string updateSettings {
+ get {
+ return ResourceManager.GetString("updateSettings", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/SoundSwitch/Localization/SettingsStrings.de.resx b/SoundSwitch/Localization/SettingsStrings.de.resx
new file mode 100644
index 0000000000..4782b0ae43
--- /dev/null
+++ b/SoundSwitch/Localization/SettingsStrings.de.resx
@@ -0,0 +1,271 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Aufnahme: {0}
+
+
+ Wiedergabe: {0}
+
+
+ Ausgewählt
+
+
+ Aufnahme
+
+
+ Wiedergabe
+
+
+ Einstellungen
+
+
+ Standardkommunikationsgerät wechseln
+
+
+ Automatisch mit Windows starten
+
+
+ Schließen
+
+
+ Änderungen werden automatisch gesichert
+
+
+ Falls aktiv, werden das "Standardkommunikationsgerät" und "Standard Wiedergabegerät" gleichzeitig gewechselt (nützlich für Skype, TeamSpeak, etc.).
+
+
+ Benachrichtigung
+
+
+ Inklusive Beta Versionen
+
+
+ Falls aktiv, wird {0} auch nach Pre-Release Versionen auf GitHub suchen.
+
+
+ Audiodateien
+
+
+ Wähle eine Audiodatei für die Benachrichtigung.
+
+
+ Grundlegende Einstellungen
+
+
+ Akustische Einstellungen
+
+
+ Update Einstellungen
+
+
+ Updates automatisch installieren
+
+
+ Benachrichtigen falls Update verfügbar
+
+
+ Nie nach Updates suchen
+
+
+ Tooltip
+
+
+ Windows Benachrichtigung
+
+
+ Akustische Benachrichtigung
+
+
+ Keine Benachrichtigung
+
+
+ Popup Benachrichtigung
+
+
+ Angepasste akustische Benachrichtigung
+
+
+ Wiedergabegerät
+
+
+ Aufnahmegerät
+
+
+ Für beide Geräte
+
+
+ Kein Tooltip
+
+
+ Audiodatei nicht gefunden
+
+
+ Sprache
+
+
+ Verbunden
+
+
+ Getrennt
+
+
+ Tastenkürzel
+
+
+ Aktiviert das Tastenkürzel.
+
+
+ Durchwechseln
+
+
+ SoundSwitch's Taskleistensymbol beibehalten
+
+
+ Falls aktiv, wird das Symbol von SoundSwitch in der Taskleiste nicht das aktuelle "Standard Wiedergabegerät" anzeigen.
+
+
+ Updates werden automatisch ohne Benutzereingabe installiert.
+
+
+ Alle Audiogeräte
+
+
+ Nur ausgewählte Audiogeräte
+
+
+ Wähle zwischen welchen Geräten gewechselt werden soll. Entweder nur zwischen den ausgewählten oder zwischen allen.
+
+
+ Die Audiodatei für die Benachrichtigungen konnte nicht gefunden werden. {0} wechselte die Benachrichtigungseinstellungen zu {1}.
+
+
+ Windows Benachrichtigung: Das Standard Windows Pop-Up.
+Akustische Benachrichtigung: Spielt einen Sound auf dem Wiedergabegerät ab.
+Angepasste akustische Benachrichtigung: Spielt einen selbst definierten Sound ab.
+Popup Benachrichtigung: Spezielle Form eines Windows Pop-ups.
+
+
+ Die Sprache wird beim Neustart von {0} übernommen.
+Möchten Sie jetzt neustarten?
+
+
+ Neustart notwendig
+
+
\ No newline at end of file
diff --git a/SoundSwitch/Properties/SettingsString.fr.resx b/SoundSwitch/Localization/SettingsStrings.fr.resx
similarity index 75%
rename from SoundSwitch/Properties/SettingsString.fr.resx
rename to SoundSwitch/Localization/SettingsStrings.fr.resx
index d23fcf9b90..bd364da97c 100644
--- a/SoundSwitch/Properties/SettingsString.fr.resx
+++ b/SoundSwitch/Localization/SettingsStrings.fr.resx
@@ -1,193 +1,190 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 1.3
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Sélectionné
-
-
- Connecté
-
-
- Déconnecté
-
-
- Enregistrement
-
-
- Lecture
-
-
- Raccourcis
-
-
- Configuration
-
-
- Périphérique de communication
-
-
- Lancer au démarrage
-
-
- Les changements sont sauvegardés automatiquement
-
-
- Fermer
-
-
- Switch aussi le périphérique de communication. (Par exemple pour Skype, TeamSpeak, etc ...)
-
-
- Notification
-
-
- Versions Beta
-
-
- Si la case est cochée, SoundSwitch téléchargera les versions beta du program.
-
-
- Fichiers Audio
-
-
- Choissez le fichier audio pour la notification sonore.
-
-
- Décocher la case pour désactiver le raccourcis clavier.
-
-
- Configuration de base
-
-
- Configuration Audio
-
-
- Configuration des MàJ
-
-
- MàJ automatique
-
-
- L'application se mettra à jour automatiquement quand une nouvelle version est disponible.
-
-
- Information lors du survol
-
-
- Switcher entre
-
-
- Si coché, l'icone dans la barre de tache restera celle de l'application quand le périférique par défaut change.
-
-
- Garder l'icone intacte
-
-
- Auto-Install
-
-
- Télécharge et installe les mis à jours sans que vous deviez intéragir avec l'application.
-
-
- Vérifie les MàJ
-
-
- Vérifie la présence d'une nouvelle version. Si c'est le cas, prévient l'utilisateur.
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Sélectionné
+
+
+ Connecté
+
+
+ Déconnecté
+
+
+ Enregistrement
+
+
+ Lecture
+
+
+ Raccourcis
+
+
+ Configuration
+
+
+ Les changements sont sauvegardés automatiquement
+
+
+ Fermer
+
+
+ Notification
+
+
+ Si la case est cochée, {0} téléchargera les versions beta du program.
+
+
+ Fichiers Audio
+
+
+ Choissez le fichier audio pour la notification sonore.
+
+
+ Configuration de base
+
+
+ Configuration Audio
+
+
+ Configuration des MàJ
+
+
+ Switcher entre
+
+
+ Tous les périphériques audio
+
+
+ Seulement les périphériques sélectionnés
+
+
+ Notification Sonore
+
+
+ Aucune Notification
+
+
+ Notification Popup
+
+
+ Notification Sonore Personalisée
+
+
+ Périphérique de lecture
+
+
+ Périphérique d'enregistrement
+
+
+ Pas de notification
+
+
+ Le fichier audio que vous avez sélectionné pour être joué comme notification est introuvable. {0} a changé ses paramétre de notification pour {1}.
+
+
+ Fichier audio introuvable
+
+
+ Enr: {0}
+
+
+ Lec: {0}
+
\ No newline at end of file
diff --git a/SoundSwitch/Localization/SettingsStrings.resx b/SoundSwitch/Localization/SettingsStrings.resx
new file mode 100644
index 0000000000..6086670429
--- /dev/null
+++ b/SoundSwitch/Localization/SettingsStrings.resx
@@ -0,0 +1,271 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Selected
+
+
+ Connected
+
+
+ Disconnected
+
+
+ Recording
+
+
+ Playback
+
+
+ Settings
+
+
+ Hotkeys
+
+
+ Switch Default Communication Device
+
+
+ Start automatically with Windows
+
+
+ Close
+
+
+ Changes are automatically saved
+
+
+ When checked, the 'Default Communication Device' and 'Default Playback Device' are switched together (useful for Skype, TeamSpeak, e.g.).
+
+
+ Notification
+
+
+ Include Beta versions
+
+
+ When checked, {0} will also check for pre-release versions on GitHub.
+
+
+ Audio Files
+
+
+ Select the sound file for the notification.
+
+
+ Check to enable hotkeys.
+
+
+ Basic Settings
+
+
+ Audio Settings
+
+
+ Update Settings
+
+
+ Cycle through
+
+
+ Keep SoundSwitch's System Tray Icon
+
+
+ When checked, the System Tray Icon won't change when the 'Default Playback Device' changes.
+
+
+ Install updates automatically
+
+
+ Updates are installed automatically without any prompts.
+
+
+ Notify me when updates are available
+
+
+ Never check for updates
+
+
+ Tooltip on Hover
+
+
+ All audio devices
+
+
+ Only selected audio devices
+
+
+ Choose between which devices to switch. Either only between the selected or between all.
+
+
+ Windows Notification
+
+
+ Sound Notification
+
+
+ No Notification
+
+
+ Toast Notification
+
+
+ Customized Sound Notification
+
+
+ Windows Notification: The default windows tray pop-up.
+Sound Notification: Plays a sound on the switched Playback Device.
+Customized Sound Notification: Plays the specified sound on the switched Playback Device.
+Toast Notification: Uses a special form of the windows tray pop-up version.
+
+
+ Playback Device
+
+
+ Recording Device
+
+
+ For both Devices
+
+
+ No Tooltip
+
+
+ The audio file you selected to be used as notification can't be found. {0} switched the notification setting back to {1}.
+
+
+ Audio file not found
+
+
+ Rec: {0}
+
+
+ Play: {0}
+
+
+ Language
+
+
+ The language will change after restarting {0}.
+Do you want to restart now?
+
+
+ Need a restart
+
+
\ No newline at end of file
diff --git a/SoundSwitch/Properties/TrayIconStrings.Designer.cs b/SoundSwitch/Localization/TrayIconStrings.Designer.cs
similarity index 84%
rename from SoundSwitch/Properties/TrayIconStrings.Designer.cs
rename to SoundSwitch/Localization/TrayIconStrings.Designer.cs
index 038f48053f..9ac3bb5082 100644
--- a/SoundSwitch/Properties/TrayIconStrings.Designer.cs
+++ b/SoundSwitch/Localization/TrayIconStrings.Designer.cs
@@ -1,216 +1,216 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace SoundSwitch.Properties {
- using System;
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class TrayIconStrings {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal TrayIconStrings() {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SoundSwitch.Properties.TrayIconStrings", typeof(TrayIconStrings).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- ///
- /// Looks up a localized string similar to About.
- ///
- internal static string about {
- get {
- return ResourceManager.GetString("about", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to {0}: Configuration needed.
- ///
- internal static string confNeeded {
- get {
- return ResourceManager.GetString("confNeeded", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to No devices available to switch to. Open configuration by right-clicking on the icon..
- ///
- internal static string confNeededExp {
- get {
- return ResourceManager.GetString("confNeededExp", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Donate.
- ///
- internal static string donate {
- get {
- return ResourceManager.GetString("donate", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Error.
- ///
- internal static string error {
- get {
- return ResourceManager.GetString("error", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Exit.
- ///
- internal static string exit {
- get {
- return ResourceManager.GetString("exit", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Help.
- ///
- internal static string help {
- get {
- return ResourceManager.GetString("help", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Click here to update..
- ///
- internal static string howDownloadUpdate {
- get {
- return ResourceManager.GetString("howDownloadUpdate", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Mixer.
- ///
- internal static string mixer {
- get {
- return ResourceManager.GetString("mixer", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to No devices selected.
- ///
- internal static string NoDevSel {
- get {
- return ResourceManager.GetString("NoDevSel", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to No Update.
- ///
- internal static string NoUpdate {
- get {
- return ResourceManager.GetString("NoUpdate", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to {0}: Playback device switched to.
- ///
- internal static string playbackChanged {
- get {
- return ResourceManager.GetString("playbackChanged", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Playback Devices.
- ///
- internal static string playbackDev {
- get {
- return ResourceManager.GetString("playbackDev", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to {0}: Recording device switched to.
- ///
- internal static string recordingChanged {
- get {
- return ResourceManager.GetString("recordingChanged", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Settings.
- ///
- internal static string settings {
- get {
- return ResourceManager.GetString("settings", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Update Available ({0}).
- ///
- internal static string updateAvailable {
- get {
- return ResourceManager.GetString("updateAvailable", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Update for {0}({1}) is available..
- ///
- internal static string versionAvailable {
- get {
- return ResourceManager.GetString("versionAvailable", resourceCulture);
- }
- }
- }
-}
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace SoundSwitch.Localization {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class TrayIconStrings {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal TrayIconStrings() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SoundSwitch.Localization.TrayIconStrings", typeof(TrayIconStrings).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to About.
+ ///
+ internal static string about {
+ get {
+ return ResourceManager.GetString("about", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Click here to update..
+ ///
+ internal static string clickToUpdate {
+ get {
+ return ResourceManager.GetString("clickToUpdate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0}: Configuration needed.
+ ///
+ internal static string configurationNeeded {
+ get {
+ return ResourceManager.GetString("configurationNeeded", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No devices available to switch to. Open configuration by right-clicking on the icon..
+ ///
+ internal static string configurationNeededExplanation {
+ get {
+ return ResourceManager.GetString("configurationNeededExplanation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Donate.
+ ///
+ internal static string donate {
+ get {
+ return ResourceManager.GetString("donate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Error.
+ ///
+ internal static string error {
+ get {
+ return ResourceManager.GetString("error", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Exit.
+ ///
+ internal static string exit {
+ get {
+ return ResourceManager.GetString("exit", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Help.
+ ///
+ internal static string help {
+ get {
+ return ResourceManager.GetString("help", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Mixer.
+ ///
+ internal static string mixer {
+ get {
+ return ResourceManager.GetString("mixer", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No devices selected.
+ ///
+ internal static string noDevicesSelected {
+ get {
+ return ResourceManager.GetString("noDevicesSelected", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No update available.
+ ///
+ internal static string noUpdate {
+ get {
+ return ResourceManager.GetString("noUpdate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0}: Playback device switched to.
+ ///
+ internal static string playbackChanged {
+ get {
+ return ResourceManager.GetString("playbackChanged", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Playback Devices.
+ ///
+ internal static string playbackDevices {
+ get {
+ return ResourceManager.GetString("playbackDevices", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0}: Recording device switched to.
+ ///
+ internal static string recordingChanged {
+ get {
+ return ResourceManager.GetString("recordingChanged", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Settings.
+ ///
+ internal static string settings {
+ get {
+ return ResourceManager.GetString("settings", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Update Available ({0}).
+ ///
+ internal static string updateAvailable {
+ get {
+ return ResourceManager.GetString("updateAvailable", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Update for {0} ({1}) is available..
+ ///
+ internal static string versionAvailable {
+ get {
+ return ResourceManager.GetString("versionAvailable", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/SoundSwitch/Properties/AudioCycler.resx b/SoundSwitch/Localization/TrayIconStrings.de.resx
similarity index 64%
rename from SoundSwitch/Properties/AudioCycler.resx
rename to SoundSwitch/Localization/TrayIconStrings.de.resx
index 14a30abbf3..452dcf27d2 100644
--- a/SoundSwitch/Properties/AudioCycler.resx
+++ b/SoundSwitch/Localization/TrayIconStrings.de.resx
@@ -1,164 +1,171 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
-
- ..\Resources\arrow-switch-16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\arrow-switch-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\tick.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\control-equalizer-blue.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\control-volume-blue.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\exit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\page-bottom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\defaultMicrophone.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\defaultSpeakers.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\216676__robinhood76__04864-notification-music-box.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- All audio devices
-
-
- Only selected audio devices
-
-
- Cycle through
-
-
- Choose between cycling through your selected device that are connected (Default)
-Or through all the connected devices regardless of your settings.
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Kein Update verfügbar
+
+
+ Kein Gerät ausgewählt
+
+
+ Wiedergabegeräte
+
+
+ Mixer
+
+
+ Einstellungen
+
+
+ Über
+
+
+ Beenden
+
+
+ Update verfügbar ({0})
+
+
+ Update auf {0} ({1}) ist verfügbar.
+
+
+ Hier klicken um zu updaten.
+
+
+ {0}: Wiedergabegerät gewechselt zu
+
+
+ {0}: Aufnahmegerät gewechselt zu
+
+
+ {0}: Konfiguration benötigt
+
+
+ Keine Geräte vorhanden um zu wechseln. Öffne die Einstellungen mit einem rechts-klick auf das Icon in der Statusleiste.
+
+
+ Fehler
+
+
+ Hilfe
+
+
+ Spenden
+
\ No newline at end of file
diff --git a/SoundSwitch/Properties/TrayIconStrings.fr.resx b/SoundSwitch/Localization/TrayIconStrings.fr.resx
similarity index 92%
rename from SoundSwitch/Properties/TrayIconStrings.fr.resx
rename to SoundSwitch/Localization/TrayIconStrings.fr.resx
index 4770153578..f724597619 100644
--- a/SoundSwitch/Properties/TrayIconStrings.fr.resx
+++ b/SoundSwitch/Localization/TrayIconStrings.fr.resx
@@ -1,151 +1,148 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 1.3
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Pas de MàJ
-
-
- Aucun périphérique configuré
-
-
- Périphériques de Lecture
-
-
- Mélangeur
-
-
- Configuration
-
-
- A propos
-
-
- Fermer
-
-
- MàJ Disponible ({0})
-
-
- MàJ pour{0} ({1}) est disponible.
-
-
- Cliquer ici pour mettre à jour.
-
-
- {0}: Périphérique de lecture
-
-
- {0}: Périphérique d'enregistrement
-
-
- {0}: Doit être configuré
-
-
- Aucun périphérique disponible. Faites un clic droit sur l'icone pour configurer les périphériques.
-
-
- Erreur
-
-
- Aide
-
-
- Donation
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Aucun périphérique configuré
+
+
+ Périphériques de Lecture
+
+
+ Mélangeur
+
+
+ Configuration
+
+
+ A propos
+
+
+ Fermer
+
+
+ MàJ Disponible ({0})
+
+
+ MàJ pour{0} ({1}) est disponible.
+
+
+ Cliquer ici pour mettre à jour.
+
+
+ {0}: Périphérique de lecture
+
+
+ {0}: Périphérique d'enregistrement
+
+
+ {0}: Doit être configuré
+
+
+ Aucun périphérique disponible. Faites un clic droit sur l'icone pour configurer les périphériques.
+
+
+ Erreur
+
+
+ Aide
+
+
+ Donation
+
\ No newline at end of file
diff --git a/SoundSwitch/Properties/TrayIconStrings.resx b/SoundSwitch/Localization/TrayIconStrings.resx
similarity index 92%
rename from SoundSwitch/Properties/TrayIconStrings.resx
rename to SoundSwitch/Localization/TrayIconStrings.resx
index 8fdb3c4786..e64d300734 100644
--- a/SoundSwitch/Properties/TrayIconStrings.resx
+++ b/SoundSwitch/Localization/TrayIconStrings.resx
@@ -1,171 +1,171 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- No Update
-
-
- No devices selected
-
-
- Playback Devices
-
-
- Mixer
-
-
- Settings
-
-
- About
-
-
- Exit
-
-
- Update Available ({0})
-
-
- Update for {0} ({1}) is available.
-
-
- Click here to update.
-
-
- {0}: Playback device switched to
-
-
- {0}: Recording device switched to
-
-
- {0}: Configuration needed
-
-
- No devices available to switch to. Open configuration by right-clicking on the icon.
-
-
- Error
-
-
- Help
-
-
- Donate
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ No update available
+
+
+ No devices selected
+
+
+ Playback Devices
+
+
+ Mixer
+
+
+ Settings
+
+
+ About
+
+
+ Exit
+
+
+ Update Available ({0})
+
+
+ Update for {0} ({1}) is available.
+
+
+ Click here to update.
+
+
+ {0}: Playback device switched to
+
+
+ {0}: Recording device switched to
+
+
+ {0}: Configuration needed
+
+
+ No devices available to switch to. Open configuration by right-clicking on the icon.
+
+
+ Error
+
+
+ Help
+
+
+ Donate
+
\ No newline at end of file
diff --git a/SoundSwitch/Properties/UpdateFormStrings.Designer.cs b/SoundSwitch/Localization/UpdateDownloadStrings.Designer.cs
similarity index 88%
rename from SoundSwitch/Properties/UpdateFormStrings.Designer.cs
rename to SoundSwitch/Localization/UpdateDownloadStrings.Designer.cs
index 08319b8e26..9da2723169 100644
--- a/SoundSwitch/Properties/UpdateFormStrings.Designer.cs
+++ b/SoundSwitch/Localization/UpdateDownloadStrings.Designer.cs
@@ -1,117 +1,117 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace SoundSwitch.Properties {
- using System;
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class UpdateFormStrings {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal UpdateFormStrings() {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SoundSwitch.Properties.UpdateFormStrings", typeof(UpdateFormStrings).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- ///
- /// Looks up a localized string similar to Cancel.
- ///
- internal static string cancel {
- get {
- return ResourceManager.GetString("cancel", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Changelog.
- ///
- internal static string changelog {
- get {
- return ResourceManager.GetString("changelog", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Download Failed.
- ///
- internal static string downloadFailed {
- get {
- return ResourceManager.GetString("downloadFailed", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Install.
- ///
- internal static string install {
- get {
- return ResourceManager.GetString("install", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The downloaded update doesn't have the right signature. We advise you to delete the file and contact the developer..
- ///
- internal static string notSigned {
- get {
- return ResourceManager.GetString("notSigned", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Wrong Digital Signature.
- ///
- internal static string notSignedTitle {
- get {
- return ResourceManager.GetString("notSignedTitle", resourceCulture);
- }
- }
- }
-}
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace SoundSwitch.Localization {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class UpdateDownloadStrings {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal UpdateDownloadStrings() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SoundSwitch.Localization.UpdateDownloadStrings", typeof(UpdateDownloadStrings).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Cancel.
+ ///
+ internal static string cancel {
+ get {
+ return ResourceManager.GetString("cancel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Changelog.
+ ///
+ internal static string changelog {
+ get {
+ return ResourceManager.GetString("changelog", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Download Failed.
+ ///
+ internal static string downloadFailed {
+ get {
+ return ResourceManager.GetString("downloadFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Install.
+ ///
+ internal static string install {
+ get {
+ return ResourceManager.GetString("install", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The downloaded update isn't signed with a valid signature. We advise you to delete the file and contact the developer!.
+ ///
+ internal static string notSigned {
+ get {
+ return ResourceManager.GetString("notSigned", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Invalid Digital Signature.
+ ///
+ internal static string notSignedTitle {
+ get {
+ return ResourceManager.GetString("notSignedTitle", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/SoundSwitch/Properties/TooltipInfo.fr.resx b/SoundSwitch/Localization/UpdateDownloadStrings.de.resx
similarity index 85%
rename from SoundSwitch/Properties/TooltipInfo.fr.resx
rename to SoundSwitch/Localization/UpdateDownloadStrings.de.resx
index a4c1a49a1c..70812bb7b7 100644
--- a/SoundSwitch/Properties/TooltipInfo.fr.resx
+++ b/SoundSwitch/Localization/UpdateDownloadStrings.de.resx
@@ -1,121 +1,118 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 1.3
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Périphérique d'enregistrement
-
-
- Périphérique de lecture
-
-
- Tout les périphériques
-
-
- Périphérique Actif
-
-
- Pas de notification
-
-
- Enr: {0}
-
-
- Lec: {0}
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Download fehlgeschlagen
+
+
+ Installieren
+
+
+ Abbrechen
+
+
+ Änderungen
+
+
+ Die heruntergeladenen Dateien sind nicht mit einer gültigen Signatur versehen. Es wird empfohlen die Updatedateien zu löschen und einen Entwickler zu kontaktieren!
+
+
+ Ungültige digitale Signatur
+
\ No newline at end of file
diff --git a/SoundSwitch/Properties/UpdateFormStrings.fr.resx b/SoundSwitch/Localization/UpdateDownloadStrings.fr.resx
similarity index 95%
rename from SoundSwitch/Properties/UpdateFormStrings.fr.resx
rename to SoundSwitch/Localization/UpdateDownloadStrings.fr.resx
index 956c243c83..9e7817b024 100644
--- a/SoundSwitch/Properties/UpdateFormStrings.fr.resx
+++ b/SoundSwitch/Localization/UpdateDownloadStrings.fr.resx
@@ -1,118 +1,115 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 1.3
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Le téléchargement a échoué
-
-
- Installer
-
-
- Annuler
-
-
- Changements
-
-
- La mise à jour téléchargée n'est pas signée par SoundSwitch. Nous vous conseillons de supprimer le fichier et de contacter le dévelopeur.
-
-
- Signature Digitale Invalide
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Le téléchargement a échoué
+
+
+ Installer
+
+
+ Annuler
+
+
+ Changements
+
+
+ Signature Digitale Invalide
+
\ No newline at end of file
diff --git a/SoundSwitch/Properties/UpdateFormStrings.resx b/SoundSwitch/Localization/UpdateDownloadStrings.resx
similarity index 94%
rename from SoundSwitch/Properties/UpdateFormStrings.resx
rename to SoundSwitch/Localization/UpdateDownloadStrings.resx
index ccbffffa42..dccd1bcdf0 100644
--- a/SoundSwitch/Properties/UpdateFormStrings.resx
+++ b/SoundSwitch/Localization/UpdateDownloadStrings.resx
@@ -1,118 +1,118 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 1.3
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Download Failed
-
-
- Install
-
-
- Cancel
-
-
- Changelog
-
-
- The downloaded update doesn't have the right signature. We advise you to delete the file and contact the developer.
-
-
- Wrong Digital Signature
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Download Failed
+
+
+ Install
+
+
+ Cancel
+
+
+ Changelog
+
+
+ The downloaded update isn't signed with a valid signature. We advise you to delete the file and contact the developer!
+
+
+ Invalid Digital Signature
+
\ No newline at end of file
diff --git a/SoundSwitch/Model/AppModel.cs b/SoundSwitch/Model/AppModel.cs
index 20a8594c7a..04c374b212 100644
--- a/SoundSwitch/Model/AppModel.cs
+++ b/SoundSwitch/Model/AppModel.cs
@@ -1,6 +1,6 @@
/********************************************************************
* Copyright (C) 2015 Jeroen Pelgrims
-* Copyright (C) 2015 Antoine Aflalo
+* Copyright (C) 2015-2017 Antoine Aflalo
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -16,7 +16,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Windows.Forms;
using AudioEndPointControllerWrapper;
using Microsoft.WindowsAPICodePack.ApplicationServices;
using SoundSwitch.Framework;
@@ -25,6 +24,7 @@
using SoundSwitch.Framework.DeviceCyclerManager;
using SoundSwitch.Framework.Updater;
using SoundSwitch.Framework.NotificationManager;
+using SoundSwitch.Localization;
using SoundSwitch.Util;
namespace SoundSwitch.Model
@@ -150,6 +150,16 @@ public UpdateMode UpdateMode
}
}
+ public Language Language
+ {
+ get { return AppConfigs.Configuration.Language; }
+ set
+ {
+ AppConfigs.Configuration.Language = value;
+ AppConfigs.Configuration.Save();
+ }
+ }
+
#region Misc settings
///
diff --git a/SoundSwitch/Model/AudioDeviceLister.cs b/SoundSwitch/Model/AudioDeviceLister.cs
index 6a0f3dcae4..3827c9dafe 100644
--- a/SoundSwitch/Model/AudioDeviceLister.cs
+++ b/SoundSwitch/Model/AudioDeviceLister.cs
@@ -1,21 +1,18 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
********************************************************************/
-using System;
using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
using System.Threading;
using AudioEndPoint;
using AudioEndPointControllerWrapper;
@@ -70,7 +67,7 @@ private void AudioControllerOnDeviceAdded(object sender, DeviceAddedEvent device
///
- /// Get the playback device in the set state
+ /// Get the playback device in the set state
///
///
public ICollection GetPlaybackDevices()
@@ -133,7 +130,7 @@ private void Refresh()
}
///
- /// Get the recording device in the set state
+ /// Get the recording device in the set state
///
///
public ICollection GetRecordingDevices()
diff --git a/SoundSwitch/Model/Events.cs b/SoundSwitch/Model/Events.cs
index ce94f1f1db..cce7ff1cab 100644
--- a/SoundSwitch/Model/Events.cs
+++ b/SoundSwitch/Model/Events.cs
@@ -1,5 +1,5 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
+* Copyright (C) 2015-2017 Antoine Aflalo
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
diff --git a/SoundSwitch/Model/IAppModel.cs b/SoundSwitch/Model/IAppModel.cs
index 7cf658f732..bec4955489 100644
--- a/SoundSwitch/Model/IAppModel.cs
+++ b/SoundSwitch/Model/IAppModel.cs
@@ -1,6 +1,6 @@
/********************************************************************
* Copyright (C) 2015 Jeroen Pelgrims
-* Copyright (C) 2015 Antoine Aflalo
+* Copyright (C) 2015-2017 Antoine Aflalo
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -15,12 +15,12 @@
using System;
using System.Collections.Generic;
-using System.Windows.Forms;
using AudioEndPointControllerWrapper;
using SoundSwitch.Framework;
using SoundSwitch.Framework.Audio;
using SoundSwitch.Framework.NotificationManager;
using SoundSwitch.Framework.Updater;
+using SoundSwitch.Localization;
using SoundSwitch.Util;
namespace SoundSwitch.Model
@@ -30,32 +30,32 @@ public interface IAppModel
#region Properties
///
- /// The list of Playback device selected to be used for Switching default devices.
+ /// The list of Playback device selected to be used for Switching default devices.
///
HashSet SelectedPlaybackDevicesList { get; }
///
- /// An union between the Active of Windows and
+ /// An union between the Active of Windows and
///
ICollection AvailablePlaybackDevices { get; }
///
- /// The list of Recording device selected to be used for Switching default devices.
+ /// The list of Recording device selected to be used for Switching default devices.
///
HashSet SelectedRecordingDevicesList { get; }
///
- /// An union between the Active of Windows and
+ /// An union between the Active of Windows and
///
ICollection AvailableRecordingDevices { get; }
///
- /// If the Playback device need also to be set for Communications.
+ /// If the Playback device need also to be set for Communications.
///
bool SetCommunications { get; set; }
///
- /// If the application runs at windows startup
+ /// If the application runs at windows startup.
///
bool RunAtStartup { get; set; }
@@ -80,16 +80,21 @@ public interface IAppModel
bool IncludeBetaVersions { get; set; }
///
- /// The sound to be played for a Custom notification
- /// Sound file doesn't exists or not set
+ /// The sound to be played for a Custom notification.
+ /// Sound file doesn't exists or not set.
///
CachedSound CustomNotificationSound { get; set; }
///
- /// Specifies how the application searches for updates and installs them
+ /// Specifies how the application searches for updates and installs them.
///
UpdateMode UpdateMode { get; set; }
+ ///
+ /// The language of the application.
+ ///
+ Language Language { get; set; }
+
#endregion
#region Events
diff --git a/SoundSwitch/Model/IAudioDeviceLister.cs b/SoundSwitch/Model/IAudioDeviceLister.cs
index 18f3661d49..d42a8e3668 100644
--- a/SoundSwitch/Model/IAudioDeviceLister.cs
+++ b/SoundSwitch/Model/IAudioDeviceLister.cs
@@ -1,4 +1,18 @@
-using System.Collections.Generic;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System.Collections.Generic;
using AudioEndPointControllerWrapper;
namespace SoundSwitch.Model
diff --git a/SoundSwitch/Program.cs b/SoundSwitch/Program.cs
index 1532f81b5f..fbfbd1d9eb 100644
--- a/SoundSwitch/Program.cs
+++ b/SoundSwitch/Program.cs
@@ -1,6 +1,6 @@
/********************************************************************
* Copyright (C) 2015 Jeroen Pelgrims
-* Copyright (C) 2015 Antoine Aflalo
+* Copyright (C) 2015-2017 Antoine Aflalo
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,7 +20,6 @@
using System.Runtime.ExceptionServices;
using System.Runtime.Remoting;
using System.Threading;
-using System.Threading.Tasks;
using System.Windows.Forms;
using AudioEndPointControllerWrapper;
using SoundSwitch.Framework;
@@ -28,6 +27,7 @@
using SoundSwitch.Framework.IPC;
using SoundSwitch.Framework.Minidump;
using SoundSwitch.Framework.Updater;
+using SoundSwitch.Localization;
using SoundSwitch.Model;
using SoundSwitch.Util;
@@ -50,10 +50,10 @@ private static void Main()
AppLogger.Log.Info("Set Exception Handler");
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);
WindowsAPIAdapter.Start(Application_ThreadException);
-
#else
WindowsAPIAdapter.Start();
#endif
+ Thread.CurrentThread.CurrentUICulture = LanguageParser.ParseLanguage(AppModel.Instance.Language);
using (new Mutex(true, Application.ProductName, out createdNew))
{
@@ -73,7 +73,7 @@ private static void Main()
}
catch (RemotingException e)
{
- AppLogger.Log.Error("Can't stop the other app ", e);
+ AppLogger.Log.Error("Unable to stop another running application ", e);
Application.Exit();
return;
}
@@ -84,14 +84,14 @@ private static void Main()
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
- //Manage the Closing events send by Windows
- //Since this app don't use a Form as "main window" the app doesn't close
- //when it should without this.
+ // Manage the Closing events send by Windows
+ // Since this app don't use a Form as "main window" the app doesn't close
+ // when it should without this.
WindowsAPIAdapter.RestartManagerTriggered += (sender, @event) =>
{
using (AppLogger.Log.DebugCall())
{
- AppLogger.Log.Debug("Restart Event recieved", @event);
+ AppLogger.Log.Debug("Restart Event received", @event);
switch (@event.Type)
{
case WindowsAPIAdapter.RestartManagerEventType.Query:
@@ -148,18 +148,19 @@ private static void Main()
}
#if !DEBUG
}
-
catch (Exception ex)
{
HandleException(ex);
-
}
#endif
}
WindowsAPIAdapter.Stop();
}
- private static void RestartApp()
+ ///
+ /// Restarts the application itself.
+ ///
+ public static void RestartApp()
{
var info = new ProcessStartInfo
{
@@ -185,7 +186,7 @@ private static void HandleException(Exception exception)
$"{Application.ProductName}-crashlog-{DateTime.UtcNow.Date.Day}_{DateTime.UtcNow.Date.Month}_{DateTime.UtcNow.Date.Year}.zip");
var message =
$"It seems {Application.ProductName} has crashed.\n" +
- $"Do you want to save a log of the error that ocurred?\n" +
+ $"Do you want to save a log of the error that occurred?\n" +
$"This could be useful to fix bugs. Please post this file in the issues section.\n" +
$"File Location: " + zipFile;
var result = MessageBox.Show(message, $"{Application.ProductName} crashed...", MessageBoxButtons.YesNo,
@@ -204,7 +205,7 @@ private static void HandleException(Exception exception)
MiniDump.Option.Normal | MiniDump.Option.WithThreadInfo | MiniDump.Option.WithHandleData |
MiniDump.Option.WithDataSegs, MiniDump.ExceptionInfo.Present);
}
- AppLogger.Log.Fatal("Exception Occured ", exception);
+ AppLogger.Log.Fatal("Exception Occurred ", exception);
using (new AppLogger.LogRestartor())
{
if (File.Exists(zipFile))
diff --git a/SoundSwitch/Properties/AudioCycler.Designer.cs b/SoundSwitch/Properties/AudioCycler.Designer.cs
deleted file mode 100644
index 2f76f0c9c1..0000000000
--- a/SoundSwitch/Properties/AudioCycler.Designer.cs
+++ /dev/null
@@ -1,199 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace SoundSwitch.Properties {
- using System;
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class AudioCycler {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal AudioCycler() {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SoundSwitch.Properties.AudioCycler", typeof(AudioCycler).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- ///
- /// Looks up a localized string similar to Only selected audio devices.
- ///
- internal static string actives {
- get {
- return ResourceManager.GetString("actives", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to All audio devices.
- ///
- internal static string all {
- get {
- return ResourceManager.GetString("all", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap Check {
- get {
- object obj = ResourceManager.GetObject("Check", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
- ///
- internal static System.Drawing.Icon defaultMicrophone {
- get {
- object obj = ResourceManager.GetObject("defaultMicrophone", resourceCulture);
- return ((System.Drawing.Icon)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
- ///
- internal static System.Drawing.Icon defaultSpeakers {
- get {
- object obj = ResourceManager.GetObject("defaultSpeakers", resourceCulture);
- return ((System.Drawing.Icon)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap exit {
- get {
- object obj = ResourceManager.GetObject("exit", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap Mixer {
- get {
- object obj = ResourceManager.GetObject("Mixer", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
- ///
- internal static System.IO.UnmanagedMemoryStream NotificationSound {
- get {
- return ResourceManager.GetStream("NotificationSound", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Cycle through.
- ///
- internal static string optionLabel {
- get {
- return ResourceManager.GetString("optionLabel", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap PlaybackDevices {
- get {
- object obj = ResourceManager.GetObject("PlaybackDevices", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap SoundSwitch16 {
- get {
- object obj = ResourceManager.GetObject("SoundSwitch16", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap SoundSwitch48 {
- get {
- object obj = ResourceManager.GetObject("SoundSwitch48", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized string similar to Choose between cycling through your selected device that are connected (Default)
- ///Or through all the connected devices regardless of your settings..
- ///
- internal static string tooltipExplanation {
- get {
- return ResourceManager.GetString("tooltipExplanation", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap Update {
- get {
- object obj = ResourceManager.GetObject("Update", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
- }
-}
diff --git a/SoundSwitch/Properties/AudioCycler.fr.resx b/SoundSwitch/Properties/AudioCycler.fr.resx
deleted file mode 100644
index 0490a0d51c..0000000000
--- a/SoundSwitch/Properties/AudioCycler.fr.resx
+++ /dev/null
@@ -1,164 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
-
- ..\Resources\arrow-switch-16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\arrow-switch-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\tick.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\control-equalizer-blue.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\control-volume-blue.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\exit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\page-bottom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\defaultMicrophone.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\defaultSpeakers.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\216676__robinhood76__04864-notification-music-box.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Tous les périphériques audio
-
-
- Seulement les périphériques sélectionnés
-
-
- Switcher avec
-
-
- Choissiez entre switcher le son sur les cartes son que vous avez sélectionner (défault)
-Ou sur toutes les cartes son connectées quelque soit votre sélection.
-
-
\ No newline at end of file
diff --git a/SoundSwitch/Properties/Notifications.Designer.cs b/SoundSwitch/Properties/Notifications.Designer.cs
deleted file mode 100644
index a39598e161..0000000000
--- a/SoundSwitch/Properties/Notifications.Designer.cs
+++ /dev/null
@@ -1,155 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace SoundSwitch.Properties {
- using System;
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Notifications {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Notifications() {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SoundSwitch.Properties.Notifications", typeof(Notifications).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- ///
- /// Looks up a localized string similar to The audio file you selected to be use as notification can't be found. {0} switched the notification setting back to {1}..
- ///
- internal static string AudioFileNotFound {
- get {
- return ResourceManager.GetString("AudioFileNotFound", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Audio file not found.
- ///
- internal static string AudioFileNotFoundTitle {
- get {
- return ResourceManager.GetString("AudioFileNotFoundTitle", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Window's Notification: Use the usual OS notification system
- ///Sound Notification: Play a sound on the switched audio device
- ///No Notification: ... No Notification at all..
- ///
- internal static string explanation {
- get {
- return ResourceManager.GetString("explanation", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Customized Sound Notification.
- ///
- internal static string NotifCustom {
- get {
- return ResourceManager.GetString("NotifCustom", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to No Notification.
- ///
- internal static string NotifNone {
- get {
- return ResourceManager.GetString("NotifNone", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Sound Notification.
- ///
- internal static string NotifSound {
- get {
- return ResourceManager.GetString("NotifSound", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Toast Notification (>= Win 8).
- ///
- internal static string NotifToast {
- get {
- return ResourceManager.GetString("NotifToast", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Windows's Notification.
- ///
- internal static string NotifWindows {
- get {
- return ResourceManager.GetString("NotifWindows", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Playback Device.
- ///
- internal static string PlaybackChanged {
- get {
- return ResourceManager.GetString("PlaybackChanged", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Recording Device.
- ///
- internal static string RecordingChanged {
- get {
- return ResourceManager.GetString("RecordingChanged", resourceCulture);
- }
- }
- }
-}
diff --git a/SoundSwitch/Properties/Notifications.fr.resx b/SoundSwitch/Properties/Notifications.fr.resx
deleted file mode 100644
index 5709460533..0000000000
--- a/SoundSwitch/Properties/Notifications.fr.resx
+++ /dev/null
@@ -1,132 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 1.3
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Notification de Windows
-
-
- Aucune Notification
-
-
- Notification Sonore
-
-
- Notification de Windows: Utilise le système de notification de Windows.
-Notification Sonore: Joue un signal sonore sur le périfique audio lors du "switch".
-Aucune Notification: ... Aucune Notification.
-
-
- Notification Sonore Personalisée
-
-
- Le fichier audio que vous avez sélectionné pour être joué comme notification est introuvable. {0} a changé ses paramétre de notification pour {1}.
-
-
- Fichier audio introuvable
-
-
- Périphérique de lecture
-
-
- Périphérique d'enregistrement
-
-
- Notification Popup
-
-
\ No newline at end of file
diff --git a/SoundSwitch/Properties/Notifications.resx b/SoundSwitch/Properties/Notifications.resx
deleted file mode 100644
index c701e578d5..0000000000
--- a/SoundSwitch/Properties/Notifications.resx
+++ /dev/null
@@ -1,132 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 1.3
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Windows's Notification
-
-
- No Notification
-
-
- Sound Notification
-
-
- Window's Notification: Use the usual OS notification system
-Sound Notification: Play a sound on the switched audio device
-No Notification: ... No Notification at all.
-
-
- Customized Sound Notification
-
-
- The audio file you selected to be use as notification can't be found. {0} switched the notification setting back to {1}.
-
-
- Audio file not found
-
-
- Toast Notification
-
-
- Playback Device
-
-
- Recording Device
-
-
\ No newline at end of file
diff --git a/SoundSwitch/Properties/SettingsString.Designer.cs b/SoundSwitch/Properties/SettingsString.Designer.cs
deleted file mode 100644
index 12744b8f8d..0000000000
--- a/SoundSwitch/Properties/SettingsString.Designer.cs
+++ /dev/null
@@ -1,342 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace SoundSwitch.Properties {
- using System;
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class SettingsString {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal SettingsString() {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SoundSwitch.Properties.SettingsString", typeof(SettingsString).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- ///
- /// Looks up a localized string similar to Audio Settings.
- ///
- internal static string audioSettings {
- get {
- return ResourceManager.GetString("audioSettings", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Auto-Install.
- ///
- internal static string autoInstall {
- get {
- return ResourceManager.GetString("autoInstall", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Download and update the application in the background without needing any user interaction..
- ///
- internal static string autoInstallHelp {
- get {
- return ResourceManager.GetString("autoInstallHelp", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Basic Settings.
- ///
- internal static string basicSettings {
- get {
- return ResourceManager.GetString("basicSettings", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Beta Versions.
- ///
- internal static string beta {
- get {
- return ResourceManager.GetString("beta", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to When checked, SoundSwitch will also check for pre-release version on GitHub.
- ///
- internal static string betaExplanation {
- get {
- return ResourceManager.GetString("betaExplanation", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Check for Update.
- ///
- internal static string checkUpdate {
- get {
- return ResourceManager.GetString("checkUpdate", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Check periodically if there is an update. When found, notify the user of the update..
- ///
- internal static string checkUpdateHelp {
- get {
- return ResourceManager.GetString("checkUpdateHelp", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Close.
- ///
- internal static string close {
- get {
- return ResourceManager.GetString("close", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Changes are automatically saved.
- ///
- internal static string closeTooltip {
- get {
- return ResourceManager.GetString("closeTooltip", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to When checked, switch also the default Communications device. (By example for Skype, TeamSpeak, etc.).
- ///
- internal static string commTooltip {
- get {
- return ResourceManager.GetString("commTooltip", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Connected.
- ///
- internal static string connected {
- get {
- return ResourceManager.GetString("connected", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Cycle through.
- ///
- internal static string cycleDevice {
- get {
- return ResourceManager.GetString("cycleDevice", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Disconnected.
- ///
- internal static string disconnected {
- get {
- return ResourceManager.GetString("disconnected", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Hotkeys.
- ///
- internal static string hotkeys {
- get {
- return ResourceManager.GetString("hotkeys", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Uncheck the checkbox to disable the Hotkeys..
- ///
- internal static string hotkeyUncheckExplanation {
- get {
- return ResourceManager.GetString("hotkeyUncheckExplanation", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Keep systray icon.
- ///
- internal static string keepSystrayIcon {
- get {
- return ResourceManager.GetString("keepSystrayIcon", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to If selected, the Systray Icon won't change when the default device changes..
- ///
- internal static string keepSystrayIconHelp {
- get {
- return ResourceManager.GetString("keepSystrayIconHelp", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Notification.
- ///
- internal static string notification {
- get {
- return ResourceManager.GetString("notification", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Playback.
- ///
- internal static string playback {
- get {
- return ResourceManager.GetString("playback", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Recording.
- ///
- internal static string recording {
- get {
- return ResourceManager.GetString("recording", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Run at Startup.
- ///
- internal static string runStartup {
- get {
- return ResourceManager.GetString("runStartup", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Selected.
- ///
- internal static string selected {
- get {
- return ResourceManager.GetString("selected", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Select the sound file for the notification..
- ///
- internal static string selectSoundButtonTooltip {
- get {
- return ResourceManager.GetString("selectSoundButtonTooltip", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Communications Device.
- ///
- internal static string setComm {
- get {
- return ResourceManager.GetString("setComm", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Settings.
- ///
- internal static string settings {
- get {
- return ResourceManager.GetString("settings", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Automatic Update.
- ///
- internal static string stealthUpdate {
- get {
- return ResourceManager.GetString("stealthUpdate", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The application will update itself automatically when a new version is out..
- ///
- internal static string stealthUpdateExplanation {
- get {
- return ResourceManager.GetString("stealthUpdateExplanation", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Audio Files.
- ///
- internal static string supportedAudio {
- get {
- return ResourceManager.GetString("supportedAudio", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Tooltip on hover.
- ///
- internal static string tooltip {
- get {
- return ResourceManager.GetString("tooltip", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Update Settings.
- ///
- internal static string updateSettings {
- get {
- return ResourceManager.GetString("updateSettings", resourceCulture);
- }
- }
- }
-}
diff --git a/SoundSwitch/Properties/SettingsString.resx b/SoundSwitch/Properties/SettingsString.resx
deleted file mode 100644
index e9d97daec3..0000000000
--- a/SoundSwitch/Properties/SettingsString.resx
+++ /dev/null
@@ -1,193 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 1.3
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Selected
-
-
- Connected
-
-
- Disconnected
-
-
- Recording
-
-
- Playback
-
-
- Settings
-
-
- Hotkeys
-
-
- Communications Device
-
-
- Run at Startup
-
-
- Close
-
-
- Changes are automatically saved
-
-
- When checked, switch also the default Communications device. (By example for Skype, TeamSpeak, etc.)
-
-
- Notification
-
-
- Beta Versions
-
-
- When checked, SoundSwitch will also check for pre-release version on GitHub
-
-
- Audio Files
-
-
- Select the sound file for the notification.
-
-
- Uncheck the checkbox to disable the Hotkeys.
-
-
- Basic Settings
-
-
- Audio Settings
-
-
- Update Settings
-
-
- Automatic Update
-
-
- The application will update itself automatically when a new version is out.
-
-
- Tooltip on hover
-
-
- Cycle through
-
-
- Keep systray icon
-
-
- If selected, the Systray Icon won't change when the default device changes.
-
-
- Auto-Install
-
-
- Download and update the application in the background without needing any user interaction.
-
-
- Check for Update
-
-
- Check periodically if there is an update. When found, notify the user of the update.
-
-
\ No newline at end of file
diff --git a/SoundSwitch/Properties/TooltipInfo.Designer.cs b/SoundSwitch/Properties/TooltipInfo.Designer.cs
deleted file mode 100644
index dfe4f1e7eb..0000000000
--- a/SoundSwitch/Properties/TooltipInfo.Designer.cs
+++ /dev/null
@@ -1,126 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace SoundSwitch.Properties {
- using System;
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class TooltipInfo {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal TooltipInfo() {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SoundSwitch.Properties.TooltipInfo", typeof(TooltipInfo).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- ///
- /// Looks up a localized string similar to Both Devices.
- ///
- internal static string both {
- get {
- return ResourceManager.GetString("both", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to No tooltip.
- ///
- internal static string none {
- get {
- return ResourceManager.GetString("none", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Playback Device.
- ///
- internal static string playback {
- get {
- return ResourceManager.GetString("playback", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Play: {0}.
- ///
- internal static string playbackActive {
- get {
- return ResourceManager.GetString("playbackActive", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Recording Device.
- ///
- internal static string recording {
- get {
- return ResourceManager.GetString("recording", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Rec: {0}.
- ///
- internal static string recordingActive {
- get {
- return ResourceManager.GetString("recordingActive", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Active Device.
- ///
- internal static string titleTooltip {
- get {
- return ResourceManager.GetString("titleTooltip", resourceCulture);
- }
- }
- }
-}
diff --git a/SoundSwitch/SoundSwitch.csproj b/SoundSwitch/SoundSwitch.csproj
index 6aa4701fb6..7a26c5b439 100644
--- a/SoundSwitch/SoundSwitch.csproj
+++ b/SoundSwitch/SoundSwitch.csproj
@@ -1,516 +1,498 @@
-
-
-
- Debug
- x86
- 10.0.20506
- 2.0
- {A17ECFE0-C4E2-4410-839A-14DF8C11428D}
- WinExe
- Properties
- SoundSwitch
- SoundSwitch
- v4.6.2
- 512
- x86
-
-
- SoundSwitch.Program
- true
- publish/
- true
- Web
- true
- Background
- 7
- Days
- false
- false
- true
- http://soundswitch.codeplex.com/releases/clickonce/
- http://soundswitch.codeplex.com/releases/clickonce/
- http://soundswitch.codeplex.com/workitem/list/basic
- http://soundswitch.codeplex.com/workitem/list/basic
- SoundSwitch
- Jeroen Pelgrims
- true
- publish.htm
- false
- 7
- 2.4.1.%2a
- false
- true
- true
-
-
- true
- full
- false
- $(SolutionDir)\bin\x86\Debug\
- DEBUG;TRACE
- prompt
- 4
- false
- false
- x86
-
-
- pdbonly
- true
- $(SolutionDir)\bin\x86\Release\
- TRACE
- prompt
- 4
- false
- x86
-
-
- 146F241FA649F5E23DC3C502BA7FF92199A2A8D9
-
-
- SoundSwitch_TemporaryKey.pfx
-
-
- false
-
-
- false
-
-
- 8.0
-
-
- LocalIntranet
-
-
- Resources\arrow_switch.ico
-
-
- false
-
-
- true
- $(SolutionDir)\bin\x64\Debug\
- DEBUG;TRACE
- full
- AnyCPU
- $(SolutionDir)\bin\Debug\SoundSwitch.exe.CodeAnalysisLog.xml
- true
- GlobalSuppressions.cs
- prompt
- MinimumRecommendedRules.ruleset
- ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets
- ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules
- false
- false
- false
- false
-
-
- $(SolutionDir)\bin\x64\Release\
- TRACE
- true
- pdbonly
- x64
- $(SolutionDir)\bin\Release\SoundSwitch.exe.CodeAnalysisLog.xml
- true
- GlobalSuppressions.cs
- prompt
- MinimumRecommendedRules.ruleset
- ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets
- ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules
- false
- false
-
-
- true
- $(SolutionDir)\bin\x64\Debug\
- DEBUG;TRACE
- full
- x64
- true
- prompt
- MinimumRecommendedRules.ruleset
-
-
- $(SolutionDir)\bin\x64\Release\
- TRACE
- true
- pdbonly
- x64
- false
- prompt
- MinimumRecommendedRules.ruleset
- false
-
-
- $(SolutionDir)\bin\x86\AppVeyor\
- TRACE
- true
- pdbonly
- x86
- prompt
- MinimumRecommendedRules.ruleset
-
-
- $(SolutionDir)\bin\AppVeyor\
- TRACE
- true
- pdbonly
- x64
- false
- prompt
- MinimumRecommendedRules.ruleset
-
-
- $(SolutionDir)\bin\x64\AppVeyor\
- TRACE
- true
- pdbonly
- x64
- false
- prompt
- MinimumRecommendedRules.ruleset
- true
-
-
- $(SolutionDir)\bin\x86\Release\
- TRACE;BETA
- true
- pdbonly
- x86
- prompt
- MinimumRecommendedRules.ruleset
-
-
- bin\Beta\
- TRACE
- true
- pdbonly
- x64
- false
- prompt
- MinimumRecommendedRules.ruleset
-
-
- $(SolutionDir)\bin\x64\Release\
- TRACE;BETA
- true
- pdbonly
- x64
- false
- prompt
- MinimumRecommendedRules.ruleset
-
-
-
- ..\packages\CommonMark.NET.0.15.0\lib\net45\CommonMark.dll
- True
-
-
- ..\packages\Microsoft.Toolkit.Uwp.Notifications.1.3.1\lib\dotnet\Microsoft.Toolkit.Uwp.Notifications.dll
- True
-
-
- ..\packages\Microsoft.WindowsAPICodePack-Core.1.1.0.2\lib\Microsoft.WindowsAPICodePack.dll
- True
-
-
- ..\packages\NAudio.1.8.0\lib\net35\NAudio.dll
- True
-
-
- ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll
- True
-
-
-
-
-
- C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\Facades\System.Runtime.dll
-
-
-
-
- ..\packages\TracerX-Logger.6.1\lib\TracerX-Logger.dll
- True
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Form
-
-
-
- True
- True
- AboutStrings.resx
-
-
- True
- True
- AudioCycler.resx
-
-
- True
- True
- Notifications.resx
-
-
- True
- True
- SettingsString.resx
-
-
- True
- True
- TooltipInfo.resx
-
-
- True
- True
- TrayIconStrings.resx
-
-
- True
- True
- UpdateFormStrings.resx
-
-
-
-
-
-
-
- Component
-
-
- Component
-
-
- Form
-
-
- About.cs
-
-
- Form
-
-
- Settings.cs
-
-
- Form
-
-
- UpdateDownloadForm.cs
-
-
-
- Component
-
-
-
-
-
-
-
- ResXFileCodeGenerator
- AboutStrings.Designer.cs
-
-
- Designer
-
-
- ResXFileCodeGenerator
- Designer
- AudioCycler.Designer.cs
-
-
-
- ResXFileCodeGenerator
- Notifications.Designer.cs
-
-
- ResXFileCodeGenerator
- Resources.Designer.cs
- Designer
-
-
- True
- Resources.resx
- True
-
-
-
- Designer
- ResXFileCodeGenerator
- SettingsString.Designer.cs
-
-
-
- ResXFileCodeGenerator
- TooltipInfo.Designer.cs
-
-
-
- ResXFileCodeGenerator
- TrayIconStrings.Designer.cs
- Designer
-
-
-
- ResXFileCodeGenerator
- UpdateFormStrings.Designer.cs
- Designer
-
-
-
-
-
-
- False
- Microsoft .NET Framework 4.5 %28x86 and x64%29
- true
-
-
- False
- .NET Framework 3.5 SP1 Client Profile
- false
-
-
- False
- .NET Framework 3.5 SP1
- false
-
-
- False
- Visual C++ "14" Runtime Libraries %28x64%29
- true
-
-
- False
- Visual C++ "14" Runtime Libraries %28x86%29
- true
-
-
- False
- Windows Installer 4.5
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
-
-
- {115bf2b4-b3be-446d-ba76-348e274258f7}
- Audio.EndPoint.Controller.Wrapper
-
-
-
-
-
-
-
-
+
+
+
+ Debug
+ x86
+ 10.0.20506
+ 2.0
+ {A17ECFE0-C4E2-4410-839A-14DF8C11428D}
+ WinExe
+ Properties
+ SoundSwitch
+ SoundSwitch
+ v4.6.2
+ 512
+ x86
+
+
+ SoundSwitch.Program
+ true
+ publish/
+ true
+ Web
+ true
+ Background
+ 7
+ Days
+ false
+ false
+ true
+ http://soundswitch.codeplex.com/releases/clickonce/
+ http://soundswitch.codeplex.com/releases/clickonce/
+ http://soundswitch.codeplex.com/workitem/list/basic
+ http://soundswitch.codeplex.com/workitem/list/basic
+ SoundSwitch
+ Jeroen Pelgrims
+ true
+ publish.htm
+ false
+ 7
+ 2.4.1.%2a
+ false
+ true
+ true
+
+
+ true
+ full
+ false
+ $(SolutionDir)\bin\x86\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+ false
+ false
+ x86
+
+
+ pdbonly
+ true
+ $(SolutionDir)\bin\x86\Release\
+ TRACE
+ prompt
+ 4
+ false
+ x86
+
+
+ 146F241FA649F5E23DC3C502BA7FF92199A2A8D9
+
+
+ SoundSwitch_TemporaryKey.pfx
+
+
+ false
+
+
+ false
+
+
+ 8.0
+
+
+ LocalIntranet
+
+
+ Resources\arrow_switch.ico
+
+
+ false
+
+
+ true
+ $(SolutionDir)\bin\x64\Debug\
+ DEBUG;TRACE
+ full
+ AnyCPU
+ $(SolutionDir)\bin\Debug\SoundSwitch.exe.CodeAnalysisLog.xml
+ true
+ GlobalSuppressions.cs
+ prompt
+ MinimumRecommendedRules.ruleset
+ ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets
+ ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules
+ false
+ false
+ false
+ false
+
+
+ $(SolutionDir)\bin\x64\Release\
+ TRACE
+ true
+ pdbonly
+ x64
+ $(SolutionDir)\bin\Release\SoundSwitch.exe.CodeAnalysisLog.xml
+ true
+ GlobalSuppressions.cs
+ prompt
+ MinimumRecommendedRules.ruleset
+ ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets
+ ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules
+ false
+ false
+
+
+ true
+ $(SolutionDir)\bin\x64\Debug\
+ DEBUG;TRACE
+ full
+ x64
+ true
+ prompt
+ MinimumRecommendedRules.ruleset
+
+
+ $(SolutionDir)\bin\x64\Release\
+ TRACE
+ true
+ pdbonly
+ x64
+ false
+ prompt
+ MinimumRecommendedRules.ruleset
+ false
+
+
+ $(SolutionDir)\bin\x86\AppVeyor\
+ TRACE
+ true
+ pdbonly
+ x86
+ prompt
+ MinimumRecommendedRules.ruleset
+
+
+ $(SolutionDir)\bin\AppVeyor\
+ TRACE
+ true
+ pdbonly
+ x64
+ false
+ prompt
+ MinimumRecommendedRules.ruleset
+
+
+ $(SolutionDir)\bin\x64\AppVeyor\
+ TRACE
+ true
+ pdbonly
+ x64
+ false
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+
+
+ $(SolutionDir)\bin\x86\Release\
+ TRACE;BETA
+ true
+ pdbonly
+ x86
+ prompt
+ MinimumRecommendedRules.ruleset
+
+
+ bin\Beta\
+ TRACE
+ true
+ pdbonly
+ x64
+ false
+ prompt
+ MinimumRecommendedRules.ruleset
+
+
+ $(SolutionDir)\bin\x64\Release\
+ TRACE;BETA
+ true
+ pdbonly
+ x64
+ false
+ prompt
+ MinimumRecommendedRules.ruleset
+
+
+
+ ..\packages\CommonMark.NET.0.15.0\lib\net45\CommonMark.dll
+ True
+
+
+ ..\packages\Microsoft.Toolkit.Uwp.Notifications.1.3.1\lib\dotnet\Microsoft.Toolkit.Uwp.Notifications.dll
+ True
+
+
+ ..\packages\Microsoft.WindowsAPICodePack-Core.1.1.0.2\lib\Microsoft.WindowsAPICodePack.dll
+ True
+
+
+ ..\packages\NAudio.1.8.0\lib\net35\NAudio.dll
+ True
+
+
+ ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll
+ True
+
+
+
+
+
+ C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\Facades\System.Runtime.dll
+
+
+
+
+ ..\packages\TracerX-Logger.6.1\lib\TracerX-Logger.dll
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ True
+ True
+ AboutStrings.resx
+
+
+
+
+ True
+ True
+ SettingsStrings.resx
+
+
+ True
+ True
+ TrayIconStrings.resx
+
+
+ True
+ True
+ UpdateDownloadStrings.resx
+
+
+
+
+
+
+
+
+ Component
+
+
+ Component
+
+
+ Form
+
+
+ About.cs
+
+
+ Form
+
+
+ Settings.cs
+
+
+ Form
+
+
+ UpdateDownloadForm.cs
+
+
+
+ Component
+
+
+
+
+
+
+
+
+ ResXFileCodeGenerator
+ AboutStrings.Designer.cs
+ Designer
+
+
+ Designer
+
+
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+ True
+
+
+
+ Designer
+ ResXFileCodeGenerator
+ SettingsStrings.Designer.cs
+
+
+
+ ResXFileCodeGenerator
+ TrayIconStrings.Designer.cs
+ Designer
+
+
+
+ ResXFileCodeGenerator
+ UpdateDownloadStrings.Designer.cs
+ Designer
+
+
+ About.cs
+
+
+ Settings.cs
+
+
+
+
+
+
+ False
+ Microsoft .NET Framework 4.5 %28x86 and x64%29
+ true
+
+
+ False
+ .NET Framework 3.5 SP1 Client Profile
+ false
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
+ False
+ Visual C++ "14" Runtime Libraries %28x64%29
+ true
+
+
+ False
+ Visual C++ "14" Runtime Libraries %28x86%29
+ true
+
+
+ False
+ Windows Installer 4.5
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ Exclude
+ True
+ Assembly
+
+
+
+
+ {115bf2b4-b3be-446d-ba76-348e274258f7}
+ Audio.EndPoint.Controller.Wrapper
+
+
+
+
+
+
+
+
+ -->
\ No newline at end of file
diff --git a/SoundSwitch/SoundSwitch.csproj.user b/SoundSwitch/SoundSwitch.csproj.user
index 2750103c86..46a1dde212 100644
--- a/SoundSwitch/SoundSwitch.csproj.user
+++ b/SoundSwitch/SoundSwitch.csproj.user
@@ -1,17 +1,17 @@
-
-
-
- publish/
- http://soundswitch.codeplex.com/releases/clickonce/
-
- http://soundswitch.codeplex.com/releases/clickonce/
-
-
- en-US
- false
- ProjectFiles
-
-
- true
-
+
+
+
+ publish/
+ http://soundswitch.codeplex.com/releases/clickonce/
+
+ http://soundswitch.codeplex.com/releases/clickonce/
+
+
+ en-US
+ false
+ ProjectFiles
+
+
+ true
+
\ No newline at end of file
diff --git a/SoundSwitch/SoundSwitch.zreproj b/SoundSwitch/SoundSwitch.zreproj
new file mode 100644
index 0000000000..913dfe1e8c
--- /dev/null
+++ b/SoundSwitch/SoundSwitch.zreproj
@@ -0,0 +1,67 @@
+
+
+
+ <?xml version='1.0' encoding='utf-8'?><items><item type="2" checksum="2984873266" /></items>
+ <XtraSerializer version="1.0" application="View">
+ <property name="#LayoutVersion" />
+ <property name="ActiveFilterString" />
+</XtraSerializer>
+ <XtraSerializer version="1.0" application="View">
+ <property name="#LayoutVersion" />
+ <property name="SortInfo">~Xtra#Base64AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFHcmlkLnYxNi4yLCBWZXJzaW9uPTE2LjIuNC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAADhEZXZFeHByZXNzLlh0cmFHcmlkLkNvbHVtbnMuR3JpZENvbHVtblNvcnRJbmZvQ29sbGVjdGlvbgQAAAAKZ3JvdXBDb3VudAVjbG9uZQ9jbG9uZUdyb3VwQ291bnQTQ29sbGVjdGlvbkJhc2UrbGlzdAADAAMIsgFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW0RldkV4cHJlc3MuWHRyYUdyaWQuQ29sdW1ucy5HcmlkQ29sdW1uU29ydEluZm8sIERldkV4cHJlc3MuWHRyYUdyaWQudjE2LjIsIFZlcnNpb249MTYuMi40LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YV1dCBxTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0AgAAAAAAAAAJAwAAAAAAAAAJBAAAAAQDAAAAsgFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW0RldkV4cHJlc3MuWHRyYUdyaWQuQ29sdW1ucy5HcmlkQ29sdW1uU29ydEluZm8sIERldkV4cHJlc3MuWHRyYUdyaWQudjE2LjIsIFZlcnNpb249MTYuMi40LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YV1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAwRGV2RXhwcmVzcy5YdHJhR3JpZC5Db2x1bW5zLkdyaWRDb2x1bW5Tb3J0SW5mb1tdAgAAAAgICQUAAAAAAAAAAAAAAAQEAAAAHFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QDAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lvbgUAAAgICQYAAAABAAAABAAAAAcFAAAAAAEAAAAAAAAABC5EZXZFeHByZXNzLlh0cmFHcmlkLkNvbHVtbnMuR3JpZENvbHVtblNvcnRJbmZvAgAAABAGAAAABAAAAAkHAAAADQMMCAAAABlEZXZFeHByZXNzLlh0cmFHcmlkLnYxNi4yBQcAAAAuRGV2RXhwcmVzcy5YdHJhR3JpZC5Db2x1bW5zLkdyaWRDb2x1bW5Tb3J0SW5mbwIAAAAJU29ydE9yZGVyCkNvbHVtbk5hbWUAAQgIAAAAAQAAAAYJAAAAB2NvbE5hbWUL</property>
+</XtraSerializer>
+ 0
+ True
+ False
+ True
+ True
+ True
+ True
+ [basename][optionaldefaulttypes].[extension]
+ [basename][optionaldefaulttypes].[languagecode].[extension]
+ 0
+ .aspx;.ascx;.asmx;.master;.sitemap
+ True
+ True
+ True
+ ####
+ False
+ 0
+ 112
+ False
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SoundSwitch/UI/Controls/ChangelogViewer.cs b/SoundSwitch/UI/Controls/ChangelogViewer.cs
index a24f588fa3..4c3c6749c4 100644
--- a/SoundSwitch/UI/Controls/ChangelogViewer.cs
+++ b/SoundSwitch/UI/Controls/ChangelogViewer.cs
@@ -1,11 +1,11 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
diff --git a/SoundSwitch/UI/Controls/TextProgressBar.cs b/SoundSwitch/UI/Controls/TextProgressBar.cs
index f68386f711..8e6df46603 100644
--- a/SoundSwitch/UI/Controls/TextProgressBar.cs
+++ b/SoundSwitch/UI/Controls/TextProgressBar.cs
@@ -1,4 +1,18 @@
-using System;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System;
using System.Drawing;
using System.Windows.Forms;
diff --git a/SoundSwitch/UI/Forms/About.Designer.cs b/SoundSwitch/UI/Forms/About.Designer.cs
index 24428f26a2..4057d2621f 100644
--- a/SoundSwitch/UI/Forms/About.Designer.cs
+++ b/SoundSwitch/UI/Forms/About.Designer.cs
@@ -1,6 +1,4 @@
-using SoundSwitch.Properties;
-
-namespace SoundSwitch.UI.Forms
+namespace SoundSwitch.UI.Forms
{
partial class About
{
@@ -31,28 +29,28 @@ protected override void Dispose(bool disposing)
private void InitializeComponent()
{
this.appNameLabel = new System.Windows.Forms.Label();
- this.label2 = new System.Windows.Forms.Label();
- this.linkLabel1 = new System.Windows.Forms.LinkLabel();
- this.label3 = new System.Windows.Forms.Label();
- this.txtVersion = new System.Windows.Forms.LinkLabel();
- this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.createdByLabel = new System.Windows.Forms.Label();
+ this.creatorLinkLabel = new System.Windows.Forms.LinkLabel();
+ this.versionLabel = new System.Windows.Forms.Label();
+ this.versionLinkLabel = new System.Windows.Forms.LinkLabel();
+ this.authorAndProgramInfoGroupBox = new System.Windows.Forms.GroupBox();
this.maintainerLinkLabel = new System.Windows.Forms.LinkLabel();
- this.label7 = new System.Windows.Forms.Label();
- this.groupBox2 = new System.Windows.Forms.GroupBox();
- this.label6 = new System.Windows.Forms.Label();
- this.linkLabel3 = new System.Windows.Forms.LinkLabel();
- this.label5 = new System.Windows.Forms.Label();
- this.linkLabel2 = new System.Windows.Forms.LinkLabel();
- this.label4 = new System.Windows.Forms.Label();
+ this.maintainedByLabel = new System.Windows.Forms.Label();
+ this.creditsAndAttributionGroupBox = new System.Windows.Forms.GroupBox();
+ this.defaultPlaybackDeviceChangeLinkLabel = new System.Windows.Forms.LinkLabel();
+ this.defaultPlaybackDeviceChangeLabel = new System.Windows.Forms.Label();
+ this.keyboardHotKeySystemLinkLabel = new System.Windows.Forms.LinkLabel();
+ this.keyboardHotKeySystemLabel = new System.Windows.Forms.Label();
+ this.iconsLinkLabel = new System.Windows.Forms.LinkLabel();
+ this.iconsLabel = new System.Windows.Forms.Label();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
- this.eretikLabel = new System.Windows.Forms.LinkLabel();
- this.groupBox1.SuspendLayout();
- this.groupBox2.SuspendLayout();
+ this.authorAndProgramInfoGroupBox.SuspendLayout();
+ this.creditsAndAttributionGroupBox.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
- //
+ //
// appNameLabel
- //
+ //
this.appNameLabel.AutoSize = true;
this.appNameLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.appNameLabel.Location = new System.Drawing.Point(72, 9);
@@ -60,64 +58,64 @@ private void InitializeComponent()
this.appNameLabel.Size = new System.Drawing.Size(141, 31);
this.appNameLabel.TabIndex = 0;
this.appNameLabel.Text = "AppName";
- //
- // label2
- //
- this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(6, 46);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(58, 13);
- this.label2.TabIndex = 1;
- this.label2.Text = AboutStrings.created;
- //
- // linkLabel1
- //
- this.linkLabel1.AutoSize = true;
- this.linkLabel1.Location = new System.Drawing.Point(148, 46);
- this.linkLabel1.Name = "linkLabel1";
- this.linkLabel1.Size = new System.Drawing.Size(81, 13);
- this.linkLabel1.TabIndex = 2;
- this.linkLabel1.TabStop = true;
- this.linkLabel1.Text = "Jeroen Pelgrims";
- this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
- //
- // label3
- //
- this.label3.AutoSize = true;
- this.label3.Location = new System.Drawing.Point(6, 69);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(42, 13);
- this.label3.TabIndex = 3;
- this.label3.Text = AboutStrings.version;
- //
- // txtVersion
- //
- this.txtVersion.AutoSize = true;
- this.txtVersion.Location = new System.Drawing.Point(148, 69);
- this.txtVersion.Name = "txtVersion";
- this.txtVersion.Size = new System.Drawing.Size(60, 13);
- this.txtVersion.TabIndex = 4;
- this.txtVersion.TabStop = true;
- this.txtVersion.Text = "dummy text";
- this.txtVersion.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.Version_LinkClicked);
- //
- // groupBox1
- //
- this.groupBox1.Controls.Add(this.maintainerLinkLabel);
- this.groupBox1.Controls.Add(this.label7);
- this.groupBox1.Controls.Add(this.linkLabel1);
- this.groupBox1.Controls.Add(this.txtVersion);
- this.groupBox1.Controls.Add(this.label2);
- this.groupBox1.Controls.Add(this.label3);
- this.groupBox1.Location = new System.Drawing.Point(8, 55);
- this.groupBox1.Name = "groupBox1";
- this.groupBox1.Size = new System.Drawing.Size(259, 94);
- this.groupBox1.TabIndex = 5;
- this.groupBox1.TabStop = false;
- this.groupBox1.Text = AboutStrings.author;
- //
+ //
+ // createdByLabel
+ //
+ this.createdByLabel.AutoSize = true;
+ this.createdByLabel.Location = new System.Drawing.Point(6, 46);
+ this.createdByLabel.Name = "createdByLabel";
+ this.createdByLabel.Size = new System.Drawing.Size(58, 13);
+ this.createdByLabel.TabIndex = 1;
+ this.createdByLabel.Text = "Created by";
+ //
+ // creatorLinkLabel
+ //
+ this.creatorLinkLabel.AutoSize = true;
+ this.creatorLinkLabel.Location = new System.Drawing.Point(148, 46);
+ this.creatorLinkLabel.Name = "creatorLinkLabel";
+ this.creatorLinkLabel.Size = new System.Drawing.Size(81, 13);
+ this.creatorLinkLabel.TabIndex = 2;
+ this.creatorLinkLabel.TabStop = true;
+ this.creatorLinkLabel.Text = "Jeroen Pelgrims";
+ this.creatorLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
+ //
+ // versionLabel
+ //
+ this.versionLabel.AutoSize = true;
+ this.versionLabel.Location = new System.Drawing.Point(6, 69);
+ this.versionLabel.Name = "versionLabel";
+ this.versionLabel.Size = new System.Drawing.Size(42, 13);
+ this.versionLabel.TabIndex = 3;
+ this.versionLabel.Text = "Version";
+ //
+ // versionLinkLabel
+ //
+ this.versionLinkLabel.AutoSize = true;
+ this.versionLinkLabel.Location = new System.Drawing.Point(148, 69);
+ this.versionLinkLabel.Name = "versionLinkLabel";
+ this.versionLinkLabel.Size = new System.Drawing.Size(79, 13);
+ this.versionLinkLabel.TabIndex = 4;
+ this.versionLinkLabel.TabStop = true;
+ this.versionLinkLabel.Text = "X.XX.X.XXXXX";
+ this.versionLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.Version_LinkClicked);
+ //
+ // authorAndProgramInfoGroupBox
+ //
+ this.authorAndProgramInfoGroupBox.Controls.Add(this.maintainerLinkLabel);
+ this.authorAndProgramInfoGroupBox.Controls.Add(this.maintainedByLabel);
+ this.authorAndProgramInfoGroupBox.Controls.Add(this.creatorLinkLabel);
+ this.authorAndProgramInfoGroupBox.Controls.Add(this.versionLinkLabel);
+ this.authorAndProgramInfoGroupBox.Controls.Add(this.createdByLabel);
+ this.authorAndProgramInfoGroupBox.Controls.Add(this.versionLabel);
+ this.authorAndProgramInfoGroupBox.Location = new System.Drawing.Point(8, 55);
+ this.authorAndProgramInfoGroupBox.Name = "authorAndProgramInfoGroupBox";
+ this.authorAndProgramInfoGroupBox.Size = new System.Drawing.Size(259, 94);
+ this.authorAndProgramInfoGroupBox.TabIndex = 5;
+ this.authorAndProgramInfoGroupBox.TabStop = false;
+ this.authorAndProgramInfoGroupBox.Text = "Author and Program Info";
+ //
// maintainerLinkLabel
- //
+ //
this.maintainerLinkLabel.AutoSize = true;
this.maintainerLinkLabel.Location = new System.Drawing.Point(148, 21);
this.maintainerLinkLabel.Name = "maintainerLinkLabel";
@@ -126,116 +124,116 @@ private void InitializeComponent()
this.maintainerLinkLabel.TabStop = true;
this.maintainerLinkLabel.Text = "Antoine Aflalo";
this.maintainerLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.maintainerLinkLabel_LinkClicked);
- //
- // label7
- //
- this.label7.AutoSize = true;
- this.label7.Location = new System.Drawing.Point(6, 21);
- this.label7.Name = "label7";
- this.label7.Size = new System.Drawing.Size(73, 13);
- this.label7.TabIndex = 5;
- this.label7.Text = AboutStrings.maintained;
- //
- // groupBox2
- //
- this.groupBox2.Controls.Add(this.eretikLabel);
- this.groupBox2.Controls.Add(this.label6);
- this.groupBox2.Controls.Add(this.linkLabel3);
- this.groupBox2.Controls.Add(this.label5);
- this.groupBox2.Controls.Add(this.linkLabel2);
- this.groupBox2.Controls.Add(this.label4);
- this.groupBox2.Location = new System.Drawing.Point(8, 165);
- this.groupBox2.Name = "groupBox2";
- this.groupBox2.Size = new System.Drawing.Size(259, 99);
- this.groupBox2.TabIndex = 6;
- this.groupBox2.TabStop = false;
- this.groupBox2.Text = AboutStrings.credits;
- //
- // label6
- //
- this.label6.Location = new System.Drawing.Point(6, 69);
- this.label6.Name = "label6";
- this.label6.Size = new System.Drawing.Size(90, 27);
- this.label6.TabIndex = 4;
- this.label6.Text = AboutStrings.defPlaybacChg;
- //
- // linkLabel3
- //
- this.linkLabel3.AutoSize = true;
- this.linkLabel3.Location = new System.Drawing.Point(148, 45);
- this.linkLabel3.Name = "linkLabel3";
- this.linkLabel3.Size = new System.Drawing.Size(105, 13);
- this.linkLabel3.TabIndex = 3;
- this.linkLabel3.TabStop = true;
- this.linkLabel3.Text = "Christian Liensberger";
- this.linkLabel3.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel3_LinkClicked);
- //
- // label5
- //
- this.label5.AutoSize = true;
- this.label5.Location = new System.Drawing.Point(6, 45);
- this.label5.Name = "label5";
- this.label5.Size = new System.Drawing.Size(79, 13);
- this.label5.TabIndex = 2;
- this.label5.Text = AboutStrings.keyboardHotkeys;
- //
- // linkLabel2
- //
- this.linkLabel2.AutoSize = true;
- this.linkLabel2.Location = new System.Drawing.Point(148, 23);
- this.linkLabel2.Name = "linkLabel2";
- this.linkLabel2.Size = new System.Drawing.Size(61, 13);
- this.linkLabel2.TabIndex = 1;
- this.linkLabel2.TabStop = true;
- this.linkLabel2.Text = "Pastel SVG";
- this.linkLabel2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel2_LinkClicked);
- //
- // label4
- //
- this.label4.AutoSize = true;
- this.label4.Location = new System.Drawing.Point(6, 23);
- this.label4.Name = "label4";
- this.label4.Size = new System.Drawing.Size(33, 13);
- this.label4.TabIndex = 0;
- this.label4.Text = AboutStrings.icons;
- //
+ //
+ // maintainedByLabel
+ //
+ this.maintainedByLabel.AutoSize = true;
+ this.maintainedByLabel.Location = new System.Drawing.Point(6, 21);
+ this.maintainedByLabel.Name = "maintainedByLabel";
+ this.maintainedByLabel.Size = new System.Drawing.Size(71, 13);
+ this.maintainedByLabel.TabIndex = 5;
+ this.maintainedByLabel.Text = "Maintained by";
+ //
+ // creditsAndAttributionGroupBox
+ //
+ this.creditsAndAttributionGroupBox.Controls.Add(this.defaultPlaybackDeviceChangeLinkLabel);
+ this.creditsAndAttributionGroupBox.Controls.Add(this.defaultPlaybackDeviceChangeLabel);
+ this.creditsAndAttributionGroupBox.Controls.Add(this.keyboardHotKeySystemLinkLabel);
+ this.creditsAndAttributionGroupBox.Controls.Add(this.keyboardHotKeySystemLabel);
+ this.creditsAndAttributionGroupBox.Controls.Add(this.iconsLinkLabel);
+ this.creditsAndAttributionGroupBox.Controls.Add(this.iconsLabel);
+ this.creditsAndAttributionGroupBox.Location = new System.Drawing.Point(8, 165);
+ this.creditsAndAttributionGroupBox.Name = "creditsAndAttributionGroupBox";
+ this.creditsAndAttributionGroupBox.Size = new System.Drawing.Size(259, 99);
+ this.creditsAndAttributionGroupBox.TabIndex = 6;
+ this.creditsAndAttributionGroupBox.TabStop = false;
+ this.creditsAndAttributionGroupBox.Text = "Credits and Attribution";
+ //
+ // defaultPlaybackDeviceChangeLinkLabel
+ //
+ this.defaultPlaybackDeviceChangeLinkLabel.AutoSize = true;
+ this.defaultPlaybackDeviceChangeLinkLabel.Location = new System.Drawing.Point(148, 69);
+ this.defaultPlaybackDeviceChangeLinkLabel.Name = "defaultPlaybackDeviceChangeLinkLabel";
+ this.defaultPlaybackDeviceChangeLinkLabel.Size = new System.Drawing.Size(39, 13);
+ this.defaultPlaybackDeviceChangeLinkLabel.TabIndex = 7;
+ this.defaultPlaybackDeviceChangeLinkLabel.TabStop = true;
+ this.defaultPlaybackDeviceChangeLinkLabel.Text = "EreTIk";
+ this.defaultPlaybackDeviceChangeLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.eretikLabel_LinkClicked);
+ //
+ // defaultPlaybackDeviceChangeLabel
+ //
+ this.defaultPlaybackDeviceChangeLabel.Location = new System.Drawing.Point(6, 69);
+ this.defaultPlaybackDeviceChangeLabel.Name = "defaultPlaybackDeviceChangeLabel";
+ this.defaultPlaybackDeviceChangeLabel.Size = new System.Drawing.Size(108, 27);
+ this.defaultPlaybackDeviceChangeLabel.TabIndex = 4;
+ this.defaultPlaybackDeviceChangeLabel.Text = "Default Playback device change";
+ //
+ // keyboardHotKeySystemLinkLabel
+ //
+ this.keyboardHotKeySystemLinkLabel.AutoSize = true;
+ this.keyboardHotKeySystemLinkLabel.Location = new System.Drawing.Point(148, 45);
+ this.keyboardHotKeySystemLinkLabel.Name = "keyboardHotKeySystemLinkLabel";
+ this.keyboardHotKeySystemLinkLabel.Size = new System.Drawing.Size(105, 13);
+ this.keyboardHotKeySystemLinkLabel.TabIndex = 3;
+ this.keyboardHotKeySystemLinkLabel.TabStop = true;
+ this.keyboardHotKeySystemLinkLabel.Text = "Christian Liensberger";
+ this.keyboardHotKeySystemLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel3_LinkClicked);
+ //
+ // keyboardHotKeySystemLabel
+ //
+ this.keyboardHotKeySystemLabel.AutoSize = true;
+ this.keyboardHotKeySystemLabel.Location = new System.Drawing.Point(6, 45);
+ this.keyboardHotKeySystemLabel.Name = "keyboardHotKeySystemLabel";
+ this.keyboardHotKeySystemLabel.Size = new System.Drawing.Size(125, 13);
+ this.keyboardHotKeySystemLabel.TabIndex = 2;
+ this.keyboardHotKeySystemLabel.Text = "Keyboard HotKey system";
+ //
+ // iconsLinkLabel
+ //
+ this.iconsLinkLabel.AutoSize = true;
+ this.iconsLinkLabel.Location = new System.Drawing.Point(148, 23);
+ this.iconsLinkLabel.Name = "iconsLinkLabel";
+ this.iconsLinkLabel.Size = new System.Drawing.Size(61, 13);
+ this.iconsLinkLabel.TabIndex = 1;
+ this.iconsLinkLabel.TabStop = true;
+ this.iconsLinkLabel.Text = "Pastel SVG";
+ this.iconsLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel2_LinkClicked);
+ //
+ // iconsLabel
+ //
+ this.iconsLabel.AutoSize = true;
+ this.iconsLabel.Location = new System.Drawing.Point(6, 23);
+ this.iconsLabel.Name = "iconsLabel";
+ this.iconsLabel.Size = new System.Drawing.Size(33, 13);
+ this.iconsLabel.TabIndex = 0;
+ this.iconsLabel.Text = "Icons";
+ //
// pictureBox1
- //
+ //
this.pictureBox1.Image = global::SoundSwitch.Properties.Resources.SoundSwitch48;
this.pictureBox1.Location = new System.Drawing.Point(21, 2);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(45, 50);
this.pictureBox1.TabIndex = 7;
this.pictureBox1.TabStop = false;
- //
- // eretikLabel
- //
- this.eretikLabel.AutoSize = true;
- this.eretikLabel.Location = new System.Drawing.Point(148, 69);
- this.eretikLabel.Name = "eretikLabel";
- this.eretikLabel.Size = new System.Drawing.Size(39, 13);
- this.eretikLabel.TabIndex = 7;
- this.eretikLabel.TabStop = true;
- this.eretikLabel.Text = "EreTIk";
- this.eretikLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.eretikLabel_LinkClicked);
- //
+ //
// About
- //
+ //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(279, 276);
this.Controls.Add(this.pictureBox1);
- this.Controls.Add(this.groupBox2);
- this.Controls.Add(this.groupBox1);
+ this.Controls.Add(this.creditsAndAttributionGroupBox);
+ this.Controls.Add(this.authorAndProgramInfoGroupBox);
this.Controls.Add(this.appNameLabel);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Name = "About";
- this.Text = TrayIconStrings.about;
+ this.Text = "About";
this.Load += new System.EventHandler(this.About_Load);
- this.groupBox1.ResumeLayout(false);
- this.groupBox1.PerformLayout();
- this.groupBox2.ResumeLayout(false);
- this.groupBox2.PerformLayout();
+ this.authorAndProgramInfoGroupBox.ResumeLayout(false);
+ this.authorAndProgramInfoGroupBox.PerformLayout();
+ this.creditsAndAttributionGroupBox.ResumeLayout(false);
+ this.creditsAndAttributionGroupBox.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@@ -245,20 +243,20 @@ private void InitializeComponent()
#endregion
private System.Windows.Forms.Label appNameLabel;
- private System.Windows.Forms.Label label2;
- private System.Windows.Forms.LinkLabel linkLabel1;
- private System.Windows.Forms.Label label3;
- private System.Windows.Forms.LinkLabel txtVersion;
- private System.Windows.Forms.GroupBox groupBox1;
- private System.Windows.Forms.GroupBox groupBox2;
- private System.Windows.Forms.LinkLabel linkLabel2;
- private System.Windows.Forms.Label label4;
- private System.Windows.Forms.LinkLabel linkLabel3;
- private System.Windows.Forms.Label label5;
- private System.Windows.Forms.Label label6;
+ private System.Windows.Forms.Label createdByLabel;
+ private System.Windows.Forms.LinkLabel creatorLinkLabel;
+ private System.Windows.Forms.Label versionLabel;
+ private System.Windows.Forms.LinkLabel versionLinkLabel;
+ private System.Windows.Forms.GroupBox authorAndProgramInfoGroupBox;
+ private System.Windows.Forms.GroupBox creditsAndAttributionGroupBox;
+ private System.Windows.Forms.LinkLabel iconsLinkLabel;
+ private System.Windows.Forms.Label iconsLabel;
+ private System.Windows.Forms.LinkLabel keyboardHotKeySystemLinkLabel;
+ private System.Windows.Forms.Label keyboardHotKeySystemLabel;
+ private System.Windows.Forms.Label defaultPlaybackDeviceChangeLabel;
private System.Windows.Forms.LinkLabel maintainerLinkLabel;
- private System.Windows.Forms.Label label7;
+ private System.Windows.Forms.Label maintainedByLabel;
private System.Windows.Forms.PictureBox pictureBox1;
- private System.Windows.Forms.LinkLabel eretikLabel;
+ private System.Windows.Forms.LinkLabel defaultPlaybackDeviceChangeLinkLabel;
}
}
\ No newline at end of file
diff --git a/SoundSwitch/UI/Forms/About.cs b/SoundSwitch/UI/Forms/About.cs
index d505618ac0..4b8be8faf4 100644
--- a/SoundSwitch/UI/Forms/About.cs
+++ b/SoundSwitch/UI/Forms/About.cs
@@ -1,12 +1,12 @@
/********************************************************************
* Copyright (C) 2015 Jeroen Pelgrims
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
@@ -15,6 +15,7 @@
using System.Diagnostics;
using System.Windows.Forms;
+using SoundSwitch.Localization;
using SoundSwitch.Properties;
namespace SoundSwitch.UI.Forms
@@ -28,16 +29,34 @@ public About()
Icon = Resources.HelpIcon;
}
- private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ private void About_Load(object sender, System.EventArgs e)
{
- Process.Start("http://jeroenpelgrims.be");
+ LocalizeForm();
+ versionLinkLabel.Text = Application.ProductVersion;
+ appNameLabel.Text = Application.ProductName;
}
- private void About_Load(object sender, System.EventArgs e)
+ private void LocalizeForm()
{
- var version = Application.ProductVersion;
- txtVersion.Text = version;
- appNameLabel.Text = Application.ProductName;
+ // Form itself
+ Text = TrayIconStrings.about;
+
+ // Author and Program Info
+ authorAndProgramInfoGroupBox.Text = AboutStrings.author;
+ maintainedByLabel.Text = AboutStrings.maintained;
+ createdByLabel.Text = AboutStrings.created;
+ versionLabel.Text = AboutStrings.version;
+
+ // Credits and Attribution
+ creditsAndAttributionGroupBox.Text = AboutStrings.credits;
+ iconsLabel.Text = AboutStrings.icons;
+ keyboardHotKeySystemLabel.Text = AboutStrings.keyboardHotkeys;
+ defaultPlaybackDeviceChangeLabel.Text = AboutStrings.defaultPlaybackDeviceChange;
+ }
+
+ private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ Process.Start("http://jeroenpelgrims.be");
}
private void Version_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
diff --git a/SoundSwitch/UI/Forms/About.resx b/SoundSwitch/UI/Forms/About.resx
new file mode 100644
index 0000000000..29dcb1b3a3
--- /dev/null
+++ b/SoundSwitch/UI/Forms/About.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/SoundSwitch/UI/Forms/Settings.Designer.cs b/SoundSwitch/UI/Forms/Settings.Designer.cs
index 3a245f2399..160abd46e3 100644
--- a/SoundSwitch/UI/Forms/Settings.Designer.cs
+++ b/SoundSwitch/UI/Forms/Settings.Designer.cs
@@ -1,8 +1,6 @@
-using SoundSwitch.Properties;
-
-namespace SoundSwitch.UI.Forms
+namespace SoundSwitch.UI.Forms
{
- partial class Settings
+ sealed partial class SettingsForm
{
///
/// Required designer variable.
@@ -30,106 +28,109 @@ protected override void Dispose(bool disposing)
///
private void InitializeComponent()
{
- System.Windows.Forms.ListViewGroup listViewGroup3 = new System.Windows.Forms.ListViewGroup(global::SoundSwitch.Properties.SettingsString.selected, System.Windows.Forms.HorizontalAlignment.Center);
- System.Windows.Forms.ListViewGroup listViewGroup4 = new System.Windows.Forms.ListViewGroup(global::SoundSwitch.Properties.SettingsString.selected, System.Windows.Forms.HorizontalAlignment.Center);
- this.RunAtStartup = new System.Windows.Forms.CheckBox();
+ System.Windows.Forms.ListViewGroup listViewGroup5 = new System.Windows.Forms.ListViewGroup("Selected", System.Windows.Forms.HorizontalAlignment.Center);
+ System.Windows.Forms.ListViewGroup listViewGroup6 = new System.Windows.Forms.ListViewGroup("Selected", System.Windows.Forms.HorizontalAlignment.Center);
+ this.startWithWindowsCheckBox = new System.Windows.Forms.CheckBox();
this.closeButton = new System.Windows.Forms.Button();
- this.communicationCheckbox = new System.Windows.Forms.CheckBox();
+ this.switchCommunicationDeviceCheckBox = new System.Windows.Forms.CheckBox();
this.tabControl = new System.Windows.Forms.TabControl();
- this.playbackPage = new System.Windows.Forms.TabPage();
+ this.playbackTabPage = new System.Windows.Forms.TabPage();
this.playbackListView = new System.Windows.Forms.ListView();
- this.recordingPage = new System.Windows.Forms.TabPage();
+ this.recordingTabPage = new System.Windows.Forms.TabPage();
this.recordingListView = new System.Windows.Forms.ListView();
this.appSettingTabPage = new System.Windows.Forms.TabPage();
- this.updateSettingsGroup = new System.Windows.Forms.GroupBox();
+ this.languageGroupBox = new System.Windows.Forms.GroupBox();
+ this.languageComboBox = new System.Windows.Forms.ComboBox();
+ this.updateSettingsGroupBox = new System.Windows.Forms.GroupBox();
this.updateNeverRadioButton = new System.Windows.Forms.RadioButton();
this.updateNotifyRadioButton = new System.Windows.Forms.RadioButton();
this.updateSilentRadioButton = new System.Windows.Forms.RadioButton();
- this.includeBetaVersionsCheckbox = new System.Windows.Forms.CheckBox();
- this.audioSettingsGroup = new System.Windows.Forms.GroupBox();
- this.cyclerLabel = new System.Windows.Forms.Label();
- this.cyclerComboBox = new System.Windows.Forms.ComboBox();
- this.tooltipLabel = new System.Windows.Forms.Label();
+ this.includeBetaVersionsCheckBox = new System.Windows.Forms.CheckBox();
+ this.audioSettingsGroupBox = new System.Windows.Forms.GroupBox();
+ this.cycleThroughLabel = new System.Windows.Forms.Label();
+ this.cycleThroughComboBox = new System.Windows.Forms.ComboBox();
+ this.tooltipOnHoverLabel = new System.Windows.Forms.Label();
this.tooltipInfoComboBox = new System.Windows.Forms.ComboBox();
this.selectSoundButton = new System.Windows.Forms.Button();
- this.notifLabel = new System.Windows.Forms.Label();
+ this.notificationLabel = new System.Windows.Forms.Label();
this.notificationComboBox = new System.Windows.Forms.ComboBox();
- this.basicSettingsGroup = new System.Windows.Forms.GroupBox();
- this.checkboxSystrayIcon = new System.Windows.Forms.CheckBox();
- this.hotkeyTextBox = new System.Windows.Forms.TextBox();
+ this.basicSettingsGroupBox = new System.Windows.Forms.GroupBox();
+ this.keepSystemTrayIconCheckBox = new System.Windows.Forms.CheckBox();
+ this.hotkeysTextBox = new System.Windows.Forms.TextBox();
this.hotkeysLabel = new System.Windows.Forms.Label();
this.selectSoundFileDialog = new System.Windows.Forms.OpenFileDialog();
- this.hotkeysCheckbox = new System.Windows.Forms.CheckBox();
+ this.hotkeysCheckBox = new System.Windows.Forms.CheckBox();
this.tabControl.SuspendLayout();
- this.playbackPage.SuspendLayout();
- this.recordingPage.SuspendLayout();
+ this.playbackTabPage.SuspendLayout();
+ this.recordingTabPage.SuspendLayout();
this.appSettingTabPage.SuspendLayout();
- this.updateSettingsGroup.SuspendLayout();
- this.audioSettingsGroup.SuspendLayout();
- this.basicSettingsGroup.SuspendLayout();
+ this.languageGroupBox.SuspendLayout();
+ this.updateSettingsGroupBox.SuspendLayout();
+ this.audioSettingsGroupBox.SuspendLayout();
+ this.basicSettingsGroupBox.SuspendLayout();
this.SuspendLayout();
//
- // RunAtStartup
+ // startWithWindowsCheckBox
//
- this.RunAtStartup.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.RunAtStartup.AutoSize = true;
- this.RunAtStartup.Location = new System.Drawing.Point(6, 19);
- this.RunAtStartup.Name = "RunAtStartup";
- this.RunAtStartup.Size = new System.Drawing.Size(95, 17);
- this.RunAtStartup.TabIndex = 7;
- this.RunAtStartup.Text = global::SoundSwitch.Properties.SettingsString.runStartup;
- this.RunAtStartup.UseVisualStyleBackColor = true;
- this.RunAtStartup.CheckedChanged += new System.EventHandler(this.RunAtStartup_CheckedChanged);
+ this.startWithWindowsCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.startWithWindowsCheckBox.AutoSize = true;
+ this.startWithWindowsCheckBox.Location = new System.Drawing.Point(6, 21);
+ this.startWithWindowsCheckBox.Name = "startWithWindowsCheckBox";
+ this.startWithWindowsCheckBox.Size = new System.Drawing.Size(181, 17);
+ this.startWithWindowsCheckBox.TabIndex = 7;
+ this.startWithWindowsCheckBox.Text = "Start automatically with Windows";
+ this.startWithWindowsCheckBox.UseVisualStyleBackColor = true;
+ this.startWithWindowsCheckBox.CheckedChanged += new System.EventHandler(this.RunAtStartup_CheckedChanged);
//
// closeButton
//
this.closeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.closeButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.closeButton.Location = new System.Drawing.Point(478, 294);
+ this.closeButton.Location = new System.Drawing.Point(488, 294);
this.closeButton.Name = "closeButton";
this.closeButton.Size = new System.Drawing.Size(75, 23);
this.closeButton.TabIndex = 11;
- this.closeButton.Text = global::SoundSwitch.Properties.SettingsString.close;
+ this.closeButton.Text = "Close";
this.closeButton.UseVisualStyleBackColor = true;
this.closeButton.Click += new System.EventHandler(this.closeButton_Click);
//
- // communicationCheckbox
+ // switchCommunicationDeviceCheckBox
//
- this.communicationCheckbox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.communicationCheckbox.AutoSize = true;
- this.communicationCheckbox.Location = new System.Drawing.Point(6, 38);
- this.communicationCheckbox.Name = "communicationCheckbox";
- this.communicationCheckbox.Size = new System.Drawing.Size(140, 17);
- this.communicationCheckbox.TabIndex = 12;
- this.communicationCheckbox.Text = global::SoundSwitch.Properties.SettingsString.setComm;
- this.communicationCheckbox.UseVisualStyleBackColor = true;
- this.communicationCheckbox.CheckedChanged += new System.EventHandler(this.communicationCheckbox_CheckedChanged);
+ this.switchCommunicationDeviceCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.switchCommunicationDeviceCheckBox.AutoSize = true;
+ this.switchCommunicationDeviceCheckBox.Location = new System.Drawing.Point(6, 21);
+ this.switchCommunicationDeviceCheckBox.Name = "switchCommunicationDeviceCheckBox";
+ this.switchCommunicationDeviceCheckBox.Size = new System.Drawing.Size(207, 17);
+ this.switchCommunicationDeviceCheckBox.TabIndex = 12;
+ this.switchCommunicationDeviceCheckBox.Text = "Switch Default Communication Device";
+ this.switchCommunicationDeviceCheckBox.UseVisualStyleBackColor = true;
+ this.switchCommunicationDeviceCheckBox.CheckedChanged += new System.EventHandler(this.communicationCheckbox_CheckedChanged);
//
// tabControl
//
this.tabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.tabControl.Controls.Add(this.playbackPage);
- this.tabControl.Controls.Add(this.recordingPage);
+ this.tabControl.Controls.Add(this.playbackTabPage);
+ this.tabControl.Controls.Add(this.recordingTabPage);
this.tabControl.Controls.Add(this.appSettingTabPage);
this.tabControl.Location = new System.Drawing.Point(12, 6);
this.tabControl.Name = "tabControl";
this.tabControl.SelectedIndex = 0;
- this.tabControl.Size = new System.Drawing.Size(541, 279);
+ this.tabControl.Size = new System.Drawing.Size(551, 279);
this.tabControl.TabIndex = 13;
this.tabControl.SelectedIndexChanged += new System.EventHandler(this.tabControl_SelectedIndexChanged);
//
- // playbackPage
+ // playbackTabPage
//
- this.playbackPage.Controls.Add(this.playbackListView);
- this.playbackPage.Location = new System.Drawing.Point(4, 22);
- this.playbackPage.Name = "playbackPage";
- this.playbackPage.Padding = new System.Windows.Forms.Padding(3);
- this.playbackPage.Size = new System.Drawing.Size(533, 253);
- this.playbackPage.TabIndex = 0;
- this.playbackPage.Text = global::SoundSwitch.Properties.SettingsString.playback;
- this.playbackPage.UseVisualStyleBackColor = true;
+ this.playbackTabPage.Controls.Add(this.playbackListView);
+ this.playbackTabPage.Location = new System.Drawing.Point(4, 22);
+ this.playbackTabPage.Name = "playbackTabPage";
+ this.playbackTabPage.Padding = new System.Windows.Forms.Padding(3);
+ this.playbackTabPage.Size = new System.Drawing.Size(552, 253);
+ this.playbackTabPage.TabIndex = 0;
+ this.playbackTabPage.Text = "Playback";
+ this.playbackTabPage.UseVisualStyleBackColor = true;
//
// playbackListView
//
@@ -137,29 +138,29 @@ private void InitializeComponent()
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.playbackListView.CheckBoxes = true;
- listViewGroup3.Header = global::SoundSwitch.Properties.SettingsString.selected;
- listViewGroup3.HeaderAlignment = System.Windows.Forms.HorizontalAlignment.Center;
- listViewGroup3.Name = "selectedGroup";
+ listViewGroup5.Header = "Selected";
+ listViewGroup5.HeaderAlignment = System.Windows.Forms.HorizontalAlignment.Center;
+ listViewGroup5.Name = "selectedGroup";
this.playbackListView.Groups.AddRange(new System.Windows.Forms.ListViewGroup[] {
- listViewGroup3});
+ listViewGroup5});
this.playbackListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
this.playbackListView.Location = new System.Drawing.Point(-4, 0);
this.playbackListView.Name = "playbackListView";
- this.playbackListView.Size = new System.Drawing.Size(585, 232);
+ this.playbackListView.Size = new System.Drawing.Size(604, 232);
this.playbackListView.TabIndex = 14;
this.playbackListView.UseCompatibleStateImageBehavior = false;
this.playbackListView.View = System.Windows.Forms.View.Details;
//
- // recordingPage
+ // recordingTabPage
//
- this.recordingPage.Controls.Add(this.recordingListView);
- this.recordingPage.Location = new System.Drawing.Point(4, 22);
- this.recordingPage.Name = "recordingPage";
- this.recordingPage.Padding = new System.Windows.Forms.Padding(3);
- this.recordingPage.Size = new System.Drawing.Size(533, 253);
- this.recordingPage.TabIndex = 1;
- this.recordingPage.Text = global::SoundSwitch.Properties.SettingsString.recording;
- this.recordingPage.UseVisualStyleBackColor = true;
+ this.recordingTabPage.Controls.Add(this.recordingListView);
+ this.recordingTabPage.Location = new System.Drawing.Point(4, 22);
+ this.recordingTabPage.Name = "recordingTabPage";
+ this.recordingTabPage.Padding = new System.Windows.Forms.Padding(3);
+ this.recordingTabPage.Size = new System.Drawing.Size(552, 253);
+ this.recordingTabPage.TabIndex = 1;
+ this.recordingTabPage.Text = "Recording";
+ this.recordingTabPage.UseVisualStyleBackColor = true;
//
// recordingListView
//
@@ -168,50 +169,78 @@ private void InitializeComponent()
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.recordingListView.CheckBoxes = true;
- listViewGroup4.Header = global::SoundSwitch.Properties.SettingsString.selected;
- listViewGroup4.HeaderAlignment = System.Windows.Forms.HorizontalAlignment.Center;
- listViewGroup4.Name = "selectedGroup";
+ listViewGroup6.Header = "Selected";
+ listViewGroup6.HeaderAlignment = System.Windows.Forms.HorizontalAlignment.Center;
+ listViewGroup6.Name = "selectedGroup";
this.recordingListView.Groups.AddRange(new System.Windows.Forms.ListViewGroup[] {
- listViewGroup4});
+ listViewGroup6});
this.recordingListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
this.recordingListView.Location = new System.Drawing.Point(-2, 0);
this.recordingListView.Name = "recordingListView";
- this.recordingListView.Size = new System.Drawing.Size(583, 233);
+ this.recordingListView.Size = new System.Drawing.Size(602, 233);
this.recordingListView.TabIndex = 17;
this.recordingListView.UseCompatibleStateImageBehavior = false;
this.recordingListView.View = System.Windows.Forms.View.Details;
//
// appSettingTabPage
//
- this.appSettingTabPage.Controls.Add(this.updateSettingsGroup);
- this.appSettingTabPage.Controls.Add(this.audioSettingsGroup);
- this.appSettingTabPage.Controls.Add(this.basicSettingsGroup);
+ this.appSettingTabPage.Controls.Add(this.languageGroupBox);
+ this.appSettingTabPage.Controls.Add(this.updateSettingsGroupBox);
+ this.appSettingTabPage.Controls.Add(this.audioSettingsGroupBox);
+ this.appSettingTabPage.Controls.Add(this.basicSettingsGroupBox);
this.appSettingTabPage.Location = new System.Drawing.Point(4, 22);
this.appSettingTabPage.Name = "appSettingTabPage";
- this.appSettingTabPage.Size = new System.Drawing.Size(533, 253);
+ this.appSettingTabPage.Size = new System.Drawing.Size(543, 253);
this.appSettingTabPage.TabIndex = 2;
- this.appSettingTabPage.Text = global::SoundSwitch.Properties.SettingsString.settings;
+ this.appSettingTabPage.Text = "Settings";
this.appSettingTabPage.UseVisualStyleBackColor = true;
//
- // updateSettingsGroup
+ // languageGroupBox
//
- this.updateSettingsGroup.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ this.languageGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.languageGroupBox.Controls.Add(this.languageComboBox);
+ this.languageGroupBox.Location = new System.Drawing.Point(321, 138);
+ this.languageGroupBox.Name = "languageGroupBox";
+ this.languageGroupBox.Size = new System.Drawing.Size(219, 60);
+ this.languageGroupBox.TabIndex = 15;
+ this.languageGroupBox.TabStop = false;
+ this.languageGroupBox.Text = "Language";
+ //
+ // languageComboBox
+ //
+ this.languageComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.languageComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.languageComboBox.FormattingEnabled = true;
+ this.languageComboBox.Items.AddRange(new object[] {
+ "English (en)",
+ "French (fr)",
+ "German (de)"});
+ this.languageComboBox.Location = new System.Drawing.Point(8, 23);
+ this.languageComboBox.Name = "languageComboBox";
+ this.languageComboBox.Size = new System.Drawing.Size(203, 21);
+ this.languageComboBox.TabIndex = 17;
+ this.languageComboBox.SelectedIndexChanged += new System.EventHandler(this.languageComboBox_SelectedIndexChanged);
+ //
+ // updateSettingsGroupBox
+ //
+ this.updateSettingsGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.updateSettingsGroup.Controls.Add(this.updateNeverRadioButton);
- this.updateSettingsGroup.Controls.Add(this.updateNotifyRadioButton);
- this.updateSettingsGroup.Controls.Add(this.updateSilentRadioButton);
- this.updateSettingsGroup.Controls.Add(this.includeBetaVersionsCheckbox);
- this.updateSettingsGroup.Location = new System.Drawing.Point(321, 3);
- this.updateSettingsGroup.Name = "updateSettingsGroup";
- this.updateSettingsGroup.Size = new System.Drawing.Size(209, 123);
- this.updateSettingsGroup.TabIndex = 14;
- this.updateSettingsGroup.TabStop = false;
- this.updateSettingsGroup.Text = "Update Settings";
+ this.updateSettingsGroupBox.Controls.Add(this.updateNeverRadioButton);
+ this.updateSettingsGroupBox.Controls.Add(this.updateNotifyRadioButton);
+ this.updateSettingsGroupBox.Controls.Add(this.updateSilentRadioButton);
+ this.updateSettingsGroupBox.Controls.Add(this.includeBetaVersionsCheckBox);
+ this.updateSettingsGroupBox.Location = new System.Drawing.Point(321, 3);
+ this.updateSettingsGroupBox.Name = "updateSettingsGroupBox";
+ this.updateSettingsGroupBox.Size = new System.Drawing.Size(219, 129);
+ this.updateSettingsGroupBox.TabIndex = 14;
+ this.updateSettingsGroupBox.TabStop = false;
+ this.updateSettingsGroupBox.Text = "Update Settings";
//
// updateNeverRadioButton
//
this.updateNeverRadioButton.AutoSize = true;
- this.updateNeverRadioButton.Location = new System.Drawing.Point(7, 66);
+ this.updateNeverRadioButton.Location = new System.Drawing.Point(7, 69);
this.updateNeverRadioButton.Name = "updateNeverRadioButton";
this.updateNeverRadioButton.Size = new System.Drawing.Size(143, 17);
this.updateNeverRadioButton.TabIndex = 21;
@@ -223,7 +252,7 @@ private void InitializeComponent()
// updateNotifyRadioButton
//
this.updateNotifyRadioButton.AutoSize = true;
- this.updateNotifyRadioButton.Location = new System.Drawing.Point(7, 43);
+ this.updateNotifyRadioButton.Location = new System.Drawing.Point(7, 45);
this.updateNotifyRadioButton.Name = "updateNotifyRadioButton";
this.updateNotifyRadioButton.Size = new System.Drawing.Size(202, 17);
this.updateNotifyRadioButton.TabIndex = 20;
@@ -235,7 +264,7 @@ private void InitializeComponent()
// updateSilentRadioButton
//
this.updateSilentRadioButton.AutoSize = true;
- this.updateSilentRadioButton.Location = new System.Drawing.Point(7, 20);
+ this.updateSilentRadioButton.Location = new System.Drawing.Point(7, 21);
this.updateSilentRadioButton.Name = "updateSilentRadioButton";
this.updateSilentRadioButton.Size = new System.Drawing.Size(157, 17);
this.updateSilentRadioButton.TabIndex = 19;
@@ -244,72 +273,74 @@ private void InitializeComponent()
this.updateSilentRadioButton.UseVisualStyleBackColor = true;
this.updateSilentRadioButton.CheckedChanged += new System.EventHandler(this.updateSilentRadioButton_CheckedChanged);
//
- // includeBetaVersionsCheckbox
- //
- this.includeBetaVersionsCheckbox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.includeBetaVersionsCheckbox.AutoSize = true;
- this.includeBetaVersionsCheckbox.Location = new System.Drawing.Point(7, 100);
- this.includeBetaVersionsCheckbox.Name = "includeBetaVersionsCheckbox";
- this.includeBetaVersionsCheckbox.Size = new System.Drawing.Size(127, 17);
- this.includeBetaVersionsCheckbox.TabIndex = 18;
- this.includeBetaVersionsCheckbox.Text = "Include beta versions";
- this.includeBetaVersionsCheckbox.UseVisualStyleBackColor = true;
- this.includeBetaVersionsCheckbox.CheckedChanged += new System.EventHandler(this.betaVersionCheckbox_CheckedChanged);
- //
- // audioSettingsGroup
- //
- this.audioSettingsGroup.Controls.Add(this.cyclerLabel);
- this.audioSettingsGroup.Controls.Add(this.cyclerComboBox);
- this.audioSettingsGroup.Controls.Add(this.tooltipLabel);
- this.audioSettingsGroup.Controls.Add(this.tooltipInfoComboBox);
- this.audioSettingsGroup.Controls.Add(this.communicationCheckbox);
- this.audioSettingsGroup.Controls.Add(this.selectSoundButton);
- this.audioSettingsGroup.Controls.Add(this.notifLabel);
- this.audioSettingsGroup.Controls.Add(this.notificationComboBox);
- this.audioSettingsGroup.Location = new System.Drawing.Point(3, 71);
- this.audioSettingsGroup.Name = "audioSettingsGroup";
- this.audioSettingsGroup.Size = new System.Drawing.Size(312, 179);
- this.audioSettingsGroup.TabIndex = 13;
- this.audioSettingsGroup.TabStop = false;
- this.audioSettingsGroup.Text = "Audio Settings";
- //
- // cyclerLabel
- //
- this.cyclerLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.cyclerLabel.AutoSize = true;
- this.cyclerLabel.Location = new System.Drawing.Point(6, 154);
- this.cyclerLabel.Name = "cyclerLabel";
- this.cyclerLabel.Size = new System.Drawing.Size(72, 13);
- this.cyclerLabel.TabIndex = 23;
- this.cyclerLabel.Text = "Cycle through";
- //
- // cyclerComboBox
- //
- this.cyclerComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.cyclerComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
- this.cyclerComboBox.FormattingEnabled = true;
- this.cyclerComboBox.Location = new System.Drawing.Point(98, 150);
- this.cyclerComboBox.Name = "cyclerComboBox";
- this.cyclerComboBox.Size = new System.Drawing.Size(177, 21);
- this.cyclerComboBox.TabIndex = 22;
- this.cyclerComboBox.SelectedValueChanged += new System.EventHandler(this.cyclerComboBox_SelectedValueChanged);
- //
- // tooltipLabel
- //
- this.tooltipLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.tooltipLabel.AutoSize = true;
- this.tooltipLabel.Location = new System.Drawing.Point(6, 114);
- this.tooltipLabel.Name = "tooltipLabel";
- this.tooltipLabel.Size = new System.Drawing.Size(86, 13);
- this.tooltipLabel.TabIndex = 21;
- this.tooltipLabel.Text = "Tooltip on Hover";
+ // includeBetaVersionsCheckBox
+ //
+ this.includeBetaVersionsCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.includeBetaVersionsCheckBox.AutoSize = true;
+ this.includeBetaVersionsCheckBox.Location = new System.Drawing.Point(7, 99);
+ this.includeBetaVersionsCheckBox.Name = "includeBetaVersionsCheckBox";
+ this.includeBetaVersionsCheckBox.Size = new System.Drawing.Size(128, 17);
+ this.includeBetaVersionsCheckBox.TabIndex = 18;
+ this.includeBetaVersionsCheckBox.Text = "Include Beta versions";
+ this.includeBetaVersionsCheckBox.UseVisualStyleBackColor = true;
+ this.includeBetaVersionsCheckBox.CheckedChanged += new System.EventHandler(this.betaVersionCheckbox_CheckedChanged);
+ //
+ // audioSettingsGroupBox
+ //
+ this.audioSettingsGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)));
+ this.audioSettingsGroupBox.Controls.Add(this.cycleThroughLabel);
+ this.audioSettingsGroupBox.Controls.Add(this.cycleThroughComboBox);
+ this.audioSettingsGroupBox.Controls.Add(this.tooltipOnHoverLabel);
+ this.audioSettingsGroupBox.Controls.Add(this.tooltipInfoComboBox);
+ this.audioSettingsGroupBox.Controls.Add(this.switchCommunicationDeviceCheckBox);
+ this.audioSettingsGroupBox.Controls.Add(this.selectSoundButton);
+ this.audioSettingsGroupBox.Controls.Add(this.notificationLabel);
+ this.audioSettingsGroupBox.Controls.Add(this.notificationComboBox);
+ this.audioSettingsGroupBox.Location = new System.Drawing.Point(3, 88);
+ this.audioSettingsGroupBox.Name = "audioSettingsGroupBox";
+ this.audioSettingsGroupBox.Size = new System.Drawing.Size(312, 162);
+ this.audioSettingsGroupBox.TabIndex = 13;
+ this.audioSettingsGroupBox.TabStop = false;
+ this.audioSettingsGroupBox.Text = "Audio Settings";
+ //
+ // cycleThroughLabel
+ //
+ this.cycleThroughLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.cycleThroughLabel.Location = new System.Drawing.Point(-8, 136);
+ this.cycleThroughLabel.Name = "cycleThroughLabel";
+ this.cycleThroughLabel.Size = new System.Drawing.Size(100, 13);
+ this.cycleThroughLabel.TabIndex = 23;
+ this.cycleThroughLabel.Text = "Cycle through";
+ this.cycleThroughLabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
+ //
+ // cycleThroughComboBox
+ //
+ this.cycleThroughComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.cycleThroughComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cycleThroughComboBox.FormattingEnabled = true;
+ this.cycleThroughComboBox.Location = new System.Drawing.Point(98, 133);
+ this.cycleThroughComboBox.Name = "cycleThroughComboBox";
+ this.cycleThroughComboBox.Size = new System.Drawing.Size(177, 21);
+ this.cycleThroughComboBox.TabIndex = 22;
+ this.cycleThroughComboBox.SelectedValueChanged += new System.EventHandler(this.cyclerComboBox_SelectedValueChanged);
+ //
+ // tooltipOnHoverLabel
+ //
+ this.tooltipOnHoverLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.tooltipOnHoverLabel.Location = new System.Drawing.Point(-8, 99);
+ this.tooltipOnHoverLabel.Name = "tooltipOnHoverLabel";
+ this.tooltipOnHoverLabel.Size = new System.Drawing.Size(100, 13);
+ this.tooltipOnHoverLabel.TabIndex = 21;
+ this.tooltipOnHoverLabel.Text = "Tooltip on Hover";
+ this.tooltipOnHoverLabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// tooltipInfoComboBox
//
this.tooltipInfoComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.tooltipInfoComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.tooltipInfoComboBox.FormattingEnabled = true;
- this.tooltipInfoComboBox.Location = new System.Drawing.Point(98, 110);
+ this.tooltipInfoComboBox.Location = new System.Drawing.Point(98, 96);
this.tooltipInfoComboBox.Name = "tooltipInfoComboBox";
this.tooltipInfoComboBox.Size = new System.Drawing.Size(177, 21);
this.tooltipInfoComboBox.TabIndex = 20;
@@ -318,7 +349,7 @@ private void InitializeComponent()
// selectSoundButton
//
this.selectSoundButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.selectSoundButton.Location = new System.Drawing.Point(281, 70);
+ this.selectSoundButton.Location = new System.Drawing.Point(281, 56);
this.selectSoundButton.Name = "selectSoundButton";
this.selectSoundButton.Size = new System.Drawing.Size(24, 23);
this.selectSoundButton.TabIndex = 19;
@@ -327,140 +358,142 @@ private void InitializeComponent()
this.selectSoundButton.Visible = false;
this.selectSoundButton.Click += new System.EventHandler(this.selectSoundButton_Click);
//
- // notifLabel
+ // notificationLabel
//
- this.notifLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.notifLabel.AutoSize = true;
- this.notifLabel.Location = new System.Drawing.Point(6, 76);
- this.notifLabel.Name = "notifLabel";
- this.notifLabel.Size = new System.Drawing.Size(60, 13);
- this.notifLabel.TabIndex = 17;
- this.notifLabel.Text = "Notification";
+ this.notificationLabel.Location = new System.Drawing.Point(-8, 60);
+ this.notificationLabel.Name = "notificationLabel";
+ this.notificationLabel.Size = new System.Drawing.Size(100, 13);
+ this.notificationLabel.TabIndex = 17;
+ this.notificationLabel.Text = "Notification";
+ this.notificationLabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// notificationComboBox
//
this.notificationComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.notificationComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.notificationComboBox.FormattingEnabled = true;
- this.notificationComboBox.Location = new System.Drawing.Point(98, 71);
+ this.notificationComboBox.Location = new System.Drawing.Point(98, 57);
this.notificationComboBox.Name = "notificationComboBox";
this.notificationComboBox.Size = new System.Drawing.Size(177, 21);
this.notificationComboBox.TabIndex = 16;
this.notificationComboBox.SelectedValueChanged += new System.EventHandler(this.notificationComboBox_SelectedValueChanged);
//
- // basicSettingsGroup
- //
- this.basicSettingsGroup.Controls.Add(this.checkboxSystrayIcon);
- this.basicSettingsGroup.Controls.Add(this.RunAtStartup);
- this.basicSettingsGroup.Location = new System.Drawing.Point(3, 3);
- this.basicSettingsGroup.Name = "basicSettingsGroup";
- this.basicSettingsGroup.Size = new System.Drawing.Size(312, 62);
- this.basicSettingsGroup.TabIndex = 0;
- this.basicSettingsGroup.TabStop = false;
- this.basicSettingsGroup.Text = "Basic Settings";
- //
- // checkboxSystrayIcon
- //
- this.checkboxSystrayIcon.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.checkboxSystrayIcon.AutoSize = true;
- this.checkboxSystrayIcon.Location = new System.Drawing.Point(6, 39);
- this.checkboxSystrayIcon.Name = "checkboxSystrayIcon";
- this.checkboxSystrayIcon.Size = new System.Drawing.Size(109, 17);
- this.checkboxSystrayIcon.TabIndex = 8;
- this.checkboxSystrayIcon.Text = global::SoundSwitch.Properties.SettingsString.keepSystrayIcon;
- this.checkboxSystrayIcon.UseVisualStyleBackColor = true;
- this.checkboxSystrayIcon.CheckedChanged += new System.EventHandler(this.checkboxSystrayIcon_CheckedChanged);
- //
- // hotkeyTextBox
- //
- this.hotkeyTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.hotkeyTextBox.Location = new System.Drawing.Point(63, 291);
- this.hotkeyTextBox.Name = "hotkeyTextBox";
- this.hotkeyTextBox.Size = new System.Drawing.Size(132, 20);
- this.hotkeyTextBox.TabIndex = 15;
+ // basicSettingsGroupBox
+ //
+ this.basicSettingsGroupBox.Controls.Add(this.keepSystemTrayIconCheckBox);
+ this.basicSettingsGroupBox.Controls.Add(this.startWithWindowsCheckBox);
+ this.basicSettingsGroupBox.Location = new System.Drawing.Point(3, 3);
+ this.basicSettingsGroupBox.Name = "basicSettingsGroupBox";
+ this.basicSettingsGroupBox.Size = new System.Drawing.Size(312, 79);
+ this.basicSettingsGroupBox.TabIndex = 0;
+ this.basicSettingsGroupBox.TabStop = false;
+ this.basicSettingsGroupBox.Text = "Basic Settings";
+ //
+ // keepSystemTrayIconCheckBox
+ //
+ this.keepSystemTrayIconCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.keepSystemTrayIconCheckBox.AutoSize = true;
+ this.keepSystemTrayIconCheckBox.Location = new System.Drawing.Point(6, 45);
+ this.keepSystemTrayIconCheckBox.Name = "keepSystemTrayIconCheckBox";
+ this.keepSystemTrayIconCheckBox.Size = new System.Drawing.Size(209, 17);
+ this.keepSystemTrayIconCheckBox.TabIndex = 8;
+ this.keepSystemTrayIconCheckBox.Text = "Keep SoundSwitch\'s System Tray Icon";
+ this.keepSystemTrayIconCheckBox.UseVisualStyleBackColor = true;
+ this.keepSystemTrayIconCheckBox.CheckedChanged += new System.EventHandler(this.checkboxSystrayIcon_CheckedChanged);
+ //
+ // hotkeysTextBox
+ //
+ this.hotkeysTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.hotkeysTextBox.Location = new System.Drawing.Point(90, 293);
+ this.hotkeysTextBox.Name = "hotkeysTextBox";
+ this.hotkeysTextBox.Size = new System.Drawing.Size(132, 20);
+ this.hotkeysTextBox.TabIndex = 15;
//
// hotkeysLabel
//
this.hotkeysLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.hotkeysLabel.AutoSize = true;
- this.hotkeysLabel.Location = new System.Drawing.Point(11, 294);
+ this.hotkeysLabel.Location = new System.Drawing.Point(-16, 296);
this.hotkeysLabel.Name = "hotkeysLabel";
- this.hotkeysLabel.Size = new System.Drawing.Size(46, 13);
+ this.hotkeysLabel.Size = new System.Drawing.Size(100, 13);
this.hotkeysLabel.TabIndex = 14;
this.hotkeysLabel.Text = "Hotkeys";
+ this.hotkeysLabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// selectSoundFileDialog
//
this.selectSoundFileDialog.FileName = "customSound";
//
- // hotkeysCheckbox
+ // hotkeysCheckBox
//
- this.hotkeysCheckbox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.hotkeysCheckbox.AutoSize = true;
- this.hotkeysCheckbox.Location = new System.Drawing.Point(201, 294);
- this.hotkeysCheckbox.Name = "hotkeysCheckbox";
- this.hotkeysCheckbox.Size = new System.Drawing.Size(15, 14);
- this.hotkeysCheckbox.TabIndex = 20;
- this.hotkeysCheckbox.UseVisualStyleBackColor = true;
- this.hotkeysCheckbox.CheckedChanged += new System.EventHandler(this.hotkeysCheckbox_CheckedChanged);
+ this.hotkeysCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.hotkeysCheckBox.AutoSize = true;
+ this.hotkeysCheckBox.Location = new System.Drawing.Point(230, 296);
+ this.hotkeysCheckBox.Name = "hotkeysCheckBox";
+ this.hotkeysCheckBox.Size = new System.Drawing.Size(15, 14);
+ this.hotkeysCheckBox.TabIndex = 20;
+ this.hotkeysCheckBox.UseVisualStyleBackColor = true;
+ this.hotkeysCheckBox.CheckedChanged += new System.EventHandler(this.hotkeysCheckbox_CheckedChanged);
//
- // Settings
+ // SettingsForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.closeButton;
- this.ClientSize = new System.Drawing.Size(565, 323);
- this.Controls.Add(this.hotkeysCheckbox);
- this.Controls.Add(this.hotkeyTextBox);
+ this.ClientSize = new System.Drawing.Size(575, 323);
+ this.Controls.Add(this.hotkeysCheckBox);
+ this.Controls.Add(this.hotkeysTextBox);
this.Controls.Add(this.hotkeysLabel);
this.Controls.Add(this.tabControl);
this.Controls.Add(this.closeButton);
this.MinimumSize = new System.Drawing.Size(500, 325);
- this.Name = "Settings";
+ this.Name = "SettingsForm";
this.Text = "Settings";
this.tabControl.ResumeLayout(false);
- this.playbackPage.ResumeLayout(false);
- this.recordingPage.ResumeLayout(false);
+ this.playbackTabPage.ResumeLayout(false);
+ this.recordingTabPage.ResumeLayout(false);
this.appSettingTabPage.ResumeLayout(false);
- this.updateSettingsGroup.ResumeLayout(false);
- this.updateSettingsGroup.PerformLayout();
- this.audioSettingsGroup.ResumeLayout(false);
- this.audioSettingsGroup.PerformLayout();
- this.basicSettingsGroup.ResumeLayout(false);
- this.basicSettingsGroup.PerformLayout();
+ this.languageGroupBox.ResumeLayout(false);
+ this.updateSettingsGroupBox.ResumeLayout(false);
+ this.updateSettingsGroupBox.PerformLayout();
+ this.audioSettingsGroupBox.ResumeLayout(false);
+ this.audioSettingsGroupBox.PerformLayout();
+ this.basicSettingsGroupBox.ResumeLayout(false);
+ this.basicSettingsGroupBox.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
- private System.Windows.Forms.CheckBox RunAtStartup;
+ private System.Windows.Forms.CheckBox startWithWindowsCheckBox;
private System.Windows.Forms.Button closeButton;
- private System.Windows.Forms.CheckBox communicationCheckbox;
+ private System.Windows.Forms.CheckBox switchCommunicationDeviceCheckBox;
private System.Windows.Forms.TabControl tabControl;
- private System.Windows.Forms.TabPage playbackPage;
+ private System.Windows.Forms.TabPage playbackTabPage;
private System.Windows.Forms.ListView playbackListView;
- private System.Windows.Forms.TabPage recordingPage;
+ private System.Windows.Forms.TabPage recordingTabPage;
private System.Windows.Forms.ListView recordingListView;
- private System.Windows.Forms.TextBox hotkeyTextBox;
+ private System.Windows.Forms.TextBox hotkeysTextBox;
private System.Windows.Forms.Label hotkeysLabel;
private System.Windows.Forms.ComboBox notificationComboBox;
- private System.Windows.Forms.Label notifLabel;
- private System.Windows.Forms.CheckBox includeBetaVersionsCheckbox;
+ private System.Windows.Forms.Label notificationLabel;
+ private System.Windows.Forms.CheckBox includeBetaVersionsCheckBox;
private System.Windows.Forms.OpenFileDialog selectSoundFileDialog;
private System.Windows.Forms.Button selectSoundButton;
- private System.Windows.Forms.CheckBox hotkeysCheckbox;
+ private System.Windows.Forms.CheckBox hotkeysCheckBox;
private System.Windows.Forms.TabPage appSettingTabPage;
- private System.Windows.Forms.GroupBox basicSettingsGroup;
- private System.Windows.Forms.GroupBox audioSettingsGroup;
- private System.Windows.Forms.GroupBox updateSettingsGroup;
+ private System.Windows.Forms.GroupBox basicSettingsGroupBox;
+ private System.Windows.Forms.GroupBox audioSettingsGroupBox;
+ private System.Windows.Forms.GroupBox updateSettingsGroupBox;
private System.Windows.Forms.ComboBox tooltipInfoComboBox;
- private System.Windows.Forms.Label tooltipLabel;
- private System.Windows.Forms.Label cyclerLabel;
- private System.Windows.Forms.ComboBox cyclerComboBox;
- private System.Windows.Forms.CheckBox checkboxSystrayIcon;
+ private System.Windows.Forms.Label tooltipOnHoverLabel;
+ private System.Windows.Forms.Label cycleThroughLabel;
+ private System.Windows.Forms.ComboBox cycleThroughComboBox;
+ private System.Windows.Forms.CheckBox keepSystemTrayIconCheckBox;
private System.Windows.Forms.RadioButton updateNotifyRadioButton;
- private System.Windows.Forms.RadioButton updateSilentRadioButton;
- private System.Windows.Forms.RadioButton updateNeverRadioButton;
+ private System.Windows.Forms.RadioButton updateSilentRadioButton;
+ private System.Windows.Forms.RadioButton updateNeverRadioButton;
+ private System.Windows.Forms.GroupBox languageGroupBox;
+ private System.Windows.Forms.ComboBox languageComboBox;
}
}
\ No newline at end of file
diff --git a/SoundSwitch/UI/Forms/Settings.cs b/SoundSwitch/UI/Forms/Settings.cs
index 6974ffe9c2..40dcb9d767 100644
--- a/SoundSwitch/UI/Forms/Settings.cs
+++ b/SoundSwitch/UI/Forms/Settings.cs
@@ -1,6 +1,6 @@
/********************************************************************
* Copyright (C) 2015 Jeroen Pelgrims
-* Copyright (C) 2015 Antoine Aflalo
+* Copyright (C) 2015-2017 Antoine Aflalo
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -18,7 +18,6 @@
using System.ComponentModel;
using System.Drawing;
using System.Linq;
-using System.Runtime.Remoting.Messaging;
using System.Windows.Forms;
using AudioEndPointControllerWrapper;
using SoundSwitch.Framework;
@@ -29,70 +28,77 @@
using SoundSwitch.Framework.TooltipInfoManager;
using SoundSwitch.Framework.TooltipInfoManager.TootipInfo;
using SoundSwitch.Framework.Updater;
+using SoundSwitch.Localization;
using SoundSwitch.Model;
using SoundSwitch.Properties;
using SoundSwitch.Util;
namespace SoundSwitch.UI.Forms
{
- public partial class Settings : Form
+ public sealed partial class SettingsForm : Form
{
private readonly bool _loaded;
- public Settings()
+ public SettingsForm()
{
+ // Form itself
InitializeComponent();
- Name = SettingsString.settings;
- Text = SettingsString.settings;
- if (AssemblyUtils.GetReleaseState() == AssemblyUtils.ReleaseState.Beta)
- {
- Name = SettingsString.settings + ' ' + AssemblyUtils.GetReleaseState();
- Text = SettingsString.settings + ' ' + AssemblyUtils.GetReleaseState();
- }
Icon = Resources.SettingsIcon;
- var toolTip = new ToolTip();
- toolTip.SetToolTip(closeButton, SettingsString.closeTooltip);
+ Text = AssemblyUtils.GetReleaseState() == AssemblyUtils.ReleaseState.Beta ?
+ $"{SettingsStrings.settings} {AssemblyUtils.GetReleaseState()}" :
+ SettingsStrings.settings;
+ LocalizeForm();
- var toolTipComm = new ToolTip();
- toolTipComm.SetToolTip(communicationCheckbox, SettingsString.commTooltip);
+ var closeToolTip = new ToolTip();
+ closeToolTip.SetToolTip(closeButton, SettingsStrings.closeTooltip);
- hotkeyTextBox.KeyDown += (sender, args) => SetHotkey(args);
- hotkeyTextBox.Text = AppConfigs.Configuration.PlaybackHotKeys.Display();
- hotkeyTextBox.Tag = new Tuple(AudioDeviceType.Playback,
- AppConfigs.Configuration.PlaybackHotKeys);
- hotkeyTextBox.Enabled = hotkeysCheckbox.Checked = AppConfigs.Configuration.PlaybackHotKeys.Enabled;
- var toolTipHotkeys = new ToolTip();
- toolTipHotkeys.SetToolTip(hotkeysCheckbox, SettingsString.hotkeyUncheckExplanation);
+ hotkeysTextBox.Text = AppConfigs.Configuration.PlaybackHotKeys.Display();
+ hotkeysTextBox.Tag = new Tuple(AudioDeviceType.Playback, AppConfigs.Configuration.PlaybackHotKeys);
+ hotkeysTextBox.Enabled = hotkeysCheckBox.Checked = AppConfigs.Configuration.PlaybackHotKeys.Enabled;
+ hotkeysTextBox.KeyDown += (sender, args) => SetHotkey(args);
+ var hotkeysToolTip = new ToolTip();
+ hotkeysToolTip.SetToolTip(hotkeysCheckBox, SettingsStrings.hotkeysTooltip);
- RunAtStartup.Checked = AppModel.Instance.RunAtStartup;
- communicationCheckbox.Checked = AppModel.Instance.SetCommunications;
+ // Settings - Basic
+ startWithWindowsCheckBox.Checked = AppModel.Instance.RunAtStartup;
+ keepSystemTrayIconCheckBox.Checked = AppConfigs.Configuration.KeepSystrayIcon;
+
+ var keepSystemTrayIconToolTip = new ToolTip();
+ keepSystemTrayIconToolTip.SetToolTip(keepSystemTrayIconCheckBox, SettingsStrings.keepSystemTrayIconTooltip);
+
+ // Settings - Audio
+ switchCommunicationDeviceCheckBox.Checked = AppModel.Instance.SetCommunications;
+
+ var switchCommunicationsDeviceToolTip = new ToolTip();
+ switchCommunicationsDeviceToolTip.SetToolTip(switchCommunicationDeviceCheckBox, SettingsStrings.communicationsDevice);
+
+ var notificationToolTip = new ToolTip();
+ notificationToolTip.SetToolTip(notificationComboBox, SettingsStrings.notificationTooltip);
- var audioDeviceLister = new AudioDeviceLister(DeviceState.All);
- PopulateAudioList(playbackListView, AppModel.Instance.SelectedPlaybackDevicesList,
- audioDeviceLister.GetPlaybackDevices());
- PopulateAudioList(recordingListView, AppModel.Instance.SelectedRecordingDevicesList,
- audioDeviceLister.GetRecordingDevices());
- notifLabel.Text = SettingsString.notification;
-
- var toolTipNotification = new ToolTip();
- toolTipNotification.SetToolTip(notificationComboBox, Notifications.explanation);
new NotificationFactory().ConfigureListControl(notificationComboBox);
notificationComboBox.SelectedValue = AppModel.Instance.NotificationSettings;
- includeBetaVersionsCheckbox.Checked = AppModel.Instance.IncludeBetaVersions;
- var toolTipBeta = new ToolTip();
- toolTipBeta.SetToolTip(includeBetaVersionsCheckbox, SettingsString.betaExplanation);
-
- selectSoundFileDialog.Filter = SettingsString.supportedAudio + @" (*.wav;*.mp3)|*.wav;*.mp3;*.aiff";
+ selectSoundFileDialog.Filter = SettingsStrings.audioFiles + @" (*.wav;*.mp3)|*.wav;*.mp3;*.aiff";
selectSoundFileDialog.FileOk += SelectSoundFileDialogOnFileOk;
selectSoundFileDialog.CheckFileExists = true;
selectSoundFileDialog.CheckPathExists = true;
- var toolTipSoundButton = new ToolTip();
- toolTipSoundButton.SetToolTip(selectSoundButton, SettingsString.selectSoundButtonTooltip);
- selectSoundButton.Visible = AppModel.Instance.NotificationSettings ==
- NotificationTypeEnum.CustomNotification ||
+ selectSoundButton.Visible = AppModel.Instance.NotificationSettings == NotificationTypeEnum.CustomNotification ||
AppModel.Instance.NotificationSettings == NotificationTypeEnum.ToastNotification;
+ var selectSoundButtonToolTip = new ToolTip();
+ selectSoundButtonToolTip.SetToolTip(selectSoundButton, SettingsStrings.selectSoundButtonTooltip);
+
+ new TooltipInfoFactory().ConfigureListControl(tooltipInfoComboBox);
+ tooltipInfoComboBox.SelectedValue = TooltipInfoManager.CurrentTooltipInfo;
+
+ new DeviceCyclerFactory().ConfigureListControl(cycleThroughComboBox);
+ cycleThroughComboBox.SelectedValue = DeviceCyclerManager.CurrentCycler;
+
+ var cycleThroughToolTip = new ToolTip();
+ cycleThroughToolTip.SetToolTip(cycleThroughComboBox, SettingsStrings.cycleThroughTooltip);
+
+ // Settings - Update
+ includeBetaVersionsCheckBox.Checked = AppModel.Instance.IncludeBetaVersions;
switch (AppModel.Instance.UpdateMode)
{
@@ -101,7 +107,7 @@ public Settings()
break;
case UpdateMode.Notify:
updateNotifyRadioButton.Checked = true;
- break;
+ break;
case UpdateMode.Never:
updateNeverRadioButton.Checked = true;
break;
@@ -109,27 +115,58 @@ public Settings()
throw new ArgumentOutOfRangeException();
}
- var toolTipAutoInstall = new ToolTip();
- toolTipAutoInstall.SetToolTip(updateSilentRadioButton, SettingsString.autoInstallHelp);
-
- var toolTipCheckUpdate = new ToolTip();
- toolTipCheckUpdate.SetToolTip(updateNotifyRadioButton, SettingsString.checkUpdateHelp);
+ var includeBetaVersionsToolTip = new ToolTip();
+ includeBetaVersionsToolTip.SetToolTip(includeBetaVersionsCheckBox, string.Format(SettingsStrings.updateIncludeBetaVersionsTooltip, Application.ProductName));
- new TooltipInfoFactory().ConfigureListControl(tooltipInfoComboBox);
- tooltipInfoComboBox.SelectedValue = TooltipInfoManager.CurrentTooltipInfo;
+ // Settings - Language
+ languageComboBox.SelectedIndex = (int)AppConfigs.Configuration.Language;
- var toolTipCycler = new ToolTip();
- toolTipCycler.SetToolTip(cyclerComboBox, AudioCycler.tooltipExplanation);
- new DeviceCyclerFactory().ConfigureListControl(cyclerComboBox);
- cyclerComboBox.SelectedValue = DeviceCyclerManager.CurrentCycler;
-
- var toolTipSystray = new ToolTip();
- toolTipSystray.SetToolTip(checkboxSystrayIcon, SettingsString.keepSystrayIconHelp);
- checkboxSystrayIcon.Checked = AppConfigs.Configuration.KeepSystrayIcon;
+ // Playback and Recording
+ var audioDeviceLister = new AudioDeviceLister(DeviceState.All);
+ PopulateAudioList(playbackListView, AppModel.Instance.SelectedPlaybackDevicesList, audioDeviceLister.GetPlaybackDevices());
+ PopulateAudioList(recordingListView, AppModel.Instance.SelectedRecordingDevicesList, audioDeviceLister.GetRecordingDevices());
_loaded = true;
}
+ private void LocalizeForm()
+ {
+ // TabPages
+ playbackTabPage.Text = SettingsStrings.playback;
+ playbackListView.Groups[0].Header = SettingsStrings.selected;
+
+ recordingTabPage.Text = SettingsStrings.recording;
+ recordingListView.Groups[0].Header = SettingsStrings.selected;
+
+ appSettingTabPage.Text = SettingsStrings.settings;
+
+ // Settings - Basic
+ basicSettingsGroupBox.Text = SettingsStrings.basicSettings;
+ startWithWindowsCheckBox.Text = SettingsStrings.startWithWindows;
+ keepSystemTrayIconCheckBox.Text = SettingsStrings.keepSystemTrayIcon;
+
+ // Settings - Audio
+ audioSettingsGroupBox.Text = SettingsStrings.audioSettings;
+ switchCommunicationDeviceCheckBox.Text = SettingsStrings.communicationsDevice;
+ notificationLabel.Text = SettingsStrings.notification;
+ tooltipOnHoverLabel.Text = SettingsStrings.tooltipOnHover;
+ cycleThroughLabel.Text = SettingsStrings.cycleThrough;
+
+ // Settings - Update
+ updateSettingsGroupBox.Text = SettingsStrings.updateSettings;
+ updateSilentRadioButton.Text = SettingsStrings.updateInstallAutomatically;
+ updateNotifyRadioButton.Text = SettingsStrings.updateNotify;
+ updateNeverRadioButton.Text = SettingsStrings.updateNever;
+ includeBetaVersionsCheckBox.Text = SettingsStrings.updateIncludeBetaVersions;
+
+ // Settings - Language
+ languageGroupBox.Text = SettingsStrings.language;
+
+ // Misc
+ hotkeysLabel.Text = SettingsStrings.hotkeys;
+ closeButton.Text = SettingsStrings.close;
+ }
+
private void SelectSoundFileDialogOnFileOk(object sender, CancelEventArgs cancelEventArgs)
{
AppModel.Instance.CustomNotificationSound = new CachedSound(selectSoundFileDialog.FileName);
@@ -169,19 +206,16 @@ private void SetHotkey(KeyEventArgs e)
if (key == Keys.None)
{
- hotkeyTextBox.Text = $"{displayString}";
- hotkeyTextBox.ForeColor = Color.Crimson;
+ hotkeysTextBox.Text = displayString;
+ hotkeysTextBox.ForeColor = Color.Crimson;
}
else
{
- hotkeyTextBox.Text = $"{displayString}{key}";
- var tuple = (Tuple)hotkeyTextBox.Tag;
+ hotkeysTextBox.Text = displayString + key;
+ var tuple = (Tuple)hotkeysTextBox.Tag;
var newTuple = new Tuple(tuple.Item1, new HotKeys(e.KeyCode, modifierKeys));
- hotkeyTextBox.Tag = newTuple;
- hotkeyTextBox.ForeColor = AppModel.Instance.SetHotkeyCombination(newTuple.Item2,
- newTuple.Item1)
- ? Color.Green
- : Color.Red;
+ hotkeysTextBox.Tag = newTuple;
+ hotkeysTextBox.ForeColor = AppModel.Instance.SetHotkeyCombination(newTuple.Item2, newTuple.Item1) ? Color.Green : Color.Red;
}
e.Handled = true;
}
@@ -194,21 +228,19 @@ private void closeButton_Click(object sender, EventArgs e)
private void tabControl_SelectedIndexChanged(object sender, EventArgs e)
{
var tabControlSender = (TabControl)sender;
- if (tabControlSender.SelectedTab == playbackPage)
+ if (tabControlSender.SelectedTab == playbackTabPage)
{
SetHotkeysFieldsVisibility(true);
- hotkeyTextBox.Text = AppConfigs.Configuration.PlaybackHotKeys.Display();
- hotkeyTextBox.Tag = new Tuple(AudioDeviceType.Playback,
- AppConfigs.Configuration.PlaybackHotKeys);
- hotkeysCheckbox.Checked = AppConfigs.Configuration.PlaybackHotKeys.Enabled;
+ hotkeysTextBox.Text = AppConfigs.Configuration.PlaybackHotKeys.Display();
+ hotkeysTextBox.Tag = new Tuple(AudioDeviceType.Playback, AppConfigs.Configuration.PlaybackHotKeys);
+ hotkeysCheckBox.Checked = AppConfigs.Configuration.PlaybackHotKeys.Enabled;
}
- else if (tabControlSender.SelectedTab == recordingPage)
+ else if (tabControlSender.SelectedTab == recordingTabPage)
{
SetHotkeysFieldsVisibility(true);
- hotkeyTextBox.Text = AppConfigs.Configuration.RecordingHotKeys.Display();
- hotkeyTextBox.Tag = new Tuple(AudioDeviceType.Recording,
- AppConfigs.Configuration.RecordingHotKeys);
- hotkeysCheckbox.Checked = AppConfigs.Configuration.RecordingHotKeys.Enabled;
+ hotkeysTextBox.Text = AppConfigs.Configuration.RecordingHotKeys.Display();
+ hotkeysTextBox.Tag = new Tuple(AudioDeviceType.Recording, AppConfigs.Configuration.RecordingHotKeys);
+ hotkeysCheckBox.Checked = AppConfigs.Configuration.RecordingHotKeys.Enabled;
}
else if (tabControlSender.SelectedTab == appSettingTabPage)
{
@@ -218,8 +250,8 @@ private void tabControl_SelectedIndexChanged(object sender, EventArgs e)
private void SetHotkeysFieldsVisibility(bool visibility)
{
- hotkeysCheckbox.Visible = visibility;
- hotkeyTextBox.Visible = visibility;
+ hotkeysCheckBox.Visible = visibility;
+ hotkeysTextBox.Visible = visibility;
hotkeysLabel.Visible = visibility;
}
@@ -254,7 +286,6 @@ private void notificationComboBox_SelectedValueChanged(object sender, EventArgs
AppModel.Instance.NotificationSettings = (NotificationTypeEnum)value;
}
-
private void tooltipInfoComboBox_SelectedValueChanged(object sender, EventArgs e)
{
if (!_loaded)
@@ -281,6 +312,25 @@ private void cyclerComboBox_SelectedValueChanged(object sender, EventArgs e)
DeviceCyclerManager.CurrentCycler = cycler;
}
+ private void languageComboBox_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (!_loaded)
+ return;
+ var comboBox = (ComboBox)sender;
+
+ if (comboBox == null)
+ return;
+
+ AppModel.Instance.Language = (Language)languageComboBox.SelectedIndex;
+
+ if (MessageBox.Show(string.Format(SettingsStrings.languageRestartRequired, Application.ProductName),
+ SettingsStrings.languageRestartRequiredCaption,
+ MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
+ {
+ Program.RestartApp();
+ }
+ }
+
private void selectSoundButton_Click(object sender, EventArgs e)
{
var result = selectSoundFileDialog.ShowDialog(this);
@@ -292,9 +342,9 @@ private void selectSoundButton_Click(object sender, EventArgs e)
private void hotkeysCheckbox_CheckedChanged(object sender, EventArgs e)
{
- var tuple = (Tuple)hotkeyTextBox.Tag;
+ var tuple = (Tuple)hotkeysTextBox.Tag;
var currentState = tuple.Item2.Enabled;
- hotkeyTextBox.Enabled = tuple.Item2.Enabled = hotkeysCheckbox.Checked;
+ hotkeysTextBox.Enabled = tuple.Item2.Enabled = hotkeysCheckBox.Checked;
if (currentState != tuple.Item2.Enabled)
AppModel.Instance.SetHotkeyCombination(tuple.Item2, tuple.Item1);
}
@@ -303,7 +353,7 @@ private void hotkeysCheckbox_CheckedChanged(object sender, EventArgs e)
private void RunAtStartup_CheckedChanged(object sender, EventArgs e)
{
- var ras = RunAtStartup.Checked;
+ var ras = startWithWindowsCheckBox.Checked;
try
{
AppModel.Instance.RunAtStartup = ras;
@@ -311,13 +361,13 @@ private void RunAtStartup_CheckedChanged(object sender, EventArgs e)
catch (Exception ex)
{
MessageBox.Show(@"Error changing run at startup setting: " + ex.Message);
- RunAtStartup.Checked = AppModel.Instance.RunAtStartup;
+ startWithWindowsCheckBox.Checked = AppModel.Instance.RunAtStartup;
}
}
private void communicationCheckbox_CheckedChanged(object sender, EventArgs e)
{
- var comm = communicationCheckbox.Checked;
+ var comm = switchCommunicationDeviceCheckBox.Checked;
try
{
AppModel.Instance.SetCommunications = comm;
@@ -325,13 +375,13 @@ private void communicationCheckbox_CheckedChanged(object sender, EventArgs e)
catch (Exception ex)
{
MessageBox.Show(@"Error changing run at startup setting: " + ex.Message);
- communicationCheckbox.Checked = AppModel.Instance.SetCommunications;
+ switchCommunicationDeviceCheckBox.Checked = AppModel.Instance.SetCommunications;
}
}
private void betaVersionCheckbox_CheckedChanged(object sender, EventArgs e)
{
- AppModel.Instance.IncludeBetaVersions = includeBetaVersionsCheckbox.Checked;
+ AppModel.Instance.IncludeBetaVersions = includeBetaVersionsCheckBox.Checked;
}
#endregion
@@ -371,7 +421,7 @@ private void PopulateAudioList(ListView listView, ICollection selectedDe
}
///
- /// Using the information of the AudioDeviceWrapper, generate a ListViewItem
+ /// Using the information of the AudioDeviceWrapper, generate a ListViewItem
///
///
///
@@ -400,7 +450,7 @@ private ListViewItem GenerateListViewItem(IAudioDevice device, ICollection
- /// Using the DeviceClassIconPath, get the Icon
+ /// Using the DeviceClassIconPath, get the Icon
///
///
///
@@ -438,7 +488,7 @@ private void ListViewItemChecked(object sender, ItemCheckEventArgs e)
#region Groups
///
- /// Get the ListViewItem group in which the device belongs.
+ /// Get the ListViewItem group in which the device belongs.
///
///
///
@@ -456,8 +506,8 @@ private ListViewGroup GetGroup(DeviceState deviceState, ListView listView)
private void PopulateDeviceTypeGroups(ListView listView)
{
- listView.Groups.Add(new ListViewGroup(DeviceState.Active.ToString(), SettingsString.connected));
- listView.Groups.Add(new ListViewGroup(DeviceState.NotPresent.ToString(), SettingsString.disconnected));
+ listView.Groups.Add(new ListViewGroup(DeviceState.Active.ToString(), SettingsStrings.connected));
+ listView.Groups.Add(new ListViewGroup(DeviceState.NotPresent.ToString(), SettingsStrings.disconnected));
}
#endregion
@@ -466,7 +516,7 @@ private void PopulateDeviceTypeGroups(ListView listView)
private void checkboxSystrayIcon_CheckedChanged(object sender, EventArgs e)
{
- AppConfigs.Configuration.KeepSystrayIcon = checkboxSystrayIcon.Checked;
+ AppConfigs.Configuration.KeepSystrayIcon = keepSystemTrayIconCheckBox.Checked;
AppConfigs.Configuration.Save();
AppModel.Instance.TrayIcon.UpdateIcon();
}
diff --git a/SoundSwitch/UI/Forms/Settings.resx b/SoundSwitch/UI/Forms/Settings.resx
new file mode 100644
index 0000000000..f22f541cc9
--- /dev/null
+++ b/SoundSwitch/UI/Forms/Settings.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/SoundSwitch/UI/Forms/UpdateDownloadForm.Designer.cs b/SoundSwitch/UI/Forms/UpdateDownloadForm.Designer.cs
index ae82ed512f..e067cd856a 100644
--- a/SoundSwitch/UI/Forms/UpdateDownloadForm.Designer.cs
+++ b/SoundSwitch/UI/Forms/UpdateDownloadForm.Designer.cs
@@ -1,9 +1,6 @@
-using SoundSwitch.Properties;
-using SoundSwitch.UI.Controls;
-
-namespace SoundSwitch.UI.Forms
+namespace SoundSwitch.UI.Forms
{
- partial class UpdateDownloadForm
+ sealed partial class UpdateDownloadForm
{
///
/// Required designer variable.
@@ -38,11 +35,11 @@ private void InitializeComponent()
this.changeLog = new SoundSwitch.UI.Controls.ChangelogWebViewer();
this.changeLogGroup.SuspendLayout();
this.SuspendLayout();
- //
+ //
// changeLogGroup
- //
- this.changeLogGroup.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
+ //
+ this.changeLogGroup.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.changeLogGroup.Controls.Add(this.changeLog);
this.changeLogGroup.Location = new System.Drawing.Point(12, 46);
@@ -50,34 +47,34 @@ private void InitializeComponent()
this.changeLogGroup.Size = new System.Drawing.Size(540, 229);
this.changeLogGroup.TabIndex = 0;
this.changeLogGroup.TabStop = false;
- this.changeLogGroup.Text = UpdateFormStrings.changelog;
- //
+ this.changeLogGroup.Text = "Changelog";
+ //
// cancelButton
- //
+ //
this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.cancelButton.Location = new System.Drawing.Point(473, 304);
this.cancelButton.Name = "cancelButton";
this.cancelButton.Size = new System.Drawing.Size(75, 23);
this.cancelButton.TabIndex = 2;
- this.cancelButton.Text = UpdateFormStrings.cancel;
+ this.cancelButton.Text = "Cancel";
this.cancelButton.UseVisualStyleBackColor = true;
this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
- //
+ //
// installButton
- //
+ //
this.installButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.installButton.Enabled = false;
this.installButton.Location = new System.Drawing.Point(12, 304);
this.installButton.Name = "installButton";
this.installButton.Size = new System.Drawing.Size(75, 23);
this.installButton.TabIndex = 3;
- this.installButton.Text = UpdateFormStrings.install;
+ this.installButton.Text = "Install";
this.installButton.UseVisualStyleBackColor = true;
this.installButton.Click += new System.EventHandler(this.installButton_Click);
- //
+ //
// downloadProgress
- //
- this.downloadProgress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ //
+ this.downloadProgress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.downloadProgress.CustomText = null;
this.downloadProgress.DisplayStyle = SoundSwitch.UI.Controls.TextProgressBar.ProgressBarDisplayText.Percentage;
@@ -85,9 +82,9 @@ private void InitializeComponent()
this.downloadProgress.Name = "downloadProgress";
this.downloadProgress.Size = new System.Drawing.Size(540, 23);
this.downloadProgress.TabIndex = 1;
- //
+ //
// changeLog
- //
+ //
this.changeLog.Dock = System.Windows.Forms.DockStyle.Fill;
this.changeLog.IsWebBrowserContextMenuEnabled = false;
this.changeLog.Location = new System.Drawing.Point(3, 16);
@@ -96,9 +93,9 @@ private void InitializeComponent()
this.changeLog.Size = new System.Drawing.Size(534, 210);
this.changeLog.TabIndex = 0;
this.changeLog.WebBrowserShortcutsEnabled = false;
- //
+ //
// UpdateDownloadForm
- //
+ //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.Control;
diff --git a/SoundSwitch/UI/Forms/UpdateDownloadForm.cs b/SoundSwitch/UI/Forms/UpdateDownloadForm.cs
index fd8c657c30..5d769ce56a 100644
--- a/SoundSwitch/UI/Forms/UpdateDownloadForm.cs
+++ b/SoundSwitch/UI/Forms/UpdateDownloadForm.cs
@@ -1,11 +1,11 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
@@ -13,16 +13,16 @@
********************************************************************/
using System;
-using System.Drawing;
using System.Windows.Forms;
using SoundSwitch.Framework;
using SoundSwitch.Framework.Updater;
+using SoundSwitch.Localization;
using SoundSwitch.Properties;
using SoundSwitch.UI.Controls;
namespace SoundSwitch.UI.Forms
{
- public partial class UpdateDownloadForm : Form
+ public sealed partial class UpdateDownloadForm : Form
{
private readonly WebFile _releaseFile;
@@ -31,28 +31,33 @@ public UpdateDownloadForm(Release release)
InitializeComponent();
Icon = Resources.UpdateIcon;
Text = release.Name;
+ LocalizeForm();
Focus();
+
changeLog.SetChangelog(release.Changelog);
downloadProgress.DisplayStyle = TextProgressBar.ProgressBarDisplayText.Both;
downloadProgress.CustomText = release.Asset.name;
+
_releaseFile = new WebFile(new Uri(release.Asset.browser_download_url));
- _releaseFile.DownloadProgressChanged +=
- (sender, args) =>
- {
- downloadProgress.Invoke(new Action(() => { downloadProgress.Value = args.ProgressPercentage; }));
- };
+ _releaseFile.DownloadProgressChanged += (sender, args) =>
+ {
+ downloadProgress.Invoke(new Action(() => { downloadProgress.Value = args.ProgressPercentage; }));
+ };
_releaseFile.DownloadFailed += (sender, @event) =>
{
AppLogger.Log.Error("Couldn't download the Release ", @event.Exception);
- MessageBox.Show(@event.Exception.Message, UpdateFormStrings.downloadFailed, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ MessageBox.Show(@event.Exception.Message,
+ UpdateDownloadStrings.downloadFailed,
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
};
_releaseFile.Downloaded += (sender, args) =>
{
if (!SignatureChecker.IsValid(_releaseFile.FilePath))
{
AppLogger.Log.Error("Wrong signature for the release");
- MessageBox.Show(UpdateFormStrings.notSigned, UpdateFormStrings.notSignedTitle, MessageBoxButtons.OK,
- MessageBoxIcon.Error);
+ MessageBox.Show(UpdateDownloadStrings.notSigned,
+ UpdateDownloadStrings.notSignedTitle,
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
installButton.Invoke(new Action(() =>
@@ -64,6 +69,14 @@ public UpdateDownloadForm(Release release)
_releaseFile.DownloadFile();
}
+ private void LocalizeForm()
+ {
+ // Misc
+ changeLogGroup.Text = UpdateDownloadStrings.changelog;
+ cancelButton.Text = UpdateDownloadStrings.cancel;
+ installButton.Text = UpdateDownloadStrings.install;
+ }
+
private void cancelButton_Click(object sender, EventArgs e)
{
Close();
diff --git a/SoundSwitch/Util/AssemblyUtils.cs b/SoundSwitch/Util/AssemblyUtils.cs
index 83c7c40da5..f27ee9428a 100644
--- a/SoundSwitch/Util/AssemblyUtils.cs
+++ b/SoundSwitch/Util/AssemblyUtils.cs
@@ -1,4 +1,18 @@
-using System.Linq;
+/********************************************************************
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+********************************************************************/
+
+using System.Linq;
using System.Reflection;
namespace SoundSwitch.Util
@@ -10,6 +24,7 @@ public enum ReleaseState
Stable,
Beta
}
+
///
/// Get Current Assembly configuration
///
@@ -21,6 +36,7 @@ public static AssemblyConfigurationAttribute GetAssemblyConfigurationAttribute()
var config = attributes.OfType().FirstOrDefault();
return config;
}
+
///
/// Get the current state of the application
///
diff --git a/SoundSwitch/Util/AudioDeviceIconExtractor.cs b/SoundSwitch/Util/AudioDeviceIconExtractor.cs
index 7fdb8d1d58..ca1c33c06f 100644
--- a/SoundSwitch/Util/AudioDeviceIconExtractor.cs
+++ b/SoundSwitch/Util/AudioDeviceIconExtractor.cs
@@ -1,11 +1,11 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
diff --git a/SoundSwitch/Util/IconExtractor.cs b/SoundSwitch/Util/IconExtractor.cs
index 5c3d690870..0b6d370a18 100644
--- a/SoundSwitch/Util/IconExtractor.cs
+++ b/SoundSwitch/Util/IconExtractor.cs
@@ -1,11 +1,11 @@
/********************************************************************
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
diff --git a/SoundSwitch/Util/ToolStripDeviceItem.cs b/SoundSwitch/Util/ToolStripDeviceItem.cs
index 5e5889ed73..ad4bdf8f84 100644
--- a/SoundSwitch/Util/ToolStripDeviceItem.cs
+++ b/SoundSwitch/Util/ToolStripDeviceItem.cs
@@ -1,12 +1,12 @@
/********************************************************************
* Copyright (C) 2015 Jeroen Pelgrims
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
diff --git a/SoundSwitch/Util/TrayIcon.cs b/SoundSwitch/Util/TrayIcon.cs
index 0a5298234b..dd730ebc33 100644
--- a/SoundSwitch/Util/TrayIcon.cs
+++ b/SoundSwitch/Util/TrayIcon.cs
@@ -1,12 +1,12 @@
/********************************************************************
* Copyright (C) 2015 Jeroen Pelgrims
-* Copyright (C) 2015 Antoine Aflalo
-*
+* Copyright (C) 2015-2017 Antoine Aflalo
+*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
-*
+*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
@@ -14,7 +14,6 @@
********************************************************************/
using System;
-using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.IO;
@@ -24,10 +23,10 @@
using System.Windows.Forms;
using AudioEndPointControllerWrapper;
using SoundSwitch.Framework;
-using SoundSwitch.Framework.Audio;
using SoundSwitch.Framework.Configuration;
using SoundSwitch.Framework.TooltipInfoManager;
using SoundSwitch.Framework.Updater;
+using SoundSwitch.Localization;
using SoundSwitch.Model;
using SoundSwitch.Properties;
using SoundSwitch.UI.Forms;
@@ -40,7 +39,7 @@ public sealed class TrayIcon : IDisposable
private readonly ContextMenuStrip _settingsMenu = new ContextMenuStrip();
private readonly SynchronizationContext _context = SynchronizationContext.Current ?? new SynchronizationContext();
private volatile bool _needToUpdateList = true;
- public NotifyIcon NotifyIcon { get; } = new NotifyIcon
+ public NotifyIcon NotifyIcon { get; } = new NotifyIcon
{
Visible = true,
Text = Application.ProductName
@@ -54,7 +53,7 @@ public TrayIcon()
{
UpdateIcon();
_tooltipInfoManager = new TooltipInfoManager(NotifyIcon);
- _updateMenuItem = new ToolStripMenuItem(TrayIconStrings.NoUpdate, Resources.Update, OnUpdateClick)
+ _updateMenuItem = new ToolStripMenuItem(TrayIconStrings.noUpdate, Resources.Update, OnUpdateClick)
{
Enabled = false
};
@@ -62,7 +61,7 @@ public TrayIcon()
PopulateSettingsMenu();
- _selectionMenu.Items.Add(TrayIconStrings.NoDevSel, Resources.SettingsSmall, (sender, e) => ShowSettings());
+ _selectionMenu.Items.Add(TrayIconStrings.noDevicesSelected, Resources.SettingsSmall, (sender, e) => ShowSettings());
NotifyIcon.MouseDoubleClick += (sender, args) =>
{
@@ -108,7 +107,7 @@ public void UpdateIcon()
NotifyIcon.Icon = Icon.FromHandle(Resources.SoundSwitch16.GetHicon());
return;
}
-
+
try
{
var defaultDevice = AppModel.Instance.ActiveAudioDeviceLister.GetPlaybackDevices()
@@ -129,7 +128,7 @@ private void PopulateSettingsMenu()
Application.ProductName + ' ' + AssemblyUtils.GetReleaseState() + " (" + Application.ProductVersion +
")", Resources.SoundSwitch16);
_settingsMenu.Items.Add("-");
- _settingsMenu.Items.Add(TrayIconStrings.playbackDev, Resources.PlaybackDevices,
+ _settingsMenu.Items.Add(TrayIconStrings.playbackDevices, Resources.PlaybackDevices,
(sender, e) => { Process.Start(new ProcessStartInfo("control", "mmsys.cpl sounds")); });
_settingsMenu.Items.Add(TrayIconStrings.mixer, Resources.Mixer,
(sender, e) => { Process.Start(new ProcessStartInfo("sndvol.exe")); });
@@ -177,15 +176,14 @@ private void SetEventHandlers()
}
}
};
- AppModel.Instance.DefaultDeviceChanged +=
- (sender, audioChangeEvent) =>
+ AppModel.Instance.DefaultDeviceChanged += (sender, audioChangeEvent) =>
+ {
+ if (AppConfigs.Configuration.KeepSystrayIcon)
{
- if (AppConfigs.Configuration.KeepSystrayIcon)
- {
- return;
- }
- NotifyIcon.Icon = AudioDeviceIconExtractor.ExtractIconFromAudioDevice(audioChangeEvent.device, false);
- };
+ return;
+ }
+ NotifyIcon.Icon = AudioDeviceIconExtractor.ExtractIconFromAudioDevice(audioChangeEvent.device, false);
+ };
AppModel.Instance.DefaultDeviceChanged += (sender, @event) =>
{
if (@event.role != Role.Console)
@@ -194,22 +192,16 @@ private void SetEventHandlers()
}
_needToUpdateList = true;
};
- AppModel.Instance.SelectedDeviceChanged +=
- (sender, @event) => { _needToUpdateList = true; };
+ AppModel.Instance.SelectedDeviceChanged += (sender, @event) => { _needToUpdateList = true; };
AppModel.Instance.NewVersionReleased += (sender, @event) =>
{
if (@event.UpdateMode == UpdateMode.Notify)
_context.Send(s => { NewReleaseAvailable(sender, @event); }, null);
};
- AppModel.Instance.DeviceRemoved +=
- (sender, @event) => { _needToUpdateList = true; };
-
- AppModel.Instance.DeviceAdded +=
- (sender, @event) => { _needToUpdateList = true; };
-
- AppModel.Instance.DeviceStateChanged +=
- (sender, @event) => { _needToUpdateList = true; };
+ AppModel.Instance.DeviceRemoved += (sender, @event) => { _needToUpdateList = true; };
+ AppModel.Instance.DeviceAdded += (sender, @event) => { _needToUpdateList = true; };
+ AppModel.Instance.DeviceStateChanged += (sender, @event) => { _needToUpdateList = true; };
}
private void NewReleaseAvailable(object sender, UpdateChecker.NewReleaseEvent newReleaseEvent)
@@ -219,15 +211,14 @@ private void NewReleaseAvailable(object sender, UpdateChecker.NewReleaseEvent ne
_updateMenuItem.Enabled = true;
NotifyIcon.BalloonTipClicked += OnUpdateClick;
NotifyIcon.ShowBalloonTip(3000,
- string.Format(TrayIconStrings.versionAvailable, Application.ProductName,
- newReleaseEvent.Release.ReleaseVersion),
- newReleaseEvent.Release.Name + '\n' + TrayIconStrings.howDownloadUpdate, ToolTipIcon.Info);
+ string.Format(TrayIconStrings.versionAvailable, Application.ProductName, newReleaseEvent.Release.ReleaseVersion),
+ newReleaseEvent.Release.Name + '\n' + TrayIconStrings.clickToUpdate, ToolTipIcon.Info);
}
public void ShowSettings()
{
- new Settings().Show();
+ new SettingsForm().Show();
}
///
@@ -277,27 +268,31 @@ private void DeviceClicked(object sender, EventArgs e)
}
catch (Exception)
{
+ // ignore
}
}
///
- /// Notification for when there are no devices configured
+ /// Notification for when there are no devices configured
///
public void ShowNoDevices()
{
AppLogger.Log.Info("No devices available");
- NotifyIcon.ShowBalloonTip(3000, string.Format(TrayIconStrings.confNeeded, Application.ProductName),
- TrayIconStrings.confNeededExp, ToolTipIcon.Warning);
+ NotifyIcon.ShowBalloonTip(3000,
+ string.Format(TrayIconStrings.configurationNeeded, Application.ProductName),
+ TrayIconStrings.configurationNeededExplanation, ToolTipIcon.Warning);
}
///
- /// shows an error messasge
+ /// Shows an error message
///
///
///
public void ShowError(string errorMessage, string errorTitle)
{
- NotifyIcon.ShowBalloonTip(3000, $"{Application.ProductName}: {errorTitle}", errorMessage, ToolTipIcon.Error);
+ NotifyIcon.ShowBalloonTip(3000,
+ $"{Application.ProductName}: {errorTitle}",
+ errorMessage, ToolTipIcon.Error);
}
}
}
\ No newline at end of file
diff --git a/SoundSwitch/repl.bat b/SoundSwitch/repl.bat
new file mode 100644
index 0000000000..93bb51cf10
--- /dev/null
+++ b/SoundSwitch/repl.bat
@@ -0,0 +1,349 @@
+@if (@X)==(@Y) @end /* Harmless hybrid line that begins a JScript comment
+
+::************ Documentation ***********
+::REPL.BAT version 6.2
+:::
+:::REPL Search Replace [Options [SourceVar]]
+:::REPL /?[REGEX|REPLACE]
+:::REPL /V
+:::
+::: Performs a global regular expression search and replace operation on
+::: each line of input from stdin and prints the result to stdout.
+:::
+::: Each parameter may be optionally enclosed by double quotes. The double
+::: quotes are not considered part of the argument. The quotes are required
+::: if the parameter contains a batch token delimiter like space, tab, comma,
+::: semicolon. The quotes should also be used if the argument contains a
+::: batch special character like &, |, etc. so that the special character
+::: does not need to be escaped with ^.
+:::
+::: If called with a single argument of /?, then prints help documentation
+::: to stdout. If a single argument of /?REGEX, then opens up Microsoft's
+::: JScript regular expression documentation within your browser. If a single
+::: argument of /?REPLACE, then opens up Microsoft's JScript REPLACE
+::: documentation within your browser.
+:::
+::: If called with a single argument of /V, case insensitive, then prints
+::: the version of REPL.BAT.
+:::
+::: Search - By default, this is a case sensitive JScript (ECMA) regular
+::: expression expressed as a string.
+:::
+::: JScript regex syntax documentation is available at
+::: http://msdn.microsoft.com/en-us/library/ae5bf541(v=vs.80).aspx
+:::
+::: Replace - By default, this is the string to be used as a replacement for
+::: each found search expression. Full support is provided for
+::: substituion patterns available to the JScript replace method.
+:::
+::: For example, $& represents the portion of the source that matched
+::: the entire search pattern, $1 represents the first captured
+::: submatch, $2 the second captured submatch, etc. A $ literal
+::: can be escaped as $$.
+:::
+::: An empty replacement string must be represented as "".
+:::
+::: Replace substitution pattern syntax is fully documented at
+::: http://msdn.microsoft.com/en-US/library/efy6s3e6(v=vs.80).aspx
+:::
+::: Options - An optional string of characters used to alter the behavior
+::: of REPL. The option characters are case insensitive, and may
+::: appear in any order.
+:::
+::: A - Only print altered lines. Unaltered lines are discarded.
+::: If the S options is present, then prints the result only if
+::: there was a change anywhere in the string. The A option is
+::: incompatible with the M option unless the S option is present.
+:::
+::: B - The Search must match the beginning of a line.
+::: Mostly used with literal searches.
+:::
+::: E - The Search must match the end of a line.
+::: Mostly used with literal searches.
+:::
+::: I - Makes the search case-insensitive.
+:::
+::: J - The Replace argument represents a JScript expression.
+::: The expression may access an array like arguments object
+::: named $. However, $ is not a true array object.
+:::
+::: The $.length property contains the total number of arguments
+::: available. The $.length value is equal to n+3, where n is the
+::: number of capturing left parentheses within the Search string.
+:::
+::: $[0] is the substring that matched the Search,
+::: $[1] through $[n] are the captured submatch strings,
+::: $[n+1] is the offset where the match occurred, and
+::: $[n+2] is the original source string.
+:::
+::: Arguments $[0] through $[10] may be abbreviated as
+::: $1 through $10. Argument $[11] and above must use the square
+::: bracket notation.
+:::
+::: L - The Search is treated as a string literal instead of a
+::: regular expression. Also, all $ found in the Replace string
+::: are treated as $ literals.
+:::
+::: M - Multi-line mode. The entire contents of stdin is read and
+::: processed in one pass instead of line by line, thus enabling
+::: search for \n. This also enables preservation of the original
+::: line terminators. If the M option is not present, then every
+::: printed line is terminated with carriage return and line feed.
+::: The M option is incompatible with the A option unless the S
+::: option is also present.
+:::
+::: Note: If working with binary data containing NULL bytes,
+::: then the M option must be used.
+:::
+::: S - The source is read from an environment variable instead of
+::: from stdin. The name of the source environment variable is
+::: specified in the next argument after the option string. Without
+::: the M option, ^ anchors the beginning of the string, and $ the
+::: end of the string. With the M option, ^ anchors the beginning
+::: of a line, and $ the end of a line.
+:::
+::: V - Search and Replace represent the name of environment
+::: variables that contain the respective values. An undefined
+::: variable is treated as an empty string.
+:::
+::: X - Enables extended substitution pattern syntax with support
+::: for the following escape sequences within the Replace string:
+:::
+::: \\ - Backslash
+::: \b - Backspace
+::: \f - Formfeed
+::: \n - Newline
+::: \q - Quote
+::: \r - Carriage Return
+::: \t - Horizontal Tab
+::: \v - Vertical Tab
+::: \xnn - Extended ASCII byte code expressed as 2 hex digits
+::: \unnnn - Unicode character expressed as 4 hex digits
+:::
+::: Also enables the \q escape sequence for the Search string.
+::: The other escape sequences are already standard for a regular
+::: expression Search string.
+:::
+::: Also modifies the behavior of \xnn in the Search string to work
+::: properly with extended ASCII byte codes.
+:::
+::: Extended escape sequences are supported even when the L option
+::: is used. Both Search and Replace support all of the extended
+::: escape sequences if both the X and L opions are combined.
+:::
+::: Return Codes: 0 = At least one change was made
+::: or the /? or /V option was used
+:::
+::: 1 = No change was made
+:::
+::: 2 = Invalid call syntax or incompatible options
+:::
+::: 3 = JScript runtime error, typically due to invalid regex
+:::
+::: REPL.BAT was written by Dave Benham, with assistance from DosTips user Aacini
+::: to get \xnn to work properly with extended ASCII byte codes. Also assistance
+::: from DosTips user penpen diagnosing issues reading NULL bytes, along with a
+::: workaround. REPL.BAT was originally posted at:
+::: http://www.dostips.com/forum/viewtopic.php?f=3&t=3855
+:::
+
+::************ Batch portion ***********
+@echo off
+if .%2 equ . (
+ if "%~1" equ "/?" (
+ <"%~f0" cscript //E:JScript //nologo "%~f0" "^:::" "" a
+ exit /b 0
+ ) else if /i "%~1" equ "/?regex" (
+ explorer "http://msdn.microsoft.com/en-us/library/ae5bf541(v=vs.80).aspx"
+ exit /b 0
+ ) else if /i "%~1" equ "/?replace" (
+ explorer "http://msdn.microsoft.com/en-US/library/efy6s3e6(v=vs.80).aspx"
+ exit /b 0
+ ) else if /i "%~1" equ "/V" (
+ <"%~f0" cscript //E:JScript //nologo "%~f0" "^::(REPL\.BAT version)" "$1" a
+ exit /b 0
+ ) else (
+ call :err "Insufficient arguments"
+ exit /b 2
+ )
+)
+echo(%~3|findstr /i "[^SMILEBVXAJ]" >nul && (
+ call :err "Invalid option(s)"
+ exit /b 2
+)
+echo(%~3|findstr /i "M"|findstr /i "A"|findstr /vi "S" >nul && (
+ call :err "Incompatible options"
+ exit /b 2
+)
+cscript //E:JScript //nologo "%~f0" %*
+exit /b %errorlevel%
+
+:err
+>&2 echo ERROR: %~1. Use REPL /? to get help.
+exit /b
+
+************* JScript portion **********/
+var rtn=1;
+try {
+ var env=WScript.CreateObject("WScript.Shell").Environment("Process");
+ var args=WScript.Arguments;
+ var search=args.Item(0);
+ var replace=args.Item(1);
+ var options="g";
+ if (args.length>2) options+=args.Item(2).toLowerCase();
+ var multi=(options.indexOf("m")>=0);
+ var alterations=(options.indexOf("a")>=0);
+ if (alterations) options=options.replace(/a/g,"");
+ var srcVar=(options.indexOf("s")>=0);
+ if (srcVar) options=options.replace(/s/g,"");
+ var jexpr=(options.indexOf("j")>=0);
+ if (jexpr) options=options.replace(/j/g,"");
+ if (options.indexOf("v")>=0) {
+ options=options.replace(/v/g,"");
+ search=env(search);
+ replace=env(replace);
+ }
+ if (options.indexOf("x")>=0) {
+ options=options.replace(/x/g,"");
+ if (!jexpr) {
+ replace=replace.replace(/\\\\/g,"\\B");
+ replace=replace.replace(/\\q/g,"\"");
+ replace=replace.replace(/\\x80/g,"\\u20AC");
+ replace=replace.replace(/\\x82/g,"\\u201A");
+ replace=replace.replace(/\\x83/g,"\\u0192");
+ replace=replace.replace(/\\x84/g,"\\u201E");
+ replace=replace.replace(/\\x85/g,"\\u2026");
+ replace=replace.replace(/\\x86/g,"\\u2020");
+ replace=replace.replace(/\\x87/g,"\\u2021");
+ replace=replace.replace(/\\x88/g,"\\u02C6");
+ replace=replace.replace(/\\x89/g,"\\u2030");
+ replace=replace.replace(/\\x8[aA]/g,"\\u0160");
+ replace=replace.replace(/\\x8[bB]/g,"\\u2039");
+ replace=replace.replace(/\\x8[cC]/g,"\\u0152");
+ replace=replace.replace(/\\x8[eE]/g,"\\u017D");
+ replace=replace.replace(/\\x91/g,"\\u2018");
+ replace=replace.replace(/\\x92/g,"\\u2019");
+ replace=replace.replace(/\\x93/g,"\\u201C");
+ replace=replace.replace(/\\x94/g,"\\u201D");
+ replace=replace.replace(/\\x95/g,"\\u2022");
+ replace=replace.replace(/\\x96/g,"\\u2013");
+ replace=replace.replace(/\\x97/g,"\\u2014");
+ replace=replace.replace(/\\x98/g,"\\u02DC");
+ replace=replace.replace(/\\x99/g,"\\u2122");
+ replace=replace.replace(/\\x9[aA]/g,"\\u0161");
+ replace=replace.replace(/\\x9[bB]/g,"\\u203A");
+ replace=replace.replace(/\\x9[cC]/g,"\\u0153");
+ replace=replace.replace(/\\x9[dD]/g,"\\u009D");
+ replace=replace.replace(/\\x9[eE]/g,"\\u017E");
+ replace=replace.replace(/\\x9[fF]/g,"\\u0178");
+ replace=replace.replace(/\\b/g,"\b");
+ replace=replace.replace(/\\f/g,"\f");
+ replace=replace.replace(/\\n/g,"\n");
+ replace=replace.replace(/\\r/g,"\r");
+ replace=replace.replace(/\\t/g,"\t");
+ replace=replace.replace(/\\v/g,"\v");
+ replace=replace.replace(/\\x[0-9a-fA-F]{2}|\\u[0-9a-fA-F]{4}/g,
+ function($0,$1,$2){
+ return String.fromCharCode(parseInt("0x"+$0.substring(2)));
+ }
+ );
+ replace=replace.replace(/\\B/g,"\\");
+ }
+ search=search.replace(/\\\\/g,"\\B");
+ search=search.replace(/\\q/g,"\"");
+ search=search.replace(/\\x80/g,"\\u20AC");
+ search=search.replace(/\\x82/g,"\\u201A");
+ search=search.replace(/\\x83/g,"\\u0192");
+ search=search.replace(/\\x84/g,"\\u201E");
+ search=search.replace(/\\x85/g,"\\u2026");
+ search=search.replace(/\\x86/g,"\\u2020");
+ search=search.replace(/\\x87/g,"\\u2021");
+ search=search.replace(/\\x88/g,"\\u02C6");
+ search=search.replace(/\\x89/g,"\\u2030");
+ search=search.replace(/\\x8[aA]/g,"\\u0160");
+ search=search.replace(/\\x8[bB]/g,"\\u2039");
+ search=search.replace(/\\x8[cC]/g,"\\u0152");
+ search=search.replace(/\\x8[eE]/g,"\\u017D");
+ search=search.replace(/\\x91/g,"\\u2018");
+ search=search.replace(/\\x92/g,"\\u2019");
+ search=search.replace(/\\x93/g,"\\u201C");
+ search=search.replace(/\\x94/g,"\\u201D");
+ search=search.replace(/\\x95/g,"\\u2022");
+ search=search.replace(/\\x96/g,"\\u2013");
+ search=search.replace(/\\x97/g,"\\u2014");
+ search=search.replace(/\\x98/g,"\\u02DC");
+ search=search.replace(/\\x99/g,"\\u2122");
+ search=search.replace(/\\x9[aA]/g,"\\u0161");
+ search=search.replace(/\\x9[bB]/g,"\\u203A");
+ search=search.replace(/\\x9[cC]/g,"\\u0153");
+ search=search.replace(/\\x9[dD]/g,"\\u009D");
+ search=search.replace(/\\x9[eE]/g,"\\u017E");
+ search=search.replace(/\\x9[fF]/g,"\\u0178");
+ if (options.indexOf("l")>=0) {
+ search=search.replace(/\\b/g,"\b");
+ search=search.replace(/\\f/g,"\f");
+ search=search.replace(/\\n/g,"\n");
+ search=search.replace(/\\r/g,"\r");
+ search=search.replace(/\\t/g,"\t");
+ search=search.replace(/\\v/g,"\v");
+ search=search.replace(/\\x[0-9a-fA-F]{2}|\\u[0-9a-fA-F]{4}/g,
+ function($0,$1,$2){
+ return String.fromCharCode(parseInt("0x"+$0.substring(2)));
+ }
+ );
+ search=search.replace(/\\B/g,"\\");
+ } else search=search.replace(/\\B/g,"\\\\");
+ }
+ if (options.indexOf("l")>=0) {
+ options=options.replace(/l/g,"");
+ search=search.replace(/([.^$*+?()[{\\|])/g,"\\$1");
+ if (!jexpr) replace=replace.replace(/\$/g,"$$$$");
+ }
+ if (options.indexOf("b")>=0) {
+ options=options.replace(/b/g,"");
+ search="^"+search
+ }
+ if (options.indexOf("e")>=0) {
+ options=options.replace(/e/g,"");
+ search=search+"$"
+ }
+ var search=new RegExp(search,options);
+ var str1, str2;
+
+ if (srcVar) {
+ str1=env(args.Item(3));
+ str2=str1.replace(search,jexpr?replFunc:replace);
+ if (!alterations || str1!=str2) if (multi) {
+ WScript.Stdout.Write(str2);
+ } else {
+ WScript.Stdout.WriteLine(str2);
+ }
+ if (str1!=str2) rtn=0;
+ } else if (multi){
+ var buf=1024;
+ str1="";
+ while (!WScript.StdIn.AtEndOfStream) {
+ str1+=WScript.StdIn.Read(buf);
+ buf*=2
+ }
+ str2=str1.replace(search,jexpr?replFunc:replace);
+ WScript.Stdout.Write(str2);
+ if (str1!=str2) rtn=0;
+ } else {
+ while (!WScript.StdIn.AtEndOfStream) {
+ str1=WScript.StdIn.ReadLine();
+ str2=str1.replace(search,jexpr?replFunc:replace);
+ if (!alterations || str1!=str2) WScript.Stdout.WriteLine(str2);
+ if (str1!=str2) rtn=0;
+ }
+ }
+} catch(e) {
+ WScript.Stderr.WriteLine("JScript runtime error: "+e.message);
+ rtn=3;
+}
+WScript.Quit(rtn);
+
+function replFunc($0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10) {
+ var $=arguments;
+ return(eval(replace));
+}
\ No newline at end of file
diff --git a/img/preview.gif b/img/preview.gif
new file mode 100644
index 0000000000..aae62e85f8
Binary files /dev/null and b/img/preview.gif differ