diff --git a/Voile.Storage.Sqlite/SqliteDataStorageFactory.cs b/Voile.Storage.Sqlite/SqliteDataStorageFactory.cs
index 71d41a0..e3acbd5 100644
--- a/Voile.Storage.Sqlite/SqliteDataStorageFactory.cs
+++ b/Voile.Storage.Sqlite/SqliteDataStorageFactory.cs
@@ -12,6 +12,7 @@ namespace Voile.Storage.Sqlite
{
[VoilePlugin]
[VoilePluginId(3)]
+ [DisplayName("SQLite")]
public class SqliteDataStorageFactory : IVoileDataStorageFactory
{
public IVoileDataStorage CreateDataStorage()
diff --git a/Voile/FirstRunWizard.Designer.cs b/Voile/FirstRunWizard.Designer.cs
index 54c684d..4ce9f2b 100644
--- a/Voile/FirstRunWizard.Designer.cs
+++ b/Voile/FirstRunWizard.Designer.cs
@@ -18,296 +18,332 @@
components.Dispose();
}
base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FirstRunWizard));
- pictureBox1 = new PictureBox();
- tabControl1 = new TabControl();
- tabPageWelcome = new TabPage();
- label2 = new Label();
- label1 = new Label();
- radioButtonAmExpert = new RadioButton();
- radioButtonAmBegginer = new RadioButton();
- tabPageLicense = new TabPage();
- pictureBox2 = new PictureBox();
- label4 = new Label();
- radioButtonNoLicense = new RadioButton();
- buttonLoadLicenseFile = new Button();
- buttonValidateLicense = new Button();
- textBox1 = new TextBox();
- radioButtonHasLicense = new RadioButton();
- label3 = new Label();
- buttonNext = new Button();
- buttonBack = new Button();
- openFileDialogCertificate = new OpenFileDialog();
- tabPage1 = new TabPage();
- label5 = new Label();
- ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
- tabControl1.SuspendLayout();
- tabPageWelcome.SuspendLayout();
- tabPageLicense.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)pictureBox2).BeginInit();
- tabPage1.SuspendLayout();
- SuspendLayout();
- //
- // pictureBox1
- //
- pictureBox1.Image = Properties.Resources.technlgy;
- pictureBox1.Location = new Point(12, 12);
- pictureBox1.Name = "pictureBox1";
- pictureBox1.Size = new Size(120, 90);
- pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
- pictureBox1.TabIndex = 0;
- pictureBox1.TabStop = false;
- //
- // tabControl1
- //
- tabControl1.Controls.Add(tabPageWelcome);
- tabControl1.Controls.Add(tabPageLicense);
- tabControl1.Controls.Add(tabPage1);
- tabControl1.Location = new Point(138, 12);
- tabControl1.Name = "tabControl1";
- tabControl1.SelectedIndex = 0;
- tabControl1.Size = new Size(356, 412);
- tabControl1.TabIndex = 1;
- //
- // tabPageWelcome
- //
- tabPageWelcome.Controls.Add(label2);
- tabPageWelcome.Controls.Add(label1);
- tabPageWelcome.Controls.Add(radioButtonAmExpert);
- tabPageWelcome.Controls.Add(radioButtonAmBegginer);
- tabPageWelcome.Location = new Point(4, 24);
- tabPageWelcome.Name = "tabPageWelcome";
- tabPageWelcome.Padding = new Padding(3);
- tabPageWelcome.Size = new Size(348, 384);
- tabPageWelcome.TabIndex = 0;
- tabPageWelcome.Text = "Welcome!";
- tabPageWelcome.UseVisualStyleBackColor = true;
- //
- // label2
- //
- label2.AutoSize = true;
- label2.Location = new Point(6, 3);
- label2.Name = "label2";
- label2.Size = new Size(328, 240);
- label2.TabIndex = 3;
- label2.Text = resources.GetString("label2.Text");
- //
- // label1
- //
- label1.AutoSize = true;
- label1.Location = new Point(6, 308);
- label1.Name = "label1";
- label1.Size = new Size(202, 15);
- label1.TabIndex = 2;
- label1.Text = "(You can change these options later!)";
- //
- // radioButtonAmExpert
- //
- radioButtonAmExpert.AutoSize = true;
- radioButtonAmExpert.Location = new Point(6, 271);
- radioButtonAmExpert.Name = "radioButtonAmExpert";
- radioButtonAmExpert.Size = new Size(299, 34);
- radioButtonAmExpert.TabIndex = 1;
- radioButtonAmExpert.Text = "I’m an expert. Let me choose my own database and \r\nstorage options.";
- radioButtonAmExpert.UseVisualStyleBackColor = true;
- radioButtonAmExpert.CheckedChanged += radioButtonAmExpert_CheckedChanged;
- //
- // radioButtonAmBegginer
- //
- radioButtonAmBegginer.AutoSize = true;
- radioButtonAmBegginer.Location = new Point(6, 246);
- radioButtonAmBegginer.Name = "radioButtonAmBegginer";
- radioButtonAmBegginer.Size = new Size(298, 19);
- radioButtonAmBegginer.TabIndex = 0;
- radioButtonAmBegginer.Text = "I’m a beginner. Set things up for me automatically. ";
- radioButtonAmBegginer.UseVisualStyleBackColor = true;
- radioButtonAmBegginer.CheckedChanged += radioButtonAmBegginer_CheckedChanged;
- //
- // tabPageLicense
- //
- tabPageLicense.Controls.Add(pictureBox2);
- tabPageLicense.Controls.Add(label4);
- tabPageLicense.Controls.Add(radioButtonNoLicense);
- tabPageLicense.Controls.Add(buttonLoadLicenseFile);
- tabPageLicense.Controls.Add(buttonValidateLicense);
- tabPageLicense.Controls.Add(textBox1);
- tabPageLicense.Controls.Add(radioButtonHasLicense);
- tabPageLicense.Controls.Add(label3);
- tabPageLicense.Location = new Point(4, 24);
- tabPageLicense.Name = "tabPageLicense";
- tabPageLicense.Padding = new Padding(3);
- tabPageLicense.Size = new Size(348, 384);
- tabPageLicense.TabIndex = 1;
- tabPageLicense.Text = "License";
- tabPageLicense.UseVisualStyleBackColor = true;
- //
- // pictureBox2
- //
- pictureBox2.Image = Properties.Resources.SETUPAPI_18_1_32x32x4;
- pictureBox2.Location = new Point(127, 262);
- pictureBox2.Name = "pictureBox2";
- pictureBox2.Size = new Size(32, 32);
- pictureBox2.TabIndex = 7;
- pictureBox2.TabStop = false;
- pictureBox2.Click += pictureBox2_Click;
- //
- // label4
- //
- label4.AutoSize = true;
- label4.Location = new Point(22, 344);
- label4.Name = "label4";
- label4.Size = new Size(299, 30);
- label4.TabIndex = 6;
- label4.Text = "(You can also change between Licensed and Shareware \r\nmode later!)";
- //
- // radioButtonNoLicense
- //
- radioButtonNoLicense.AutoSize = true;
- radioButtonNoLicense.Location = new Point(6, 307);
- radioButtonNoLicense.Name = "radioButtonNoLicense";
- radioButtonNoLicense.Size = new Size(309, 34);
- radioButtonNoLicense.TabIndex = 5;
- radioButtonNoLicense.Text = "No license yet — I’d like to use the shareware version, \r\nor request a license later.";
- radioButtonNoLicense.UseVisualStyleBackColor = true;
- radioButtonNoLicense.CheckedChanged += radioButtonNoLicense_CheckedChanged;
- //
- // buttonLoadLicenseFile
- //
- buttonLoadLicenseFile.Enabled = false;
- buttonLoadLicenseFile.Location = new Point(246, 262);
- buttonLoadLicenseFile.Name = "buttonLoadLicenseFile";
- buttonLoadLicenseFile.Size = new Size(75, 39);
- buttonLoadLicenseFile.TabIndex = 4;
- buttonLoadLicenseFile.Text = "Load License File";
- buttonLoadLicenseFile.UseVisualStyleBackColor = true;
- buttonLoadLicenseFile.Click += buttonLoadLicenseFile_Click;
- //
- // buttonValidateLicense
- //
- buttonValidateLicense.Enabled = false;
- buttonValidateLicense.Location = new Point(165, 262);
- buttonValidateLicense.Name = "buttonValidateLicense";
- buttonValidateLicense.Size = new Size(75, 39);
- buttonValidateLicense.TabIndex = 3;
- buttonValidateLicense.Text = "Validate License";
- buttonValidateLicense.UseVisualStyleBackColor = true;
- buttonValidateLicense.Click += buttonValidateLicense_Click;
- //
- // textBox1
- //
- textBox1.Enabled = false;
- textBox1.Location = new Point(17, 233);
- textBox1.Name = "textBox1";
- textBox1.Size = new Size(304, 23);
- textBox1.TabIndex = 2;
- //
- // radioButtonHasLicense
- //
- radioButtonHasLicense.AutoSize = true;
- radioButtonHasLicense.Location = new Point(3, 208);
- radioButtonHasLicense.Name = "radioButtonHasLicense";
- radioButtonHasLicense.Size = new Size(189, 19);
- radioButtonHasLicense.TabIndex = 1;
- radioButtonHasLicense.Text = "Yes, I have a license file to load.";
- radioButtonHasLicense.UseVisualStyleBackColor = true;
- radioButtonHasLicense.CheckedChanged += radioButton3_CheckedChanged;
- //
- // label3
- //
- label3.AutoSize = true;
- label3.Location = new Point(6, 3);
- label3.Name = "label3";
- label3.Size = new Size(337, 120);
- label3.TabIndex = 0;
- label3.Text = resources.GetString("label3.Text");
- //
- // buttonNext
- //
- buttonNext.Enabled = false;
- buttonNext.Location = new Point(419, 430);
- buttonNext.Name = "buttonNext";
- buttonNext.Size = new Size(75, 23);
- buttonNext.TabIndex = 2;
- buttonNext.Text = "Next >";
- buttonNext.UseVisualStyleBackColor = true;
- buttonNext.Click += buttonNext_Click;
- //
- // buttonBack
- //
- buttonBack.Enabled = false;
- buttonBack.Location = new Point(338, 430);
- buttonBack.Name = "buttonBack";
- buttonBack.Size = new Size(75, 23);
- buttonBack.TabIndex = 3;
- buttonBack.Text = "< Back";
- buttonBack.UseVisualStyleBackColor = true;
- //
- // openFileDialogCertificate
- //
- openFileDialogCertificate.DefaultExt = "cer";
- openFileDialogCertificate.FileName = "openFileDialog1";
- openFileDialogCertificate.Filter = "X.509 Certificate (*.cer)|*.cer";
- openFileDialogCertificate.Title = "Open Voile License File";
- //
- // tabPage1
- //
- tabPage1.Controls.Add(label5);
- tabPage1.Location = new Point(4, 24);
- tabPage1.Name = "tabPage1";
- tabPage1.Size = new Size(348, 384);
- tabPage1.TabIndex = 2;
- tabPage1.Text = "Pick Data Storage";
- tabPage1.UseVisualStyleBackColor = true;
- //
- // label5
- //
- label5.AutoSize = true;
- label5.Location = new Point(3, 0);
- label5.Name = "label5";
- label5.Size = new Size(347, 165);
- label5.TabIndex = 0;
- label5.Text = resources.GetString("label5.Text");
- //
- // FirstRunWizard
- //
- AutoScaleDimensions = new SizeF(7F, 15F);
- AutoScaleMode = AutoScaleMode.Font;
- ClientSize = new Size(502, 465);
- Controls.Add(buttonBack);
- Controls.Add(buttonNext);
- Controls.Add(tabControl1);
- Controls.Add(pictureBox1);
- FormBorderStyle = FormBorderStyle.FixedSingle;
- MaximizeBox = false;
- MinimizeBox = false;
- Name = "FirstRunWizard";
- ShowIcon = false;
- Text = "Voile - First Run Wizard";
- ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
- tabControl1.ResumeLayout(false);
- tabPageWelcome.ResumeLayout(false);
- tabPageWelcome.PerformLayout();
- tabPageLicense.ResumeLayout(false);
- tabPageLicense.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)pictureBox2).EndInit();
- tabPage1.ResumeLayout(false);
- tabPage1.PerformLayout();
- ResumeLayout(false);
- }
-
- #endregion
-
- private PictureBox pictureBox1;
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FirstRunWizard));
+ pictureBox1 = new PictureBox();
+ tabControl1 = new TabControl();
+ tabPageWelcome = new TabPage();
+ label2 = new Label();
+ label1 = new Label();
+ radioButtonAmExpert = new RadioButton();
+ radioButtonAmBegginer = new RadioButton();
+ tabPageLicense = new TabPage();
+ pictureBox2 = new PictureBox();
+ label4 = new Label();
+ radioButtonNoLicense = new RadioButton();
+ buttonLoadLicenseFile = new Button();
+ buttonValidateLicense = new Button();
+ textBox1 = new TextBox();
+ radioButtonHasLicense = new RadioButton();
+ label3 = new Label();
+ tabPagePickDataStorage = new TabPage();
+ labelDataStorageHint = new Label();
+ label5 = new Label();
+ buttonNext = new Button();
+ buttonBack = new Button();
+ openFileDialogCertificate = new OpenFileDialog();
+ tabPageConfigureDataStorage = new TabPage();
+ label6 = new Label();
+ ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
+ tabControl1.SuspendLayout();
+ tabPageWelcome.SuspendLayout();
+ tabPageLicense.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)pictureBox2).BeginInit();
+ tabPagePickDataStorage.SuspendLayout();
+ tabPageConfigureDataStorage.SuspendLayout();
+ SuspendLayout();
+ //
+ // pictureBox1
+ //
+ pictureBox1.Image = Properties.Resources.technlgy;
+ pictureBox1.Location = new Point(12, 12);
+ pictureBox1.Name = "pictureBox1";
+ pictureBox1.Size = new Size(120, 90);
+ pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
+ pictureBox1.TabIndex = 0;
+ pictureBox1.TabStop = false;
+ //
+ // tabControl1
+ //
+ tabControl1.Controls.Add(tabPageWelcome);
+ tabControl1.Controls.Add(tabPageLicense);
+ tabControl1.Controls.Add(tabPagePickDataStorage);
+ tabControl1.Controls.Add(tabPageConfigureDataStorage);
+ tabControl1.Location = new Point(138, 12);
+ tabControl1.Name = "tabControl1";
+ tabControl1.SelectedIndex = 0;
+ tabControl1.Size = new Size(356, 412);
+ tabControl1.TabIndex = 1;
+ //
+ // tabPageWelcome
+ //
+ tabPageWelcome.Controls.Add(label2);
+ tabPageWelcome.Controls.Add(label1);
+ tabPageWelcome.Controls.Add(radioButtonAmExpert);
+ tabPageWelcome.Controls.Add(radioButtonAmBegginer);
+ tabPageWelcome.Location = new Point(4, 24);
+ tabPageWelcome.Name = "tabPageWelcome";
+ tabPageWelcome.Padding = new Padding(3);
+ tabPageWelcome.Size = new Size(348, 384);
+ tabPageWelcome.TabIndex = 0;
+ tabPageWelcome.Text = "Welcome!";
+ tabPageWelcome.UseVisualStyleBackColor = true;
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Location = new Point(6, 3);
+ label2.Name = "label2";
+ label2.Size = new Size(329, 240);
+ label2.TabIndex = 3;
+ label2.Text = resources.GetString("label2.Text");
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Location = new Point(6, 308);
+ label1.Name = "label1";
+ label1.Size = new Size(202, 15);
+ label1.TabIndex = 2;
+ label1.Text = "(You can change these options later!)";
+ //
+ // radioButtonAmExpert
+ //
+ radioButtonAmExpert.AutoSize = true;
+ radioButtonAmExpert.Location = new Point(6, 271);
+ radioButtonAmExpert.Name = "radioButtonAmExpert";
+ radioButtonAmExpert.Size = new Size(298, 34);
+ radioButtonAmExpert.TabIndex = 1;
+ radioButtonAmExpert.Text = "I’m an expert. Let me choose my own database and \r\nstorage options.";
+ radioButtonAmExpert.UseVisualStyleBackColor = true;
+ radioButtonAmExpert.CheckedChanged += radioButtonAmExpert_CheckedChanged;
+ //
+ // radioButtonAmBegginer
+ //
+ radioButtonAmBegginer.AutoSize = true;
+ radioButtonAmBegginer.Location = new Point(6, 246);
+ radioButtonAmBegginer.Name = "radioButtonAmBegginer";
+ radioButtonAmBegginer.Size = new Size(298, 19);
+ radioButtonAmBegginer.TabIndex = 0;
+ radioButtonAmBegginer.Text = "I’m a beginner. Set things up for me automatically. ";
+ radioButtonAmBegginer.UseVisualStyleBackColor = true;
+ radioButtonAmBegginer.CheckedChanged += radioButtonAmBegginer_CheckedChanged;
+ //
+ // tabPageLicense
+ //
+ tabPageLicense.Controls.Add(pictureBox2);
+ tabPageLicense.Controls.Add(label4);
+ tabPageLicense.Controls.Add(radioButtonNoLicense);
+ tabPageLicense.Controls.Add(buttonLoadLicenseFile);
+ tabPageLicense.Controls.Add(buttonValidateLicense);
+ tabPageLicense.Controls.Add(textBox1);
+ tabPageLicense.Controls.Add(radioButtonHasLicense);
+ tabPageLicense.Controls.Add(label3);
+ tabPageLicense.Location = new Point(4, 24);
+ tabPageLicense.Name = "tabPageLicense";
+ tabPageLicense.Padding = new Padding(3);
+ tabPageLicense.Size = new Size(348, 384);
+ tabPageLicense.TabIndex = 1;
+ tabPageLicense.Text = "License";
+ tabPageLicense.UseVisualStyleBackColor = true;
+ //
+ // pictureBox2
+ //
+ pictureBox2.Image = Properties.Resources.SETUPAPI_18_1_32x32x4;
+ pictureBox2.Location = new Point(127, 262);
+ pictureBox2.Name = "pictureBox2";
+ pictureBox2.Size = new Size(32, 32);
+ pictureBox2.TabIndex = 7;
+ pictureBox2.TabStop = false;
+ pictureBox2.Click += pictureBox2_Click;
+ //
+ // label4
+ //
+ label4.AutoSize = true;
+ label4.Location = new Point(22, 344);
+ label4.Name = "label4";
+ label4.Size = new Size(299, 30);
+ label4.TabIndex = 6;
+ label4.Text = "(You can also change between Licensed and Shareware \r\nmode later!)";
+ //
+ // radioButtonNoLicense
+ //
+ radioButtonNoLicense.AutoSize = true;
+ radioButtonNoLicense.Location = new Point(6, 307);
+ radioButtonNoLicense.Name = "radioButtonNoLicense";
+ radioButtonNoLicense.Size = new Size(309, 34);
+ radioButtonNoLicense.TabIndex = 5;
+ radioButtonNoLicense.Text = "No license yet — I’d like to use the shareware version, \r\nor request a license later.";
+ radioButtonNoLicense.UseVisualStyleBackColor = true;
+ radioButtonNoLicense.CheckedChanged += radioButtonNoLicense_CheckedChanged;
+ //
+ // buttonLoadLicenseFile
+ //
+ buttonLoadLicenseFile.Enabled = false;
+ buttonLoadLicenseFile.Location = new Point(246, 262);
+ buttonLoadLicenseFile.Name = "buttonLoadLicenseFile";
+ buttonLoadLicenseFile.Size = new Size(75, 39);
+ buttonLoadLicenseFile.TabIndex = 4;
+ buttonLoadLicenseFile.Text = "Load License File";
+ buttonLoadLicenseFile.UseVisualStyleBackColor = true;
+ buttonLoadLicenseFile.Click += buttonLoadLicenseFile_Click;
+ //
+ // buttonValidateLicense
+ //
+ buttonValidateLicense.Enabled = false;
+ buttonValidateLicense.Location = new Point(165, 262);
+ buttonValidateLicense.Name = "buttonValidateLicense";
+ buttonValidateLicense.Size = new Size(75, 39);
+ buttonValidateLicense.TabIndex = 3;
+ buttonValidateLicense.Text = "Validate License";
+ buttonValidateLicense.UseVisualStyleBackColor = true;
+ buttonValidateLicense.Click += buttonValidateLicense_Click;
+ //
+ // textBox1
+ //
+ textBox1.Enabled = false;
+ textBox1.Location = new Point(17, 233);
+ textBox1.Name = "textBox1";
+ textBox1.Size = new Size(304, 23);
+ textBox1.TabIndex = 2;
+ //
+ // radioButtonHasLicense
+ //
+ radioButtonHasLicense.AutoSize = true;
+ radioButtonHasLicense.Location = new Point(3, 208);
+ radioButtonHasLicense.Name = "radioButtonHasLicense";
+ radioButtonHasLicense.Size = new Size(189, 19);
+ radioButtonHasLicense.TabIndex = 1;
+ radioButtonHasLicense.Text = "Yes, I have a license file to load.";
+ radioButtonHasLicense.UseVisualStyleBackColor = true;
+ radioButtonHasLicense.CheckedChanged += radioButton3_CheckedChanged;
+ //
+ // label3
+ //
+ label3.AutoSize = true;
+ label3.Location = new Point(6, 3);
+ label3.Name = "label3";
+ label3.Size = new Size(337, 120);
+ label3.TabIndex = 0;
+ label3.Text = resources.GetString("label3.Text");
+ //
+ // tabPagePickDataStorage
+ //
+ tabPagePickDataStorage.Controls.Add(labelDataStorageHint);
+ tabPagePickDataStorage.Controls.Add(label5);
+ tabPagePickDataStorage.Location = new Point(4, 24);
+ tabPagePickDataStorage.Name = "tabPagePickDataStorage";
+ tabPagePickDataStorage.Size = new Size(348, 384);
+ tabPagePickDataStorage.TabIndex = 2;
+ tabPagePickDataStorage.Text = "Pick Data Storage";
+ tabPagePickDataStorage.UseVisualStyleBackColor = true;
+ //
+ // labelDataStorageHint
+ //
+ labelDataStorageHint.AutoSize = true;
+ labelDataStorageHint.Location = new Point(3, 165);
+ labelDataStorageHint.Name = "labelDataStorageHint";
+ labelDataStorageHint.Size = new Size(124, 15);
+ labelDataStorageHint.TabIndex = 1;
+ labelDataStorageHint.Text = "DATA_STORAGE_HINT";
+ //
+ // label5
+ //
+ label5.AutoSize = true;
+ label5.Location = new Point(3, 0);
+ label5.Name = "label5";
+ label5.Size = new Size(347, 165);
+ label5.TabIndex = 0;
+ label5.Text = resources.GetString("label5.Text");
+ //
+ // buttonNext
+ //
+ buttonNext.Enabled = false;
+ buttonNext.Location = new Point(419, 430);
+ buttonNext.Name = "buttonNext";
+ buttonNext.Size = new Size(75, 23);
+ buttonNext.TabIndex = 2;
+ buttonNext.Text = "Next >";
+ buttonNext.UseVisualStyleBackColor = true;
+ buttonNext.Click += buttonNext_Click;
+ //
+ // buttonBack
+ //
+ buttonBack.Enabled = false;
+ buttonBack.Location = new Point(338, 430);
+ buttonBack.Name = "buttonBack";
+ buttonBack.Size = new Size(75, 23);
+ buttonBack.TabIndex = 3;
+ buttonBack.Text = "< Back";
+ buttonBack.UseVisualStyleBackColor = true;
+ //
+ // openFileDialogCertificate
+ //
+ openFileDialogCertificate.DefaultExt = "cer";
+ openFileDialogCertificate.FileName = "openFileDialog1";
+ openFileDialogCertificate.Filter = "X.509 Certificate (*.cer)|*.cer";
+ openFileDialogCertificate.Title = "Open Voile License File";
+ //
+ // tabPageConfigureDataStorage
+ //
+ tabPageConfigureDataStorage.Controls.Add(label6);
+ tabPageConfigureDataStorage.Location = new Point(4, 24);
+ tabPageConfigureDataStorage.Name = "tabPageConfigureDataStorage";
+ tabPageConfigureDataStorage.Size = new Size(348, 384);
+ tabPageConfigureDataStorage.TabIndex = 3;
+ tabPageConfigureDataStorage.Text = "Configure Date Storage";
+ tabPageConfigureDataStorage.UseVisualStyleBackColor = true;
+ //
+ // label6
+ //
+ label6.AutoSize = true;
+ label6.Location = new Point(3, 0);
+ label6.Name = "label6";
+ label6.Size = new Size(38, 15);
+ label6.TabIndex = 0;
+ label6.Text = "label6";
+ //
+ // FirstRunWizard
+ //
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(502, 465);
+ Controls.Add(buttonBack);
+ Controls.Add(buttonNext);
+ Controls.Add(tabControl1);
+ Controls.Add(pictureBox1);
+ FormBorderStyle = FormBorderStyle.FixedSingle;
+ MaximizeBox = false;
+ MinimizeBox = false;
+ Name = "FirstRunWizard";
+ ShowIcon = false;
+ Text = "Voile - First Run Wizard";
+ ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
+ tabControl1.ResumeLayout(false);
+ tabPageWelcome.ResumeLayout(false);
+ tabPageWelcome.PerformLayout();
+ tabPageLicense.ResumeLayout(false);
+ tabPageLicense.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)pictureBox2).EndInit();
+ tabPagePickDataStorage.ResumeLayout(false);
+ tabPagePickDataStorage.PerformLayout();
+ tabPageConfigureDataStorage.ResumeLayout(false);
+ tabPageConfigureDataStorage.PerformLayout();
+ ResumeLayout(false);
+ }
+
+ #endregion
+
+ private PictureBox pictureBox1;
private TabControl tabControl1;
private TabPage tabPageWelcome;
private TabPage tabPageLicense;
@@ -326,7 +362,10 @@
private Label label4;
private PictureBox pictureBox2;
private OpenFileDialog openFileDialogCertificate;
- private TabPage tabPage1;
- private Label label5;
- }
+ private TabPage tabPagePickDataStorage;
+ private Label label5;
+ private Label labelDataStorageHint;
+ private TabPage tabPageConfigureDataStorage;
+ private Label label6;
+ }
}
\ No newline at end of file
diff --git a/Voile/FirstRunWizard.cs b/Voile/FirstRunWizard.cs
index c6bdc57..bbbe8a0 100644
--- a/Voile/FirstRunWizard.cs
+++ b/Voile/FirstRunWizard.cs
@@ -33,8 +33,10 @@ namespace Voile
private int licenseState;
private X509Certificate licenseCertificate;
private bool sharewareMode;
+ private VoilePluginInfo selectedDataStorage;
- private bool dataStorageRadioButtonsGenerated;
+
+
public void DisplayTabPage(int target, bool isGoingBack = false)
{
@@ -113,22 +115,76 @@ namespace Voile
buttonNext.Enabled = (sharewareMode) | (licenseState == 6);
break;
case 2:
+ labelDataStorageHint.Text = " ";
if (!dataStorageRadioButtonsGenerated)
- GenerateDataStorageRadioButtons();
+ GenerateDataStorageRadioButtons();
+
+ //TODO: Hier zusätzlich Lizenzvalidierung einfügen.
+ buttonNext.Enabled = selectedDataStorage != null;
break;
default:
MessageBox.Show("Could not find handler for the current tab page.");
return;
}
- }
-
+ }
+
+ private bool dataStorageRadioButtonsGenerated;
+ private RadioButton[] dataStorageRadioButtons;
private void GenerateDataStorageRadioButtons()
{
VoilePluginManager pluginManager = VoilePluginManager.GetInstance();
IReadOnlyList dataStoragePlugins = pluginManager.GetDataStorages();
- //TODO: Finish generating the radio buttons for the data storage.
- }
+ dataStorageRadioButtons = new RadioButton[dataStoragePlugins.Count];
+ int top = labelDataStorageHint.Top;
+ top += labelDataStorageHint.Height;
+
+ int left = labelDataStorageHint.Left;
+
+ for (int i = 0; i < dataStorageRadioButtons.Length; i++)
+ {
+ RadioButton childRadioButton = new RadioButton();
+ childRadioButton.Parent = tabPagePickDataStorage;
+
+ if (dataStoragePlugins[i].Incomplete)
+ childRadioButton.Enabled = false;
+
+ string radioButtonLabel = dataStoragePlugins[i].DisplayName;
+ if (dataStoragePlugins[i].NeededEntitlement.HasValue)
+ radioButtonLabel += " (needs license)";
+ childRadioButton.AutoSize = true;
+ childRadioButton.Text = radioButtonLabel;
+
+ if (selectedDataStorage != null)
+ childRadioButton.Checked = (selectedDataStorage.Id == dataStoragePlugins[i].Id);
+
+ childRadioButton.Top = top;
+ childRadioButton.Left = left;
+ childRadioButton.Tag = dataStoragePlugins[i];
+
+ top += childRadioButton.Height;
+
+ dataStorageRadioButtons[i] = childRadioButton;
+ dataStorageRadioButtons[i].CheckedChanged += OnDataStrorageSelected;
+ }
+
+ dataStorageRadioButtonsGenerated = true;
+ }
+
+ private void OnDataStrorageSelected(object? sender, EventArgs e)
+ {
+ RadioButton senderUnboxed = sender as RadioButton;
+ if (senderUnboxed == null)
+ throw new Voile.Common.VoileException("Could not unbox sender.");
+
+ VoilePluginInfo pluginInfo = senderUnboxed.Tag as VoilePluginInfo;
+ if (pluginInfo == null)
+ throw new Common.VoileException("Could not unbox plugin info");
+
+ selectedDataStorage = pluginInfo;
+ RefreshView();
+ }
+
private void radioButton3_CheckedChanged(object sender, EventArgs e)
{
RefreshView();
diff --git a/Voile/FirstRunWizard.resx b/Voile/FirstRunWizard.resx
index 951b465..733af1d 100644
--- a/Voile/FirstRunWizard.resx
+++ b/Voile/FirstRunWizard.resx
@@ -1,164 +1,164 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
- Great — let’s choose where Voile should store its
-structured data.
-
-Blindscan results, DVB table contents, and historical
-scan information will all be kept in the storage option you select
-below. Since you’re using Expert Mode, you have full control
-over the database backend. (In Beginner Mode, Voile would
-simply use SQLite automatically.)
-
-Feel free to pick the option that best fits your workflow or
-existing infrastructure.
-
-
- Welcome to Voile!
-
-It looks like you're starting Voile for the first time.
-Voile helps you catalogue and analyze your Transport Stream
-(TS) recordings in a clear and organized way.
-
-To store information about and manage your recordings
-efficiently, Voile uses a database. If you also want Voile
-to extract and save embedded files from your streams,
-it can use a simple storage folder for that too.
-
-No need to worry about the technical details.
-If you're not familiar with databases, Voile can set everything
-up automatically so you can start using the app right away.
-
-How would you like to continue?
-
-
- Before we continue, let’s take a moment to set up your license.
-
-Voile is available as shareware, which means you can use it
-for free for personal, non‑commercial projects. If you’re using
-Voile in a professional setting — or if you’d simply like
-to support the ongoing development — you can activate
-a license. Some advanced features also become available
-once a license is installed.
-
-
- 17, 17
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+ Welcome to Voile!
+
+It looks like you're starting Voile for the first time.
+Voile helps you catalogue and analyze your Transport Stream
+(TS) recordings in a clear and organized way.
+
+To store information about and manage your recordings
+efficiently, Voile uses a database. If you also want Voile
+to extract and save embedded files from your streams,
+it can use a simple storage folder for that too.
+
+No need to worry about the technical details.
+If you're not familiar with databases, Voile can set everything
+up automatically so you can start using the app right away.
+
+How would you like to continue?
+
+
+ Before we continue, let’s take a moment to set up your license.
+
+Voile is available as shareware, which means you can use it
+for free for personal, non‑commercial projects. If you’re using
+Voile in a professional setting — or if you’d simply like
+to support the ongoing development — you can activate
+a license. Some advanced features also become available
+once a license is installed.
+
+
+ Great — let’s choose where Voile should store its
+structured data.
+
+Blindscan results, DVB table contents, and historical
+scan information will all be kept in the storage option you select
+below. Since you’re using Expert Mode, you have full control
+over the database backend. (In Beginner Mode, Voile would
+simply use SQLite automatically.)
+
+Feel free to pick the option that best fits your workflow or
+existing infrastructure.
+
+
+ 17, 17
+
\ No newline at end of file