Moving our test client around.
authorStephaneLenclud
Wed, 03 Feb 2016 13:02:48 +0100
changeset 19060977f2b3ca7
parent 189 bedae992f4ee
child 191 7ada476f3fd7
Moving our test client around.
Client/App.config
Client/MainForm.Designer.cs
Client/MainForm.cs
Client/MainForm.resx
Client/Program.cs
Client/Properties/AssemblyInfo.cs
Client/Properties/Resources.Designer.cs
Client/Properties/Resources.resx
Client/Properties/Settings.Designer.cs
Client/Properties/Settings.settings
Client/SharpDisplayClient.csproj
Client/packages.config
Clients/Test/App.config
Clients/Test/MainForm.Designer.cs
Clients/Test/MainForm.cs
Clients/Test/MainForm.resx
Clients/Test/Program.cs
Clients/Test/Properties/AssemblyInfo.cs
Clients/Test/Properties/Resources.Designer.cs
Clients/Test/Properties/Resources.resx
Clients/Test/Properties/Settings.Designer.cs
Clients/Test/Properties/Settings.settings
Clients/Test/SharpDisplayClient.csproj
Clients/Test/packages.config
Server/SharpDisplayManager.csproj
Setup/Setup.vdproj
SharpDisplayManager.sln
     1.1 --- a/Client/App.config	Tue Feb 02 19:50:33 2016 +0100
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,6 +0,0 @@
     1.4 -<?xml version="1.0"?>
     1.5 -<configuration>
     1.6 -    <startup> 
     1.7 -        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
     1.8 -    </startup>
     1.9 -</configuration>
     2.1 --- a/Client/MainForm.Designer.cs	Tue Feb 02 19:50:33 2016 +0100
     2.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.3 @@ -1,254 +0,0 @@
     2.4 -namespace SharpDisplayClient
     2.5 -{
     2.6 -    partial class MainForm
     2.7 -    {
     2.8 -        /// <summary>
     2.9 -        /// Required designer variable.
    2.10 -        /// </summary>
    2.11 -        private System.ComponentModel.IContainer components = null;
    2.12 -
    2.13 -        /// <summary>
    2.14 -        /// Clean up any resources being used.
    2.15 -        /// </summary>
    2.16 -        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    2.17 -        protected override void Dispose(bool disposing)
    2.18 -        {
    2.19 -            if (disposing && (components != null))
    2.20 -            {
    2.21 -                components.Dispose();
    2.22 -            }
    2.23 -            base.Dispose(disposing);
    2.24 -        }
    2.25 -
    2.26 -        #region Windows Form Designer generated code
    2.27 -
    2.28 -        /// <summary>
    2.29 -        /// Required method for Designer support - do not modify
    2.30 -        /// the contents of this method with the code editor.
    2.31 -        /// </summary>
    2.32 -        private void InitializeComponent()
    2.33 -        {
    2.34 -            this.buttonSetText = new System.Windows.Forms.Button();
    2.35 -            this.textBoxTop = new System.Windows.Forms.TextBox();
    2.36 -            this.textBoxBottom = new System.Windows.Forms.TextBox();
    2.37 -            this.buttonAlignRight = new System.Windows.Forms.Button();
    2.38 -            this.buttonAlignCenter = new System.Windows.Forms.Button();
    2.39 -            this.buttonAlignLeft = new System.Windows.Forms.Button();
    2.40 -            this.buttonSetTopText = new System.Windows.Forms.Button();
    2.41 -            this.buttonLayoutUpdate = new System.Windows.Forms.Button();
    2.42 -            this.buttonSetBitmap = new System.Windows.Forms.Button();
    2.43 -            this.buttonBitmapLayout = new System.Windows.Forms.Button();
    2.44 -            this.buttonIndicatorsLayout = new System.Windows.Forms.Button();
    2.45 -            this.buttonUpdateTexts = new System.Windows.Forms.Button();
    2.46 -            this.buttonLayoutOneTextField = new System.Windows.Forms.Button();
    2.47 -            this.numericUpDownPriority = new System.Windows.Forms.NumericUpDown();
    2.48 -            this.labelPriority = new System.Windows.Forms.Label();
    2.49 -            ((System.ComponentModel.ISupportInitialize)(this.numericUpDownPriority)).BeginInit();
    2.50 -            this.SuspendLayout();
    2.51 -            // 
    2.52 -            // buttonSetText
    2.53 -            // 
    2.54 -            this.buttonSetText.Location = new System.Drawing.Point(13, 132);
    2.55 -            this.buttonSetText.Name = "buttonSetText";
    2.56 -            this.buttonSetText.Size = new System.Drawing.Size(75, 23);
    2.57 -            this.buttonSetText.TabIndex = 0;
    2.58 -            this.buttonSetText.Text = "Set Text";
    2.59 -            this.buttonSetText.UseVisualStyleBackColor = true;
    2.60 -            this.buttonSetText.Click += new System.EventHandler(this.buttonSetText_Click);
    2.61 -            // 
    2.62 -            // textBoxTop
    2.63 -            // 
    2.64 -            this.textBoxTop.Location = new System.Drawing.Point(12, 31);
    2.65 -            this.textBoxTop.Name = "textBoxTop";
    2.66 -            this.textBoxTop.Size = new System.Drawing.Size(419, 20);
    2.67 -            this.textBoxTop.TabIndex = 1;
    2.68 -            // 
    2.69 -            // textBoxBottom
    2.70 -            // 
    2.71 -            this.textBoxBottom.Location = new System.Drawing.Point(12, 57);
    2.72 -            this.textBoxBottom.Name = "textBoxBottom";
    2.73 -            this.textBoxBottom.Size = new System.Drawing.Size(419, 20);
    2.74 -            this.textBoxBottom.TabIndex = 2;
    2.75 -            // 
    2.76 -            // buttonAlignRight
    2.77 -            // 
    2.78 -            this.buttonAlignRight.Location = new System.Drawing.Point(176, 160);
    2.79 -            this.buttonAlignRight.Name = "buttonAlignRight";
    2.80 -            this.buttonAlignRight.Size = new System.Drawing.Size(75, 23);
    2.81 -            this.buttonAlignRight.TabIndex = 23;
    2.82 -            this.buttonAlignRight.Text = "Align Right";
    2.83 -            this.buttonAlignRight.UseVisualStyleBackColor = true;
    2.84 -            this.buttonAlignRight.Click += new System.EventHandler(this.buttonAlignRight_Click);
    2.85 -            // 
    2.86 -            // buttonAlignCenter
    2.87 -            // 
    2.88 -            this.buttonAlignCenter.Location = new System.Drawing.Point(94, 161);
    2.89 -            this.buttonAlignCenter.Name = "buttonAlignCenter";
    2.90 -            this.buttonAlignCenter.Size = new System.Drawing.Size(75, 23);
    2.91 -            this.buttonAlignCenter.TabIndex = 22;
    2.92 -            this.buttonAlignCenter.Text = "Align Center";
    2.93 -            this.buttonAlignCenter.UseVisualStyleBackColor = true;
    2.94 -            this.buttonAlignCenter.Click += new System.EventHandler(this.buttonAlignCenter_Click);
    2.95 -            // 
    2.96 -            // buttonAlignLeft
    2.97 -            // 
    2.98 -            this.buttonAlignLeft.Location = new System.Drawing.Point(12, 161);
    2.99 -            this.buttonAlignLeft.Name = "buttonAlignLeft";
   2.100 -            this.buttonAlignLeft.Size = new System.Drawing.Size(75, 23);
   2.101 -            this.buttonAlignLeft.TabIndex = 21;
   2.102 -            this.buttonAlignLeft.Text = "Align Left";
   2.103 -            this.buttonAlignLeft.UseVisualStyleBackColor = true;
   2.104 -            this.buttonAlignLeft.Click += new System.EventHandler(this.buttonAlignLeft_Click);
   2.105 -            // 
   2.106 -            // buttonSetTopText
   2.107 -            // 
   2.108 -            this.buttonSetTopText.Location = new System.Drawing.Point(94, 132);
   2.109 -            this.buttonSetTopText.Name = "buttonSetTopText";
   2.110 -            this.buttonSetTopText.Size = new System.Drawing.Size(75, 23);
   2.111 -            this.buttonSetTopText.TabIndex = 24;
   2.112 -            this.buttonSetTopText.Text = "Set Top Text";
   2.113 -            this.buttonSetTopText.UseVisualStyleBackColor = true;
   2.114 -            this.buttonSetTopText.Click += new System.EventHandler(this.buttonSetTopText_Click);
   2.115 -            // 
   2.116 -            // buttonLayoutUpdate
   2.117 -            // 
   2.118 -            this.buttonLayoutUpdate.Location = new System.Drawing.Point(176, 131);
   2.119 -            this.buttonLayoutUpdate.Name = "buttonLayoutUpdate";
   2.120 -            this.buttonLayoutUpdate.Size = new System.Drawing.Size(156, 23);
   2.121 -            this.buttonLayoutUpdate.TabIndex = 25;
   2.122 -            this.buttonLayoutUpdate.Text = "Layout 2x2 and Recording";
   2.123 -            this.buttonLayoutUpdate.UseVisualStyleBackColor = true;
   2.124 -            this.buttonLayoutUpdate.Click += new System.EventHandler(this.buttonLayoutUpdate_Click);
   2.125 -            // 
   2.126 -            // buttonSetBitmap
   2.127 -            // 
   2.128 -            this.buttonSetBitmap.Location = new System.Drawing.Point(12, 190);
   2.129 -            this.buttonSetBitmap.Name = "buttonSetBitmap";
   2.130 -            this.buttonSetBitmap.Size = new System.Drawing.Size(75, 23);
   2.131 -            this.buttonSetBitmap.TabIndex = 26;
   2.132 -            this.buttonSetBitmap.Text = "Set Bitmap";
   2.133 -            this.buttonSetBitmap.UseVisualStyleBackColor = true;
   2.134 -            this.buttonSetBitmap.Click += new System.EventHandler(this.buttonSetBitmap_Click);
   2.135 -            // 
   2.136 -            // buttonBitmapLayout
   2.137 -            // 
   2.138 -            this.buttonBitmapLayout.Location = new System.Drawing.Point(176, 189);
   2.139 -            this.buttonBitmapLayout.Name = "buttonBitmapLayout";
   2.140 -            this.buttonBitmapLayout.Size = new System.Drawing.Size(75, 35);
   2.141 -            this.buttonBitmapLayout.TabIndex = 27;
   2.142 -            this.buttonBitmapLayout.Text = "Bitmap Layout";
   2.143 -            this.buttonBitmapLayout.UseVisualStyleBackColor = true;
   2.144 -            this.buttonBitmapLayout.Click += new System.EventHandler(this.buttonBitmapLayout_Click);
   2.145 -            // 
   2.146 -            // buttonIndicatorsLayout
   2.147 -            // 
   2.148 -            this.buttonIndicatorsLayout.Location = new System.Drawing.Point(94, 189);
   2.149 -            this.buttonIndicatorsLayout.Name = "buttonIndicatorsLayout";
   2.150 -            this.buttonIndicatorsLayout.Size = new System.Drawing.Size(75, 35);
   2.151 -            this.buttonIndicatorsLayout.TabIndex = 28;
   2.152 -            this.buttonIndicatorsLayout.Text = "Indicators Layout ";
   2.153 -            this.buttonIndicatorsLayout.UseVisualStyleBackColor = true;
   2.154 -            this.buttonIndicatorsLayout.Click += new System.EventHandler(this.buttonIndicatorsLayout_Click);
   2.155 -            // 
   2.156 -            // buttonUpdateTexts
   2.157 -            // 
   2.158 -            this.buttonUpdateTexts.Location = new System.Drawing.Point(257, 189);
   2.159 -            this.buttonUpdateTexts.Name = "buttonUpdateTexts";
   2.160 -            this.buttonUpdateTexts.Size = new System.Drawing.Size(75, 35);
   2.161 -            this.buttonUpdateTexts.TabIndex = 29;
   2.162 -            this.buttonUpdateTexts.Text = "Update Texts";
   2.163 -            this.buttonUpdateTexts.UseVisualStyleBackColor = true;
   2.164 -            this.buttonUpdateTexts.Click += new System.EventHandler(this.buttonUpdateTexts_Click);
   2.165 -            // 
   2.166 -            // buttonLayoutOneTextField
   2.167 -            // 
   2.168 -            this.buttonLayoutOneTextField.Location = new System.Drawing.Point(257, 160);
   2.169 -            this.buttonLayoutOneTextField.Name = "buttonLayoutOneTextField";
   2.170 -            this.buttonLayoutOneTextField.Size = new System.Drawing.Size(75, 23);
   2.171 -            this.buttonLayoutOneTextField.TabIndex = 30;
   2.172 -            this.buttonLayoutOneTextField.Text = "Layout 1x1";
   2.173 -            this.buttonLayoutOneTextField.UseVisualStyleBackColor = true;
   2.174 -            this.buttonLayoutOneTextField.Click += new System.EventHandler(this.buttonLayoutOneTextField_Click);
   2.175 -            // 
   2.176 -            // numericUpDownPriority
   2.177 -            // 
   2.178 -            this.numericUpDownPriority.Increment = new decimal(new int[] {
   2.179 -            10,
   2.180 -            0,
   2.181 -            0,
   2.182 -            0});
   2.183 -            this.numericUpDownPriority.Location = new System.Drawing.Point(57, 83);
   2.184 -            this.numericUpDownPriority.Maximum = new decimal(new int[] {
   2.185 -            1000,
   2.186 -            0,
   2.187 -            0,
   2.188 -            0});
   2.189 -            this.numericUpDownPriority.Name = "numericUpDownPriority";
   2.190 -            this.numericUpDownPriority.Size = new System.Drawing.Size(60, 20);
   2.191 -            this.numericUpDownPriority.TabIndex = 31;
   2.192 -            this.numericUpDownPriority.Value = new decimal(new int[] {
   2.193 -            500,
   2.194 -            0,
   2.195 -            0,
   2.196 -            0});
   2.197 -            this.numericUpDownPriority.ValueChanged += new System.EventHandler(this.numericUpDownPriority_ValueChanged);
   2.198 -            // 
   2.199 -            // labelPriority
   2.200 -            // 
   2.201 -            this.labelPriority.AutoSize = true;
   2.202 -            this.labelPriority.Location = new System.Drawing.Point(12, 85);
   2.203 -            this.labelPriority.Name = "labelPriority";
   2.204 -            this.labelPriority.Size = new System.Drawing.Size(41, 13);
   2.205 -            this.labelPriority.TabIndex = 32;
   2.206 -            this.labelPriority.Text = "Priority:";
   2.207 -            // 
   2.208 -            // MainForm
   2.209 -            // 
   2.210 -            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
   2.211 -            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
   2.212 -            this.ClientSize = new System.Drawing.Size(443, 252);
   2.213 -            this.Controls.Add(this.labelPriority);
   2.214 -            this.Controls.Add(this.numericUpDownPriority);
   2.215 -            this.Controls.Add(this.buttonLayoutOneTextField);
   2.216 -            this.Controls.Add(this.buttonUpdateTexts);
   2.217 -            this.Controls.Add(this.buttonIndicatorsLayout);
   2.218 -            this.Controls.Add(this.buttonBitmapLayout);
   2.219 -            this.Controls.Add(this.buttonSetBitmap);
   2.220 -            this.Controls.Add(this.buttonLayoutUpdate);
   2.221 -            this.Controls.Add(this.buttonSetTopText);
   2.222 -            this.Controls.Add(this.buttonAlignRight);
   2.223 -            this.Controls.Add(this.buttonAlignCenter);
   2.224 -            this.Controls.Add(this.buttonAlignLeft);
   2.225 -            this.Controls.Add(this.textBoxBottom);
   2.226 -            this.Controls.Add(this.textBoxTop);
   2.227 -            this.Controls.Add(this.buttonSetText);
   2.228 -            this.Name = "MainForm";
   2.229 -            this.Text = "Client";
   2.230 -            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
   2.231 -            this.Load += new System.EventHandler(this.MainForm_Load);
   2.232 -            ((System.ComponentModel.ISupportInitialize)(this.numericUpDownPriority)).EndInit();
   2.233 -            this.ResumeLayout(false);
   2.234 -            this.PerformLayout();
   2.235 -
   2.236 -        }
   2.237 -
   2.238 -        #endregion
   2.239 -
   2.240 -        private System.Windows.Forms.Button buttonSetText;
   2.241 -        private System.Windows.Forms.TextBox textBoxTop;
   2.242 -        private System.Windows.Forms.TextBox textBoxBottom;
   2.243 -        private System.Windows.Forms.Button buttonAlignRight;
   2.244 -        private System.Windows.Forms.Button buttonAlignCenter;
   2.245 -        private System.Windows.Forms.Button buttonAlignLeft;
   2.246 -        private System.Windows.Forms.Button buttonSetTopText;
   2.247 -        private System.Windows.Forms.Button buttonLayoutUpdate;
   2.248 -        private System.Windows.Forms.Button buttonSetBitmap;
   2.249 -        private System.Windows.Forms.Button buttonBitmapLayout;
   2.250 -        private System.Windows.Forms.Button buttonIndicatorsLayout;
   2.251 -        private System.Windows.Forms.Button buttonUpdateTexts;
   2.252 -		private System.Windows.Forms.Button buttonLayoutOneTextField;
   2.253 -        private System.Windows.Forms.NumericUpDown numericUpDownPriority;
   2.254 -        private System.Windows.Forms.Label labelPriority;
   2.255 -    }
   2.256 -}
   2.257 -
     3.1 --- a/Client/MainForm.cs	Tue Feb 02 19:50:33 2016 +0100
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,404 +0,0 @@
     3.4 -//
     3.5 -// Copyright (C) 2014-2015 Stéphane Lenclud.
     3.6 -//
     3.7 -// This file is part of SharpDisplayManager.
     3.8 -//
     3.9 -// SharpDisplayManager is free software: you can redistribute it and/or modify
    3.10 -// it under the terms of the GNU General Public License as published by
    3.11 -// the Free Software Foundation, either version 3 of the License, or
    3.12 -// (at your option) any later version.
    3.13 -//
    3.14 -// SharpDisplayManager is distributed in the hope that it will be useful,
    3.15 -// but WITHOUT ANY WARRANTY; without even the implied warranty of
    3.16 -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    3.17 -// GNU General Public License for more details.
    3.18 -//
    3.19 -// You should have received a copy of the GNU General Public License
    3.20 -// along with SharpDisplayManager.  If not, see <http://www.gnu.org/licenses/>.
    3.21 -//
    3.22 -
    3.23 -using System;
    3.24 -using System.Collections.Generic;
    3.25 -using System.ComponentModel;
    3.26 -using System.Data;
    3.27 -using System.Drawing;
    3.28 -using System.Linq;
    3.29 -using System.Text;
    3.30 -using System.Threading.Tasks;
    3.31 -using System.Windows.Forms;
    3.32 -using System.ServiceModel;
    3.33 -using System.ServiceModel.Channels;
    3.34 -using System.Diagnostics;
    3.35 -using SharpLib.Display;
    3.36 -
    3.37 -
    3.38 -namespace SharpDisplayClient
    3.39 -{
    3.40 -    public partial class MainForm : Form
    3.41 -    {
    3.42 -		public StartParams Params { get; set; }
    3.43 -
    3.44 -		//
    3.45 -        Client iClient;
    3.46 -		//
    3.47 -        ContentAlignment Alignment;
    3.48 -        TextField iTextFieldTop;
    3.49 -
    3.50 -		
    3.51 -		/// <summary>
    3.52 -		/// Constructor
    3.53 -		/// </summary>
    3.54 -        public MainForm()
    3.55 -        {
    3.56 -            InitializeComponent();
    3.57 -            Alignment = ContentAlignment.MiddleLeft;
    3.58 -            iTextFieldTop = new TextField();
    3.59 -        }
    3.60 -
    3.61 -        public void OnCloseOrder()
    3.62 -        {
    3.63 -            CloseThreadSafe();
    3.64 -        }
    3.65 -
    3.66 -        /// <summary>
    3.67 -        /// 
    3.68 -        /// </summary>
    3.69 -        /// <param name="sender"></param>
    3.70 -        /// <param name="e"></param>
    3.71 -        private void MainForm_Load(object sender, EventArgs e)
    3.72 -        {
    3.73 -            iClient = new Client();
    3.74 -            iClient.CloseOrderEvent += OnCloseOrder;
    3.75 -            iClient.Open();
    3.76 -
    3.77 -            //Connect using unique name
    3.78 -            //string name = DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt");
    3.79 -            string name = "Client-" + (iClient.ClientCount() - 1);
    3.80 -            iClient.SetName(name);
    3.81 -            //Text = Text + ": " + name;
    3.82 -            Text = "[[" + name + "]]  " + iClient.SessionId;
    3.83 -
    3.84 -            //
    3.85 -            textBoxTop.Text = iClient.Name;
    3.86 -            textBoxBottom.Text = iClient.SessionId;
    3.87 -
    3.88 -			if (Params != null)
    3.89 -			{
    3.90 -				//Parameters where specified use them
    3.91 -				if (Params.TopText != "")
    3.92 -				{
    3.93 -					textBoxTop.Text = Params.TopText;
    3.94 -				}
    3.95 -
    3.96 -				if (Params.BottomText != "")
    3.97 -				{
    3.98 -					textBoxBottom.Text = Params.BottomText;
    3.99 -				}
   3.100 -
   3.101 -				Location = Params.Location;
   3.102 -				//
   3.103 -				SetBasicLayoutAndText();
   3.104 -			}
   3.105 -
   3.106 -        }
   3.107 -
   3.108 -
   3.109 -
   3.110 -        public delegate void CloseConnectionDelegate();
   3.111 -        public delegate void CloseDelegate();
   3.112 -
   3.113 -        /// <summary>
   3.114 -        ///
   3.115 -        /// </summary>
   3.116 -        public void CloseConnectionThreadSafe()
   3.117 -        {
   3.118 -            if (this.InvokeRequired)
   3.119 -            {
   3.120 -                //Not in the proper thread, invoke ourselves
   3.121 -                CloseConnectionDelegate d = new CloseConnectionDelegate(CloseConnectionThreadSafe);
   3.122 -                this.Invoke(d, new object[] { });
   3.123 -            }
   3.124 -            else
   3.125 -            {
   3.126 -                //We are in the proper thread
   3.127 -                if (IsClientReady())
   3.128 -                {
   3.129 -                    string sessionId = iClient.SessionId;
   3.130 -                    Trace.TraceInformation("Closing client: " + sessionId);
   3.131 -                    iClient.Close();
   3.132 -                    Trace.TraceInformation("Closed client: " + sessionId);
   3.133 -                }
   3.134 -
   3.135 -                iClient = null;
   3.136 -            }
   3.137 -        }
   3.138 -
   3.139 -        /// <summary>
   3.140 -        ///
   3.141 -        /// </summary>
   3.142 -        public void CloseThreadSafe()
   3.143 -        {
   3.144 -            if (this.InvokeRequired)
   3.145 -            {
   3.146 -                //Not in the proper thread, invoke ourselves
   3.147 -                CloseDelegate d = new CloseDelegate(CloseThreadSafe);
   3.148 -                this.Invoke(d, new object[] { });
   3.149 -            }
   3.150 -            else
   3.151 -            {
   3.152 -                //We are in the proper thread
   3.153 -                Close();
   3.154 -            }
   3.155 -        }
   3.156 -
   3.157 -
   3.158 -        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
   3.159 -        {
   3.160 -            CloseConnectionThreadSafe();
   3.161 -        }
   3.162 -
   3.163 -        public bool IsClientReady()
   3.164 -        {
   3.165 -            return (iClient != null && iClient.IsReady());
   3.166 -        }
   3.167 -
   3.168 -        private void buttonAlignLeft_Click(object sender, EventArgs e)
   3.169 -        {
   3.170 -            Alignment = ContentAlignment.MiddleLeft;
   3.171 -            textBoxTop.TextAlign = HorizontalAlignment.Left;
   3.172 -            textBoxBottom.TextAlign = HorizontalAlignment.Left;
   3.173 -        }
   3.174 -
   3.175 -        private void buttonAlignCenter_Click(object sender, EventArgs e)
   3.176 -        {
   3.177 -            Alignment = ContentAlignment.MiddleCenter;
   3.178 -            textBoxTop.TextAlign = HorizontalAlignment.Center;
   3.179 -            textBoxBottom.TextAlign = HorizontalAlignment.Center;
   3.180 -        }
   3.181 -
   3.182 -        private void buttonAlignRight_Click(object sender, EventArgs e)
   3.183 -        {
   3.184 -            Alignment = ContentAlignment.MiddleRight;
   3.185 -            textBoxTop.TextAlign = HorizontalAlignment.Right;
   3.186 -            textBoxBottom.TextAlign = HorizontalAlignment.Right;
   3.187 -        }
   3.188 -
   3.189 -        private void buttonSetTopText_Click(object sender, EventArgs e)
   3.190 -        {
   3.191 -            //TextField top = new TextField(0, textBoxTop.Text, ContentAlignment.MiddleLeft);
   3.192 -            iTextFieldTop.Text = textBoxTop.Text;
   3.193 -            iTextFieldTop.Alignment = Alignment;
   3.194 -            bool res = iClient.SetField(iTextFieldTop);
   3.195 -
   3.196 -            if (!res)
   3.197 -            {
   3.198 -                MessageBox.Show("Create you fields first", "Field update error", MessageBoxButtons.OK, MessageBoxIcon.Error);
   3.199 -            }
   3.200 -
   3.201 -
   3.202 -        }
   3.203 -
   3.204 -        private void buttonSetText_Click(object sender, EventArgs e)
   3.205 -        {
   3.206 -			SetBasicLayoutAndText();
   3.207 -        }
   3.208 -
   3.209 -		void SetBasicLayoutAndText()
   3.210 -		{
   3.211 -			//Set one column two lines layout
   3.212 -			TableLayout layout = new TableLayout(1, 2);
   3.213 -			iClient.SetLayout(layout);
   3.214 -
   3.215 -			//Set our fields
   3.216 -			iClient.CreateFields(new DataField[]
   3.217 -            {
   3.218 -                new TextField(textBoxTop.Text, Alignment, 0, 0),
   3.219 -                new TextField(textBoxBottom.Text, Alignment, 0, 1)
   3.220 -            });
   3.221 -
   3.222 -		}
   3.223 -
   3.224 -        private void buttonLayoutUpdate_Click(object sender, EventArgs e)
   3.225 -        {
   3.226 -            //Define a 2 by 2 layout
   3.227 -            TableLayout layout = new TableLayout(2,2);
   3.228 -            //Second column only takes up 25%
   3.229 -            layout.Columns[1].Width = 25F;
   3.230 -            //Send layout to server
   3.231 -            iClient.SetLayout(layout);
   3.232 -
   3.233 -            //
   3.234 -            RecordingField recording = new RecordingField();
   3.235 -            recording.IsActive = true;
   3.236 -            recording.Text = "Recording Tame of Gone until 22:05";
   3.237 -            //Set texts
   3.238 -            iClient.CreateFields(new DataField[]
   3.239 -            {                
   3.240 -                new TextField(textBoxTop.Text, Alignment, 0, 0),
   3.241 -                new TextField(textBoxBottom.Text, Alignment, 0, 1),
   3.242 -                new TextField("Third text field", Alignment, 1, 0),
   3.243 -                new TextField("Forth text field", Alignment, 1, 1),
   3.244 -                recording
   3.245 -            });
   3.246 -
   3.247 -        }
   3.248 -
   3.249 -        private void buttonSetBitmap_Click(object sender, EventArgs e)
   3.250 -        {
   3.251 -            int x1 = 0;
   3.252 -            int y1 = 0;
   3.253 -            int x2 = 256;
   3.254 -            int y2 = 32;
   3.255 -
   3.256 -            Bitmap bitmap = new Bitmap(x2,y2);
   3.257 -            Pen blackPen = new Pen(Color.Black, 3);
   3.258 -
   3.259 -            // Draw line to screen.
   3.260 -            using (var graphics = Graphics.FromImage(bitmap))
   3.261 -            {
   3.262 -                graphics.DrawLine(blackPen, x1, y1, x2, y2);
   3.263 -                graphics.DrawLine(blackPen, x1, y2, x2, y1);
   3.264 -            }
   3.265 -
   3.266 -            DataField field = new BitmapField(bitmap);
   3.267 -            //field.ColumnSpan = 2;
   3.268 -            iClient.SetField(field);
   3.269 -        }
   3.270 -
   3.271 -        private void buttonBitmapLayout_Click(object sender, EventArgs e)
   3.272 -        {
   3.273 -            SetLayoutWithBitmap();
   3.274 -        }
   3.275 -
   3.276 -        /// <summary>
   3.277 -        /// Define a layout with a bitmap field on the left and two lines of text on the right.
   3.278 -        /// </summary>
   3.279 -        private void SetLayoutWithBitmap()
   3.280 -        {
   3.281 -            //Define a 2 by 2 layout
   3.282 -            TableLayout layout = new TableLayout(2, 2);
   3.283 -            //First column only takes 25%
   3.284 -            layout.Columns[0].Width = 25F;
   3.285 -            //Second column takes up 75%
   3.286 -            layout.Columns[1].Width = 75F;
   3.287 -            //Send layout to server
   3.288 -            iClient.SetLayout(layout);
   3.289 -
   3.290 -            //Set a bitmap for our first field
   3.291 -            int x1 = 0;
   3.292 -            int y1 = 0;
   3.293 -            int x2 = 64;
   3.294 -            int y2 = 64;
   3.295 -
   3.296 -            Bitmap bitmap = new Bitmap(x2, y2);
   3.297 -            Pen blackPen = new Pen(Color.Black, 3);
   3.298 -
   3.299 -            // Draw line to screen.
   3.300 -            using (var graphics = Graphics.FromImage(bitmap))
   3.301 -            {
   3.302 -                graphics.DrawLine(blackPen, x1, y1, x2, y2);
   3.303 -                graphics.DrawLine(blackPen, x1, y2, x2, y1);
   3.304 -            }
   3.305 -
   3.306 -            //Create a bitmap field from the bitmap we just created
   3.307 -            //We want our bitmap field to span across two rows
   3.308 -            BitmapField bitmapField = new BitmapField(bitmap, 0, 0, 1, 2);
   3.309 -            
   3.310 -            //Set texts
   3.311 -            iClient.CreateFields(new DataField[]
   3.312 -            {
   3.313 -                bitmapField,
   3.314 -                new TextField(textBoxTop.Text, Alignment, 1, 0),
   3.315 -                new TextField(textBoxBottom.Text, Alignment, 1, 1)
   3.316 -            });
   3.317 -
   3.318 -        }
   3.319 -
   3.320 -        private void buttonIndicatorsLayout_Click(object sender, EventArgs e)
   3.321 -        {
   3.322 -            //Define a 2 by 4 layout
   3.323 -            TableLayout layout = new TableLayout(2, 4);
   3.324 -            //First column
   3.325 -            layout.Columns[0].Width = 87.5F;
   3.326 -            //Second column
   3.327 -            layout.Columns[1].Width = 12.5F;
   3.328 -            //Send layout to server
   3.329 -            iClient.SetLayout(layout);
   3.330 -
   3.331 -            //Create a bitmap for our indicators field
   3.332 -            int x1 = 0;
   3.333 -            int y1 = 0;
   3.334 -            int x2 = 32;
   3.335 -            int y2 = 16;
   3.336 -
   3.337 -            Bitmap bitmap = new Bitmap(x2, y2);
   3.338 -            Pen blackPen = new Pen(Color.Black, 3);
   3.339 -
   3.340 -            // Draw line to screen.
   3.341 -            using (var graphics = Graphics.FromImage(bitmap))
   3.342 -            {
   3.343 -                graphics.DrawLine(blackPen, x1, y1, x2, y2);
   3.344 -                graphics.DrawLine(blackPen, x1, y2, x2, y1);
   3.345 -            }
   3.346 -
   3.347 -            //Create a bitmap field from the bitmap we just created
   3.348 -            DataField indicator1 = new BitmapField(bitmap, 1, 0);
   3.349 -            //Create a bitmap field from the bitmap we just created
   3.350 -            DataField indicator2 = new BitmapField(bitmap, 1, 1);
   3.351 -            //Create a bitmap field from the bitmap we just created
   3.352 -            DataField indicator3 = new BitmapField(bitmap, 1, 2);
   3.353 -            //Create a bitmap field from the bitmap we just created
   3.354 -            DataField indicator4 = new BitmapField(bitmap, 1, 3);
   3.355 -
   3.356 -            //
   3.357 -            TextField textFieldTop = new TextField(textBoxTop.Text, Alignment, 0, 0, 1, 2);
   3.358 -            TextField textFieldBottom = new TextField(textBoxBottom.Text, Alignment, 0, 2, 1, 2);
   3.359 -
   3.360 -            //Set texts
   3.361 -            iClient.CreateFields(new DataField[]
   3.362 -            {
   3.363 -                textFieldTop,
   3.364 -                textFieldBottom,
   3.365 -                indicator1,
   3.366 -                indicator2,                
   3.367 -                indicator3,
   3.368 -                indicator4
   3.369 -            });
   3.370 -
   3.371 -        }
   3.372 -
   3.373 -        private void buttonUpdateTexts_Click(object sender, EventArgs e)
   3.374 -        {
   3.375 -
   3.376 -            bool res = iClient.SetFields(new DataField[]
   3.377 -            {
   3.378 -                new TextField(textBoxTop.Text, Alignment,0,0),
   3.379 -                new TextField(textBoxBottom.Text, Alignment,0,1)
   3.380 -            });
   3.381 -
   3.382 -            if (!res)
   3.383 -            {
   3.384 -                MessageBox.Show("Create you fields first", "Field update error", MessageBoxButtons.OK, MessageBoxIcon.Error);
   3.385 -            }
   3.386 -
   3.387 -        }
   3.388 -
   3.389 -		private void buttonLayoutOneTextField_Click(object sender, EventArgs e)
   3.390 -		{
   3.391 -			//Set one column one line layout
   3.392 -			TableLayout layout = new TableLayout(1, 1);
   3.393 -			iClient.SetLayout(layout);
   3.394 -
   3.395 -			//Set our fields
   3.396 -			iClient.CreateFields(new DataField[]
   3.397 -            {
   3.398 -                new TextField(textBoxTop.Text, Alignment)
   3.399 -            });
   3.400 -		}
   3.401 -
   3.402 -        private void numericUpDownPriority_ValueChanged(object sender, EventArgs e)
   3.403 -        {
   3.404 -            iClient.SetPriority((uint)numericUpDownPriority.Value);
   3.405 -        }
   3.406 -    }
   3.407 -}
     4.1 --- a/Client/MainForm.resx	Tue Feb 02 19:50:33 2016 +0100
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,120 +0,0 @@
     4.4 -<?xml version="1.0" encoding="utf-8"?>
     4.5 -<root>
     4.6 -  <!-- 
     4.7 -    Microsoft ResX Schema 
     4.8 -    
     4.9 -    Version 2.0
    4.10 -    
    4.11 -    The primary goals of this format is to allow a simple XML format 
    4.12 -    that is mostly human readable. The generation and parsing of the 
    4.13 -    various data types are done through the TypeConverter classes 
    4.14 -    associated with the data types.
    4.15 -    
    4.16 -    Example:
    4.17 -    
    4.18 -    ... ado.net/XML headers & schema ...
    4.19 -    <resheader name="resmimetype">text/microsoft-resx</resheader>
    4.20 -    <resheader name="version">2.0</resheader>
    4.21 -    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    4.22 -    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    4.23 -    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    4.24 -    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    4.25 -    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
    4.26 -        <value>[base64 mime encoded serialized .NET Framework object]</value>
    4.27 -    </data>
    4.28 -    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    4.29 -        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
    4.30 -        <comment>This is a comment</comment>
    4.31 -    </data>
    4.32 -                
    4.33 -    There are any number of "resheader" rows that contain simple 
    4.34 -    name/value pairs.
    4.35 -    
    4.36 -    Each data row contains a name, and value. The row also contains a 
    4.37 -    type or mimetype. Type corresponds to a .NET class that support 
    4.38 -    text/value conversion through the TypeConverter architecture. 
    4.39 -    Classes that don't support this are serialized and stored with the 
    4.40 -    mimetype set.
    4.41 -    
    4.42 -    The mimetype is used for serialized objects, and tells the 
    4.43 -    ResXResourceReader how to depersist the object. This is currently not 
    4.44 -    extensible. For a given mimetype the value must be set accordingly:
    4.45 -    
    4.46 -    Note - application/x-microsoft.net.object.binary.base64 is the format 
    4.47 -    that the ResXResourceWriter will generate, however the reader can 
    4.48 -    read any of the formats listed below.
    4.49 -    
    4.50 -    mimetype: application/x-microsoft.net.object.binary.base64
    4.51 -    value   : The object must be serialized with 
    4.52 -            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
    4.53 -            : and then encoded with base64 encoding.
    4.54 -    
    4.55 -    mimetype: application/x-microsoft.net.object.soap.base64
    4.56 -    value   : The object must be serialized with 
    4.57 -            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
    4.58 -            : and then encoded with base64 encoding.
    4.59 -
    4.60 -    mimetype: application/x-microsoft.net.object.bytearray.base64
    4.61 -    value   : The object must be serialized into a byte array 
    4.62 -            : using a System.ComponentModel.TypeConverter
    4.63 -            : and then encoded with base64 encoding.
    4.64 -    -->
    4.65 -  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    4.66 -    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    4.67 -    <xsd:element name="root" msdata:IsDataSet="true">
    4.68 -      <xsd:complexType>
    4.69 -        <xsd:choice maxOccurs="unbounded">
    4.70 -          <xsd:element name="metadata">
    4.71 -            <xsd:complexType>
    4.72 -              <xsd:sequence>
    4.73 -                <xsd:element name="value" type="xsd:string" minOccurs="0" />
    4.74 -              </xsd:sequence>
    4.75 -              <xsd:attribute name="name" use="required" type="xsd:string" />
    4.76 -              <xsd:attribute name="type" type="xsd:string" />
    4.77 -              <xsd:attribute name="mimetype" type="xsd:string" />
    4.78 -              <xsd:attribute ref="xml:space" />
    4.79 -            </xsd:complexType>
    4.80 -          </xsd:element>
    4.81 -          <xsd:element name="assembly">
    4.82 -            <xsd:complexType>
    4.83 -              <xsd:attribute name="alias" type="xsd:string" />
    4.84 -              <xsd:attribute name="name" type="xsd:string" />
    4.85 -            </xsd:complexType>
    4.86 -          </xsd:element>
    4.87 -          <xsd:element name="data">
    4.88 -            <xsd:complexType>
    4.89 -              <xsd:sequence>
    4.90 -                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
    4.91 -                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
    4.92 -              </xsd:sequence>
    4.93 -              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
    4.94 -              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
    4.95 -              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
    4.96 -              <xsd:attribute ref="xml:space" />
    4.97 -            </xsd:complexType>
    4.98 -          </xsd:element>
    4.99 -          <xsd:element name="resheader">
   4.100 -            <xsd:complexType>
   4.101 -              <xsd:sequence>
   4.102 -                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
   4.103 -              </xsd:sequence>
   4.104 -              <xsd:attribute name="name" type="xsd:string" use="required" />
   4.105 -            </xsd:complexType>
   4.106 -          </xsd:element>
   4.107 -        </xsd:choice>
   4.108 -      </xsd:complexType>
   4.109 -    </xsd:element>
   4.110 -  </xsd:schema>
   4.111 -  <resheader name="resmimetype">
   4.112 -    <value>text/microsoft-resx</value>
   4.113 -  </resheader>
   4.114 -  <resheader name="version">
   4.115 -    <value>2.0</value>
   4.116 -  </resheader>
   4.117 -  <resheader name="reader">
   4.118 -    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   4.119 -  </resheader>
   4.120 -  <resheader name="writer">
   4.121 -    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   4.122 -  </resheader>
   4.123 -</root>
   4.124 \ No newline at end of file
     5.1 --- a/Client/Program.cs	Tue Feb 02 19:50:33 2016 +0100
     5.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.3 @@ -1,73 +0,0 @@
     5.4 -//
     5.5 -// Copyright (C) 2014-2015 Stéphane Lenclud.
     5.6 -//
     5.7 -// This file is part of SharpDisplayManager.
     5.8 -//
     5.9 -// SharpDisplayManager is free software: you can redistribute it and/or modify
    5.10 -// it under the terms of the GNU General Public License as published by
    5.11 -// the Free Software Foundation, either version 3 of the License, or
    5.12 -// (at your option) any later version.
    5.13 -//
    5.14 -// SharpDisplayManager is distributed in the hope that it will be useful,
    5.15 -// but WITHOUT ANY WARRANTY; without even the implied warranty of
    5.16 -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    5.17 -// GNU General Public License for more details.
    5.18 -//
    5.19 -// You should have received a copy of the GNU General Public License
    5.20 -// along with SharpDisplayManager.  If not, see <http://www.gnu.org/licenses/>.
    5.21 -//
    5.22 -
    5.23 -using System;
    5.24 -using System.Collections.Generic;
    5.25 -using System.Linq;
    5.26 -using System.Threading.Tasks;
    5.27 -using System.Windows.Forms;
    5.28 -using System.Drawing;
    5.29 -
    5.30 -namespace SharpDisplayClient
    5.31 -{
    5.32 -    static public class Program
    5.33 -    {
    5.34 -        /// <summary>
    5.35 -        /// The main entry point for the application.
    5.36 -        /// </summary>
    5.37 -        [STAThread]
    5.38 -        static public void Main()
    5.39 -        {
    5.40 -            //Set high priority to our process to avoid lags when rendering to our screen
    5.41 -            System.Diagnostics.Process.GetCurrentProcess().PriorityClass = System.Diagnostics.ProcessPriorityClass.AboveNormal;
    5.42 -
    5.43 -            Application.EnableVisualStyles();
    5.44 -            Application.SetCompatibleTextRenderingDefault(false);
    5.45 -			Application.Run(new MainForm());
    5.46 -        }
    5.47 -
    5.48 -		[STAThread]
    5.49 -		static public void MainWithParams(object aParams)
    5.50 -		{
    5.51 -			//Set high priority to our process to avoid lags when rendering to our screen
    5.52 -			System.Diagnostics.Process.GetCurrentProcess().PriorityClass = System.Diagnostics.ProcessPriorityClass.AboveNormal;
    5.53 -
    5.54 -			Application.EnableVisualStyles();
    5.55 -			Application.SetCompatibleTextRenderingDefault(false);
    5.56 -			MainForm mainForm = new MainForm();
    5.57 -			mainForm.Params = (StartParams)aParams;
    5.58 -			Application.Run(mainForm);
    5.59 -		}
    5.60 -
    5.61 -    }
    5.62 -
    5.63 -	public class StartParams
    5.64 -	{
    5.65 -		public StartParams(Point aLocation, string aTopText="", string aBottomText="")
    5.66 -		{
    5.67 -			TopText = aTopText;
    5.68 -			BottomText = aBottomText;
    5.69 -			Location = aLocation;
    5.70 -		}
    5.71 -
    5.72 -		public string TopText { get; set; }
    5.73 -		public string BottomText { get; set; }
    5.74 -		public Point Location { get; set; }
    5.75 -	}
    5.76 -}
     6.1 --- a/Client/Properties/AssemblyInfo.cs	Tue Feb 02 19:50:33 2016 +0100
     6.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.3 @@ -1,36 +0,0 @@
     6.4 -using System.Reflection;
     6.5 -using System.Runtime.CompilerServices;
     6.6 -using System.Runtime.InteropServices;
     6.7 -
     6.8 -// General Information about an assembly is controlled through the following 
     6.9 -// set of attributes. Change these attribute values to modify the information
    6.10 -// associated with an assembly.
    6.11 -[assembly: AssemblyTitle("SharpDisplayClient")]
    6.12 -[assembly: AssemblyDescription("")]
    6.13 -[assembly: AssemblyConfiguration("")]
    6.14 -[assembly: AssemblyCompany("")]
    6.15 -[assembly: AssemblyProduct("SharpDisplayClient")]
    6.16 -[assembly: AssemblyCopyright("Copyright ©  2014")]
    6.17 -[assembly: AssemblyTrademark("")]
    6.18 -[assembly: AssemblyCulture("")]
    6.19 -
    6.20 -// Setting ComVisible to false makes the types in this assembly not visible 
    6.21 -// to COM components.  If you need to access a type in this assembly from 
    6.22 -// COM, set the ComVisible attribute to true on that type.
    6.23 -[assembly: ComVisible(false)]
    6.24 -
    6.25 -// The following GUID is for the ID of the typelib if this project is exposed to COM
    6.26 -[assembly: Guid("36255ddc-eb97-4253-8696-3e360b5bc824")]
    6.27 -
    6.28 -// Version information for an assembly consists of the following four values:
    6.29 -//
    6.30 -//      Major Version
    6.31 -//      Minor Version 
    6.32 -//      Build Number
    6.33 -//      Revision
    6.34 -//
    6.35 -// You can specify all the values or you can default the Build and Revision Numbers 
    6.36 -// by using the '*' as shown below:
    6.37 -// [assembly: AssemblyVersion("1.0.*")]
    6.38 -[assembly: AssemblyVersion("1.0.0.0")]
    6.39 -[assembly: AssemblyFileVersion("1.0.0.0")]
     7.1 --- a/Client/Properties/Resources.Designer.cs	Tue Feb 02 19:50:33 2016 +0100
     7.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.3 @@ -1,63 +0,0 @@
     7.4 -//------------------------------------------------------------------------------
     7.5 -// <auto-generated>
     7.6 -//     This code was generated by a tool.
     7.7 -//     Runtime Version:4.0.30319.42000
     7.8 -//
     7.9 -//     Changes to this file may cause incorrect behavior and will be lost if
    7.10 -//     the code is regenerated.
    7.11 -// </auto-generated>
    7.12 -//------------------------------------------------------------------------------
    7.13 -
    7.14 -namespace SharpDisplayClient.Properties {
    7.15 -    using System;
    7.16 -    
    7.17 -    
    7.18 -    /// <summary>
    7.19 -    ///   A strongly-typed resource class, for looking up localized strings, etc.
    7.20 -    /// </summary>
    7.21 -    // This class was auto-generated by the StronglyTypedResourceBuilder
    7.22 -    // class via a tool like ResGen or Visual Studio.
    7.23 -    // To add or remove a member, edit your .ResX file then rerun ResGen
    7.24 -    // with the /str option, or rebuild your VS project.
    7.25 -    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
    7.26 -    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    7.27 -    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    7.28 -    internal class Resources {
    7.29 -        
    7.30 -        private static global::System.Resources.ResourceManager resourceMan;
    7.31 -        
    7.32 -        private static global::System.Globalization.CultureInfo resourceCulture;
    7.33 -        
    7.34 -        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
    7.35 -        internal Resources() {
    7.36 -        }
    7.37 -        
    7.38 -        /// <summary>
    7.39 -        ///   Returns the cached ResourceManager instance used by this class.
    7.40 -        /// </summary>
    7.41 -        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
    7.42 -        internal static global::System.Resources.ResourceManager ResourceManager {
    7.43 -            get {
    7.44 -                if (object.ReferenceEquals(resourceMan, null)) {
    7.45 -                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SharpDisplayClient.Properties.Resources", typeof(Resources).Assembly);
    7.46 -                    resourceMan = temp;
    7.47 -                }
    7.48 -                return resourceMan;
    7.49 -            }
    7.50 -        }
    7.51 -        
    7.52 -        /// <summary>
    7.53 -        ///   Overrides the current thread's CurrentUICulture property for all
    7.54 -        ///   resource lookups using this strongly typed resource class.
    7.55 -        /// </summary>
    7.56 -        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
    7.57 -        internal static global::System.Globalization.CultureInfo Culture {
    7.58 -            get {
    7.59 -                return resourceCulture;
    7.60 -            }
    7.61 -            set {
    7.62 -                resourceCulture = value;
    7.63 -            }
    7.64 -        }
    7.65 -    }
    7.66 -}
     8.1 --- a/Client/Properties/Resources.resx	Tue Feb 02 19:50:33 2016 +0100
     8.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.3 @@ -1,117 +0,0 @@
     8.4 -<?xml version="1.0" encoding="utf-8"?>
     8.5 -<root>
     8.6 -  <!-- 
     8.7 -    Microsoft ResX Schema 
     8.8 -    
     8.9 -    Version 2.0
    8.10 -    
    8.11 -    The primary goals of this format is to allow a simple XML format 
    8.12 -    that is mostly human readable. The generation and parsing of the 
    8.13 -    various data types are done through the TypeConverter classes 
    8.14 -    associated with the data types.
    8.15 -    
    8.16 -    Example:
    8.17 -    
    8.18 -    ... ado.net/XML headers & schema ...
    8.19 -    <resheader name="resmimetype">text/microsoft-resx</resheader>
    8.20 -    <resheader name="version">2.0</resheader>
    8.21 -    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    8.22 -    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    8.23 -    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    8.24 -    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    8.25 -    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
    8.26 -        <value>[base64 mime encoded serialized .NET Framework object]</value>
    8.27 -    </data>
    8.28 -    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    8.29 -        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
    8.30 -        <comment>This is a comment</comment>
    8.31 -    </data>
    8.32 -                
    8.33 -    There are any number of "resheader" rows that contain simple 
    8.34 -    name/value pairs.
    8.35 -    
    8.36 -    Each data row contains a name, and value. The row also contains a 
    8.37 -    type or mimetype. Type corresponds to a .NET class that support 
    8.38 -    text/value conversion through the TypeConverter architecture. 
    8.39 -    Classes that don't support this are serialized and stored with the 
    8.40 -    mimetype set.
    8.41 -    
    8.42 -    The mimetype is used for serialized objects, and tells the 
    8.43 -    ResXResourceReader how to depersist the object. This is currently not 
    8.44 -    extensible. For a given mimetype the value must be set accordingly:
    8.45 -    
    8.46 -    Note - application/x-microsoft.net.object.binary.base64 is the format 
    8.47 -    that the ResXResourceWriter will generate, however the reader can 
    8.48 -    read any of the formats listed below.
    8.49 -    
    8.50 -    mimetype: application/x-microsoft.net.object.binary.base64
    8.51 -    value   : The object must be serialized with 
    8.52 -            : System.Serialization.Formatters.Binary.BinaryFormatter
    8.53 -            : and then encoded with base64 encoding.
    8.54 -    
    8.55 -    mimetype: application/x-microsoft.net.object.soap.base64
    8.56 -    value   : The object must be serialized with 
    8.57 -            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
    8.58 -            : and then encoded with base64 encoding.
    8.59 -
    8.60 -    mimetype: application/x-microsoft.net.object.bytearray.base64
    8.61 -    value   : The object must be serialized into a byte array 
    8.62 -            : using a System.ComponentModel.TypeConverter
    8.63 -            : and then encoded with base64 encoding.
    8.64 -    -->
    8.65 -  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    8.66 -    <xsd:element name="root" msdata:IsDataSet="true">
    8.67 -      <xsd:complexType>
    8.68 -        <xsd:choice maxOccurs="unbounded">
    8.69 -          <xsd:element name="metadata">
    8.70 -            <xsd:complexType>
    8.71 -              <xsd:sequence>
    8.72 -                <xsd:element name="value" type="xsd:string" minOccurs="0" />
    8.73 -              </xsd:sequence>
    8.74 -              <xsd:attribute name="name" type="xsd:string" />
    8.75 -              <xsd:attribute name="type" type="xsd:string" />
    8.76 -              <xsd:attribute name="mimetype" type="xsd:string" />
    8.77 -            </xsd:complexType>
    8.78 -          </xsd:element>
    8.79 -          <xsd:element name="assembly">
    8.80 -            <xsd:complexType>
    8.81 -              <xsd:attribute name="alias" type="xsd:string" />
    8.82 -              <xsd:attribute name="name" type="xsd:string" />
    8.83 -            </xsd:complexType>
    8.84 -          </xsd:element>
    8.85 -          <xsd:element name="data">
    8.86 -            <xsd:complexType>
    8.87 -              <xsd:sequence>
    8.88 -                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
    8.89 -                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
    8.90 -              </xsd:sequence>
    8.91 -              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
    8.92 -              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
    8.93 -              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
    8.94 -            </xsd:complexType>
    8.95 -          </xsd:element>
    8.96 -          <xsd:element name="resheader">
    8.97 -            <xsd:complexType>
    8.98 -              <xsd:sequence>
    8.99 -                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
   8.100 -              </xsd:sequence>
   8.101 -              <xsd:attribute name="name" type="xsd:string" use="required" />
   8.102 -            </xsd:complexType>
   8.103 -          </xsd:element>
   8.104 -        </xsd:choice>
   8.105 -      </xsd:complexType>
   8.106 -    </xsd:element>
   8.107 -  </xsd:schema>
   8.108 -  <resheader name="resmimetype">
   8.109 -    <value>text/microsoft-resx</value>
   8.110 -  </resheader>
   8.111 -  <resheader name="version">
   8.112 -    <value>2.0</value>
   8.113 -  </resheader>
   8.114 -  <resheader name="reader">
   8.115 -    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   8.116 -  </resheader>
   8.117 -  <resheader name="writer">
   8.118 -    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   8.119 -  </resheader>
   8.120 -</root>
   8.121 \ No newline at end of file
     9.1 --- a/Client/Properties/Settings.Designer.cs	Tue Feb 02 19:50:33 2016 +0100
     9.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.3 @@ -1,26 +0,0 @@
     9.4 -//------------------------------------------------------------------------------
     9.5 -// <auto-generated>
     9.6 -//     This code was generated by a tool.
     9.7 -//     Runtime Version:4.0.30319.42000
     9.8 -//
     9.9 -//     Changes to this file may cause incorrect behavior and will be lost if
    9.10 -//     the code is regenerated.
    9.11 -// </auto-generated>
    9.12 -//------------------------------------------------------------------------------
    9.13 -
    9.14 -namespace SharpDisplayClient.Properties {
    9.15 -    
    9.16 -    
    9.17 -    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    9.18 -    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
    9.19 -    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
    9.20 -        
    9.21 -        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
    9.22 -        
    9.23 -        public static Settings Default {
    9.24 -            get {
    9.25 -                return defaultInstance;
    9.26 -            }
    9.27 -        }
    9.28 -    }
    9.29 -}
    10.1 --- a/Client/Properties/Settings.settings	Tue Feb 02 19:50:33 2016 +0100
    10.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.3 @@ -1,7 +0,0 @@
    10.4 -<?xml version='1.0' encoding='utf-8'?>
    10.5 -<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
    10.6 -  <Profiles>
    10.7 -    <Profile Name="(Default)" />
    10.8 -  </Profiles>
    10.9 -  <Settings />
   10.10 -</SettingsFile>
    11.1 --- a/Client/SharpDisplayClient.csproj	Tue Feb 02 19:50:33 2016 +0100
    11.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.3 @@ -1,164 +0,0 @@
    11.4 -<?xml version="1.0" encoding="utf-8"?>
    11.5 -<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    11.6 -  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
    11.7 -  <PropertyGroup>
    11.8 -    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    11.9 -    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
   11.10 -    <ProjectGuid>{7EE64074-8CDB-4448-B40C-81B75D6B31CD}</ProjectGuid>
   11.11 -    <OutputType>WinExe</OutputType>
   11.12 -    <AppDesignerFolder>Properties</AppDesignerFolder>
   11.13 -    <RootNamespace>SharpDisplayClient</RootNamespace>
   11.14 -    <AssemblyName>SharpDisplayClient</AssemblyName>
   11.15 -    <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
   11.16 -    <FileAlignment>512</FileAlignment>
   11.17 -    <TargetFrameworkProfile />
   11.18 -    <PublishUrl>publish\</PublishUrl>
   11.19 -    <Install>true</Install>
   11.20 -    <InstallFrom>Disk</InstallFrom>
   11.21 -    <UpdateEnabled>false</UpdateEnabled>
   11.22 -    <UpdateMode>Foreground</UpdateMode>
   11.23 -    <UpdateInterval>7</UpdateInterval>
   11.24 -    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
   11.25 -    <UpdatePeriodically>false</UpdatePeriodically>
   11.26 -    <UpdateRequired>false</UpdateRequired>
   11.27 -    <MapFileExtensions>true</MapFileExtensions>
   11.28 -    <ApplicationRevision>0</ApplicationRevision>
   11.29 -    <ApplicationVersion>0.1.0.%2a</ApplicationVersion>
   11.30 -    <IsWebBootstrapper>false</IsWebBootstrapper>
   11.31 -    <UseApplicationTrust>false</UseApplicationTrust>
   11.32 -    <BootstrapperEnabled>true</BootstrapperEnabled>
   11.33 -  </PropertyGroup>
   11.34 -  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
   11.35 -    <PlatformTarget>AnyCPU</PlatformTarget>
   11.36 -    <DebugSymbols>true</DebugSymbols>
   11.37 -    <DebugType>full</DebugType>
   11.38 -    <Optimize>false</Optimize>
   11.39 -    <OutputPath>bin\Debug\</OutputPath>
   11.40 -    <DefineConstants>DEBUG;TRACE</DefineConstants>
   11.41 -    <ErrorReport>prompt</ErrorReport>
   11.42 -    <WarningLevel>4</WarningLevel>
   11.43 -    <Prefer32Bit>false</Prefer32Bit>
   11.44 -  </PropertyGroup>
   11.45 -  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
   11.46 -    <PlatformTarget>AnyCPU</PlatformTarget>
   11.47 -    <DebugType>pdbonly</DebugType>
   11.48 -    <Optimize>true</Optimize>
   11.49 -    <OutputPath>bin\Release\</OutputPath>
   11.50 -    <DefineConstants>TRACE</DefineConstants>
   11.51 -    <ErrorReport>prompt</ErrorReport>
   11.52 -    <WarningLevel>4</WarningLevel>
   11.53 -    <Prefer32Bit>false</Prefer32Bit>
   11.54 -  </PropertyGroup>
   11.55 -  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
   11.56 -    <DebugSymbols>true</DebugSymbols>
   11.57 -    <OutputPath>..\bin\x86\Debug\</OutputPath>
   11.58 -    <BaseIntermediateOutputPath>..\bin\x86\Debug\obj</BaseIntermediateOutputPath>
   11.59 -    <DefineConstants>DEBUG;TRACE</DefineConstants>
   11.60 -    <DebugType>full</DebugType>
   11.61 -    <PlatformTarget>x86</PlatformTarget>
   11.62 -    <ErrorReport>prompt</ErrorReport>
   11.63 -    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
   11.64 -    <Prefer32Bit>false</Prefer32Bit>
   11.65 -  </PropertyGroup>
   11.66 -  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
   11.67 -    <OutputPath>..\bin\x86\Release\</OutputPath>
   11.68 -    <BaseIntermediateOutputPath>..\bin\x86\Release\obj</BaseIntermediateOutputPath>
   11.69 -    <DefineConstants>TRACE</DefineConstants>
   11.70 -    <Optimize>true</Optimize>
   11.71 -    <DebugType>pdbonly</DebugType>
   11.72 -    <PlatformTarget>x86</PlatformTarget>
   11.73 -    <ErrorReport>prompt</ErrorReport>
   11.74 -    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
   11.75 -    <Prefer32Bit>false</Prefer32Bit>
   11.76 -  </PropertyGroup>
   11.77 -  <PropertyGroup>
   11.78 -    <SignManifests>true</SignManifests>
   11.79 -  </PropertyGroup>
   11.80 -  <PropertyGroup>
   11.81 -    <ManifestCertificateThumbprint>70A149AB9F89E507D9411D109553BE22455895D6</ManifestCertificateThumbprint>
   11.82 -  </PropertyGroup>
   11.83 -  <PropertyGroup>
   11.84 -    <ManifestKeyFile>SharpDisplayManager_TemporaryKey.pfx</ManifestKeyFile>
   11.85 -  </PropertyGroup>
   11.86 -  <PropertyGroup>
   11.87 -    <NoWin32Manifest>true</NoWin32Manifest>
   11.88 -  </PropertyGroup>
   11.89 -  <ItemGroup>
   11.90 -    <Reference Include="SharpLibDisplay, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
   11.91 -      <HintPath>..\packages\SharpLibDisplay.0.2.5\lib\net40\SharpLibDisplay.dll</HintPath>
   11.92 -      <Private>True</Private>
   11.93 -    </Reference>
   11.94 -    <Reference Include="System" />
   11.95 -    <Reference Include="System.Core" />
   11.96 -    <Reference Include="System.ServiceModel" />
   11.97 -    <Reference Include="System.Xml.Linq" />
   11.98 -    <Reference Include="System.Data.DataSetExtensions" />
   11.99 -    <Reference Include="Microsoft.CSharp" />
  11.100 -    <Reference Include="System.Data" />
  11.101 -    <Reference Include="System.Deployment" />
  11.102 -    <Reference Include="System.Drawing" />
  11.103 -    <Reference Include="System.Windows.Forms" />
  11.104 -    <Reference Include="System.Xml" />
  11.105 -  </ItemGroup>
  11.106 -  <ItemGroup>
  11.107 -    <Compile Include="MainForm.cs">
  11.108 -      <SubType>Form</SubType>
  11.109 -    </Compile>
  11.110 -    <Compile Include="MainForm.Designer.cs">
  11.111 -      <DependentUpon>MainForm.cs</DependentUpon>
  11.112 -    </Compile>
  11.113 -    <Compile Include="Program.cs" />
  11.114 -    <Compile Include="Properties\AssemblyInfo.cs" />
  11.115 -    <EmbeddedResource Include="MainForm.resx">
  11.116 -      <DependentUpon>MainForm.cs</DependentUpon>
  11.117 -    </EmbeddedResource>
  11.118 -    <EmbeddedResource Include="Properties\Resources.resx">
  11.119 -      <Generator>ResXFileCodeGenerator</Generator>
  11.120 -      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
  11.121 -      <SubType>Designer</SubType>
  11.122 -    </EmbeddedResource>
  11.123 -    <Compile Include="Properties\Resources.Designer.cs">
  11.124 -      <AutoGen>True</AutoGen>
  11.125 -      <DependentUpon>Resources.resx</DependentUpon>
  11.126 -      <DesignTime>True</DesignTime>
  11.127 -    </Compile>
  11.128 -    <None Include="packages.config" />
  11.129 -    <None Include="Properties\Settings.settings">
  11.130 -      <Generator>SettingsSingleFileGenerator</Generator>
  11.131 -      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
  11.132 -    </None>
  11.133 -    <Compile Include="Properties\Settings.Designer.cs">
  11.134 -      <AutoGen>True</AutoGen>
  11.135 -      <DependentUpon>Settings.settings</DependentUpon>
  11.136 -      <DesignTimeSharedInput>True</DesignTimeSharedInput>
  11.137 -    </Compile>
  11.138 -  </ItemGroup>
  11.139 -  <ItemGroup>
  11.140 -    <None Include="App.config" />
  11.141 -  </ItemGroup>
  11.142 -  <ItemGroup>
  11.143 -    <BootstrapperPackage Include=".NETFramework,Version=v4.5">
  11.144 -      <Visible>False</Visible>
  11.145 -      <ProductName>Microsoft .NET Framework 4.5 %28x86 and x64%29</ProductName>
  11.146 -      <Install>true</Install>
  11.147 -    </BootstrapperPackage>
  11.148 -    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
  11.149 -      <Visible>False</Visible>
  11.150 -      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
  11.151 -      <Install>false</Install>
  11.152 -    </BootstrapperPackage>
  11.153 -    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
  11.154 -      <Visible>False</Visible>
  11.155 -      <ProductName>.NET Framework 3.5 SP1</ProductName>
  11.156 -      <Install>false</Install>
  11.157 -    </BootstrapperPackage>
  11.158 -  </ItemGroup>
  11.159 -  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  11.160 -  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
  11.161 -       Other similar extension points exist, see Microsoft.Common.targets.
  11.162 -  <Target Name="BeforeBuild">
  11.163 -  </Target>
  11.164 -  <Target Name="AfterBuild">
  11.165 -  </Target>
  11.166 -  -->
  11.167 -</Project>
  11.168 \ No newline at end of file
    12.1 --- a/Client/packages.config	Tue Feb 02 19:50:33 2016 +0100
    12.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.3 @@ -1,4 +0,0 @@
    12.4 -<?xml version="1.0" encoding="utf-8"?>
    12.5 -<packages>
    12.6 -  <package id="SharpLibDisplay" version="0.2.5" targetFramework="net46" />
    12.7 -</packages>
    12.8 \ No newline at end of file
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/Clients/Test/App.config	Wed Feb 03 13:02:48 2016 +0100
    13.3 @@ -0,0 +1,6 @@
    13.4 +<?xml version="1.0"?>
    13.5 +<configuration>
    13.6 +    <startup> 
    13.7 +        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
    13.8 +    </startup>
    13.9 +</configuration>
    14.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.2 +++ b/Clients/Test/MainForm.Designer.cs	Wed Feb 03 13:02:48 2016 +0100
    14.3 @@ -0,0 +1,254 @@
    14.4 +namespace SharpDisplayClient
    14.5 +{
    14.6 +    partial class MainForm
    14.7 +    {
    14.8 +        /// <summary>
    14.9 +        /// Required designer variable.
   14.10 +        /// </summary>
   14.11 +        private System.ComponentModel.IContainer components = null;
   14.12 +
   14.13 +        /// <summary>
   14.14 +        /// Clean up any resources being used.
   14.15 +        /// </summary>
   14.16 +        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
   14.17 +        protected override void Dispose(bool disposing)
   14.18 +        {
   14.19 +            if (disposing && (components != null))
   14.20 +            {
   14.21 +                components.Dispose();
   14.22 +            }
   14.23 +            base.Dispose(disposing);
   14.24 +        }
   14.25 +
   14.26 +        #region Windows Form Designer generated code
   14.27 +
   14.28 +        /// <summary>
   14.29 +        /// Required method for Designer support - do not modify
   14.30 +        /// the contents of this method with the code editor.
   14.31 +        /// </summary>
   14.32 +        private void InitializeComponent()
   14.33 +        {
   14.34 +            this.buttonSetText = new System.Windows.Forms.Button();
   14.35 +            this.textBoxTop = new System.Windows.Forms.TextBox();
   14.36 +            this.textBoxBottom = new System.Windows.Forms.TextBox();
   14.37 +            this.buttonAlignRight = new System.Windows.Forms.Button();
   14.38 +            this.buttonAlignCenter = new System.Windows.Forms.Button();
   14.39 +            this.buttonAlignLeft = new System.Windows.Forms.Button();
   14.40 +            this.buttonSetTopText = new System.Windows.Forms.Button();
   14.41 +            this.buttonLayoutUpdate = new System.Windows.Forms.Button();
   14.42 +            this.buttonSetBitmap = new System.Windows.Forms.Button();
   14.43 +            this.buttonBitmapLayout = new System.Windows.Forms.Button();
   14.44 +            this.buttonIndicatorsLayout = new System.Windows.Forms.Button();
   14.45 +            this.buttonUpdateTexts = new System.Windows.Forms.Button();
   14.46 +            this.buttonLayoutOneTextField = new System.Windows.Forms.Button();
   14.47 +            this.numericUpDownPriority = new System.Windows.Forms.NumericUpDown();
   14.48 +            this.labelPriority = new System.Windows.Forms.Label();
   14.49 +            ((System.ComponentModel.ISupportInitialize)(this.numericUpDownPriority)).BeginInit();
   14.50 +            this.SuspendLayout();
   14.51 +            // 
   14.52 +            // buttonSetText
   14.53 +            // 
   14.54 +            this.buttonSetText.Location = new System.Drawing.Point(13, 132);
   14.55 +            this.buttonSetText.Name = "buttonSetText";
   14.56 +            this.buttonSetText.Size = new System.Drawing.Size(75, 23);
   14.57 +            this.buttonSetText.TabIndex = 0;
   14.58 +            this.buttonSetText.Text = "Set Text";
   14.59 +            this.buttonSetText.UseVisualStyleBackColor = true;
   14.60 +            this.buttonSetText.Click += new System.EventHandler(this.buttonSetText_Click);
   14.61 +            // 
   14.62 +            // textBoxTop
   14.63 +            // 
   14.64 +            this.textBoxTop.Location = new System.Drawing.Point(12, 31);
   14.65 +            this.textBoxTop.Name = "textBoxTop";
   14.66 +            this.textBoxTop.Size = new System.Drawing.Size(419, 20);
   14.67 +            this.textBoxTop.TabIndex = 1;
   14.68 +            // 
   14.69 +            // textBoxBottom
   14.70 +            // 
   14.71 +            this.textBoxBottom.Location = new System.Drawing.Point(12, 57);
   14.72 +            this.textBoxBottom.Name = "textBoxBottom";
   14.73 +            this.textBoxBottom.Size = new System.Drawing.Size(419, 20);
   14.74 +            this.textBoxBottom.TabIndex = 2;
   14.75 +            // 
   14.76 +            // buttonAlignRight
   14.77 +            // 
   14.78 +            this.buttonAlignRight.Location = new System.Drawing.Point(176, 160);
   14.79 +            this.buttonAlignRight.Name = "buttonAlignRight";
   14.80 +            this.buttonAlignRight.Size = new System.Drawing.Size(75, 23);
   14.81 +            this.buttonAlignRight.TabIndex = 23;
   14.82 +            this.buttonAlignRight.Text = "Align Right";
   14.83 +            this.buttonAlignRight.UseVisualStyleBackColor = true;
   14.84 +            this.buttonAlignRight.Click += new System.EventHandler(this.buttonAlignRight_Click);
   14.85 +            // 
   14.86 +            // buttonAlignCenter
   14.87 +            // 
   14.88 +            this.buttonAlignCenter.Location = new System.Drawing.Point(94, 161);
   14.89 +            this.buttonAlignCenter.Name = "buttonAlignCenter";
   14.90 +            this.buttonAlignCenter.Size = new System.Drawing.Size(75, 23);
   14.91 +            this.buttonAlignCenter.TabIndex = 22;
   14.92 +            this.buttonAlignCenter.Text = "Align Center";
   14.93 +            this.buttonAlignCenter.UseVisualStyleBackColor = true;
   14.94 +            this.buttonAlignCenter.Click += new System.EventHandler(this.buttonAlignCenter_Click);
   14.95 +            // 
   14.96 +            // buttonAlignLeft
   14.97 +            // 
   14.98 +            this.buttonAlignLeft.Location = new System.Drawing.Point(12, 161);
   14.99 +            this.buttonAlignLeft.Name = "buttonAlignLeft";
  14.100 +            this.buttonAlignLeft.Size = new System.Drawing.Size(75, 23);
  14.101 +            this.buttonAlignLeft.TabIndex = 21;
  14.102 +            this.buttonAlignLeft.Text = "Align Left";
  14.103 +            this.buttonAlignLeft.UseVisualStyleBackColor = true;
  14.104 +            this.buttonAlignLeft.Click += new System.EventHandler(this.buttonAlignLeft_Click);
  14.105 +            // 
  14.106 +            // buttonSetTopText
  14.107 +            // 
  14.108 +            this.buttonSetTopText.Location = new System.Drawing.Point(94, 132);
  14.109 +            this.buttonSetTopText.Name = "buttonSetTopText";
  14.110 +            this.buttonSetTopText.Size = new System.Drawing.Size(75, 23);
  14.111 +            this.buttonSetTopText.TabIndex = 24;
  14.112 +            this.buttonSetTopText.Text = "Set Top Text";
  14.113 +            this.buttonSetTopText.UseVisualStyleBackColor = true;
  14.114 +            this.buttonSetTopText.Click += new System.EventHandler(this.buttonSetTopText_Click);
  14.115 +            // 
  14.116 +            // buttonLayoutUpdate
  14.117 +            // 
  14.118 +            this.buttonLayoutUpdate.Location = new System.Drawing.Point(176, 131);
  14.119 +            this.buttonLayoutUpdate.Name = "buttonLayoutUpdate";
  14.120 +            this.buttonLayoutUpdate.Size = new System.Drawing.Size(156, 23);
  14.121 +            this.buttonLayoutUpdate.TabIndex = 25;
  14.122 +            this.buttonLayoutUpdate.Text = "Layout 2x2 and Recording";
  14.123 +            this.buttonLayoutUpdate.UseVisualStyleBackColor = true;
  14.124 +            this.buttonLayoutUpdate.Click += new System.EventHandler(this.buttonLayoutUpdate_Click);
  14.125 +            // 
  14.126 +            // buttonSetBitmap
  14.127 +            // 
  14.128 +            this.buttonSetBitmap.Location = new System.Drawing.Point(12, 190);
  14.129 +            this.buttonSetBitmap.Name = "buttonSetBitmap";
  14.130 +            this.buttonSetBitmap.Size = new System.Drawing.Size(75, 23);
  14.131 +            this.buttonSetBitmap.TabIndex = 26;
  14.132 +            this.buttonSetBitmap.Text = "Set Bitmap";
  14.133 +            this.buttonSetBitmap.UseVisualStyleBackColor = true;
  14.134 +            this.buttonSetBitmap.Click += new System.EventHandler(this.buttonSetBitmap_Click);
  14.135 +            // 
  14.136 +            // buttonBitmapLayout
  14.137 +            // 
  14.138 +            this.buttonBitmapLayout.Location = new System.Drawing.Point(176, 189);
  14.139 +            this.buttonBitmapLayout.Name = "buttonBitmapLayout";
  14.140 +            this.buttonBitmapLayout.Size = new System.Drawing.Size(75, 35);
  14.141 +            this.buttonBitmapLayout.TabIndex = 27;
  14.142 +            this.buttonBitmapLayout.Text = "Bitmap Layout";
  14.143 +            this.buttonBitmapLayout.UseVisualStyleBackColor = true;
  14.144 +            this.buttonBitmapLayout.Click += new System.EventHandler(this.buttonBitmapLayout_Click);
  14.145 +            // 
  14.146 +            // buttonIndicatorsLayout
  14.147 +            // 
  14.148 +            this.buttonIndicatorsLayout.Location = new System.Drawing.Point(94, 189);
  14.149 +            this.buttonIndicatorsLayout.Name = "buttonIndicatorsLayout";
  14.150 +            this.buttonIndicatorsLayout.Size = new System.Drawing.Size(75, 35);
  14.151 +            this.buttonIndicatorsLayout.TabIndex = 28;
  14.152 +            this.buttonIndicatorsLayout.Text = "Indicators Layout ";
  14.153 +            this.buttonIndicatorsLayout.UseVisualStyleBackColor = true;
  14.154 +            this.buttonIndicatorsLayout.Click += new System.EventHandler(this.buttonIndicatorsLayout_Click);
  14.155 +            // 
  14.156 +            // buttonUpdateTexts
  14.157 +            // 
  14.158 +            this.buttonUpdateTexts.Location = new System.Drawing.Point(257, 189);
  14.159 +            this.buttonUpdateTexts.Name = "buttonUpdateTexts";
  14.160 +            this.buttonUpdateTexts.Size = new System.Drawing.Size(75, 35);
  14.161 +            this.buttonUpdateTexts.TabIndex = 29;
  14.162 +            this.buttonUpdateTexts.Text = "Update Texts";
  14.163 +            this.buttonUpdateTexts.UseVisualStyleBackColor = true;
  14.164 +            this.buttonUpdateTexts.Click += new System.EventHandler(this.buttonUpdateTexts_Click);
  14.165 +            // 
  14.166 +            // buttonLayoutOneTextField
  14.167 +            // 
  14.168 +            this.buttonLayoutOneTextField.Location = new System.Drawing.Point(257, 160);
  14.169 +            this.buttonLayoutOneTextField.Name = "buttonLayoutOneTextField";
  14.170 +            this.buttonLayoutOneTextField.Size = new System.Drawing.Size(75, 23);
  14.171 +            this.buttonLayoutOneTextField.TabIndex = 30;
  14.172 +            this.buttonLayoutOneTextField.Text = "Layout 1x1";
  14.173 +            this.buttonLayoutOneTextField.UseVisualStyleBackColor = true;
  14.174 +            this.buttonLayoutOneTextField.Click += new System.EventHandler(this.buttonLayoutOneTextField_Click);
  14.175 +            // 
  14.176 +            // numericUpDownPriority
  14.177 +            // 
  14.178 +            this.numericUpDownPriority.Increment = new decimal(new int[] {
  14.179 +            10,
  14.180 +            0,
  14.181 +            0,
  14.182 +            0});
  14.183 +            this.numericUpDownPriority.Location = new System.Drawing.Point(57, 83);
  14.184 +            this.numericUpDownPriority.Maximum = new decimal(new int[] {
  14.185 +            1000,
  14.186 +            0,
  14.187 +            0,
  14.188 +            0});
  14.189 +            this.numericUpDownPriority.Name = "numericUpDownPriority";
  14.190 +            this.numericUpDownPriority.Size = new System.Drawing.Size(60, 20);
  14.191 +            this.numericUpDownPriority.TabIndex = 31;
  14.192 +            this.numericUpDownPriority.Value = new decimal(new int[] {
  14.193 +            500,
  14.194 +            0,
  14.195 +            0,
  14.196 +            0});
  14.197 +            this.numericUpDownPriority.ValueChanged += new System.EventHandler(this.numericUpDownPriority_ValueChanged);
  14.198 +            // 
  14.199 +            // labelPriority
  14.200 +            // 
  14.201 +            this.labelPriority.AutoSize = true;
  14.202 +            this.labelPriority.Location = new System.Drawing.Point(12, 85);
  14.203 +            this.labelPriority.Name = "labelPriority";
  14.204 +            this.labelPriority.Size = new System.Drawing.Size(41, 13);
  14.205 +            this.labelPriority.TabIndex = 32;
  14.206 +            this.labelPriority.Text = "Priority:";
  14.207 +            // 
  14.208 +            // MainForm
  14.209 +            // 
  14.210 +            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
  14.211 +            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
  14.212 +            this.ClientSize = new System.Drawing.Size(443, 252);
  14.213 +            this.Controls.Add(this.labelPriority);
  14.214 +            this.Controls.Add(this.numericUpDownPriority);
  14.215 +            this.Controls.Add(this.buttonLayoutOneTextField);
  14.216 +            this.Controls.Add(this.buttonUpdateTexts);
  14.217 +            this.Controls.Add(this.buttonIndicatorsLayout);
  14.218 +            this.Controls.Add(this.buttonBitmapLayout);
  14.219 +            this.Controls.Add(this.buttonSetBitmap);
  14.220 +            this.Controls.Add(this.buttonLayoutUpdate);
  14.221 +            this.Controls.Add(this.buttonSetTopText);
  14.222 +            this.Controls.Add(this.buttonAlignRight);
  14.223 +            this.Controls.Add(this.buttonAlignCenter);
  14.224 +            this.Controls.Add(this.buttonAlignLeft);
  14.225 +            this.Controls.Add(this.textBoxBottom);
  14.226 +            this.Controls.Add(this.textBoxTop);
  14.227 +            this.Controls.Add(this.buttonSetText);
  14.228 +            this.Name = "MainForm";
  14.229 +            this.Text = "Client";
  14.230 +            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
  14.231 +            this.Load += new System.EventHandler(this.MainForm_Load);
  14.232 +            ((System.ComponentModel.ISupportInitialize)(this.numericUpDownPriority)).EndInit();
  14.233 +            this.ResumeLayout(false);
  14.234 +            this.PerformLayout();
  14.235 +
  14.236 +        }
  14.237 +
  14.238 +        #endregion
  14.239 +
  14.240 +        private System.Windows.Forms.Button buttonSetText;
  14.241 +        private System.Windows.Forms.TextBox textBoxTop;
  14.242 +        private System.Windows.Forms.TextBox textBoxBottom;
  14.243 +        private System.Windows.Forms.Button buttonAlignRight;
  14.244 +        private System.Windows.Forms.Button buttonAlignCenter;
  14.245 +        private System.Windows.Forms.Button buttonAlignLeft;
  14.246 +        private System.Windows.Forms.Button buttonSetTopText;
  14.247 +        private System.Windows.Forms.Button buttonLayoutUpdate;
  14.248 +        private System.Windows.Forms.Button buttonSetBitmap;
  14.249 +        private System.Windows.Forms.Button buttonBitmapLayout;
  14.250 +        private System.Windows.Forms.Button buttonIndicatorsLayout;
  14.251 +        private System.Windows.Forms.Button buttonUpdateTexts;
  14.252 +		private System.Windows.Forms.Button buttonLayoutOneTextField;
  14.253 +        private System.Windows.Forms.NumericUpDown numericUpDownPriority;
  14.254 +        private System.Windows.Forms.Label labelPriority;
  14.255 +    }
  14.256 +}
  14.257 +
    15.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.2 +++ b/Clients/Test/MainForm.cs	Wed Feb 03 13:02:48 2016 +0100
    15.3 @@ -0,0 +1,404 @@
    15.4 +//
    15.5 +// Copyright (C) 2014-2015 Stéphane Lenclud.
    15.6 +//
    15.7 +// This file is part of SharpDisplayManager.
    15.8 +//
    15.9 +// SharpDisplayManager is free software: you can redistribute it and/or modify
   15.10 +// it under the terms of the GNU General Public License as published by
   15.11 +// the Free Software Foundation, either version 3 of the License, or
   15.12 +// (at your option) any later version.
   15.13 +//
   15.14 +// SharpDisplayManager is distributed in the hope that it will be useful,
   15.15 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
   15.16 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   15.17 +// GNU General Public License for more details.
   15.18 +//
   15.19 +// You should have received a copy of the GNU General Public License
   15.20 +// along with SharpDisplayManager.  If not, see <http://www.gnu.org/licenses/>.
   15.21 +//
   15.22 +
   15.23 +using System;
   15.24 +using System.Collections.Generic;
   15.25 +using System.ComponentModel;
   15.26 +using System.Data;
   15.27 +using System.Drawing;
   15.28 +using System.Linq;
   15.29 +using System.Text;
   15.30 +using System.Threading.Tasks;
   15.31 +using System.Windows.Forms;
   15.32 +using System.ServiceModel;
   15.33 +using System.ServiceModel.Channels;
   15.34 +using System.Diagnostics;
   15.35 +using SharpLib.Display;
   15.36 +
   15.37 +
   15.38 +namespace SharpDisplayClient
   15.39 +{
   15.40 +    public partial class MainForm : Form
   15.41 +    {
   15.42 +		public StartParams Params { get; set; }
   15.43 +
   15.44 +		//
   15.45 +        Client iClient;
   15.46 +		//
   15.47 +        ContentAlignment Alignment;
   15.48 +        TextField iTextFieldTop;
   15.49 +
   15.50 +		
   15.51 +		/// <summary>
   15.52 +		/// Constructor
   15.53 +		/// </summary>
   15.54 +        public MainForm()
   15.55 +        {
   15.56 +            InitializeComponent();
   15.57 +            Alignment = ContentAlignment.MiddleLeft;
   15.58 +            iTextFieldTop = new TextField();
   15.59 +        }
   15.60 +
   15.61 +        public void OnCloseOrder()
   15.62 +        {
   15.63 +            CloseThreadSafe();
   15.64 +        }
   15.65 +
   15.66 +        /// <summary>
   15.67 +        /// 
   15.68 +        /// </summary>
   15.69 +        /// <param name="sender"></param>
   15.70 +        /// <param name="e"></param>
   15.71 +        private void MainForm_Load(object sender, EventArgs e)
   15.72 +        {
   15.73 +            iClient = new Client();
   15.74 +            iClient.CloseOrderEvent += OnCloseOrder;
   15.75 +            iClient.Open();
   15.76 +
   15.77 +            //Connect using unique name
   15.78 +            //string name = DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt");
   15.79 +            string name = "Client-" + (iClient.ClientCount() - 1);
   15.80 +            iClient.SetName(name);
   15.81 +            //Text = Text + ": " + name;
   15.82 +            Text = "[[" + name + "]]  " + iClient.SessionId;
   15.83 +
   15.84 +            //
   15.85 +            textBoxTop.Text = iClient.Name;
   15.86 +            textBoxBottom.Text = iClient.SessionId;
   15.87 +
   15.88 +			if (Params != null)
   15.89 +			{
   15.90 +				//Parameters where specified use them
   15.91 +				if (Params.TopText != "")
   15.92 +				{
   15.93 +					textBoxTop.Text = Params.TopText;
   15.94 +				}
   15.95 +
   15.96 +				if (Params.BottomText != "")
   15.97 +				{
   15.98 +					textBoxBottom.Text = Params.BottomText;
   15.99 +				}
  15.100 +
  15.101 +				Location = Params.Location;
  15.102 +				//
  15.103 +				SetBasicLayoutAndText();
  15.104 +			}
  15.105 +
  15.106 +        }
  15.107 +
  15.108 +
  15.109 +
  15.110 +        public delegate void CloseConnectionDelegate();
  15.111 +        public delegate void CloseDelegate();
  15.112 +
  15.113 +        /// <summary>
  15.114 +        ///
  15.115 +        /// </summary>
  15.116 +        public void CloseConnectionThreadSafe()
  15.117 +        {
  15.118 +            if (this.InvokeRequired)
  15.119 +            {
  15.120 +                //Not in the proper thread, invoke ourselves
  15.121 +                CloseConnectionDelegate d = new CloseConnectionDelegate(CloseConnectionThreadSafe);
  15.122 +                this.Invoke(d, new object[] { });
  15.123 +            }
  15.124 +            else
  15.125 +            {
  15.126 +                //We are in the proper thread
  15.127 +                if (IsClientReady())
  15.128 +                {
  15.129 +                    string sessionId = iClient.SessionId;
  15.130 +                    Trace.TraceInformation("Closing client: " + sessionId);
  15.131 +                    iClient.Close();
  15.132 +                    Trace.TraceInformation("Closed client: " + sessionId);
  15.133 +                }
  15.134 +
  15.135 +                iClient = null;
  15.136 +            }
  15.137 +        }
  15.138 +
  15.139 +        /// <summary>
  15.140 +        ///
  15.141 +        /// </summary>
  15.142 +        public void CloseThreadSafe()
  15.143 +        {
  15.144 +            if (this.InvokeRequired)
  15.145 +            {
  15.146 +                //Not in the proper thread, invoke ourselves
  15.147 +                CloseDelegate d = new CloseDelegate(CloseThreadSafe);
  15.148 +                this.Invoke(d, new object[] { });
  15.149 +            }
  15.150 +            else
  15.151 +            {
  15.152 +                //We are in the proper thread
  15.153 +                Close();
  15.154 +            }
  15.155 +        }
  15.156 +
  15.157 +
  15.158 +        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
  15.159 +        {
  15.160 +            CloseConnectionThreadSafe();
  15.161 +        }
  15.162 +
  15.163 +        public bool IsClientReady()
  15.164 +        {
  15.165 +            return (iClient != null && iClient.IsReady());
  15.166 +        }
  15.167 +
  15.168 +        private void buttonAlignLeft_Click(object sender, EventArgs e)
  15.169 +        {
  15.170 +            Alignment = ContentAlignment.MiddleLeft;
  15.171 +            textBoxTop.TextAlign = HorizontalAlignment.Left;
  15.172 +            textBoxBottom.TextAlign = HorizontalAlignment.Left;
  15.173 +        }
  15.174 +
  15.175 +        private void buttonAlignCenter_Click(object sender, EventArgs e)
  15.176 +        {
  15.177 +            Alignment = ContentAlignment.MiddleCenter;
  15.178 +            textBoxTop.TextAlign = HorizontalAlignment.Center;
  15.179 +            textBoxBottom.TextAlign = HorizontalAlignment.Center;
  15.180 +        }
  15.181 +
  15.182 +        private void buttonAlignRight_Click(object sender, EventArgs e)
  15.183 +        {
  15.184 +            Alignment = ContentAlignment.MiddleRight;
  15.185 +            textBoxTop.TextAlign = HorizontalAlignment.Right;
  15.186 +            textBoxBottom.TextAlign = HorizontalAlignment.Right;
  15.187 +        }
  15.188 +
  15.189 +        private void buttonSetTopText_Click(object sender, EventArgs e)
  15.190 +        {
  15.191 +            //TextField top = new TextField(0, textBoxTop.Text, ContentAlignment.MiddleLeft);
  15.192 +            iTextFieldTop.Text = textBoxTop.Text;
  15.193 +            iTextFieldTop.Alignment = Alignment;
  15.194 +            bool res = iClient.SetField(iTextFieldTop);
  15.195 +
  15.196 +            if (!res)
  15.197 +            {
  15.198 +                MessageBox.Show("Create you fields first", "Field update error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  15.199 +            }
  15.200 +
  15.201 +
  15.202 +        }
  15.203 +
  15.204 +        private void buttonSetText_Click(object sender, EventArgs e)
  15.205 +        {
  15.206 +			SetBasicLayoutAndText();
  15.207 +        }
  15.208 +
  15.209 +		void SetBasicLayoutAndText()
  15.210 +		{
  15.211 +			//Set one column two lines layout
  15.212 +			TableLayout layout = new TableLayout(1, 2);
  15.213 +			iClient.SetLayout(layout);
  15.214 +
  15.215 +			//Set our fields
  15.216 +			iClient.CreateFields(new DataField[]
  15.217 +            {
  15.218 +                new TextField(textBoxTop.Text, Alignment, 0, 0),
  15.219 +                new TextField(textBoxBottom.Text, Alignment, 0, 1)
  15.220 +            });
  15.221 +
  15.222 +		}
  15.223 +
  15.224 +        private void buttonLayoutUpdate_Click(object sender, EventArgs e)
  15.225 +        {
  15.226 +            //Define a 2 by 2 layout
  15.227 +            TableLayout layout = new TableLayout(2,2);
  15.228 +            //Second column only takes up 25%
  15.229 +            layout.Columns[1].Width = 25F;
  15.230 +            //Send layout to server
  15.231 +            iClient.SetLayout(layout);
  15.232 +
  15.233 +            //
  15.234 +            RecordingField recording = new RecordingField();
  15.235 +            recording.IsActive = true;
  15.236 +            recording.Text = "Recording Tame of Gone until 22:05";
  15.237 +            //Set texts
  15.238 +            iClient.CreateFields(new DataField[]
  15.239 +            {                
  15.240 +                new TextField(textBoxTop.Text, Alignment, 0, 0),
  15.241 +                new TextField(textBoxBottom.Text, Alignment, 0, 1),
  15.242 +                new TextField("Third text field", Alignment, 1, 0),
  15.243 +                new TextField("Forth text field", Alignment, 1, 1),
  15.244 +                recording
  15.245 +            });
  15.246 +
  15.247 +        }
  15.248 +
  15.249 +        private void buttonSetBitmap_Click(object sender, EventArgs e)
  15.250 +        {
  15.251 +            int x1 = 0;
  15.252 +            int y1 = 0;
  15.253 +            int x2 = 256;
  15.254 +            int y2 = 32;
  15.255 +
  15.256 +            Bitmap bitmap = new Bitmap(x2,y2);
  15.257 +            Pen blackPen = new Pen(Color.Black, 3);
  15.258 +
  15.259 +            // Draw line to screen.
  15.260 +            using (var graphics = Graphics.FromImage(bitmap))
  15.261 +            {
  15.262 +                graphics.DrawLine(blackPen, x1, y1, x2, y2);
  15.263 +                graphics.DrawLine(blackPen, x1, y2, x2, y1);
  15.264 +            }
  15.265 +
  15.266 +            DataField field = new BitmapField(bitmap);
  15.267 +            //field.ColumnSpan = 2;
  15.268 +            iClient.SetField(field);
  15.269 +        }
  15.270 +
  15.271 +        private void buttonBitmapLayout_Click(object sender, EventArgs e)
  15.272 +        {
  15.273 +            SetLayoutWithBitmap();
  15.274 +        }
  15.275 +
  15.276 +        /// <summary>
  15.277 +        /// Define a layout with a bitmap field on the left and two lines of text on the right.
  15.278 +        /// </summary>
  15.279 +        private void SetLayoutWithBitmap()
  15.280 +        {
  15.281 +            //Define a 2 by 2 layout
  15.282 +            TableLayout layout = new TableLayout(2, 2);
  15.283 +            //First column only takes 25%
  15.284 +            layout.Columns[0].Width = 25F;
  15.285 +            //Second column takes up 75%
  15.286 +            layout.Columns[1].Width = 75F;
  15.287 +            //Send layout to server
  15.288 +            iClient.SetLayout(layout);
  15.289 +
  15.290 +            //Set a bitmap for our first field
  15.291 +            int x1 = 0;
  15.292 +            int y1 = 0;
  15.293 +            int x2 = 64;
  15.294 +            int y2 = 64;
  15.295 +
  15.296 +            Bitmap bitmap = new Bitmap(x2, y2);
  15.297 +            Pen blackPen = new Pen(Color.Black, 3);
  15.298 +
  15.299 +            // Draw line to screen.
  15.300 +            using (var graphics = Graphics.FromImage(bitmap))
  15.301 +            {
  15.302 +                graphics.DrawLine(blackPen, x1, y1, x2, y2);
  15.303 +                graphics.DrawLine(blackPen, x1, y2, x2, y1);
  15.304 +            }
  15.305 +
  15.306 +            //Create a bitmap field from the bitmap we just created
  15.307 +            //We want our bitmap field to span across two rows
  15.308 +            BitmapField bitmapField = new BitmapField(bitmap, 0, 0, 1, 2);
  15.309 +            
  15.310 +            //Set texts
  15.311 +            iClient.CreateFields(new DataField[]
  15.312 +            {
  15.313 +                bitmapField,
  15.314 +                new TextField(textBoxTop.Text, Alignment, 1, 0),
  15.315 +                new TextField(textBoxBottom.Text, Alignment, 1, 1)
  15.316 +            });
  15.317 +
  15.318 +        }
  15.319 +
  15.320 +        private void buttonIndicatorsLayout_Click(object sender, EventArgs e)
  15.321 +        {
  15.322 +            //Define a 2 by 4 layout
  15.323 +            TableLayout layout = new TableLayout(2, 4);
  15.324 +            //First column
  15.325 +            layout.Columns[0].Width = 87.5F;
  15.326 +            //Second column
  15.327 +            layout.Columns[1].Width = 12.5F;
  15.328 +            //Send layout to server
  15.329 +            iClient.SetLayout(layout);
  15.330 +
  15.331 +            //Create a bitmap for our indicators field
  15.332 +            int x1 = 0;
  15.333 +            int y1 = 0;
  15.334 +            int x2 = 32;
  15.335 +            int y2 = 16;
  15.336 +
  15.337 +            Bitmap bitmap = new Bitmap(x2, y2);
  15.338 +            Pen blackPen = new Pen(Color.Black, 3);
  15.339 +
  15.340 +            // Draw line to screen.
  15.341 +            using (var graphics = Graphics.FromImage(bitmap))
  15.342 +            {
  15.343 +                graphics.DrawLine(blackPen, x1, y1, x2, y2);
  15.344 +                graphics.DrawLine(blackPen, x1, y2, x2, y1);
  15.345 +            }
  15.346 +
  15.347 +            //Create a bitmap field from the bitmap we just created
  15.348 +            DataField indicator1 = new BitmapField(bitmap, 1, 0);
  15.349 +            //Create a bitmap field from the bitmap we just created
  15.350 +            DataField indicator2 = new BitmapField(bitmap, 1, 1);
  15.351 +            //Create a bitmap field from the bitmap we just created
  15.352 +            DataField indicator3 = new BitmapField(bitmap, 1, 2);
  15.353 +            //Create a bitmap field from the bitmap we just created
  15.354 +            DataField indicator4 = new BitmapField(bitmap, 1, 3);
  15.355 +
  15.356 +            //
  15.357 +            TextField textFieldTop = new TextField(textBoxTop.Text, Alignment, 0, 0, 1, 2);
  15.358 +            TextField textFieldBottom = new TextField(textBoxBottom.Text, Alignment, 0, 2, 1, 2);
  15.359 +
  15.360 +            //Set texts
  15.361 +            iClient.CreateFields(new DataField[]
  15.362 +            {
  15.363 +                textFieldTop,
  15.364 +                textFieldBottom,
  15.365 +                indicator1,
  15.366 +                indicator2,                
  15.367 +                indicator3,
  15.368 +                indicator4
  15.369 +            });
  15.370 +
  15.371 +        }
  15.372 +
  15.373 +        private void buttonUpdateTexts_Click(object sender, EventArgs e)
  15.374 +        {
  15.375 +
  15.376 +            bool res = iClient.SetFields(new DataField[]
  15.377 +            {
  15.378 +                new TextField(textBoxTop.Text, Alignment,0,0),
  15.379 +                new TextField(textBoxBottom.Text, Alignment,0,1)
  15.380 +            });
  15.381 +
  15.382 +            if (!res)
  15.383 +            {
  15.384 +                MessageBox.Show("Create you fields first", "Field update error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  15.385 +            }
  15.386 +
  15.387 +        }
  15.388 +
  15.389 +		private void buttonLayoutOneTextField_Click(object sender, EventArgs e)
  15.390 +		{
  15.391 +			//Set one column one line layout
  15.392 +			TableLayout layout = new TableLayout(1, 1);
  15.393 +			iClient.SetLayout(layout);
  15.394 +
  15.395 +			//Set our fields
  15.396 +			iClient.CreateFields(new DataField[]
  15.397 +            {
  15.398 +                new TextField(textBoxTop.Text, Alignment)
  15.399 +            });
  15.400 +		}
  15.401 +
  15.402 +        private void numericUpDownPriority_ValueChanged(object sender, EventArgs e)
  15.403 +        {
  15.404 +            iClient.SetPriority((uint)numericUpDownPriority.Value);
  15.405 +        }
  15.406 +    }
  15.407 +}
    16.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2 +++ b/Clients/Test/MainForm.resx	Wed Feb 03 13:02:48 2016 +0100
    16.3 @@ -0,0 +1,120 @@
    16.4 +<?xml version="1.0" encoding="utf-8"?>
    16.5 +<root>
    16.6 +  <!-- 
    16.7 +    Microsoft ResX Schema 
    16.8 +    
    16.9 +    Version 2.0
   16.10 +    
   16.11 +    The primary goals of this format is to allow a simple XML format 
   16.12 +    that is mostly human readable. The generation and parsing of the 
   16.13 +    various data types are done through the TypeConverter classes 
   16.14 +    associated with the data types.
   16.15 +    
   16.16 +    Example:
   16.17 +    
   16.18 +    ... ado.net/XML headers & schema ...
   16.19 +    <resheader name="resmimetype">text/microsoft-resx</resheader>
   16.20 +    <resheader name="version">2.0</resheader>
   16.21 +    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
   16.22 +    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
   16.23 +    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
   16.24 +    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
   16.25 +    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
   16.26 +        <value>[base64 mime encoded serialized .NET Framework object]</value>
   16.27 +    </data>
   16.28 +    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
   16.29 +        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
   16.30 +        <comment>This is a comment</comment>
   16.31 +    </data>
   16.32 +                
   16.33 +    There are any number of "resheader" rows that contain simple 
   16.34 +    name/value pairs.
   16.35 +    
   16.36 +    Each data row contains a name, and value. The row also contains a 
   16.37 +    type or mimetype. Type corresponds to a .NET class that support 
   16.38 +    text/value conversion through the TypeConverter architecture. 
   16.39 +    Classes that don't support this are serialized and stored with the 
   16.40 +    mimetype set.
   16.41 +    
   16.42 +    The mimetype is used for serialized objects, and tells the 
   16.43 +    ResXResourceReader how to depersist the object. This is currently not 
   16.44 +    extensible. For a given mimetype the value must be set accordingly:
   16.45 +    
   16.46 +    Note - application/x-microsoft.net.object.binary.base64 is the format 
   16.47 +    that the ResXResourceWriter will generate, however the reader can 
   16.48 +    read any of the formats listed below.
   16.49 +    
   16.50 +    mimetype: application/x-microsoft.net.object.binary.base64
   16.51 +    value   : The object must be serialized with 
   16.52 +            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
   16.53 +            : and then encoded with base64 encoding.
   16.54 +    
   16.55 +    mimetype: application/x-microsoft.net.object.soap.base64
   16.56 +    value   : The object must be serialized with 
   16.57 +            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
   16.58 +            : and then encoded with base64 encoding.
   16.59 +
   16.60 +    mimetype: application/x-microsoft.net.object.bytearray.base64
   16.61 +    value   : The object must be serialized into a byte array 
   16.62 +            : using a System.ComponentModel.TypeConverter
   16.63 +            : and then encoded with base64 encoding.
   16.64 +    -->
   16.65 +  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
   16.66 +    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
   16.67 +    <xsd:element name="root" msdata:IsDataSet="true">
   16.68 +      <xsd:complexType>
   16.69 +        <xsd:choice maxOccurs="unbounded">
   16.70 +          <xsd:element name="metadata">
   16.71 +            <xsd:complexType>
   16.72 +              <xsd:sequence>
   16.73 +                <xsd:element name="value" type="xsd:string" minOccurs="0" />
   16.74 +              </xsd:sequence>
   16.75 +              <xsd:attribute name="name" use="required" type="xsd:string" />
   16.76 +              <xsd:attribute name="type" type="xsd:string" />
   16.77 +              <xsd:attribute name="mimetype" type="xsd:string" />
   16.78 +              <xsd:attribute ref="xml:space" />
   16.79 +            </xsd:complexType>
   16.80 +          </xsd:element>
   16.81 +          <xsd:element name="assembly">
   16.82 +            <xsd:complexType>
   16.83 +              <xsd:attribute name="alias" type="xsd:string" />
   16.84 +              <xsd:attribute name="name" type="xsd:string" />
   16.85 +            </xsd:complexType>
   16.86 +          </xsd:element>
   16.87 +          <xsd:element name="data">
   16.88 +            <xsd:complexType>
   16.89 +              <xsd:sequence>
   16.90 +                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
   16.91 +                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
   16.92 +              </xsd:sequence>
   16.93 +              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
   16.94 +              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
   16.95 +              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
   16.96 +              <xsd:attribute ref="xml:space" />
   16.97 +            </xsd:complexType>
   16.98 +          </xsd:element>
   16.99 +          <xsd:element name="resheader">
  16.100 +            <xsd:complexType>
  16.101 +              <xsd:sequence>
  16.102 +                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
  16.103 +              </xsd:sequence>
  16.104 +              <xsd:attribute name="name" type="xsd:string" use="required" />
  16.105 +            </xsd:complexType>
  16.106 +          </xsd:element>
  16.107 +        </xsd:choice>
  16.108 +      </xsd:complexType>
  16.109 +    </xsd:element>
  16.110 +  </xsd:schema>
  16.111 +  <resheader name="resmimetype">
  16.112 +    <value>text/microsoft-resx</value>
  16.113 +  </resheader>
  16.114 +  <resheader name="version">
  16.115 +    <value>2.0</value>
  16.116 +  </resheader>
  16.117 +  <resheader name="reader">
  16.118 +    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  16.119 +  </resheader>
  16.120 +  <resheader name="writer">
  16.121 +    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  16.122 +  </resheader>
  16.123 +</root>
  16.124 \ No newline at end of file
    17.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.2 +++ b/Clients/Test/Program.cs	Wed Feb 03 13:02:48 2016 +0100
    17.3 @@ -0,0 +1,73 @@
    17.4 +//
    17.5 +// Copyright (C) 2014-2015 Stéphane Lenclud.
    17.6 +//
    17.7 +// This file is part of SharpDisplayManager.
    17.8 +//
    17.9 +// SharpDisplayManager is free software: you can redistribute it and/or modify
   17.10 +// it under the terms of the GNU General Public License as published by
   17.11 +// the Free Software Foundation, either version 3 of the License, or
   17.12 +// (at your option) any later version.
   17.13 +//
   17.14 +// SharpDisplayManager is distributed in the hope that it will be useful,
   17.15 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
   17.16 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   17.17 +// GNU General Public License for more details.
   17.18 +//
   17.19 +// You should have received a copy of the GNU General Public License
   17.20 +// along with SharpDisplayManager.  If not, see <http://www.gnu.org/licenses/>.
   17.21 +//
   17.22 +
   17.23 +using System;
   17.24 +using System.Collections.Generic;
   17.25 +using System.Linq;
   17.26 +using System.Threading.Tasks;
   17.27 +using System.Windows.Forms;
   17.28 +using System.Drawing;
   17.29 +
   17.30 +namespace SharpDisplayClient
   17.31 +{
   17.32 +    static public class Program
   17.33 +    {
   17.34 +        /// <summary>
   17.35 +        /// The main entry point for the application.
   17.36 +        /// </summary>
   17.37 +        [STAThread]
   17.38 +        static public void Main()
   17.39 +        {
   17.40 +            //Set high priority to our process to avoid lags when rendering to our screen
   17.41 +            System.Diagnostics.Process.GetCurrentProcess().PriorityClass = System.Diagnostics.ProcessPriorityClass.AboveNormal;
   17.42 +
   17.43 +            Application.EnableVisualStyles();
   17.44 +            Application.SetCompatibleTextRenderingDefault(false);
   17.45 +			Application.Run(new MainForm());
   17.46 +        }
   17.47 +
   17.48 +		[STAThread]
   17.49 +		static public void MainWithParams(object aParams)
   17.50 +		{
   17.51 +			//Set high priority to our process to avoid lags when rendering to our screen
   17.52 +			System.Diagnostics.Process.GetCurrentProcess().PriorityClass = System.Diagnostics.ProcessPriorityClass.AboveNormal;
   17.53 +
   17.54 +			Application.EnableVisualStyles();
   17.55 +			Application.SetCompatibleTextRenderingDefault(false);
   17.56 +			MainForm mainForm = new MainForm();
   17.57 +			mainForm.Params = (StartParams)aParams;
   17.58 +			Application.Run(mainForm);
   17.59 +		}
   17.60 +
   17.61 +    }
   17.62 +
   17.63 +	public class StartParams
   17.64 +	{
   17.65 +		public StartParams(Point aLocation, string aTopText="", string aBottomText="")
   17.66 +		{
   17.67 +			TopText = aTopText;
   17.68 +			BottomText = aBottomText;
   17.69 +			Location = aLocation;
   17.70 +		}
   17.71 +
   17.72 +		public string TopText { get; set; }
   17.73 +		public string BottomText { get; set; }
   17.74 +		public Point Location { get; set; }
   17.75 +	}
   17.76 +}
    18.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.2 +++ b/Clients/Test/Properties/AssemblyInfo.cs	Wed Feb 03 13:02:48 2016 +0100
    18.3 @@ -0,0 +1,36 @@
    18.4 +using System.Reflection;
    18.5 +using System.Runtime.CompilerServices;
    18.6 +using System.Runtime.InteropServices;
    18.7 +
    18.8 +// General Information about an assembly is controlled through the following 
    18.9 +// set of attributes. Change these attribute values to modify the information
   18.10 +// associated with an assembly.
   18.11 +[assembly: AssemblyTitle("SharpDisplayClient")]
   18.12 +[assembly: AssemblyDescription("")]
   18.13 +[assembly: AssemblyConfiguration("")]
   18.14 +[assembly: AssemblyCompany("")]
   18.15 +[assembly: AssemblyProduct("SharpDisplayClient")]
   18.16 +[assembly: AssemblyCopyright("Copyright ©  2014")]
   18.17 +[assembly: AssemblyTrademark("")]
   18.18 +[assembly: AssemblyCulture("")]
   18.19 +
   18.20 +// Setting ComVisible to false makes the types in this assembly not visible 
   18.21 +// to COM components.  If you need to access a type in this assembly from 
   18.22 +// COM, set the ComVisible attribute to true on that type.
   18.23 +[assembly: ComVisible(false)]
   18.24 +
   18.25 +// The following GUID is for the ID of the typelib if this project is exposed to COM
   18.26 +[assembly: Guid("36255ddc-eb97-4253-8696-3e360b5bc824")]
   18.27 +
   18.28 +// Version information for an assembly consists of the following four values:
   18.29 +//
   18.30 +//      Major Version
   18.31 +//      Minor Version 
   18.32 +//      Build Number
   18.33 +//      Revision
   18.34 +//
   18.35 +// You can specify all the values or you can default the Build and Revision Numbers 
   18.36 +// by using the '*' as shown below:
   18.37 +// [assembly: AssemblyVersion("1.0.*")]
   18.38 +[assembly: AssemblyVersion("1.0.0.0")]
   18.39 +[assembly: AssemblyFileVersion("1.0.0.0")]
    19.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2 +++ b/Clients/Test/Properties/Resources.Designer.cs	Wed Feb 03 13:02:48 2016 +0100
    19.3 @@ -0,0 +1,63 @@
    19.4 +//------------------------------------------------------------------------------
    19.5 +// <auto-generated>
    19.6 +//     This code was generated by a tool.
    19.7 +//     Runtime Version:4.0.30319.42000
    19.8 +//
    19.9 +//     Changes to this file may cause incorrect behavior and will be lost if
   19.10 +//     the code is regenerated.
   19.11 +// </auto-generated>
   19.12 +//------------------------------------------------------------------------------
   19.13 +
   19.14 +namespace SharpDisplayClient.Properties {
   19.15 +    using System;
   19.16 +    
   19.17 +    
   19.18 +    /// <summary>
   19.19 +    ///   A strongly-typed resource class, for looking up localized strings, etc.
   19.20 +    /// </summary>
   19.21 +    // This class was auto-generated by the StronglyTypedResourceBuilder
   19.22 +    // class via a tool like ResGen or Visual Studio.
   19.23 +    // To add or remove a member, edit your .ResX file then rerun ResGen
   19.24 +    // with the /str option, or rebuild your VS project.
   19.25 +    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
   19.26 +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
   19.27 +    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
   19.28 +    internal class Resources {
   19.29 +        
   19.30 +        private static global::System.Resources.ResourceManager resourceMan;
   19.31 +        
   19.32 +        private static global::System.Globalization.CultureInfo resourceCulture;
   19.33 +        
   19.34 +        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
   19.35 +        internal Resources() {
   19.36 +        }
   19.37 +        
   19.38 +        /// <summary>
   19.39 +        ///   Returns the cached ResourceManager instance used by this class.
   19.40 +        /// </summary>
   19.41 +        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
   19.42 +        internal static global::System.Resources.ResourceManager ResourceManager {
   19.43 +            get {
   19.44 +                if (object.ReferenceEquals(resourceMan, null)) {
   19.45 +                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SharpDisplayClient.Properties.Resources", typeof(Resources).Assembly);
   19.46 +                    resourceMan = temp;
   19.47 +                }
   19.48 +                return resourceMan;
   19.49 +            }
   19.50 +        }
   19.51 +        
   19.52 +        /// <summary>
   19.53 +        ///   Overrides the current thread's CurrentUICulture property for all
   19.54 +        ///   resource lookups using this strongly typed resource class.
   19.55 +        /// </summary>
   19.56 +        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
   19.57 +        internal static global::System.Globalization.CultureInfo Culture {
   19.58 +            get {
   19.59 +                return resourceCulture;
   19.60 +            }
   19.61 +            set {
   19.62 +                resourceCulture = value;
   19.63 +            }
   19.64 +        }
   19.65 +    }
   19.66 +}
    20.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.2 +++ b/Clients/Test/Properties/Resources.resx	Wed Feb 03 13:02:48 2016 +0100
    20.3 @@ -0,0 +1,117 @@
    20.4 +<?xml version="1.0" encoding="utf-8"?>
    20.5 +<root>
    20.6 +  <!-- 
    20.7 +    Microsoft ResX Schema 
    20.8 +    
    20.9 +    Version 2.0
   20.10 +    
   20.11 +    The primary goals of this format is to allow a simple XML format 
   20.12 +    that is mostly human readable. The generation and parsing of the 
   20.13 +    various data types are done through the TypeConverter classes 
   20.14 +    associated with the data types.
   20.15 +    
   20.16 +    Example:
   20.17 +    
   20.18 +    ... ado.net/XML headers & schema ...
   20.19 +    <resheader name="resmimetype">text/microsoft-resx</resheader>
   20.20 +    <resheader name="version">2.0</resheader>
   20.21 +    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
   20.22 +    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
   20.23 +    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
   20.24 +    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
   20.25 +    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
   20.26 +        <value>[base64 mime encoded serialized .NET Framework object]</value>
   20.27 +    </data>
   20.28 +    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
   20.29 +        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
   20.30 +        <comment>This is a comment</comment>
   20.31 +    </data>
   20.32 +                
   20.33 +    There are any number of "resheader" rows that contain simple 
   20.34 +    name/value pairs.
   20.35 +    
   20.36 +    Each data row contains a name, and value. The row also contains a 
   20.37 +    type or mimetype. Type corresponds to a .NET class that support 
   20.38 +    text/value conversion through the TypeConverter architecture. 
   20.39 +    Classes that don't support this are serialized and stored with the 
   20.40 +    mimetype set.
   20.41 +    
   20.42 +    The mimetype is used for serialized objects, and tells the 
   20.43 +    ResXResourceReader how to depersist the object. This is currently not 
   20.44 +    extensible. For a given mimetype the value must be set accordingly:
   20.45 +    
   20.46 +    Note - application/x-microsoft.net.object.binary.base64 is the format 
   20.47 +    that the ResXResourceWriter will generate, however the reader can 
   20.48 +    read any of the formats listed below.
   20.49 +    
   20.50 +    mimetype: application/x-microsoft.net.object.binary.base64
   20.51 +    value   : The object must be serialized with 
   20.52 +            : System.Serialization.Formatters.Binary.BinaryFormatter
   20.53 +            : and then encoded with base64 encoding.
   20.54 +    
   20.55 +    mimetype: application/x-microsoft.net.object.soap.base64
   20.56 +    value   : The object must be serialized with 
   20.57 +            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
   20.58 +            : and then encoded with base64 encoding.
   20.59 +
   20.60 +    mimetype: application/x-microsoft.net.object.bytearray.base64
   20.61 +    value   : The object must be serialized into a byte array 
   20.62 +            : using a System.ComponentModel.TypeConverter
   20.63 +            : and then encoded with base64 encoding.
   20.64 +    -->
   20.65 +  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
   20.66 +    <xsd:element name="root" msdata:IsDataSet="true">
   20.67 +      <xsd:complexType>
   20.68 +        <xsd:choice maxOccurs="unbounded">
   20.69 +          <xsd:element name="metadata">
   20.70 +            <xsd:complexType>
   20.71 +              <xsd:sequence>
   20.72 +                <xsd:element name="value" type="xsd:string" minOccurs="0" />
   20.73 +              </xsd:sequence>
   20.74 +              <xsd:attribute name="name" type="xsd:string" />
   20.75 +              <xsd:attribute name="type" type="xsd:string" />
   20.76 +              <xsd:attribute name="mimetype" type="xsd:string" />
   20.77 +            </xsd:complexType>
   20.78 +          </xsd:element>
   20.79 +          <xsd:element name="assembly">
   20.80 +            <xsd:complexType>
   20.81 +              <xsd:attribute name="alias" type="xsd:string" />
   20.82 +              <xsd:attribute name="name" type="xsd:string" />
   20.83 +            </xsd:complexType>
   20.84 +          </xsd:element>
   20.85 +          <xsd:element name="data">
   20.86 +            <xsd:complexType>
   20.87 +              <xsd:sequence>
   20.88 +                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
   20.89 +                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
   20.90 +              </xsd:sequence>
   20.91 +              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
   20.92 +              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
   20.93 +              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
   20.94 +            </xsd:complexType>
   20.95 +          </xsd:element>
   20.96 +          <xsd:element name="resheader">
   20.97 +            <xsd:complexType>
   20.98 +              <xsd:sequence>
   20.99 +                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
  20.100 +              </xsd:sequence>
  20.101 +              <xsd:attribute name="name" type="xsd:string" use="required" />
  20.102 +            </xsd:complexType>
  20.103 +          </xsd:element>
  20.104 +        </xsd:choice>
  20.105 +      </xsd:complexType>
  20.106 +    </xsd:element>
  20.107 +  </xsd:schema>
  20.108 +  <resheader name="resmimetype">
  20.109 +    <value>text/microsoft-resx</value>
  20.110 +  </resheader>
  20.111 +  <resheader name="version">
  20.112 +    <value>2.0</value>
  20.113 +  </resheader>
  20.114 +  <resheader name="reader">
  20.115 +    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  20.116 +  </resheader>
  20.117 +  <resheader name="writer">
  20.118 +    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  20.119 +  </resheader>
  20.120 +</root>
  20.121 \ No newline at end of file
    21.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2 +++ b/Clients/Test/Properties/Settings.Designer.cs	Wed Feb 03 13:02:48 2016 +0100
    21.3 @@ -0,0 +1,26 @@
    21.4 +//------------------------------------------------------------------------------
    21.5 +// <auto-generated>
    21.6 +//     This code was generated by a tool.
    21.7 +//     Runtime Version:4.0.30319.42000
    21.8 +//
    21.9 +//     Changes to this file may cause incorrect behavior and will be lost if
   21.10 +//     the code is regenerated.
   21.11 +// </auto-generated>
   21.12 +//------------------------------------------------------------------------------
   21.13 +
   21.14 +namespace SharpDisplayClient.Properties {
   21.15 +    
   21.16 +    
   21.17 +    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
   21.18 +    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
   21.19 +    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
   21.20 +        
   21.21 +        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
   21.22 +        
   21.23 +        public static Settings Default {
   21.24 +            get {
   21.25 +                return defaultInstance;
   21.26 +            }
   21.27 +        }
   21.28 +    }
   21.29 +}
    22.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.2 +++ b/Clients/Test/Properties/Settings.settings	Wed Feb 03 13:02:48 2016 +0100
    22.3 @@ -0,0 +1,7 @@
    22.4 +<?xml version='1.0' encoding='utf-8'?>
    22.5 +<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
    22.6 +  <Profiles>
    22.7 +    <Profile Name="(Default)" />
    22.8 +  </Profiles>
    22.9 +  <Settings />
   22.10 +</SettingsFile>
    23.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.2 +++ b/Clients/Test/SharpDisplayClient.csproj	Wed Feb 03 13:02:48 2016 +0100
    23.3 @@ -0,0 +1,164 @@
    23.4 +<?xml version="1.0" encoding="utf-8"?>
    23.5 +<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    23.6 +  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
    23.7 +  <PropertyGroup>
    23.8 +    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    23.9 +    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
   23.10 +    <ProjectGuid>{7EE64074-8CDB-4448-B40C-81B75D6B31CD}</ProjectGuid>
   23.11 +    <OutputType>WinExe</OutputType>
   23.12 +    <AppDesignerFolder>Properties</AppDesignerFolder>
   23.13 +    <RootNamespace>SharpDisplayClient</RootNamespace>
   23.14 +    <AssemblyName>SharpDisplayClient</AssemblyName>
   23.15 +    <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
   23.16 +    <FileAlignment>512</FileAlignment>
   23.17 +    <TargetFrameworkProfile />
   23.18 +    <PublishUrl>publish\</PublishUrl>
   23.19 +    <Install>true</Install>
   23.20 +    <InstallFrom>Disk</InstallFrom>
   23.21 +    <UpdateEnabled>false</UpdateEnabled>
   23.22 +    <UpdateMode>Foreground</UpdateMode>
   23.23 +    <UpdateInterval>7</UpdateInterval>
   23.24 +    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
   23.25 +    <UpdatePeriodically>false</UpdatePeriodically>
   23.26 +    <UpdateRequired>false</UpdateRequired>
   23.27 +    <MapFileExtensions>true</MapFileExtensions>
   23.28 +    <ApplicationRevision>0</ApplicationRevision>
   23.29 +    <ApplicationVersion>0.1.0.%2a</ApplicationVersion>
   23.30 +    <IsWebBootstrapper>false</IsWebBootstrapper>
   23.31 +    <UseApplicationTrust>false</UseApplicationTrust>
   23.32 +    <BootstrapperEnabled>true</BootstrapperEnabled>
   23.33 +  </PropertyGroup>
   23.34 +  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
   23.35 +    <PlatformTarget>AnyCPU</PlatformTarget>
   23.36 +    <DebugSymbols>true</DebugSymbols>
   23.37 +    <DebugType>full</DebugType>
   23.38 +    <Optimize>false</Optimize>
   23.39 +    <OutputPath>bin\Debug\</OutputPath>
   23.40 +    <DefineConstants>DEBUG;TRACE</DefineConstants>
   23.41 +    <ErrorReport>prompt</ErrorReport>
   23.42 +    <WarningLevel>4</WarningLevel>
   23.43 +    <Prefer32Bit>false</Prefer32Bit>
   23.44 +  </PropertyGroup>
   23.45 +  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
   23.46 +    <PlatformTarget>AnyCPU</PlatformTarget>
   23.47 +    <DebugType>pdbonly</DebugType>
   23.48 +    <Optimize>true</Optimize>
   23.49 +    <OutputPath>bin\Release\</OutputPath>
   23.50 +    <DefineConstants>TRACE</DefineConstants>
   23.51 +    <ErrorReport>prompt</ErrorReport>
   23.52 +    <WarningLevel>4</WarningLevel>
   23.53 +    <Prefer32Bit>false</Prefer32Bit>
   23.54 +  </PropertyGroup>
   23.55 +  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
   23.56 +    <DebugSymbols>true</DebugSymbols>
   23.57 +    <OutputPath>..\bin\x86\Debug\</OutputPath>
   23.58 +    <BaseIntermediateOutputPath>..\bin\x86\Debug\obj</BaseIntermediateOutputPath>
   23.59 +    <DefineConstants>DEBUG;TRACE</DefineConstants>
   23.60 +    <DebugType>full</DebugType>
   23.61 +    <PlatformTarget>x86</PlatformTarget>
   23.62 +    <ErrorReport>prompt</ErrorReport>
   23.63 +    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
   23.64 +    <Prefer32Bit>false</Prefer32Bit>
   23.65 +  </PropertyGroup>
   23.66 +  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
   23.67 +    <OutputPath>..\bin\x86\Release\</OutputPath>
   23.68 +    <BaseIntermediateOutputPath>..\bin\x86\Release\obj</BaseIntermediateOutputPath>
   23.69 +    <DefineConstants>TRACE</DefineConstants>
   23.70 +    <Optimize>true</Optimize>
   23.71 +    <DebugType>pdbonly</DebugType>
   23.72 +    <PlatformTarget>x86</PlatformTarget>
   23.73 +    <ErrorReport>prompt</ErrorReport>
   23.74 +    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
   23.75 +    <Prefer32Bit>false</Prefer32Bit>
   23.76 +  </PropertyGroup>
   23.77 +  <PropertyGroup>
   23.78 +    <SignManifests>true</SignManifests>
   23.79 +  </PropertyGroup>
   23.80 +  <PropertyGroup>
   23.81 +    <ManifestCertificateThumbprint>70A149AB9F89E507D9411D109553BE22455895D6</ManifestCertificateThumbprint>
   23.82 +  </PropertyGroup>
   23.83 +  <PropertyGroup>
   23.84 +    <ManifestKeyFile>SharpDisplayManager_TemporaryKey.pfx</ManifestKeyFile>
   23.85 +  </PropertyGroup>
   23.86 +  <PropertyGroup>
   23.87 +    <NoWin32Manifest>true</NoWin32Manifest>
   23.88 +  </PropertyGroup>
   23.89 +  <ItemGroup>
   23.90 +    <Reference Include="SharpLibDisplay, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
   23.91 +      <HintPath>..\..\packages\SharpLibDisplay.0.2.5\lib\net40\SharpLibDisplay.dll</HintPath>
   23.92 +      <Private>True</Private>
   23.93 +    </Reference>
   23.94 +    <Reference Include="System" />
   23.95 +    <Reference Include="System.Core" />
   23.96 +    <Reference Include="System.ServiceModel" />
   23.97 +    <Reference Include="System.Xml.Linq" />
   23.98 +    <Reference Include="System.Data.DataSetExtensions" />
   23.99 +    <Reference Include="Microsoft.CSharp" />
  23.100 +    <Reference Include="System.Data" />
  23.101 +    <Reference Include="System.Deployment" />
  23.102 +    <Reference Include="System.Drawing" />
  23.103 +    <Reference Include="System.Windows.Forms" />
  23.104 +    <Reference Include="System.Xml" />
  23.105 +  </ItemGroup>
  23.106 +  <ItemGroup>
  23.107 +    <Compile Include="MainForm.cs">
  23.108 +      <SubType>Form</SubType>
  23.109 +    </Compile>
  23.110 +    <Compile Include="MainForm.Designer.cs">
  23.111 +      <DependentUpon>MainForm.cs</DependentUpon>
  23.112 +    </Compile>
  23.113 +    <Compile Include="Program.cs" />
  23.114 +    <Compile Include="Properties\AssemblyInfo.cs" />
  23.115 +    <EmbeddedResource Include="MainForm.resx">
  23.116 +      <DependentUpon>MainForm.cs</DependentUpon>
  23.117 +    </EmbeddedResource>
  23.118 +    <EmbeddedResource Include="Properties\Resources.resx">
  23.119 +      <Generator>ResXFileCodeGenerator</Generator>
  23.120 +      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
  23.121 +      <SubType>Designer</SubType>
  23.122 +    </EmbeddedResource>
  23.123 +    <Compile Include="Properties\Resources.Designer.cs">
  23.124 +      <AutoGen>True</AutoGen>
  23.125 +      <DependentUpon>Resources.resx</DependentUpon>
  23.126 +      <DesignTime>True</DesignTime>
  23.127 +    </Compile>
  23.128 +    <None Include="packages.config" />
  23.129 +    <None Include="Properties\Settings.settings">
  23.130 +      <Generator>SettingsSingleFileGenerator</Generator>
  23.131 +      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
  23.132 +    </None>
  23.133 +    <Compile Include="Properties\Settings.Designer.cs">
  23.134 +      <AutoGen>True</AutoGen>
  23.135 +      <DependentUpon>Settings.settings</DependentUpon>
  23.136 +      <DesignTimeSharedInput>True</DesignTimeSharedInput>
  23.137 +    </Compile>
  23.138 +  </ItemGroup>
  23.139 +  <ItemGroup>
  23.140 +    <None Include="App.config" />
  23.141 +  </ItemGroup>
  23.142 +  <ItemGroup>
  23.143 +    <BootstrapperPackage Include=".NETFramework,Version=v4.5">
  23.144 +      <Visible>False</Visible>
  23.145 +      <ProductName>Microsoft .NET Framework 4.5 %28x86 and x64%29</ProductName>
  23.146 +      <Install>true</Install>
  23.147 +    </BootstrapperPackage>
  23.148 +    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
  23.149 +      <Visible>False</Visible>
  23.150 +      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
  23.151 +      <Install>false</Install>
  23.152 +    </BootstrapperPackage>
  23.153 +    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
  23.154 +      <Visible>False</Visible>
  23.155 +      <ProductName>.NET Framework 3.5 SP1</ProductName>
  23.156 +      <Install>false</Install>
  23.157 +    </BootstrapperPackage>
  23.158 +  </ItemGroup>
  23.159 +  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  23.160 +  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
  23.161 +       Other similar extension points exist, see Microsoft.Common.targets.
  23.162 +  <Target Name="BeforeBuild">
  23.163 +  </Target>
  23.164 +  <Target Name="AfterBuild">
  23.165 +  </Target>
  23.166 +  -->
  23.167 +</Project>
  23.168 \ No newline at end of file
    24.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.2 +++ b/Clients/Test/packages.config	Wed Feb 03 13:02:48 2016 +0100
    24.3 @@ -0,0 +1,4 @@
    24.4 +<?xml version="1.0" encoding="utf-8"?>
    24.5 +<packages>
    24.6 +  <package id="SharpLibDisplay" version="0.2.5" targetFramework="net46" />
    24.7 +</packages>
    24.8 \ No newline at end of file
    25.1 --- a/Server/SharpDisplayManager.csproj	Tue Feb 02 19:50:33 2016 +0100
    25.2 +++ b/Server/SharpDisplayManager.csproj	Wed Feb 03 13:02:48 2016 +0100
    25.3 @@ -222,7 +222,7 @@
    25.4        <Project>{a76579e5-aa8d-45a3-99e1-239a5c030a78}</Project>
    25.5        <Name>SharpDisplayIdleClient</Name>
    25.6      </ProjectReference>
    25.7 -    <ProjectReference Include="..\Client\SharpDisplayClient.csproj">
    25.8 +    <ProjectReference Include="..\Clients\Test\SharpDisplayClient.csproj">
    25.9        <Project>{7ee64074-8cdb-4448-b40c-81b75d6b31cd}</Project>
   25.10        <Name>SharpDisplayClient</Name>
   25.11      </ProjectReference>
    26.1 --- a/Setup/Setup.vdproj	Tue Feb 02 19:50:33 2016 +0100
    26.2 +++ b/Setup/Setup.vdproj	Wed Feb 03 13:02:48 2016 +0100
    26.3 @@ -15,13 +15,7 @@
    26.4      {
    26.5          "Entry"
    26.6          {
    26.7 -        "MsmKey" = "8:_0BDF79321B394EC0E77BF680C3F40422"
    26.8 -        "OwnerKey" = "8:_9A642A9E3FEC4B88888C4B96086D59E8"
    26.9 -        "MsmSig" = "8:_UNDEFINED"
   26.10 -        }
   26.11 -        "Entry"
   26.12 -        {
   26.13 -        "MsmKey" = "8:_295C95460CE37C9B5A2F236412BA3C46"
   26.14 +        "MsmKey" = "8:_099780B8FCF4932D55DA0D38B877DFC8"
   26.15          "OwnerKey" = "8:_9A642A9E3FEC4B88888C4B96086D59E8"
   26.16          "MsmSig" = "8:_UNDEFINED"
   26.17          }
   26.18 @@ -33,8 +27,20 @@
   26.19          }
   26.20          "Entry"
   26.21          {
   26.22 +        "MsmKey" = "8:_30F0A6A7F5B98239D94FA1AA5EACCD2E"
   26.23 +        "OwnerKey" = "8:_9A642A9E3FEC4B88888C4B96086D59E8"
   26.24 +        "MsmSig" = "8:_UNDEFINED"
   26.25 +        }
   26.26 +        "Entry"
   26.27 +        {
   26.28 +        "MsmKey" = "8:_30F0A6A7F5B98239D94FA1AA5EACCD2E"
   26.29 +        "OwnerKey" = "8:_AF682C1D0487188ED204D4D959CEB62D"
   26.30 +        "MsmSig" = "8:_UNDEFINED"
   26.31 +        }
   26.32 +        "Entry"
   26.33 +        {
   26.34          "MsmKey" = "8:_334B309CE72870CC620EAB7737749CDB"
   26.35 -        "OwnerKey" = "8:_295C95460CE37C9B5A2F236412BA3C46"
   26.36 +        "OwnerKey" = "8:_C7F134A916AA74F022E8AE46F8C27961"
   26.37          "MsmSig" = "8:_UNDEFINED"
   26.38          }
   26.39          "Entry"
   26.40 @@ -51,74 +57,92 @@
   26.41          }
   26.42          "Entry"
   26.43          {
   26.44 +        "MsmKey" = "8:_5E56A87ADF2554F4847ED3BEFD1497FC"
   26.45 +        "OwnerKey" = "8:_9A642A9E3FEC4B88888C4B96086D59E8"
   26.46 +        "MsmSig" = "8:_UNDEFINED"
   26.47 +        }
   26.48 +        "Entry"
   26.49 +        {
   26.50          "MsmKey" = "8:_63DC5055504D8E8030D07BDDC074A009"
   26.51          "OwnerKey" = "8:_9A642A9E3FEC4B88888C4B96086D59E8"
   26.52          "MsmSig" = "8:_UNDEFINED"
   26.53          }
   26.54          "Entry"
   26.55          {
   26.56 +        "MsmKey" = "8:_6F3AF0877F2A0197B2BE03FDE4C25D49"
   26.57 +        "OwnerKey" = "8:_9A642A9E3FEC4B88888C4B96086D59E8"
   26.58 +        "MsmSig" = "8:_UNDEFINED"
   26.59 +        }
   26.60 +        "Entry"
   26.61 +        {
   26.62          "MsmKey" = "8:_7010B5ED2C1B4E82D3DBE2B590A4FC8E"
   26.63          "OwnerKey" = "8:_9A642A9E3FEC4B88888C4B96086D59E8"
   26.64          "MsmSig" = "8:_UNDEFINED"
   26.65          }
   26.66          "Entry"
   26.67          {
   26.68 -        "MsmKey" = "8:_8CD29D0F38634408AC33359D27B44035"
   26.69 -        "OwnerKey" = "8:_UNDEFINED"
   26.70 -        "MsmSig" = "8:_UNDEFINED"
   26.71 -        }
   26.72 -        "Entry"
   26.73 -        {
   26.74          "MsmKey" = "8:_9A642A9E3FEC4B88888C4B96086D59E8"
   26.75          "OwnerKey" = "8:_UNDEFINED"
   26.76          "MsmSig" = "8:_UNDEFINED"
   26.77          }
   26.78          "Entry"
   26.79          {
   26.80 -        "MsmKey" = "8:_9F004B0F8506B523869FACB14EFF064D"
   26.81 -        "OwnerKey" = "8:_0BDF79321B394EC0E77BF680C3F40422"
   26.82 -        "MsmSig" = "8:_UNDEFINED"
   26.83 -        }
   26.84 -        "Entry"
   26.85 -        {
   26.86 -        "MsmKey" = "8:_9F004B0F8506B523869FACB14EFF064D"
   26.87 +        "MsmKey" = "8:_AF682C1D0487188ED204D4D959CEB62D"
   26.88          "OwnerKey" = "8:_9A642A9E3FEC4B88888C4B96086D59E8"
   26.89          "MsmSig" = "8:_UNDEFINED"
   26.90          }
   26.91          "Entry"
   26.92          {
   26.93 -        "MsmKey" = "8:_9F004B0F8506B523869FACB14EFF064D"
   26.94 -        "OwnerKey" = "8:_8CD29D0F38634408AC33359D27B44035"
   26.95 -        "MsmSig" = "8:_UNDEFINED"
   26.96 -        }
   26.97 -        "Entry"
   26.98 -        {
   26.99          "MsmKey" = "8:_C2E6C8EB1D62D3C8FA1D1C243958D2D5"
  26.100          "OwnerKey" = "8:_9A642A9E3FEC4B88888C4B96086D59E8"
  26.101          "MsmSig" = "8:_UNDEFINED"
  26.102          }
  26.103          "Entry"
  26.104          {
  26.105 -        "MsmKey" = "8:_FE5CFB2A37C82C1C9824F67FFE127C01"
  26.106 +        "MsmKey" = "8:_C7F134A916AA74F022E8AE46F8C27961"
  26.107          "OwnerKey" = "8:_9A642A9E3FEC4B88888C4B96086D59E8"
  26.108          "MsmSig" = "8:_UNDEFINED"
  26.109          }
  26.110          "Entry"
  26.111          {
  26.112          "MsmKey" = "8:_UNDEFINED"
  26.113 -        "OwnerKey" = "8:_FE5CFB2A37C82C1C9824F67FFE127C01"
  26.114 +        "OwnerKey" = "8:_9A642A9E3FEC4B88888C4B96086D59E8"
  26.115          "MsmSig" = "8:_UNDEFINED"
  26.116          }
  26.117          "Entry"
  26.118          {
  26.119          "MsmKey" = "8:_UNDEFINED"
  26.120 -        "OwnerKey" = "8:_9F004B0F8506B523869FACB14EFF064D"
  26.121 +        "OwnerKey" = "8:_63DC5055504D8E8030D07BDDC074A009"
  26.122          "MsmSig" = "8:_UNDEFINED"
  26.123          }
  26.124          "Entry"
  26.125          {
  26.126          "MsmKey" = "8:_UNDEFINED"
  26.127 -        "OwnerKey" = "8:_0BDF79321B394EC0E77BF680C3F40422"
  26.128 +        "OwnerKey" = "8:_7010B5ED2C1B4E82D3DBE2B590A4FC8E"
  26.129 +        "MsmSig" = "8:_UNDEFINED"
  26.130 +        }
  26.131 +        "Entry"
  26.132 +        {
  26.133 +        "MsmKey" = "8:_UNDEFINED"
  26.134 +        "OwnerKey" = "8:_6F3AF0877F2A0197B2BE03FDE4C25D49"
  26.135 +        "MsmSig" = "8:_UNDEFINED"
  26.136 +        }
  26.137 +        "Entry"
  26.138 +        {
  26.139 +        "MsmKey" = "8:_UNDEFINED"
  26.140 +        "OwnerKey" = "8:_C7F134A916AA74F022E8AE46F8C27961"
  26.141 +        "MsmSig" = "8:_UNDEFINED"
  26.142 +        }
  26.143 +        "Entry"
  26.144 +        {
  26.145 +        "MsmKey" = "8:_UNDEFINED"
  26.146 +        "OwnerKey" = "8:_334B309CE72870CC620EAB7737749CDB"
  26.147 +        "MsmSig" = "8:_UNDEFINED"
  26.148 +        }
  26.149 +        "Entry"
  26.150 +        {
  26.151 +        "MsmKey" = "8:_UNDEFINED"
  26.152 +        "OwnerKey" = "8:_3EF5004CB20A413815D0A2588A19CDD4"
  26.153          "MsmSig" = "8:_UNDEFINED"
  26.154          }
  26.155          "Entry"
  26.156 @@ -130,43 +154,25 @@
  26.157          "Entry"
  26.158          {
  26.159          "MsmKey" = "8:_UNDEFINED"
  26.160 -        "OwnerKey" = "8:_3EF5004CB20A413815D0A2588A19CDD4"
  26.161 +        "OwnerKey" = "8:_099780B8FCF4932D55DA0D38B877DFC8"
  26.162          "MsmSig" = "8:_UNDEFINED"
  26.163          }
  26.164          "Entry"
  26.165          {
  26.166          "MsmKey" = "8:_UNDEFINED"
  26.167 -        "OwnerKey" = "8:_334B309CE72870CC620EAB7737749CDB"
  26.168 +        "OwnerKey" = "8:_AF682C1D0487188ED204D4D959CEB62D"
  26.169          "MsmSig" = "8:_UNDEFINED"
  26.170          }
  26.171          "Entry"
  26.172          {
  26.173          "MsmKey" = "8:_UNDEFINED"
  26.174 -        "OwnerKey" = "8:_295C95460CE37C9B5A2F236412BA3C46"
  26.175 +        "OwnerKey" = "8:_5E56A87ADF2554F4847ED3BEFD1497FC"
  26.176          "MsmSig" = "8:_UNDEFINED"
  26.177          }
  26.178          "Entry"
  26.179          {
  26.180          "MsmKey" = "8:_UNDEFINED"
  26.181 -        "OwnerKey" = "8:_7010B5ED2C1B4E82D3DBE2B590A4FC8E"
  26.182 -        "MsmSig" = "8:_UNDEFINED"
  26.183 -        }
  26.184 -        "Entry"
  26.185 -        {
  26.186 -        "MsmKey" = "8:_UNDEFINED"
  26.187 -        "OwnerKey" = "8:_63DC5055504D8E8030D07BDDC074A009"
  26.188 -        "MsmSig" = "8:_UNDEFINED"
  26.189 -        }
  26.190 -        "Entry"
  26.191 -        {
  26.192 -        "MsmKey" = "8:_UNDEFINED"
  26.193 -        "OwnerKey" = "8:_9A642A9E3FEC4B88888C4B96086D59E8"
  26.194 -        "MsmSig" = "8:_UNDEFINED"
  26.195 -        }
  26.196 -        "Entry"
  26.197 -        {
  26.198 -        "MsmKey" = "8:_UNDEFINED"
  26.199 -        "OwnerKey" = "8:_8CD29D0F38634408AC33359D27B44035"
  26.200 +        "OwnerKey" = "8:_30F0A6A7F5B98239D94FA1AA5EACCD2E"
  26.201          "MsmSig" = "8:_UNDEFINED"
  26.202          }
  26.203      }
  26.204 @@ -194,6 +200,14 @@
  26.205              "PrerequisitesLocation" = "2:1"
  26.206              "Url" = "8:"
  26.207              "ComponentsUrl" = "8:"
  26.208 +                "Items"
  26.209 +                {
  26.210 +                    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.5"
  26.211 +                    {
  26.212 +                    "Name" = "8:Microsoft .NET Framework 4.5 (x86 and x64)"
  26.213 +                    "ProductCode" = "8:.NETFramework,Version=v4.5"
  26.214 +                    }
  26.215 +                }
  26.216              }
  26.217          }
  26.218          "Release"
  26.219 @@ -218,6 +232,14 @@
  26.220              "PrerequisitesLocation" = "2:1"
  26.221              "Url" = "8:"
  26.222              "ComponentsUrl" = "8:"
  26.223 +                "Items"
  26.224 +                {
  26.225 +                    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.5"
  26.226 +                    {
  26.227 +                    "Name" = "8:Microsoft .NET Framework 4.5 (x86 and x64)"
  26.228 +                    "ProductCode" = "8:.NETFramework,Version=v4.5"
  26.229 +                    }
  26.230 +                }
  26.231              }
  26.232          }
  26.233      }
  26.234 @@ -248,15 +270,20 @@
  26.235          }
  26.236          "File"
  26.237          {
  26.238 -            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_0BDF79321B394EC0E77BF680C3F40422"
  26.239 +            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_099780B8FCF4932D55DA0D38B877DFC8"
  26.240              {
  26.241              "AssemblyRegister" = "3:1"
  26.242              "AssemblyIsInGAC" = "11:FALSE"
  26.243 -            "AssemblyAsmDisplayName" = "8:SharpDisplayClient, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86"
  26.244 +            "AssemblyAsmDisplayName" = "8:SharpDisplayIdleClient, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"
  26.245                  "ScatterAssemblies"
  26.246                  {
  26.247 +                    "_099780B8FCF4932D55DA0D38B877DFC8"
  26.248 +                    {
  26.249 +                    "Name" = "8:SharpDisplayIdleClient.exe"
  26.250 +                    "Attributes" = "3:512"
  26.251 +                    }
  26.252                  }
  26.253 -            "SourcePath" = "8:SharpDisplayClient.exe"
  26.254 +            "SourcePath" = "8:SharpDisplayIdleClient.exe"
  26.255              "TargetName" = "8:"
  26.256              "Tag" = "8:"
  26.257              "Folder" = "8:_E283B42AF1634497931184D1A685745A"
  26.258 @@ -274,15 +301,20 @@
  26.259              "IsDependency" = "11:TRUE"
  26.260              "IsolateTo" = "8:"
  26.261              }
  26.262 -            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_295C95460CE37C9B5A2F236412BA3C46"
  26.263 +            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_30F0A6A7F5B98239D94FA1AA5EACCD2E"
  26.264              {
  26.265              "AssemblyRegister" = "3:1"
  26.266              "AssemblyIsInGAC" = "11:FALSE"
  26.267 -            "AssemblyAsmDisplayName" = "8:SharpLibHid, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86"
  26.268 +            "AssemblyAsmDisplayName" = "8:SharpLibDisplay, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"
  26.269                  "ScatterAssemblies"
  26.270                  {
  26.271 +                    "_30F0A6A7F5B98239D94FA1AA5EACCD2E"
  26.272 +                    {
  26.273 +                    "Name" = "8:SharpLibDisplay.dll"
  26.274 +                    "Attributes" = "3:512"
  26.275 +                    }
  26.276                  }
  26.277 -            "SourcePath" = "8:SharpLibHid.dll"
  26.278 +            "SourcePath" = "8:SharpLibDisplay.dll"
  26.279              "TargetName" = "8:"
  26.280              "Tag" = "8:"
  26.281              "Folder" = "8:_E283B42AF1634497931184D1A685745A"
  26.282 @@ -307,6 +339,11 @@
  26.283              "AssemblyAsmDisplayName" = "8:SharpLibWin32, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86"
  26.284                  "ScatterAssemblies"
  26.285                  {
  26.286 +                    "_334B309CE72870CC620EAB7737749CDB"
  26.287 +                    {
  26.288 +                    "Name" = "8:SharpLibWin32.dll"
  26.289 +                    "Attributes" = "3:512"
  26.290 +                    }
  26.291                  }
  26.292              "SourcePath" = "8:SharpLibWin32.dll"
  26.293              "TargetName" = "8:"
  26.294 @@ -333,6 +370,11 @@
  26.295              "AssemblyAsmDisplayName" = "8:NAudio, Version=1.7.3.0, Culture=neutral, processorArchitecture=MSIL"
  26.296                  "ScatterAssemblies"
  26.297                  {
  26.298 +                    "_3EF5004CB20A413815D0A2588A19CDD4"
  26.299 +                    {
  26.300 +                    "Name" = "8:NAudio.dll"
  26.301 +                    "Attributes" = "3:512"
  26.302 +                    }
  26.303                  }
  26.304              "SourcePath" = "8:NAudio.dll"
  26.305              "TargetName" = "8:"
  26.306 @@ -352,6 +394,37 @@
  26.307              "IsDependency" = "11:TRUE"
  26.308              "IsolateTo" = "8:"
  26.309              }
  26.310 +            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_5E56A87ADF2554F4847ED3BEFD1497FC"
  26.311 +            {
  26.312 +            "AssemblyRegister" = "3:1"
  26.313 +            "AssemblyIsInGAC" = "11:FALSE"
  26.314 +            "AssemblyAsmDisplayName" = "8:PowerManager, Version=1.0.5865.26649, Culture=neutral, processorArchitecture=x86"
  26.315 +                "ScatterAssemblies"
  26.316 +                {
  26.317 +                    "_5E56A87ADF2554F4847ED3BEFD1497FC"
  26.318 +                    {
  26.319 +                    "Name" = "8:PowerManager.dll"
  26.320 +                    "Attributes" = "3:512"
  26.321 +                    }
  26.322 +                }
  26.323 +            "SourcePath" = "8:PowerManager.dll"
  26.324 +            "TargetName" = "8:"
  26.325 +            "Tag" = "8:"
  26.326 +            "Folder" = "8:_E283B42AF1634497931184D1A685745A"
  26.327 +            "Condition" = "8:"
  26.328 +            "Transitive" = "11:FALSE"
  26.329 +            "Vital" = "11:TRUE"
  26.330 +            "ReadOnly" = "11:FALSE"
  26.331 +            "Hidden" = "11:FALSE"
  26.332 +            "System" = "11:FALSE"
  26.333 +            "Permanent" = "11:FALSE"
  26.334 +            "SharedLegacy" = "11:FALSE"
  26.335 +            "PackageAs" = "3:1"
  26.336 +            "Register" = "3:1"
  26.337 +            "Exclude" = "11:FALSE"
  26.338 +            "IsDependency" = "11:TRUE"
  26.339 +            "IsolateTo" = "8:"
  26.340 +            }
  26.341              "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_63DC5055504D8E8030D07BDDC074A009"
  26.342              {
  26.343              "AssemblyRegister" = "3:1"
  26.344 @@ -359,6 +432,11 @@
  26.345              "AssemblyAsmDisplayName" = "8:System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
  26.346                  "ScatterAssemblies"
  26.347                  {
  26.348 +                    "_63DC5055504D8E8030D07BDDC074A009"
  26.349 +                    {
  26.350 +                    "Name" = "8:System.Xml.Serialization.dll"
  26.351 +                    "Attributes" = "3:512"
  26.352 +                    }
  26.353                  }
  26.354              "SourcePath" = "8:System.Xml.Serialization.dll"
  26.355              "TargetName" = "8:"
  26.356 @@ -378,6 +456,37 @@
  26.357              "IsDependency" = "11:TRUE"
  26.358              "IsolateTo" = "8:"
  26.359              }
  26.360 +            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_6F3AF0877F2A0197B2BE03FDE4C25D49"
  26.361 +            {
  26.362 +            "AssemblyRegister" = "3:1"
  26.363 +            "AssemblyIsInGAC" = "11:FALSE"
  26.364 +            "AssemblyAsmDisplayName" = "8:SharpLibNotification, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"
  26.365 +                "ScatterAssemblies"
  26.366 +                {
  26.367 +                    "_6F3AF0877F2A0197B2BE03FDE4C25D49"
  26.368 +                    {
  26.369 +                    "Name" = "8:SharpLibNotification.dll"
  26.370 +                    "Attributes" = "3:512"
  26.371 +                    }
  26.372 +                }
  26.373 +            "SourcePath" = "8:SharpLibNotification.dll"
  26.374 +            "TargetName" = "8:"
  26.375 +            "Tag" = "8:"
  26.376 +            "Folder" = "8:_E283B42AF1634497931184D1A685745A"
  26.377 +            "Condition" = "8:"
  26.378 +            "Transitive" = "11:FALSE"
  26.379 +            "Vital" = "11:TRUE"
  26.380 +            "ReadOnly" = "11:FALSE"
  26.381 +            "Hidden" = "11:FALSE"
  26.382 +            "System" = "11:FALSE"
  26.383 +            "Permanent" = "11:FALSE"
  26.384 +            "SharedLegacy" = "11:FALSE"
  26.385 +            "PackageAs" = "3:1"
  26.386 +            "Register" = "3:1"
  26.387 +            "Exclude" = "11:FALSE"
  26.388 +            "IsDependency" = "11:TRUE"
  26.389 +            "IsolateTo" = "8:"
  26.390 +            }
  26.391              "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_7010B5ED2C1B4E82D3DBE2B590A4FC8E"
  26.392              {
  26.393              "AssemblyRegister" = "3:1"
  26.394 @@ -385,6 +494,11 @@
  26.395              "AssemblyAsmDisplayName" = "8:LibCecSharp, Version=2.2.0.0, Culture=neutral, processorArchitecture=x86"
  26.396                  "ScatterAssemblies"
  26.397                  {
  26.398 +                    "_7010B5ED2C1B4E82D3DBE2B590A4FC8E"
  26.399 +                    {
  26.400 +                    "Name" = "8:LibCecSharp.dll"
  26.401 +                    "Attributes" = "3:512"
  26.402 +                    }
  26.403                  }
  26.404              "SourcePath" = "8:LibCecSharp.dll"
  26.405              "TargetName" = "8:"
  26.406 @@ -404,15 +518,20 @@
  26.407              "IsDependency" = "11:TRUE"
  26.408              "IsolateTo" = "8:"
  26.409              }
  26.410 -            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_9F004B0F8506B523869FACB14EFF064D"
  26.411 +            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_AF682C1D0487188ED204D4D959CEB62D"
  26.412              {
  26.413              "AssemblyRegister" = "3:1"
  26.414              "AssemblyIsInGAC" = "11:FALSE"
  26.415 -            "AssemblyAsmDisplayName" = "8:SharpDisplayInterface, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86"
  26.416 +            "AssemblyAsmDisplayName" = "8:SharpDisplayClient, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86"
  26.417                  "ScatterAssemblies"
  26.418                  {
  26.419 +                    "_AF682C1D0487188ED204D4D959CEB62D"
  26.420 +                    {
  26.421 +                    "Name" = "8:SharpDisplayClient.exe"
  26.422 +                    "Attributes" = "3:512"
  26.423 +                    }
  26.424                  }
  26.425 -            "SourcePath" = "8:SharpDisplayInterface.dll"
  26.426 +            "SourcePath" = "8:SharpDisplayClient.exe"
  26.427              "TargetName" = "8:"
  26.428              "Tag" = "8:"
  26.429              "Folder" = "8:_E283B42AF1634497931184D1A685745A"
  26.430 @@ -437,6 +556,11 @@
  26.431              "AssemblyAsmDisplayName" = "8:MiniDisplayInterop, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"
  26.432                  "ScatterAssemblies"
  26.433                  {
  26.434 +                    "_C2E6C8EB1D62D3C8FA1D1C243958D2D5"
  26.435 +                    {
  26.436 +                    "Name" = "8:MiniDisplayInterop.dll"
  26.437 +                    "Attributes" = "3:512"
  26.438 +                    }
  26.439                  }
  26.440              "SourcePath" = "8:MiniDisplayInterop.dll"
  26.441              "TargetName" = "8:"
  26.442 @@ -456,15 +580,20 @@
  26.443              "IsDependency" = "11:TRUE"
  26.444              "IsolateTo" = "8:"
  26.445              }
  26.446 -            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_FE5CFB2A37C82C1C9824F67FFE127C01"
  26.447 +            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_C7F134A916AA74F022E8AE46F8C27961"
  26.448              {
  26.449              "AssemblyRegister" = "3:1"
  26.450              "AssemblyIsInGAC" = "11:FALSE"
  26.451 -            "AssemblyAsmDisplayName" = "8:PowerManager, Version=1.0.5750.26884, Culture=neutral, processorArchitecture=x86"
  26.452 +            "AssemblyAsmDisplayName" = "8:SharpLibHid, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86"
  26.453                  "ScatterAssemblies"
  26.454                  {
  26.455 +                    "_C7F134A916AA74F022E8AE46F8C27961"
  26.456 +                    {
  26.457 +                    "Name" = "8:SharpLibHid.dll"
  26.458 +                    "Attributes" = "3:512"
  26.459 +                    }
  26.460                  }
  26.461 -            "SourcePath" = "8:PowerManager.dll"
  26.462 +            "SourcePath" = "8:SharpLibHid.dll"
  26.463              "TargetName" = "8:"
  26.464              "Tag" = "8:"
  26.465              "Folder" = "8:_E283B42AF1634497931184D1A685745A"
  26.466 @@ -1099,7 +1228,7 @@
  26.467          {
  26.468              "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_308A8F48F8964F139523D844FD3A1B06"
  26.469              {
  26.470 -            "SourcePath" = "8:..\\bin\\x86\\Release\\PowerManager.dll"
  26.471 +            "SourcePath" = "8:..\\bin\\x86\\Debug\\PowerManager.dll"
  26.472              "TargetName" = "8:"
  26.473              "Tag" = "8:"
  26.474              "Folder" = "8:_E283B42AF1634497931184D1A685745A"
  26.475 @@ -1125,37 +1254,9 @@
  26.476                  {
  26.477                  }
  26.478              }
  26.479 -            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_8CD29D0F38634408AC33359D27B44035"
  26.480 -            {
  26.481 -            "SourcePath" = "8:..\\bin\\x86\\Release\\obj\\x86\\Release\\SharpDisplayClient.exe"
  26.482 -            "TargetName" = "8:"
  26.483 -            "Tag" = "8:"
  26.484 -            "Folder" = "8:_E283B42AF1634497931184D1A685745A"
  26.485 -            "Condition" = "8:"
  26.486 -            "Transitive" = "11:FALSE"
  26.487 -            "Vital" = "11:TRUE"
  26.488 -            "ReadOnly" = "11:FALSE"
  26.489 -            "Hidden" = "11:FALSE"
  26.490 -            "System" = "11:FALSE"
  26.491 -            "Permanent" = "11:FALSE"
  26.492 -            "SharedLegacy" = "11:FALSE"
  26.493 -            "PackageAs" = "3:1"
  26.494 -            "Register" = "3:1"
  26.495 -            "Exclude" = "11:FALSE"
  26.496 -            "IsDependency" = "11:FALSE"
  26.497 -            "IsolateTo" = "8:"
  26.498 -            "ProjectOutputGroupRegister" = "3:1"
  26.499 -            "OutputConfiguration" = "8:"
  26.500 -            "OutputGroupCanonicalName" = "8:Built"
  26.501 -            "OutputProjectGuid" = "8:{7EE64074-8CDB-4448-B40C-81B75D6B31CD}"
  26.502 -            "ShowKeyOutput" = "11:TRUE"
  26.503 -                "ExcludeFilters"
  26.504 -                {
  26.505 -                }
  26.506 -            }
  26.507              "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_9A642A9E3FEC4B88888C4B96086D59E8"
  26.508              {
  26.509 -            "SourcePath" = "8:..\\bin\\x86\\Release\\obj\\x86\\Release\\SharpDisplayManager.exe"
  26.510 +            "SourcePath" = "8:..\\bin\\x86\\Debug\\obj\\x86\\Debug\\SharpDisplayManager.exe"
  26.511              "TargetName" = "8:"
  26.512              "Tag" = "8:"
  26.513              "Folder" = "8:_E283B42AF1634497931184D1A685745A"
    27.1 --- a/SharpDisplayManager.sln	Tue Feb 02 19:50:33 2016 +0100
    27.2 +++ b/SharpDisplayManager.sln	Wed Feb 03 13:02:48 2016 +0100
    27.3 @@ -5,14 +5,14 @@
    27.4  MinimumVisualStudioVersion = 10.0.40219.1
    27.5  Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpDisplayManager", "Server\SharpDisplayManager.csproj", "{1DA8C1B3-18C5-4E74-BE4E-0B0E15FBAF49}"
    27.6  EndProject
    27.7 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpDisplayClient", "Client\SharpDisplayClient.csproj", "{7EE64074-8CDB-4448-B40C-81B75D6B31CD}"
    27.8 -EndProject
    27.9  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PowerManager", "PowerManager\PowerManager.vcxproj", "{C174F23D-3055-49BC-B6B0-563011AF624D}"
   27.10  EndProject
   27.11  Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Setup", "Setup\Setup.vdproj", "{22C920A9-2352-4DC9-91E2-035EBD712866}"
   27.12  EndProject
   27.13  Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpDisplayIdleClient", "Clients\Idle\SharpDisplayIdleClient.csproj", "{A76579E5-AA8D-45A3-99E1-239A5C030A78}"
   27.14  EndProject
   27.15 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpDisplayClient", "Clients\Test\SharpDisplayClient.csproj", "{7EE64074-8CDB-4448-B40C-81B75D6B31CD}"
   27.16 +EndProject
   27.17  Global
   27.18  	GlobalSection(SolutionConfigurationPlatforms) = preSolution
   27.19  		Debug|Any CPU = Debug|Any CPU
   27.20 @@ -35,18 +35,6 @@
   27.21  		{1DA8C1B3-18C5-4E74-BE4E-0B0E15FBAF49}.Release|x64.Build.0 = Release|Any CPU
   27.22  		{1DA8C1B3-18C5-4E74-BE4E-0B0E15FBAF49}.Release|x86.ActiveCfg = Release|x86
   27.23  		{1DA8C1B3-18C5-4E74-BE4E-0B0E15FBAF49}.Release|x86.Build.0 = Release|x86
   27.24 -		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
   27.25 -		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
   27.26 -		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Debug|x64.ActiveCfg = Debug|Any CPU
   27.27 -		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Debug|x64.Build.0 = Debug|Any CPU
   27.28 -		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Debug|x86.ActiveCfg = Debug|x86
   27.29 -		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Debug|x86.Build.0 = Debug|x86
   27.30 -		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
   27.31 -		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Release|Any CPU.Build.0 = Release|Any CPU
   27.32 -		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Release|x64.ActiveCfg = Release|Any CPU
   27.33 -		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Release|x64.Build.0 = Release|Any CPU
   27.34 -		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Release|x86.ActiveCfg = Release|x86
   27.35 -		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Release|x86.Build.0 = Release|x86
   27.36  		{C174F23D-3055-49BC-B6B0-563011AF624D}.Debug|Any CPU.ActiveCfg = Debug|Win32
   27.37  		{C174F23D-3055-49BC-B6B0-563011AF624D}.Debug|x64.ActiveCfg = Debug|x64
   27.38  		{C174F23D-3055-49BC-B6B0-563011AF624D}.Debug|x64.Build.0 = Debug|x64
   27.39 @@ -75,6 +63,18 @@
   27.40  		{A76579E5-AA8D-45A3-99E1-239A5C030A78}.Release|x64.Build.0 = Release|Any CPU
   27.41  		{A76579E5-AA8D-45A3-99E1-239A5C030A78}.Release|x86.ActiveCfg = Release|Any CPU
   27.42  		{A76579E5-AA8D-45A3-99E1-239A5C030A78}.Release|x86.Build.0 = Release|Any CPU
   27.43 +		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
   27.44 +		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
   27.45 +		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Debug|x64.ActiveCfg = Debug|Any CPU
   27.46 +		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Debug|x64.Build.0 = Debug|Any CPU
   27.47 +		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Debug|x86.ActiveCfg = Debug|x86
   27.48 +		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Debug|x86.Build.0 = Debug|x86
   27.49 +		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
   27.50 +		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Release|Any CPU.Build.0 = Release|Any CPU
   27.51 +		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Release|x64.ActiveCfg = Release|Any CPU
   27.52 +		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Release|x64.Build.0 = Release|Any CPU
   27.53 +		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Release|x86.ActiveCfg = Release|x86
   27.54 +		{7EE64074-8CDB-4448-B40C-81B75D6B31CD}.Release|x86.Build.0 = Release|x86
   27.55  	EndGlobalSection
   27.56  	GlobalSection(SolutionProperties) = preSolution
   27.57  		HideSolutionNode = FALSE