From 167032678960b678ae252ef4e574bc3965e49f7f Mon Sep 17 00:00:00 2001 From: Joel Wetzell Date: Sat, 13 Jun 2020 17:27:32 -0500 Subject: [PATCH] Create new Windows Form Demo app. --- QSharpDemo/Program.cs | 17 ---- QSharpDemo/QSharpDemo.csproj | 11 -- QSharpDemoApp/Form1.Designer.cs | 157 +++++++++++++++++++++++++++++ QSharpDemoApp/Form1.cs | 140 +++++++++++++++++++++++++ QSharpDemoApp/Form1.resx | 60 +++++++++++ QSharpDemoApp/Program.cs | 23 +++++ QSharpDemoApp/QSharpDemoApp.csproj | 18 ++++ 7 files changed, 398 insertions(+), 28 deletions(-) delete mode 100644 QSharpDemo/Program.cs delete mode 100644 QSharpDemo/QSharpDemo.csproj create mode 100644 QSharpDemoApp/Form1.Designer.cs create mode 100644 QSharpDemoApp/Form1.cs create mode 100644 QSharpDemoApp/Form1.resx create mode 100644 QSharpDemoApp/Program.cs create mode 100644 QSharpDemoApp/QSharpDemoApp.csproj diff --git a/QSharpDemo/Program.cs b/QSharpDemo/Program.cs deleted file mode 100644 index 7592f8e..0000000 --- a/QSharpDemo/Program.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Threading; -using QSharp; - -namespace qControlDemo -{ - class Program - { - static void Main(string[] args) - { - Console.OutputEncoding = System.Text.Encoding.UTF8; - Console.WriteLine("qControlDemo Started"); - QBrowser browser = new QBrowser(); - Thread.Sleep(100000000); - } - } -} diff --git a/QSharpDemo/QSharpDemo.csproj b/QSharpDemo/QSharpDemo.csproj deleted file mode 100644 index 283fc7c..0000000 --- a/QSharpDemo/QSharpDemo.csproj +++ /dev/null @@ -1,11 +0,0 @@ - - - - Exe - netcoreapp3.1 - - - - - - diff --git a/QSharpDemoApp/Form1.Designer.cs b/QSharpDemoApp/Form1.Designer.cs new file mode 100644 index 0000000..54d8d04 --- /dev/null +++ b/QSharpDemoApp/Form1.Designer.cs @@ -0,0 +1,157 @@ +namespace QSharpDemoApp +{ + partial class Form1 + { + /// + /// 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() + { + this.workspaceListView = new System.Windows.Forms.ListView(); + this.cueNumberHeader = new System.Windows.Forms.ColumnHeader(); + this.cueNameHeader = new System.Windows.Forms.ColumnHeader(); + this.goButton = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.serverListView = new System.Windows.Forms.ListView(); + this.columnHeader3 = new System.Windows.Forms.ColumnHeader(); + this.columnHeader4 = new System.Windows.Forms.ColumnHeader(); + this.connectButton = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // workspaceListView + // + this.workspaceListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.cueNumberHeader, + this.cueNameHeader}); + this.workspaceListView.FullRowSelect = true; + this.workspaceListView.GridLines = true; + this.workspaceListView.HideSelection = false; + this.workspaceListView.Location = new System.Drawing.Point(208, 122); + this.workspaceListView.MultiSelect = false; + this.workspaceListView.Name = "workspaceListView"; + this.workspaceListView.Size = new System.Drawing.Size(580, 316); + this.workspaceListView.TabIndex = 0; + this.workspaceListView.UseCompatibleStateImageBehavior = false; + this.workspaceListView.View = System.Windows.Forms.View.Details; + // + // cueNumberHeader + // + this.cueNumberHeader.Name = "cueNumberHeader"; + this.cueNumberHeader.Text = "Number"; + // + // cueNameHeader + // + this.cueNameHeader.Name = "cueNameHeader"; + this.cueNameHeader.Text = "Name"; + this.cueNameHeader.Width = 300; + // + // goButton + // + this.goButton.Location = new System.Drawing.Point(208, 47); + this.goButton.Name = "goButton"; + this.goButton.Size = new System.Drawing.Size(104, 69); + this.goButton.TabIndex = 1; + this.goButton.Text = "GO"; + this.goButton.UseVisualStyleBackColor = true; + this.goButton.Click += new System.EventHandler(this.goButton_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); + this.label1.Location = new System.Drawing.Point(13, 23); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(53, 19); + this.label1.TabIndex = 3; + this.label1.Text = "Servers"; + // + // serverListView + // + this.serverListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader3, + this.columnHeader4}); + this.serverListView.FullRowSelect = true; + this.serverListView.GridLines = true; + this.serverListView.HideSelection = false; + this.serverListView.Location = new System.Drawing.Point(13, 47); + this.serverListView.Name = "serverListView"; + this.serverListView.Size = new System.Drawing.Size(189, 391); + this.serverListView.TabIndex = 4; + this.serverListView.UseCompatibleStateImageBehavior = false; + this.serverListView.View = System.Windows.Forms.View.Details; + // + // columnHeader3 + // + this.columnHeader3.Text = "Name"; + this.columnHeader3.Width = 130; + // + // columnHeader4 + // + this.columnHeader4.Text = "Version"; + this.columnHeader4.Width = 50; + // + // connectButton + // + this.connectButton.Location = new System.Drawing.Point(94, 21); + this.connectButton.Name = "connectButton"; + this.connectButton.Size = new System.Drawing.Size(75, 23); + this.connectButton.TabIndex = 5; + this.connectButton.Text = "Connect"; + this.connectButton.UseVisualStyleBackColor = true; + this.connectButton.Click += new System.EventHandler(this.connectButton_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.connectButton); + this.Controls.Add(this.serverListView); + this.Controls.Add(this.label1); + this.Controls.Add(this.goButton); + this.Controls.Add(this.workspaceListView); + this.Name = "Form1"; + this.Text = "Form1"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing); + this.Load += new System.EventHandler(this.Form1_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.ListView workspaceListView; + private System.Windows.Forms.Button goButton; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ListView serverListView; + private System.Windows.Forms.ColumnHeader cueNumberHeader; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.ColumnHeader columnHeader3; + private System.Windows.Forms.Button connectButton; + private System.Windows.Forms.ColumnHeader columnHeader4; + private System.Windows.Forms.ColumnHeader cueNameHeader; + } +} + diff --git a/QSharpDemoApp/Form1.cs b/QSharpDemoApp/Form1.cs new file mode 100644 index 0000000..634a39a --- /dev/null +++ b/QSharpDemoApp/Form1.cs @@ -0,0 +1,140 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Windows.Forms.VisualStyles; +using QSharp; +using Serilog; + +namespace QSharpDemoApp +{ + public partial class Form1 : Form + { + QBrowser browser; + QWorkspace connectedWorkspace; + public Form1() + { + InitializeComponent(); + browser = new QBrowser(); + browser.ServerFound += Browser_ServerFound; + } + + private void Browser_ServerFound(object source, QServerFoundArgs args) + { + Log.Debug(args.server.name); + args.server.ServerUpdated += Server_ServerUpdated; + args.server.refreshWorkspaces(); + + } + + private void Form1_Load(object sender, EventArgs e) + { + Log.Logger = new LoggerConfiguration().WriteTo.Console().MinimumLevel.Debug().CreateLogger(); + } + + + private void Form1_FormClosing(object sender, FormClosingEventArgs e) + { + browser.Close(); + } + + private void connectButton_Click(object sender, EventArgs e) + { + if(serverListView.SelectedItems.Count == 1) + { + + QServer server = browser.serverForAddress(serverListView.SelectedItems[0].SubItems[3].Text); + string workspaceID = serverListView.SelectedItems[0].SubItems[2].Text; + if (server != null) + { + connectedWorkspace = server.workspaceWithID(workspaceID); + if(connectedWorkspace != null) + { + connectedWorkspace.WorkspaceUpdated += Workspace_WorkspaceUpdated; + connectedWorkspace.connectWithPasscode(""); + } + } + } + } + + private void Server_ServerUpdated(object source, QServerUpdatedArgs args) + { + QServer server = args.server; + + if (server.workspaces.Count > 0) + { + Log.Debug($"[demo] server has more than one workspace so adding as a group"); + + if (serverListView.InvokeRequired) + { + serverListView.Invoke((MethodInvoker)delegate () { + ListViewGroup serverGroup = new ListViewGroup(server.name.ToUpper()); + serverListView.Groups.Add(serverGroup); + foreach(var workspace in server.workspaces) + { + ListViewItem workspaceItem = new ListViewItem(new[] { workspace.nameWithoutPathExtension, workspace.version, workspace.uniqueID, server.host }, serverGroup) ; + serverListView.Items.Add(workspaceItem); + } + }); + } + } + } + + private void reloadListView() + { + if (workspaceListView.InvokeRequired) + { + workspaceListView.Invoke((MethodInvoker)delegate () { + + workspaceListView.Items.Clear(); + + foreach(var cueList in connectedWorkspace.cueLists) + { + addCueToListView(cueList); + } + + workspaceListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); + workspaceListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); + + }); + } + } + + public void addCueToListView(QCue cue) + { + + if (cue.IsGroup) + { + ListViewGroup cueGroup = new ListViewGroup(cue.displayName); + workspaceListView.Groups.Add(cueGroup); + foreach(var aCue in cue.cues) + { + ListViewItem cueItem = new ListViewItem(new[] { aCue.number, aCue.listName, aCue.uid }, cueGroup); + cueItem.BackColor = ColorTranslator.FromHtml($"#{aCue.color.lightHex}"); + workspaceListView.Items.Add(cueItem); + } + } + } + + private void Workspace_WorkspaceUpdated(object source, QWorkspaceUpdatedArgs args) + { + Log.Debug("[demo] workspace has been updated"); + if(connectedWorkspace.firstCueList != null) + { + reloadListView(); + } + } + + private void goButton_Click(object sender, EventArgs e) + { + if (connectedWorkspace != null) + connectedWorkspace.go(); + } + } +} diff --git a/QSharpDemoApp/Form1.resx b/QSharpDemoApp/Form1.resx new file mode 100644 index 0000000..f298a7b --- /dev/null +++ b/QSharpDemoApp/Form1.resx @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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/QSharpDemoApp/Program.cs b/QSharpDemoApp/Program.cs new file mode 100644 index 0000000..1891093 --- /dev/null +++ b/QSharpDemoApp/Program.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace QSharpDemoApp +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetHighDpiMode(HighDpiMode.SystemAware); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/QSharpDemoApp/QSharpDemoApp.csproj b/QSharpDemoApp/QSharpDemoApp.csproj new file mode 100644 index 0000000..ca56657 --- /dev/null +++ b/QSharpDemoApp/QSharpDemoApp.csproj @@ -0,0 +1,18 @@ + + + + Exe + netcoreapp3.1 + true + + + + + + + + + + + + \ No newline at end of file