diff --git a/.gitignore b/.gitignore
index 4613fd3..c4721f7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,8 @@
/Voile/bin/Debug/net8.0-windows
/Voile/obj/Debug/net8.0-windows
/Voile/obj
+/.vs/Voile.slnx/v17
+/.vs/Voile/CopilotIndices/17.14.1431.25910
+/Voile.Sqlite/bin/Debug/net8.0
+/Voile.Sqlite/obj/Debug/net8.0
+/Voile.Sqlite/obj
diff --git a/Voile.Sqlite/Class1.cs b/Voile.Sqlite/Class1.cs
new file mode 100644
index 0000000..5fc054e
--- /dev/null
+++ b/Voile.Sqlite/Class1.cs
@@ -0,0 +1,16 @@
+//using Microsoft.Data.Sqlite;
+
+namespace Voile.Sqlite
+{
+ public class Class1
+ {
+ public void Run()
+ {
+ /*SqliteConnectionStringBuilder scsb = new SqliteConnectionStringBuilder();
+ scsb.DataSource = "blyat.db";
+ SqliteConnection sc = new SqliteConnection(scsb.ConnectionString);
+ sc.Open();*/
+
+ }
+ }
+}
diff --git a/Voile.Sqlite/Voile.SQLite.csproj b/Voile.Sqlite/Voile.SQLite.csproj
new file mode 100644
index 0000000..aa499ab
--- /dev/null
+++ b/Voile.Sqlite/Voile.SQLite.csproj
@@ -0,0 +1,14 @@
+
+
+
+ net8.0
+ enable
+ enable
+
+
+
+
+
+
+
+
diff --git a/Voile.slnx b/Voile.slnx
index eb5e5ce..443eaeb 100644
--- a/Voile.slnx
+++ b/Voile.slnx
@@ -1,3 +1,5 @@
+
+
diff --git a/Voile/DockContents/DockTaskList.Designer.cs b/Voile/DockContents/DockTaskList.Designer.cs
index f0c6654..a366207 100644
--- a/Voile/DockContents/DockTaskList.Designer.cs
+++ b/Voile/DockContents/DockTaskList.Designer.cs
@@ -20,54 +20,68 @@
base.Dispose(disposing);
}
- #region Windows Form Designer generated code
+ #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()
- {
- listView1 = new ListView();
- toolStrip1 = new ToolStrip();
- SuspendLayout();
- //
- // listView1
- //
- listView1.Dock = DockStyle.Fill;
- listView1.GridLines = true;
- listView1.Location = new Point(0, 0);
- listView1.MultiSelect = false;
- listView1.Name = "listView1";
- listView1.Size = new Size(800, 450);
- listView1.TabIndex = 0;
- listView1.UseCompatibleStateImageBehavior = false;
- listView1.View = View.Details;
- //
- // toolStrip1
- //
- toolStrip1.Location = new Point(0, 0);
- toolStrip1.Name = "toolStrip1";
- toolStrip1.Size = new Size(800, 25);
- toolStrip1.TabIndex = 1;
- toolStrip1.Text = "toolStrip1";
- //
- // DockTaskList
- //
- AutoScaleDimensions = new SizeF(7F, 15F);
- AutoScaleMode = AutoScaleMode.Font;
- ClientSize = new Size(800, 450);
- Controls.Add(toolStrip1);
- Controls.Add(listView1);
- Name = "DockTaskList";
- Text = "DockTaskList";
- ResumeLayout(false);
- PerformLayout();
- }
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ components = new System.ComponentModel.Container();
+ listView1 = new ListView();
+ columnHeader1 = new ColumnHeader();
+ imageList1 = new ImageList(components);
+ toolStrip1 = new ToolStrip();
+ SuspendLayout();
+ //
+ // listView1
+ //
+ listView1.Columns.AddRange(new ColumnHeader[] { columnHeader1 });
+ listView1.Dock = DockStyle.Fill;
+ listView1.GridLines = true;
+ listView1.Location = new Point(0, 0);
+ listView1.MultiSelect = false;
+ listView1.Name = "listView1";
+ listView1.Size = new Size(800, 450);
+ listView1.SmallImageList = imageList1;
+ listView1.TabIndex = 0;
+ listView1.UseCompatibleStateImageBehavior = false;
+ listView1.View = View.Details;
+ listView1.SelectedIndexChanged += listView1_SelectedIndexChanged;
+ //
+ // imageList1
+ //
+ imageList1.ColorDepth = ColorDepth.Depth32Bit;
+ imageList1.ImageSize = new Size(16, 16);
+ imageList1.TransparentColor = Color.Transparent;
+ //
+ // toolStrip1
+ //
+ toolStrip1.Location = new Point(0, 0);
+ toolStrip1.Name = "toolStrip1";
+ toolStrip1.Size = new Size(800, 25);
+ toolStrip1.TabIndex = 1;
+ toolStrip1.Text = "toolStrip1";
+ //
+ // DockTaskList
+ //
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(800, 450);
+ Controls.Add(toolStrip1);
+ Controls.Add(listView1);
+ Name = "DockTaskList";
+ Text = "DockTaskList";
+ Resize += DockTaskList_Resize;
+ ResumeLayout(false);
+ PerformLayout();
+ }
- #endregion
-
- private ListView listView1;
- private ToolStrip toolStrip1;
- }
+ #endregion
+ private ImageList imageList1;
+ private ToolStrip toolStrip1;
+ internal ListView listView1;
+ private ColumnHeader columnHeader1;
+ }
}
\ No newline at end of file
diff --git a/Voile/DockContents/DockTaskList.cs b/Voile/DockContents/DockTaskList.cs
index da5a6af..61e56a1 100644
--- a/Voile/DockContents/DockTaskList.cs
+++ b/Voile/DockContents/DockTaskList.cs
@@ -11,11 +11,31 @@ using WeifenLuo.WinFormsUI.Docking;
namespace Voile.DockContents
{
- public partial class DockTaskList : DockContent
- {
- public DockTaskList()
- {
- InitializeComponent();
- }
- }
+ public partial class DockTaskList : DockContent
+ {
+ public DockTaskList()
+ {
+ InitializeComponent();
+ imageList1.Images.Add(Voile.Properties.Resources.hourglass);
+ imageList1.Images.Add(Voile.Properties.Resources.hourglass_go);
+ imageList1.Images.Add(Voile.Properties.Resources.hourglass_link);
+ }
+
+ private void listView1_SelectedIndexChanged(object sender, EventArgs e)
+ {
+
+ }
+
+ private void DockTaskList_Resize(object sender, EventArgs e)
+ {
+ listView1.Columns[0].Width = listView1.Width;
+ }
+
+ internal VoileTask AddTask(string name, VoileRunnable runnable = null)
+ {
+ VoileTask vt = new VoileTask(name, runnable);
+ listView1.Items.Add(vt);
+ return vt;
+ }
+ }
}
diff --git a/Voile/DockContents/DockTaskList.resx b/Voile/DockContents/DockTaskList.resx
index ebe2cea..0305ee4 100644
--- a/Voile/DockContents/DockTaskList.resx
+++ b/Voile/DockContents/DockTaskList.resx
@@ -117,6 +117,9 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 122, 17
+
17, 17
diff --git a/Voile/FirstRunWizard.Designer.cs b/Voile/FirstRunWizard.Designer.cs
new file mode 100644
index 0000000..b7ff3f8
--- /dev/null
+++ b/Voile/FirstRunWizard.Designer.cs
@@ -0,0 +1,186 @@
+namespace Voile
+{
+ partial class FirstRunWizard
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ 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();
+ tabPage1 = new TabPage();
+ label2 = new Label();
+ label1 = new Label();
+ radioButton2 = new RadioButton();
+ radioButton1 = new RadioButton();
+ tabPage2 = new TabPage();
+ button1 = new Button();
+ button2 = new Button();
+ ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
+ tabControl1.SuspendLayout();
+ 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(tabPage1);
+ tabControl1.Controls.Add(tabPage2);
+ tabControl1.Location = new Point(138, 12);
+ tabControl1.Name = "tabControl1";
+ tabControl1.SelectedIndex = 0;
+ tabControl1.Size = new Size(356, 412);
+ tabControl1.TabIndex = 1;
+ //
+ // tabPage1
+ //
+ tabPage1.Controls.Add(label2);
+ tabPage1.Controls.Add(label1);
+ tabPage1.Controls.Add(radioButton2);
+ tabPage1.Controls.Add(radioButton1);
+ tabPage1.Location = new Point(4, 24);
+ tabPage1.Name = "tabPage1";
+ tabPage1.Padding = new Padding(3);
+ tabPage1.Size = new Size(348, 384);
+ tabPage1.TabIndex = 0;
+ tabPage1.Text = "Welcome!";
+ tabPage1.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!)";
+ //
+ // radioButton2
+ //
+ radioButton2.AutoSize = true;
+ radioButton2.Location = new Point(6, 271);
+ radioButton2.Name = "radioButton2";
+ radioButton2.Size = new Size(299, 34);
+ radioButton2.TabIndex = 1;
+ radioButton2.TabStop = true;
+ radioButton2.Text = "I’m an expert. Let me choose my own database and \r\nstorage options.";
+ radioButton2.UseVisualStyleBackColor = true;
+ //
+ // radioButton1
+ //
+ radioButton1.AutoSize = true;
+ radioButton1.Checked = true;
+ radioButton1.Location = new Point(6, 246);
+ radioButton1.Name = "radioButton1";
+ radioButton1.Size = new Size(298, 19);
+ radioButton1.TabIndex = 0;
+ radioButton1.TabStop = true;
+ radioButton1.Text = "I’m a beginner. Set things up for me automatically. ";
+ radioButton1.UseVisualStyleBackColor = true;
+ //
+ // tabPage2
+ //
+ tabPage2.Location = new Point(4, 24);
+ tabPage2.Name = "tabPage2";
+ tabPage2.Padding = new Padding(3);
+ tabPage2.Size = new Size(348, 384);
+ tabPage2.TabIndex = 1;
+ tabPage2.Text = "tabPage2";
+ tabPage2.UseVisualStyleBackColor = true;
+ //
+ // button1
+ //
+ button1.Location = new Point(419, 430);
+ button1.Name = "button1";
+ button1.Size = new Size(75, 23);
+ button1.TabIndex = 2;
+ button1.Text = "Next >";
+ button1.UseVisualStyleBackColor = true;
+ //
+ // button2
+ //
+ button2.Enabled = false;
+ button2.Location = new Point(338, 430);
+ button2.Name = "button2";
+ button2.Size = new Size(75, 23);
+ button2.TabIndex = 3;
+ button2.Text = "< Back";
+ button2.UseVisualStyleBackColor = true;
+ //
+ // FirstRunWizard
+ //
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(502, 465);
+ Controls.Add(button2);
+ Controls.Add(button1);
+ 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);
+ tabPage1.ResumeLayout(false);
+ tabPage1.PerformLayout();
+ ResumeLayout(false);
+ }
+
+ #endregion
+
+ private PictureBox pictureBox1;
+ private TabControl tabControl1;
+ private TabPage tabPage1;
+ private TabPage tabPage2;
+ private Button button1;
+ private Button button2;
+ private RadioButton radioButton1;
+ private RadioButton radioButton2;
+ private Label label1;
+ private Label label2;
+ }
+}
\ No newline at end of file
diff --git a/Voile/FirstRunWizard.cs b/Voile/FirstRunWizard.cs
new file mode 100644
index 0000000..9c190dc
--- /dev/null
+++ b/Voile/FirstRunWizard.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Voile
+{
+ public partial class FirstRunWizard : Form
+ {
+ public FirstRunWizard()
+ {
+ InitializeComponent();
+ DisplayTabPage(0);
+ }
+
+ private TabPage[] allPages;
+ public void DisplayTabPage(int target)
+ {
+ if (allPages == null)
+ {
+ allPages = new TabPage[tabControl1.TabPages.Count];
+ for (int i = 0; i < tabControl1.TabPages.Count; i++)
+ {
+ allPages[i] = tabControl1.TabPages[i];
+ }
+ }
+
+ tabControl1.TabPages.Clear();
+ tabControl1.TabPages.Add(allPages[target]);
+ }
+ }
+}
diff --git a/Voile/FirstRunWizard.resx b/Voile/FirstRunWizard.resx
new file mode 100644
index 0000000..55878d3
--- /dev/null
+++ b/Voile/FirstRunWizard.resx
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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?
+
+
\ No newline at end of file
diff --git a/Voile/Form1.Designer.cs b/Voile/Form1.Designer.cs
index eee0ac4..ed6da1d 100644
--- a/Voile/Form1.Designer.cs
+++ b/Voile/Form1.Designer.cs
@@ -20,124 +20,125 @@
base.Dispose(disposing);
}
- #region Windows Form Designer generated code
+ #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(Form1));
- menuStrip1 = new MenuStrip();
- fileToolStripMenuItem = new ToolStripMenuItem();
- stopAllAndExitToolStripMenuItem = new ToolStripMenuItem();
- toolStrip1 = new ToolStrip();
- toolStripButton1 = new ToolStripButton();
- toolStripButton2 = new ToolStripButton();
- statusStrip1 = new StatusStrip();
- dockPanel1 = new WeifenLuo.WinFormsUI.Docking.DockPanel();
- vS2003Theme1 = new WeifenLuo.WinFormsUI.Docking.VS2003Theme();
- menuStrip1.SuspendLayout();
- toolStrip1.SuspendLayout();
- SuspendLayout();
- //
- // menuStrip1
- //
- menuStrip1.Items.AddRange(new ToolStripItem[] { fileToolStripMenuItem });
- menuStrip1.Location = new Point(0, 0);
- menuStrip1.Name = "menuStrip1";
- menuStrip1.Size = new Size(800, 24);
- menuStrip1.TabIndex = 1;
- menuStrip1.Text = "menuStrip1";
- //
- // fileToolStripMenuItem
- //
- fileToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { stopAllAndExitToolStripMenuItem });
- fileToolStripMenuItem.Name = "fileToolStripMenuItem";
- fileToolStripMenuItem.Size = new Size(37, 20);
- fileToolStripMenuItem.Text = "File";
- //
- // stopAllAndExitToolStripMenuItem
- //
- stopAllAndExitToolStripMenuItem.Name = "stopAllAndExitToolStripMenuItem";
- stopAllAndExitToolStripMenuItem.Size = new Size(180, 22);
- stopAllAndExitToolStripMenuItem.Text = "Stop all and Exit";
- stopAllAndExitToolStripMenuItem.Click += stopAllAndExitToolStripMenuItem_Click;
- //
- // toolStrip1
- //
- toolStrip1.Items.AddRange(new ToolStripItem[] { toolStripButton1, toolStripButton2 });
- toolStrip1.Location = new Point(0, 24);
- toolStrip1.Name = "toolStrip1";
- toolStrip1.Size = new Size(800, 54);
- toolStrip1.TabIndex = 2;
- toolStrip1.Text = "toolStrip1";
- //
- // toolStripButton1
- //
- toolStripButton1.Image = Properties.Resources.inetwiz_100_1_32x32x4;
- toolStripButton1.ImageScaling = ToolStripItemImageScaling.None;
- toolStripButton1.ImageTransparentColor = Color.Magenta;
- toolStripButton1.Name = "toolStripButton1";
- toolStripButton1.Size = new Size(153, 51);
- toolStripButton1.Text = "Quick Connect to TCP Port";
- toolStripButton1.TextAlign = ContentAlignment.BottomCenter;
- toolStripButton1.TextImageRelation = TextImageRelation.ImageAboveText;
- //
- // toolStripButton2
- //
- toolStripButton2.Image = Properties.Resources.URLPKR_141_1_32x32x4;
- toolStripButton2.ImageScaling = ToolStripItemImageScaling.None;
- toolStripButton2.ImageTransparentColor = Color.Magenta;
- toolStripButton2.Name = "toolStripButton2";
- toolStripButton2.Size = new Size(111, 51);
- toolStripButton2.Text = "Quick Open TS File";
- toolStripButton2.TextAlign = ContentAlignment.BottomCenter;
- toolStripButton2.TextImageRelation = TextImageRelation.ImageAboveText;
- //
- // statusStrip1
- //
- statusStrip1.Location = new Point(0, 428);
- statusStrip1.Name = "statusStrip1";
- statusStrip1.Size = new Size(800, 22);
- statusStrip1.TabIndex = 3;
- statusStrip1.Text = "statusStrip1";
- //
- // dockPanel1
- //
- dockPanel1.Dock = DockStyle.Fill;
- dockPanel1.DockRightPortion = 0.3D;
- dockPanel1.Location = new Point(0, 78);
- dockPanel1.Name = "dockPanel1";
- dockPanel1.Size = new Size(800, 350);
- dockPanel1.TabIndex = 5;
- //
- // Form1
- //
- AutoScaleDimensions = new SizeF(7F, 15F);
- AutoScaleMode = AutoScaleMode.Font;
- ClientSize = new Size(800, 450);
- Controls.Add(dockPanel1);
- Controls.Add(statusStrip1);
- Controls.Add(toolStrip1);
- Controls.Add(menuStrip1);
- Icon = (Icon)resources.GetObject("$this.Icon");
- IsMdiContainer = true;
- MainMenuStrip = menuStrip1;
- Name = "Form1";
- Text = "Voile";
- menuStrip1.ResumeLayout(false);
- menuStrip1.PerformLayout();
- toolStrip1.ResumeLayout(false);
- toolStrip1.PerformLayout();
- ResumeLayout(false);
- PerformLayout();
- }
+ ///
+ /// 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(Form1));
+ menuStrip1 = new MenuStrip();
+ fileToolStripMenuItem = new ToolStripMenuItem();
+ stopAllAndExitToolStripMenuItem = new ToolStripMenuItem();
+ toolStrip1 = new ToolStrip();
+ toolStripButton1 = new ToolStripButton();
+ toolStripButton2 = new ToolStripButton();
+ statusStrip1 = new StatusStrip();
+ dockPanel1 = new WeifenLuo.WinFormsUI.Docking.DockPanel();
+ vS2003Theme1 = new WeifenLuo.WinFormsUI.Docking.VS2003Theme();
+ menuStrip1.SuspendLayout();
+ toolStrip1.SuspendLayout();
+ SuspendLayout();
+ //
+ // menuStrip1
+ //
+ menuStrip1.Items.AddRange(new ToolStripItem[] { fileToolStripMenuItem });
+ menuStrip1.Location = new Point(0, 0);
+ menuStrip1.Name = "menuStrip1";
+ menuStrip1.Size = new Size(800, 24);
+ menuStrip1.TabIndex = 1;
+ menuStrip1.Text = "menuStrip1";
+ //
+ // fileToolStripMenuItem
+ //
+ fileToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { stopAllAndExitToolStripMenuItem });
+ fileToolStripMenuItem.Name = "fileToolStripMenuItem";
+ fileToolStripMenuItem.Size = new Size(37, 20);
+ fileToolStripMenuItem.Text = "File";
+ //
+ // stopAllAndExitToolStripMenuItem
+ //
+ stopAllAndExitToolStripMenuItem.Name = "stopAllAndExitToolStripMenuItem";
+ stopAllAndExitToolStripMenuItem.Size = new Size(158, 22);
+ stopAllAndExitToolStripMenuItem.Text = "Stop all and Exit";
+ stopAllAndExitToolStripMenuItem.Click += stopAllAndExitToolStripMenuItem_Click;
+ //
+ // toolStrip1
+ //
+ toolStrip1.Items.AddRange(new ToolStripItem[] { toolStripButton1, toolStripButton2 });
+ toolStrip1.Location = new Point(0, 24);
+ toolStrip1.Name = "toolStrip1";
+ toolStrip1.Size = new Size(800, 54);
+ toolStrip1.TabIndex = 2;
+ toolStrip1.Text = "toolStrip1";
+ //
+ // toolStripButton1
+ //
+ toolStripButton1.Image = Properties.Resources.inetwiz_100_1_32x32x4;
+ toolStripButton1.ImageScaling = ToolStripItemImageScaling.None;
+ toolStripButton1.ImageTransparentColor = Color.Magenta;
+ toolStripButton1.Name = "toolStripButton1";
+ toolStripButton1.Size = new Size(152, 51);
+ toolStripButton1.Text = "Quick Connect to TCP Port";
+ toolStripButton1.TextAlign = ContentAlignment.BottomCenter;
+ toolStripButton1.TextImageRelation = TextImageRelation.ImageAboveText;
+ //
+ // toolStripButton2
+ //
+ toolStripButton2.Image = Properties.Resources.URLPKR_141_1_32x32x4;
+ toolStripButton2.ImageScaling = ToolStripItemImageScaling.None;
+ toolStripButton2.ImageTransparentColor = Color.Magenta;
+ toolStripButton2.Name = "toolStripButton2";
+ toolStripButton2.Size = new Size(110, 51);
+ toolStripButton2.Text = "Quick Open TS File";
+ toolStripButton2.TextAlign = ContentAlignment.BottomCenter;
+ toolStripButton2.TextImageRelation = TextImageRelation.ImageAboveText;
+ //
+ // statusStrip1
+ //
+ statusStrip1.Location = new Point(0, 428);
+ statusStrip1.Name = "statusStrip1";
+ statusStrip1.Size = new Size(800, 22);
+ statusStrip1.TabIndex = 3;
+ statusStrip1.Text = "statusStrip1";
+ //
+ // dockPanel1
+ //
+ dockPanel1.Dock = DockStyle.Fill;
+ dockPanel1.DockRightPortion = 0.3D;
+ dockPanel1.Location = new Point(0, 78);
+ dockPanel1.Name = "dockPanel1";
+ dockPanel1.Size = new Size(800, 350);
+ dockPanel1.TabIndex = 5;
+ //
+ // Form1
+ //
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(800, 450);
+ Controls.Add(dockPanel1);
+ Controls.Add(statusStrip1);
+ Controls.Add(toolStrip1);
+ Controls.Add(menuStrip1);
+ Icon = (Icon)resources.GetObject("$this.Icon");
+ IsMdiContainer = true;
+ MainMenuStrip = menuStrip1;
+ Name = "Form1";
+ Text = "Voile";
+ Shown += Form1_Shown;
+ menuStrip1.ResumeLayout(false);
+ menuStrip1.PerformLayout();
+ toolStrip1.ResumeLayout(false);
+ toolStrip1.PerformLayout();
+ ResumeLayout(false);
+ PerformLayout();
+ }
- #endregion
+ #endregion
- private MenuStrip menuStrip1;
+ private MenuStrip menuStrip1;
private ToolStrip toolStrip1;
private StatusStrip statusStrip1;
private WeifenLuo.WinFormsUI.Docking.DockPanel dockPanel1;
diff --git a/Voile/Form1.cs b/Voile/Form1.cs
index 3ae2f64..cb84f43 100644
--- a/Voile/Form1.cs
+++ b/Voile/Form1.cs
@@ -1,55 +1,70 @@
using Voile.DockContents;
+using Voile.Tasks;
using WeifenLuo.WinFormsUI.Docking;
namespace Voile
{
- public partial class Form1 : Form
- {
- private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
+ public partial class Form1 : Form
+ {
+ private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
- public Form1()
- {
- InitializeComponent();
- dockPanel1.Theme = vS2003Theme1;
- logger.Info("Main Form initalized.");
+ public Form1()
+ {
+ InitializeComponent();
+ dockPanel1.Theme = vS2003Theme1;
+ logger.Info("Main Form initalized.");
- DockLog = new DockContents.DockLog();
- SetDockDefault(DockLog, "Log");
- DockLog.Show(dockPanel1, DockState.DockBottom);
- DockLog.InitalizeLogging();
- logger.Info("Attached dockable Logger.");
+ DockLog = new DockContents.DockLog();
+ SetDockDefault(DockLog, "Log");
+ DockLog.Show(dockPanel1, DockState.DockBottom);
+ DockLog.InitalizeLogging();
+ logger.Info("Attached dockable Logger.");
- DockTaskList = new DockContents.DockTaskList();
- SetDockDefault(DockTaskList, "Tasks");
- DockTaskList.Show(DockLog.Pane, DockAlignment.Right, 0.5);
+ DockTaskList = new DockContents.DockTaskList();
+ SetDockDefault(DockTaskList, "Tasks");
+ DockTaskList.Show(DockLog.Pane, DockAlignment.Right, 0.5);
- DockWorldView = new DockContents.DockWorldView();
- SetDockDefault(DockWorldView, "Database");
- DockWorldView.Show(dockPanel1, DockState.DockLeft);
- }
+ DockWorldView = new DockContents.DockWorldView();
+ SetDockDefault(DockWorldView, "Database");
+ DockWorldView.Show(dockPanel1, DockState.DockLeft);
- private void SetDockDefault(DockContent dock, string text)
- {
- dock.Text = text;
- dock.CloseButtonVisible = false;
- dock.FormClosing += new FormClosingEventHandler(defaultDock_FormClosing);
- }
+ }
- private void defaultDock_FormClosing(object? sender, FormClosingEventArgs e)
- {
- if (e.CloseReason == CloseReason.UserClosing)
- {
- e.Cancel = true;
- }
- }
+ private void SetDockDefault(DockContent dock, string text)
+ {
+ dock.Text = text;
+ dock.CloseButtonVisible = false;
+ dock.FormClosing += new FormClosingEventHandler(defaultDock_FormClosing);
+ }
- private void stopAllAndExitToolStripMenuItem_Click(object sender, EventArgs e)
- {
- this.Close();
- }
+ private void defaultDock_FormClosing(object? sender, FormClosingEventArgs e)
+ {
+ if (e.CloseReason == CloseReason.UserClosing)
+ {
+ e.Cancel = true;
+ }
+ }
- public DockLog DockLog { get; private set; }
- public DockTaskList DockTaskList { get; private set; }
- public DockWorldView DockWorldView { get; private set; }
- }
+ private void stopAllAndExitToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ this.Close();
+ }
+
+ public DockLog DockLog { get; private set; }
+ public DockTaskList DockTaskList { get; private set; }
+ public DockWorldView DockWorldView { get; private set; }
+
+
+ private void Form1_Shown(object sender, EventArgs e)
+ {
+ VoileTask task = DockTaskList.AddTask("Initialize Database engine");
+ task.ImageIndex = 1;
+
+ StartupInitializeDatabase initializeDatabase = new StartupInitializeDatabase();
+ initializeDatabase.Form1 = this;
+ initializeDatabase.Run();
+
+ DockTaskList.listView1.Items.Remove(task);
+ }
+ }
}
diff --git a/Voile/Program.cs b/Voile/Program.cs
index 58af3f6..623455d 100644
--- a/Voile/Program.cs
+++ b/Voile/Program.cs
@@ -22,7 +22,7 @@ namespace Voile
Cursor hand = new Cursor(new MemoryStream(Voile.Properties.Resources.H_POINT));
form1.Cursor = hand;
- logger.Debug("Okay, let's rock.");
+ logger.Debug("Main window showing.");
Application.Run(form1);
}
}
diff --git a/Voile/Properties/Resources.Designer.cs b/Voile/Properties/Resources.Designer.cs
index 64589f8..3a403f7 100644
--- a/Voile/Properties/Resources.Designer.cs
+++ b/Voile/Properties/Resources.Designer.cs
@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------
//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
+// Dieser Code wurde von einem Tool generiert.
+// Laufzeitversion:4.0.30319.42000
//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
+// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+// der Code erneut generiert wird.
//
//------------------------------------------------------------------------------
@@ -13,13 +13,13 @@ namespace Voile.Properties {
///
- /// A strongly-typed resource class, for looking up localized strings, etc.
+ /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
///
- // 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", "18.0.0.0")]
+ // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
+ // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
+ // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
+ // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
@@ -33,7 +33,7 @@ namespace Voile.Properties {
}
///
- /// Returns the cached ResourceManager instance used by this class.
+ /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
@@ -47,8 +47,8 @@ namespace Voile.Properties {
}
///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
+ /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
+ /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
@@ -61,7 +61,7 @@ namespace Voile.Properties {
}
///
- /// Looks up a localized resource of type System.Byte[].
+ /// Sucht eine lokalisierte Ressource vom Typ System.Byte[].
///
internal static byte[] H_POINT {
get {
@@ -71,7 +71,37 @@ namespace Voile.Properties {
}
///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
+ /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap hourglass {
+ get {
+ object obj = ResourceManager.GetObject("hourglass", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap hourglass_go {
+ get {
+ object obj = ResourceManager.GetObject("hourglass_go", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap hourglass_link {
+ get {
+ object obj = ResourceManager.GetObject("hourglass_link", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap inetwiz_100_1_32x32x4 {
get {
@@ -81,7 +111,17 @@ namespace Voile.Properties {
}
///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
+ /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap technlgy {
+ get {
+ object obj = ResourceManager.GetObject("technlgy", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap URLPKR_141_1_32x32x4 {
get {
diff --git a/Voile/Properties/Resources.resx b/Voile/Properties/Resources.resx
index 9c721bf..3d643ce 100644
--- a/Voile/Properties/Resources.resx
+++ b/Voile/Properties/Resources.resx
@@ -118,6 +118,15 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ ..\Resources\hourglass.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\hourglass_go.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\hourglass_link.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
..\Resources\H_POINT.CUR;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Mauszeiger
@@ -125,6 +134,9 @@
..\Resources\inetwiz_100_1_32x32x4.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\technlgy.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
..\Resources\URLPKR_141_1_32x32x4.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
diff --git a/Voile/Resources/hourglass.png b/Voile/Resources/hourglass.png
new file mode 100644
index 0000000..57b03ce
Binary files /dev/null and b/Voile/Resources/hourglass.png differ
diff --git a/Voile/Resources/hourglass_go.png b/Voile/Resources/hourglass_go.png
new file mode 100644
index 0000000..b2d3a98
Binary files /dev/null and b/Voile/Resources/hourglass_go.png differ
diff --git a/Voile/Resources/hourglass_link.png b/Voile/Resources/hourglass_link.png
new file mode 100644
index 0000000..ecc59b0
Binary files /dev/null and b/Voile/Resources/hourglass_link.png differ
diff --git a/Voile/Resources/technlgy.bmp b/Voile/Resources/technlgy.bmp
new file mode 100644
index 0000000..75ef406
Binary files /dev/null and b/Voile/Resources/technlgy.bmp differ
diff --git a/Voile/Tasks/StartupInitializeDatabase.cs b/Voile/Tasks/StartupInitializeDatabase.cs
new file mode 100644
index 0000000..5fc1eed
--- /dev/null
+++ b/Voile/Tasks/StartupInitializeDatabase.cs
@@ -0,0 +1,43 @@
+using skyscraper5.Skyscraper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Voile.Tasks
+{
+ internal class StartupInitializeDatabase : VoileRunnable
+ {
+ public Form1 Form1 { get; internal set; }
+ private Ini ini;
+ public void Run()
+ {
+ if (IsFirstRun())
+ {
+ FirstRunWizard frw = new FirstRunWizard();
+ DialogResult dr = frw.ShowDialog(Form1);
+ }
+ }
+
+ private bool IsFirstRun()
+ {
+ VoileContext voileContext = VoileContext.GetContext();
+ FileInfo fileInfo = voileContext.GetVoileIniFile();
+ if (!fileInfo.Exists)
+ {
+ voileContext.Ini = new Ini();
+ ini = voileContext.Ini;
+ return true;
+ }
+
+ voileContext.Ini = new Ini(fileInfo.FullName);
+
+ bool firstRunComplete = ini.ReadValue("voile", "firstRunComplete", false);
+ if (!firstRunComplete)
+ return true;
+
+ return false;
+ }
+ }
+}
diff --git a/Voile/Voile.csproj b/Voile/Voile.csproj
index 34b8f0e..8848544 100644
--- a/Voile/Voile.csproj
+++ b/Voile/Voile.csproj
@@ -19,6 +19,11 @@
+
+
+
+
+
True
diff --git a/Voile/Voile.csproj.user b/Voile/Voile.csproj.user
index e0f7126..fedff3d 100644
--- a/Voile/Voile.csproj.user
+++ b/Voile/Voile.csproj.user
@@ -13,6 +13,9 @@
Form
+
+ Form
+
Form
diff --git a/Voile/VoileContext.cs b/Voile/VoileContext.cs
new file mode 100644
index 0000000..95a3953
--- /dev/null
+++ b/Voile/VoileContext.cs
@@ -0,0 +1,51 @@
+using skyscraper5.Skyscraper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Voile
+{
+ internal class VoileContext
+ {
+ private static VoileContext _instance;
+
+ public static VoileContext GetContext()
+ {
+ if (_instance == null)
+ {
+ _instance = new VoileContext();
+ }
+ return _instance;
+ }
+
+ private DirectoryInfo voileDirectory;
+ public DirectoryInfo GetVoileDirectory()
+ {
+ if (voileDirectory == null)
+ {
+ Type type = typeof(VoileContext);
+ Assembly assembly = type.Assembly;
+ FileInfo fi = new FileInfo(assembly.Location);
+ voileDirectory = fi.Directory;
+ }
+ return voileDirectory;
+ }
+
+ private FileInfo voileIniFile;
+ public FileInfo GetVoileIniFile()
+ {
+ if (voileIniFile == null)
+ {
+ DirectoryInfo directoryInfo = GetVoileDirectory();
+ string path = Path.Combine(directoryInfo.FullName, "voile.ini");
+ voileIniFile = new FileInfo(path);
+ }
+ return voileIniFile;
+ }
+
+ public Ini Ini { get; set; }
+ }
+}
diff --git a/Voile/VoileRunnable.cs b/Voile/VoileRunnable.cs
new file mode 100644
index 0000000..c5c8109
--- /dev/null
+++ b/Voile/VoileRunnable.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Voile
+{
+ internal interface VoileRunnable
+ {
+ void Run();
+ }
+}
diff --git a/Voile/VoileTask.cs b/Voile/VoileTask.cs
new file mode 100644
index 0000000..bb81114
--- /dev/null
+++ b/Voile/VoileTask.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Voile
+{
+ internal class VoileTask : ListViewItem
+ {
+ public VoileTask(string name, VoileRunnable runnable = null)
+ {
+ this.Name = name;
+ this.Text = name;
+ this.Guid = Guid.NewGuid();
+ this.ImageIndex = 0;
+ this.Runnable = runnable;
+ }
+
+ public string Name { get; private set; }
+
+ public Guid Guid { get; private set; }
+
+
+ public VoileRunnable Runnable { get; private set; }
+ }
+}