Renaming our clients.
authorStephaneLenclud
Wed, 03 Feb 2016 13:20:16 +0100
changeset 1917ada476f3fd7
parent 190 60977f2b3ca7
child 192 d0919a87be12
Renaming our clients.
Clients/Idle/FormIdleClient.Designer.cs
Clients/Idle/FormIdleClient.cs
Clients/Idle/FormIdleClient.resx
Clients/Idle/Program.cs
Clients/Idle/SharpDisplayClientIdle.csproj
Clients/Idle/SharpDisplayIdleClient.csproj
Clients/Idle/packages.config
Clients/Test/FormClientTest.Designer.cs
Clients/Test/FormClientTest.cs
Clients/Test/FormClientTest.resx
Clients/Test/MainForm.Designer.cs
Clients/Test/MainForm.cs
Clients/Test/MainForm.resx
Clients/Test/Program.cs
Clients/Test/SharpDisplayClient.csproj
Clients/Test/SharpDisplayClientTest.csproj
Server/SharpDisplayManager.csproj
SharpDisplayManager.sln
     1.1 --- a/Clients/Idle/FormIdleClient.Designer.cs	Wed Feb 03 13:02:48 2016 +0100
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,47 +0,0 @@
     1.4 -namespace SharpDisplayIdleClient
     1.5 -{
     1.6 -    partial class FormIdleClient
     1.7 -    {
     1.8 -        /// <summary>
     1.9 -        /// Required designer variable.
    1.10 -        /// </summary>
    1.11 -        private System.ComponentModel.IContainer components = null;
    1.12 -
    1.13 -        /// <summary>
    1.14 -        /// Clean up any resources being used.
    1.15 -        /// </summary>
    1.16 -        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    1.17 -        protected override void Dispose(bool disposing)
    1.18 -        {
    1.19 -            if (disposing && (components != null))
    1.20 -            {
    1.21 -                components.Dispose();
    1.22 -            }
    1.23 -            base.Dispose(disposing);
    1.24 -        }
    1.25 -
    1.26 -        #region Windows Form Designer generated code
    1.27 -
    1.28 -        /// <summary>
    1.29 -        /// Required method for Designer support - do not modify
    1.30 -        /// the contents of this method with the code editor.
    1.31 -        /// </summary>
    1.32 -        private void InitializeComponent()
    1.33 -        {
    1.34 -            this.SuspendLayout();
    1.35 -            // 
    1.36 -            // FormIdleClient
    1.37 -            // 
    1.38 -            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    1.39 -            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    1.40 -            this.ClientSize = new System.Drawing.Size(531, 303);
    1.41 -            this.Name = "FormIdleClient";
    1.42 -            this.Text = "Sharp Display Idle Client";
    1.43 -            this.ResumeLayout(false);
    1.44 -
    1.45 -        }
    1.46 -
    1.47 -        #endregion
    1.48 -    }
    1.49 -}
    1.50 -
     2.1 --- a/Clients/Idle/FormIdleClient.cs	Wed Feb 03 13:02:48 2016 +0100
     2.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.3 @@ -1,22 +0,0 @@
     2.4 -using System;
     2.5 -using System.Collections.Generic;
     2.6 -using System.ComponentModel;
     2.7 -using System.Data;
     2.8 -using System.Drawing;
     2.9 -using System.Linq;
    2.10 -using System.Text;
    2.11 -using System.Threading.Tasks;
    2.12 -using System.Windows.Forms;
    2.13 -
    2.14 -namespace SharpDisplayIdleClient
    2.15 -{
    2.16 -    public partial class FormIdleClient : Form
    2.17 -    {
    2.18 -        public StartParams Params { get; set; }
    2.19 -
    2.20 -        public FormIdleClient()
    2.21 -        {
    2.22 -            InitializeComponent();
    2.23 -        }
    2.24 -    }
    2.25 -}
     3.1 --- a/Clients/Idle/FormIdleClient.resx	Wed Feb 03 13:02:48 2016 +0100
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,120 +0,0 @@
     3.4 -<?xml version="1.0" encoding="utf-8"?>
     3.5 -<root>
     3.6 -  <!-- 
     3.7 -    Microsoft ResX Schema 
     3.8 -    
     3.9 -    Version 2.0
    3.10 -    
    3.11 -    The primary goals of this format is to allow a simple XML format 
    3.12 -    that is mostly human readable. The generation and parsing of the 
    3.13 -    various data types are done through the TypeConverter classes 
    3.14 -    associated with the data types.
    3.15 -    
    3.16 -    Example:
    3.17 -    
    3.18 -    ... ado.net/XML headers & schema ...
    3.19 -    <resheader name="resmimetype">text/microsoft-resx</resheader>
    3.20 -    <resheader name="version">2.0</resheader>
    3.21 -    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    3.22 -    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    3.23 -    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    3.24 -    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    3.25 -    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
    3.26 -        <value>[base64 mime encoded serialized .NET Framework object]</value>
    3.27 -    </data>
    3.28 -    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    3.29 -        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
    3.30 -        <comment>This is a comment</comment>
    3.31 -    </data>
    3.32 -                
    3.33 -    There are any number of "resheader" rows that contain simple 
    3.34 -    name/value pairs.
    3.35 -    
    3.36 -    Each data row contains a name, and value. The row also contains a 
    3.37 -    type or mimetype. Type corresponds to a .NET class that support 
    3.38 -    text/value conversion through the TypeConverter architecture. 
    3.39 -    Classes that don't support this are serialized and stored with the 
    3.40 -    mimetype set.
    3.41 -    
    3.42 -    The mimetype is used for serialized objects, and tells the 
    3.43 -    ResXResourceReader how to depersist the object. This is currently not 
    3.44 -    extensible. For a given mimetype the value must be set accordingly:
    3.45 -    
    3.46 -    Note - application/x-microsoft.net.object.binary.base64 is the format 
    3.47 -    that the ResXResourceWriter will generate, however the reader can 
    3.48 -    read any of the formats listed below.
    3.49 -    
    3.50 -    mimetype: application/x-microsoft.net.object.binary.base64
    3.51 -    value   : The object must be serialized with 
    3.52 -            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
    3.53 -            : and then encoded with base64 encoding.
    3.54 -    
    3.55 -    mimetype: application/x-microsoft.net.object.soap.base64
    3.56 -    value   : The object must be serialized with 
    3.57 -            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
    3.58 -            : and then encoded with base64 encoding.
    3.59 -
    3.60 -    mimetype: application/x-microsoft.net.object.bytearray.base64
    3.61 -    value   : The object must be serialized into a byte array 
    3.62 -            : using a System.ComponentModel.TypeConverter
    3.63 -            : and then encoded with base64 encoding.
    3.64 -    -->
    3.65 -  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    3.66 -    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    3.67 -    <xsd:element name="root" msdata:IsDataSet="true">
    3.68 -      <xsd:complexType>
    3.69 -        <xsd:choice maxOccurs="unbounded">
    3.70 -          <xsd:element name="metadata">
    3.71 -            <xsd:complexType>
    3.72 -              <xsd:sequence>
    3.73 -                <xsd:element name="value" type="xsd:string" minOccurs="0" />
    3.74 -              </xsd:sequence>
    3.75 -              <xsd:attribute name="name" use="required" type="xsd:string" />
    3.76 -              <xsd:attribute name="type" type="xsd:string" />
    3.77 -              <xsd:attribute name="mimetype" type="xsd:string" />
    3.78 -              <xsd:attribute ref="xml:space" />
    3.79 -            </xsd:complexType>
    3.80 -          </xsd:element>
    3.81 -          <xsd:element name="assembly">
    3.82 -            <xsd:complexType>
    3.83 -              <xsd:attribute name="alias" type="xsd:string" />
    3.84 -              <xsd:attribute name="name" type="xsd:string" />
    3.85 -            </xsd:complexType>
    3.86 -          </xsd:element>
    3.87 -          <xsd:element name="data">
    3.88 -            <xsd:complexType>
    3.89 -              <xsd:sequence>
    3.90 -                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
    3.91 -                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
    3.92 -              </xsd:sequence>
    3.93 -              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
    3.94 -              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
    3.95 -              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
    3.96 -              <xsd:attribute ref="xml:space" />
    3.97 -            </xsd:complexType>
    3.98 -          </xsd:element>
    3.99 -          <xsd:element name="resheader">
   3.100 -            <xsd:complexType>
   3.101 -              <xsd:sequence>
   3.102 -                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
   3.103 -              </xsd:sequence>
   3.104 -              <xsd:attribute name="name" type="xsd:string" use="required" />
   3.105 -            </xsd:complexType>
   3.106 -          </xsd:element>
   3.107 -        </xsd:choice>
   3.108 -      </xsd:complexType>
   3.109 -    </xsd:element>
   3.110 -  </xsd:schema>
   3.111 -  <resheader name="resmimetype">
   3.112 -    <value>text/microsoft-resx</value>
   3.113 -  </resheader>
   3.114 -  <resheader name="version">
   3.115 -    <value>2.0</value>
   3.116 -  </resheader>
   3.117 -  <resheader name="reader">
   3.118 -    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   3.119 -  </resheader>
   3.120 -  <resheader name="writer">
   3.121 -    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   3.122 -  </resheader>
   3.123 -</root>
   3.124 \ No newline at end of file
     4.1 --- a/Clients/Idle/Program.cs	Wed Feb 03 13:02:48 2016 +0100
     4.2 +++ b/Clients/Idle/Program.cs	Wed Feb 03 13:20:16 2016 +0100
     4.3 @@ -39,7 +39,7 @@
     4.4  
     4.5              Application.EnableVisualStyles();
     4.6              Application.SetCompatibleTextRenderingDefault(false);
     4.7 -            Application.Run(new FormIdleClient());
     4.8 +            Application.Run(new FormClientIdle());
     4.9          }
    4.10  
    4.11          [STAThread]
    4.12 @@ -50,7 +50,7 @@
    4.13  
    4.14              Application.EnableVisualStyles();
    4.15              Application.SetCompatibleTextRenderingDefault(false);
    4.16 -            FormIdleClient form = new FormIdleClient();
    4.17 +            FormClientIdle form = new FormClientIdle();
    4.18              form.Params = (StartParams)aParams;
    4.19              Application.Run(form);
    4.20          }
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/Clients/Idle/SharpDisplayClientIdle.csproj	Wed Feb 03 13:20:16 2016 +0100
     5.3 @@ -0,0 +1,95 @@
     5.4 +<?xml version="1.0" encoding="utf-8"?>
     5.5 +<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
     5.6 +  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
     5.7 +  <PropertyGroup>
     5.8 +    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     5.9 +    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    5.10 +    <ProjectGuid>{A76579E5-AA8D-45A3-99E1-239A5C030A78}</ProjectGuid>
    5.11 +    <OutputType>WinExe</OutputType>
    5.12 +    <AppDesignerFolder>Properties</AppDesignerFolder>
    5.13 +    <RootNamespace>SharpDisplayIdleClient</RootNamespace>
    5.14 +    <AssemblyName>SharpDisplayIdleClient</AssemblyName>
    5.15 +    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
    5.16 +    <FileAlignment>512</FileAlignment>
    5.17 +    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    5.18 +  </PropertyGroup>
    5.19 +  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    5.20 +    <PlatformTarget>AnyCPU</PlatformTarget>
    5.21 +    <DebugSymbols>true</DebugSymbols>
    5.22 +    <DebugType>full</DebugType>
    5.23 +    <Optimize>false</Optimize>
    5.24 +    <OutputPath>bin\Debug\</OutputPath>
    5.25 +    <DefineConstants>DEBUG;TRACE</DefineConstants>
    5.26 +    <ErrorReport>prompt</ErrorReport>
    5.27 +    <WarningLevel>4</WarningLevel>
    5.28 +  </PropertyGroup>
    5.29 +  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    5.30 +    <PlatformTarget>AnyCPU</PlatformTarget>
    5.31 +    <DebugType>pdbonly</DebugType>
    5.32 +    <Optimize>true</Optimize>
    5.33 +    <OutputPath>bin\Release\</OutputPath>
    5.34 +    <DefineConstants>TRACE</DefineConstants>
    5.35 +    <ErrorReport>prompt</ErrorReport>
    5.36 +    <WarningLevel>4</WarningLevel>
    5.37 +  </PropertyGroup>
    5.38 +  <ItemGroup>
    5.39 +    <Reference Include="SharpLibDisplay, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
    5.40 +      <HintPath>..\..\packages\SharpLibDisplay.0.2.5\lib\net40\SharpLibDisplay.dll</HintPath>
    5.41 +      <Private>True</Private>
    5.42 +    </Reference>
    5.43 +    <Reference Include="System" />
    5.44 +    <Reference Include="System.Core" />
    5.45 +    <Reference Include="System.Xml.Linq" />
    5.46 +    <Reference Include="System.Data.DataSetExtensions" />
    5.47 +    <Reference Include="Microsoft.CSharp" />
    5.48 +    <Reference Include="System.Data" />
    5.49 +    <Reference Include="System.Deployment" />
    5.50 +    <Reference Include="System.Drawing" />
    5.51 +    <Reference Include="System.Net.Http" />
    5.52 +    <Reference Include="System.Windows.Forms" />
    5.53 +    <Reference Include="System.Xml" />
    5.54 +  </ItemGroup>
    5.55 +  <ItemGroup>
    5.56 +    <Compile Include="FormClientIdle.cs">
    5.57 +      <SubType>Form</SubType>
    5.58 +    </Compile>
    5.59 +    <Compile Include="FormClientIdle.Designer.cs">
    5.60 +      <DependentUpon>FormClientIdle.cs</DependentUpon>
    5.61 +    </Compile>
    5.62 +    <Compile Include="Program.cs" />
    5.63 +    <Compile Include="Properties\AssemblyInfo.cs" />
    5.64 +    <EmbeddedResource Include="FormClientIdle.resx">
    5.65 +      <DependentUpon>FormClientIdle.cs</DependentUpon>
    5.66 +    </EmbeddedResource>
    5.67 +    <EmbeddedResource Include="Properties\Resources.resx">
    5.68 +      <Generator>ResXFileCodeGenerator</Generator>
    5.69 +      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
    5.70 +      <SubType>Designer</SubType>
    5.71 +    </EmbeddedResource>
    5.72 +    <Compile Include="Properties\Resources.Designer.cs">
    5.73 +      <AutoGen>True</AutoGen>
    5.74 +      <DependentUpon>Resources.resx</DependentUpon>
    5.75 +    </Compile>
    5.76 +    <None Include="packages.config" />
    5.77 +    <None Include="Properties\Settings.settings">
    5.78 +      <Generator>SettingsSingleFileGenerator</Generator>
    5.79 +      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
    5.80 +    </None>
    5.81 +    <Compile Include="Properties\Settings.Designer.cs">
    5.82 +      <AutoGen>True</AutoGen>
    5.83 +      <DependentUpon>Settings.settings</DependentUpon>
    5.84 +      <DesignTimeSharedInput>True</DesignTimeSharedInput>
    5.85 +    </Compile>
    5.86 +  </ItemGroup>
    5.87 +  <ItemGroup>
    5.88 +    <None Include="App.config" />
    5.89 +  </ItemGroup>
    5.90 +  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    5.91 +  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
    5.92 +       Other similar extension points exist, see Microsoft.Common.targets.
    5.93 +  <Target Name="BeforeBuild">
    5.94 +  </Target>
    5.95 +  <Target Name="AfterBuild">
    5.96 +  </Target>
    5.97 +  -->
    5.98 +</Project>
    5.99 \ No newline at end of file
     6.1 --- a/Clients/Idle/SharpDisplayIdleClient.csproj	Wed Feb 03 13:02:48 2016 +0100
     6.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.3 @@ -1,90 +0,0 @@
     6.4 -<?xml version="1.0" encoding="utf-8"?>
     6.5 -<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
     6.6 -  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
     6.7 -  <PropertyGroup>
     6.8 -    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     6.9 -    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    6.10 -    <ProjectGuid>{A76579E5-AA8D-45A3-99E1-239A5C030A78}</ProjectGuid>
    6.11 -    <OutputType>WinExe</OutputType>
    6.12 -    <AppDesignerFolder>Properties</AppDesignerFolder>
    6.13 -    <RootNamespace>SharpDisplayIdleClient</RootNamespace>
    6.14 -    <AssemblyName>SharpDisplayIdleClient</AssemblyName>
    6.15 -    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
    6.16 -    <FileAlignment>512</FileAlignment>
    6.17 -    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    6.18 -  </PropertyGroup>
    6.19 -  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    6.20 -    <PlatformTarget>AnyCPU</PlatformTarget>
    6.21 -    <DebugSymbols>true</DebugSymbols>
    6.22 -    <DebugType>full</DebugType>
    6.23 -    <Optimize>false</Optimize>
    6.24 -    <OutputPath>bin\Debug\</OutputPath>
    6.25 -    <DefineConstants>DEBUG;TRACE</DefineConstants>
    6.26 -    <ErrorReport>prompt</ErrorReport>
    6.27 -    <WarningLevel>4</WarningLevel>
    6.28 -  </PropertyGroup>
    6.29 -  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    6.30 -    <PlatformTarget>AnyCPU</PlatformTarget>
    6.31 -    <DebugType>pdbonly</DebugType>
    6.32 -    <Optimize>true</Optimize>
    6.33 -    <OutputPath>bin\Release\</OutputPath>
    6.34 -    <DefineConstants>TRACE</DefineConstants>
    6.35 -    <ErrorReport>prompt</ErrorReport>
    6.36 -    <WarningLevel>4</WarningLevel>
    6.37 -  </PropertyGroup>
    6.38 -  <ItemGroup>
    6.39 -    <Reference Include="System" />
    6.40 -    <Reference Include="System.Core" />
    6.41 -    <Reference Include="System.Xml.Linq" />
    6.42 -    <Reference Include="System.Data.DataSetExtensions" />
    6.43 -    <Reference Include="Microsoft.CSharp" />
    6.44 -    <Reference Include="System.Data" />
    6.45 -    <Reference Include="System.Deployment" />
    6.46 -    <Reference Include="System.Drawing" />
    6.47 -    <Reference Include="System.Net.Http" />
    6.48 -    <Reference Include="System.Windows.Forms" />
    6.49 -    <Reference Include="System.Xml" />
    6.50 -  </ItemGroup>
    6.51 -  <ItemGroup>
    6.52 -    <Compile Include="FormIdleClient.cs">
    6.53 -      <SubType>Form</SubType>
    6.54 -    </Compile>
    6.55 -    <Compile Include="FormIdleClient.Designer.cs">
    6.56 -      <DependentUpon>FormIdleClient.cs</DependentUpon>
    6.57 -    </Compile>
    6.58 -    <Compile Include="Program.cs" />
    6.59 -    <Compile Include="Properties\AssemblyInfo.cs" />
    6.60 -    <EmbeddedResource Include="FormIdleClient.resx">
    6.61 -      <DependentUpon>FormIdleClient.cs</DependentUpon>
    6.62 -    </EmbeddedResource>
    6.63 -    <EmbeddedResource Include="Properties\Resources.resx">
    6.64 -      <Generator>ResXFileCodeGenerator</Generator>
    6.65 -      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
    6.66 -      <SubType>Designer</SubType>
    6.67 -    </EmbeddedResource>
    6.68 -    <Compile Include="Properties\Resources.Designer.cs">
    6.69 -      <AutoGen>True</AutoGen>
    6.70 -      <DependentUpon>Resources.resx</DependentUpon>
    6.71 -    </Compile>
    6.72 -    <None Include="Properties\Settings.settings">
    6.73 -      <Generator>SettingsSingleFileGenerator</Generator>
    6.74 -      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
    6.75 -    </None>
    6.76 -    <Compile Include="Properties\Settings.Designer.cs">
    6.77 -      <AutoGen>True</AutoGen>
    6.78 -      <DependentUpon>Settings.settings</DependentUpon>
    6.79 -      <DesignTimeSharedInput>True</DesignTimeSharedInput>
    6.80 -    </Compile>
    6.81 -  </ItemGroup>
    6.82 -  <ItemGroup>
    6.83 -    <None Include="App.config" />
    6.84 -  </ItemGroup>
    6.85 -  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    6.86 -  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
    6.87 -       Other similar extension points exist, see Microsoft.Common.targets.
    6.88 -  <Target Name="BeforeBuild">
    6.89 -  </Target>
    6.90 -  <Target Name="AfterBuild">
    6.91 -  </Target>
    6.92 -  -->
    6.93 -</Project>
    6.94 \ No newline at end of file
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/Clients/Idle/packages.config	Wed Feb 03 13:20:16 2016 +0100
     7.3 @@ -0,0 +1,4 @@
     7.4 +<?xml version="1.0" encoding="utf-8"?>
     7.5 +<packages>
     7.6 +  <package id="SharpLibDisplay" version="0.2.5" targetFramework="net452" />
     7.7 +</packages>
     7.8 \ No newline at end of file
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/Clients/Test/FormClientTest.Designer.cs	Wed Feb 03 13:20:16 2016 +0100
     8.3 @@ -0,0 +1,254 @@
     8.4 +namespace SharpDisplayClient
     8.5 +{
     8.6 +    partial class FormClientTest
     8.7 +    {
     8.8 +        /// <summary>
     8.9 +        /// Required designer variable.
    8.10 +        /// </summary>
    8.11 +        private System.ComponentModel.IContainer components = null;
    8.12 +
    8.13 +        /// <summary>
    8.14 +        /// Clean up any resources being used.
    8.15 +        /// </summary>
    8.16 +        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    8.17 +        protected override void Dispose(bool disposing)
    8.18 +        {
    8.19 +            if (disposing && (components != null))
    8.20 +            {
    8.21 +                components.Dispose();
    8.22 +            }
    8.23 +            base.Dispose(disposing);
    8.24 +        }
    8.25 +
    8.26 +        #region Windows Form Designer generated code
    8.27 +
    8.28 +        /// <summary>
    8.29 +        /// Required method for Designer support - do not modify
    8.30 +        /// the contents of this method with the code editor.
    8.31 +        /// </summary>
    8.32 +        private void InitializeComponent()
    8.33 +        {
    8.34 +            this.buttonSetText = new System.Windows.Forms.Button();
    8.35 +            this.textBoxTop = new System.Windows.Forms.TextBox();
    8.36 +            this.textBoxBottom = new System.Windows.Forms.TextBox();
    8.37 +            this.buttonAlignRight = new System.Windows.Forms.Button();
    8.38 +            this.buttonAlignCenter = new System.Windows.Forms.Button();
    8.39 +            this.buttonAlignLeft = new System.Windows.Forms.Button();
    8.40 +            this.buttonSetTopText = new System.Windows.Forms.Button();
    8.41 +            this.buttonLayoutUpdate = new System.Windows.Forms.Button();
    8.42 +            this.buttonSetBitmap = new System.Windows.Forms.Button();
    8.43 +            this.buttonBitmapLayout = new System.Windows.Forms.Button();
    8.44 +            this.buttonIndicatorsLayout = new System.Windows.Forms.Button();
    8.45 +            this.buttonUpdateTexts = new System.Windows.Forms.Button();
    8.46 +            this.buttonLayoutOneTextField = new System.Windows.Forms.Button();
    8.47 +            this.numericUpDownPriority = new System.Windows.Forms.NumericUpDown();
    8.48 +            this.labelPriority = new System.Windows.Forms.Label();
    8.49 +            ((System.ComponentModel.ISupportInitialize)(this.numericUpDownPriority)).BeginInit();
    8.50 +            this.SuspendLayout();
    8.51 +            // 
    8.52 +            // buttonSetText
    8.53 +            // 
    8.54 +            this.buttonSetText.Location = new System.Drawing.Point(13, 132);
    8.55 +            this.buttonSetText.Name = "buttonSetText";
    8.56 +            this.buttonSetText.Size = new System.Drawing.Size(75, 23);
    8.57 +            this.buttonSetText.TabIndex = 0;
    8.58 +            this.buttonSetText.Text = "Set Text";
    8.59 +            this.buttonSetText.UseVisualStyleBackColor = true;
    8.60 +            this.buttonSetText.Click += new System.EventHandler(this.buttonSetText_Click);
    8.61 +            // 
    8.62 +            // textBoxTop
    8.63 +            // 
    8.64 +            this.textBoxTop.Location = new System.Drawing.Point(12, 31);
    8.65 +            this.textBoxTop.Name = "textBoxTop";
    8.66 +            this.textBoxTop.Size = new System.Drawing.Size(419, 20);
    8.67 +            this.textBoxTop.TabIndex = 1;
    8.68 +            // 
    8.69 +            // textBoxBottom
    8.70 +            // 
    8.71 +            this.textBoxBottom.Location = new System.Drawing.Point(12, 57);
    8.72 +            this.textBoxBottom.Name = "textBoxBottom";
    8.73 +            this.textBoxBottom.Size = new System.Drawing.Size(419, 20);
    8.74 +            this.textBoxBottom.TabIndex = 2;
    8.75 +            // 
    8.76 +            // buttonAlignRight
    8.77 +            // 
    8.78 +            this.buttonAlignRight.Location = new System.Drawing.Point(176, 160);
    8.79 +            this.buttonAlignRight.Name = "buttonAlignRight";
    8.80 +            this.buttonAlignRight.Size = new System.Drawing.Size(75, 23);
    8.81 +            this.buttonAlignRight.TabIndex = 23;
    8.82 +            this.buttonAlignRight.Text = "Align Right";
    8.83 +            this.buttonAlignRight.UseVisualStyleBackColor = true;
    8.84 +            this.buttonAlignRight.Click += new System.EventHandler(this.buttonAlignRight_Click);
    8.85 +            // 
    8.86 +            // buttonAlignCenter
    8.87 +            // 
    8.88 +            this.buttonAlignCenter.Location = new System.Drawing.Point(94, 161);
    8.89 +            this.buttonAlignCenter.Name = "buttonAlignCenter";
    8.90 +            this.buttonAlignCenter.Size = new System.Drawing.Size(75, 23);
    8.91 +            this.buttonAlignCenter.TabIndex = 22;
    8.92 +            this.buttonAlignCenter.Text = "Align Center";
    8.93 +            this.buttonAlignCenter.UseVisualStyleBackColor = true;
    8.94 +            this.buttonAlignCenter.Click += new System.EventHandler(this.buttonAlignCenter_Click);
    8.95 +            // 
    8.96 +            // buttonAlignLeft
    8.97 +            // 
    8.98 +            this.buttonAlignLeft.Location = new System.Drawing.Point(12, 161);
    8.99 +            this.buttonAlignLeft.Name = "buttonAlignLeft";
   8.100 +            this.buttonAlignLeft.Size = new System.Drawing.Size(75, 23);
   8.101 +            this.buttonAlignLeft.TabIndex = 21;
   8.102 +            this.buttonAlignLeft.Text = "Align Left";
   8.103 +            this.buttonAlignLeft.UseVisualStyleBackColor = true;
   8.104 +            this.buttonAlignLeft.Click += new System.EventHandler(this.buttonAlignLeft_Click);
   8.105 +            // 
   8.106 +            // buttonSetTopText
   8.107 +            // 
   8.108 +            this.buttonSetTopText.Location = new System.Drawing.Point(94, 132);
   8.109 +            this.buttonSetTopText.Name = "buttonSetTopText";
   8.110 +            this.buttonSetTopText.Size = new System.Drawing.Size(75, 23);
   8.111 +            this.buttonSetTopText.TabIndex = 24;
   8.112 +            this.buttonSetTopText.Text = "Set Top Text";
   8.113 +            this.buttonSetTopText.UseVisualStyleBackColor = true;
   8.114 +            this.buttonSetTopText.Click += new System.EventHandler(this.buttonSetTopText_Click);
   8.115 +            // 
   8.116 +            // buttonLayoutUpdate
   8.117 +            // 
   8.118 +            this.buttonLayoutUpdate.Location = new System.Drawing.Point(176, 131);
   8.119 +            this.buttonLayoutUpdate.Name = "buttonLayoutUpdate";
   8.120 +            this.buttonLayoutUpdate.Size = new System.Drawing.Size(156, 23);
   8.121 +            this.buttonLayoutUpdate.TabIndex = 25;
   8.122 +            this.buttonLayoutUpdate.Text = "Layout 2x2 and Recording";
   8.123 +            this.buttonLayoutUpdate.UseVisualStyleBackColor = true;
   8.124 +            this.buttonLayoutUpdate.Click += new System.EventHandler(this.buttonLayoutUpdate_Click);
   8.125 +            // 
   8.126 +            // buttonSetBitmap
   8.127 +            // 
   8.128 +            this.buttonSetBitmap.Location = new System.Drawing.Point(12, 190);
   8.129 +            this.buttonSetBitmap.Name = "buttonSetBitmap";
   8.130 +            this.buttonSetBitmap.Size = new System.Drawing.Size(75, 23);
   8.131 +            this.buttonSetBitmap.TabIndex = 26;
   8.132 +            this.buttonSetBitmap.Text = "Set Bitmap";
   8.133 +            this.buttonSetBitmap.UseVisualStyleBackColor = true;
   8.134 +            this.buttonSetBitmap.Click += new System.EventHandler(this.buttonSetBitmap_Click);
   8.135 +            // 
   8.136 +            // buttonBitmapLayout
   8.137 +            // 
   8.138 +            this.buttonBitmapLayout.Location = new System.Drawing.Point(176, 189);
   8.139 +            this.buttonBitmapLayout.Name = "buttonBitmapLayout";
   8.140 +            this.buttonBitmapLayout.Size = new System.Drawing.Size(75, 35);
   8.141 +            this.buttonBitmapLayout.TabIndex = 27;
   8.142 +            this.buttonBitmapLayout.Text = "Bitmap Layout";
   8.143 +            this.buttonBitmapLayout.UseVisualStyleBackColor = true;
   8.144 +            this.buttonBitmapLayout.Click += new System.EventHandler(this.buttonBitmapLayout_Click);
   8.145 +            // 
   8.146 +            // buttonIndicatorsLayout
   8.147 +            // 
   8.148 +            this.buttonIndicatorsLayout.Location = new System.Drawing.Point(94, 189);
   8.149 +            this.buttonIndicatorsLayout.Name = "buttonIndicatorsLayout";
   8.150 +            this.buttonIndicatorsLayout.Size = new System.Drawing.Size(75, 35);
   8.151 +            this.buttonIndicatorsLayout.TabIndex = 28;
   8.152 +            this.buttonIndicatorsLayout.Text = "Indicators Layout ";
   8.153 +            this.buttonIndicatorsLayout.UseVisualStyleBackColor = true;
   8.154 +            this.buttonIndicatorsLayout.Click += new System.EventHandler(this.buttonIndicatorsLayout_Click);
   8.155 +            // 
   8.156 +            // buttonUpdateTexts
   8.157 +            // 
   8.158 +            this.buttonUpdateTexts.Location = new System.Drawing.Point(257, 189);
   8.159 +            this.buttonUpdateTexts.Name = "buttonUpdateTexts";
   8.160 +            this.buttonUpdateTexts.Size = new System.Drawing.Size(75, 35);
   8.161 +            this.buttonUpdateTexts.TabIndex = 29;
   8.162 +            this.buttonUpdateTexts.Text = "Update Texts";
   8.163 +            this.buttonUpdateTexts.UseVisualStyleBackColor = true;
   8.164 +            this.buttonUpdateTexts.Click += new System.EventHandler(this.buttonUpdateTexts_Click);
   8.165 +            // 
   8.166 +            // buttonLayoutOneTextField
   8.167 +            // 
   8.168 +            this.buttonLayoutOneTextField.Location = new System.Drawing.Point(257, 160);
   8.169 +            this.buttonLayoutOneTextField.Name = "buttonLayoutOneTextField";
   8.170 +            this.buttonLayoutOneTextField.Size = new System.Drawing.Size(75, 23);
   8.171 +            this.buttonLayoutOneTextField.TabIndex = 30;
   8.172 +            this.buttonLayoutOneTextField.Text = "Layout 1x1";
   8.173 +            this.buttonLayoutOneTextField.UseVisualStyleBackColor = true;
   8.174 +            this.buttonLayoutOneTextField.Click += new System.EventHandler(this.buttonLayoutOneTextField_Click);
   8.175 +            // 
   8.176 +            // numericUpDownPriority
   8.177 +            // 
   8.178 +            this.numericUpDownPriority.Increment = new decimal(new int[] {
   8.179 +            10,
   8.180 +            0,
   8.181 +            0,
   8.182 +            0});
   8.183 +            this.numericUpDownPriority.Location = new System.Drawing.Point(57, 83);
   8.184 +            this.numericUpDownPriority.Maximum = new decimal(new int[] {
   8.185 +            1000,
   8.186 +            0,
   8.187 +            0,
   8.188 +            0});
   8.189 +            this.numericUpDownPriority.Name = "numericUpDownPriority";
   8.190 +            this.numericUpDownPriority.Size = new System.Drawing.Size(60, 20);
   8.191 +            this.numericUpDownPriority.TabIndex = 31;
   8.192 +            this.numericUpDownPriority.Value = new decimal(new int[] {
   8.193 +            500,
   8.194 +            0,
   8.195 +            0,
   8.196 +            0});
   8.197 +            this.numericUpDownPriority.ValueChanged += new System.EventHandler(this.numericUpDownPriority_ValueChanged);
   8.198 +            // 
   8.199 +            // labelPriority
   8.200 +            // 
   8.201 +            this.labelPriority.AutoSize = true;
   8.202 +            this.labelPriority.Location = new System.Drawing.Point(12, 85);
   8.203 +            this.labelPriority.Name = "labelPriority";
   8.204 +            this.labelPriority.Size = new System.Drawing.Size(41, 13);
   8.205 +            this.labelPriority.TabIndex = 32;
   8.206 +            this.labelPriority.Text = "Priority:";
   8.207 +            // 
   8.208 +            // MainForm
   8.209 +            // 
   8.210 +            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
   8.211 +            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
   8.212 +            this.ClientSize = new System.Drawing.Size(443, 252);
   8.213 +            this.Controls.Add(this.labelPriority);
   8.214 +            this.Controls.Add(this.numericUpDownPriority);
   8.215 +            this.Controls.Add(this.buttonLayoutOneTextField);
   8.216 +            this.Controls.Add(this.buttonUpdateTexts);
   8.217 +            this.Controls.Add(this.buttonIndicatorsLayout);
   8.218 +            this.Controls.Add(this.buttonBitmapLayout);
   8.219 +            this.Controls.Add(this.buttonSetBitmap);
   8.220 +            this.Controls.Add(this.buttonLayoutUpdate);
   8.221 +            this.Controls.Add(this.buttonSetTopText);
   8.222 +            this.Controls.Add(this.buttonAlignRight);
   8.223 +            this.Controls.Add(this.buttonAlignCenter);
   8.224 +            this.Controls.Add(this.buttonAlignLeft);
   8.225 +            this.Controls.Add(this.textBoxBottom);
   8.226 +            this.Controls.Add(this.textBoxTop);
   8.227 +            this.Controls.Add(this.buttonSetText);
   8.228 +            this.Name = "MainForm";
   8.229 +            this.Text = "Client";
   8.230 +            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
   8.231 +            this.Load += new System.EventHandler(this.MainForm_Load);
   8.232 +            ((System.ComponentModel.ISupportInitialize)(this.numericUpDownPriority)).EndInit();
   8.233 +            this.ResumeLayout(false);
   8.234 +            this.PerformLayout();
   8.235 +
   8.236 +        }
   8.237 +
   8.238 +        #endregion
   8.239 +
   8.240 +        private System.Windows.Forms.Button buttonSetText;
   8.241 +        private System.Windows.Forms.TextBox textBoxTop;
   8.242 +        private System.Windows.Forms.TextBox textBoxBottom;
   8.243 +        private System.Windows.Forms.Button buttonAlignRight;
   8.244 +        private System.Windows.Forms.Button buttonAlignCenter;
   8.245 +        private System.Windows.Forms.Button buttonAlignLeft;
   8.246 +        private System.Windows.Forms.Button buttonSetTopText;
   8.247 +        private System.Windows.Forms.Button buttonLayoutUpdate;
   8.248 +        private System.Windows.Forms.Button buttonSetBitmap;
   8.249 +        private System.Windows.Forms.Button buttonBitmapLayout;
   8.250 +        private System.Windows.Forms.Button buttonIndicatorsLayout;
   8.251 +        private System.Windows.Forms.Button buttonUpdateTexts;
   8.252 +		private System.Windows.Forms.Button buttonLayoutOneTextField;
   8.253 +        private System.Windows.Forms.NumericUpDown numericUpDownPriority;
   8.254 +        private System.Windows.Forms.Label labelPriority;
   8.255 +    }
   8.256 +}
   8.257 +
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/Clients/Test/FormClientTest.cs	Wed Feb 03 13:20:16 2016 +0100
     9.3 @@ -0,0 +1,404 @@
     9.4 +//
     9.5 +// Copyright (C) 2014-2015 Stéphane Lenclud.
     9.6 +//
     9.7 +// This file is part of SharpDisplayManager.
     9.8 +//
     9.9 +// SharpDisplayManager is free software: you can redistribute it and/or modify
    9.10 +// it under the terms of the GNU General Public License as published by
    9.11 +// the Free Software Foundation, either version 3 of the License, or
    9.12 +// (at your option) any later version.
    9.13 +//
    9.14 +// SharpDisplayManager is distributed in the hope that it will be useful,
    9.15 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
    9.16 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    9.17 +// GNU General Public License for more details.
    9.18 +//
    9.19 +// You should have received a copy of the GNU General Public License
    9.20 +// along with SharpDisplayManager.  If not, see <http://www.gnu.org/licenses/>.
    9.21 +//
    9.22 +
    9.23 +using System;
    9.24 +using System.Collections.Generic;
    9.25 +using System.ComponentModel;
    9.26 +using System.Data;
    9.27 +using System.Drawing;
    9.28 +using System.Linq;
    9.29 +using System.Text;
    9.30 +using System.Threading.Tasks;
    9.31 +using System.Windows.Forms;
    9.32 +using System.ServiceModel;
    9.33 +using System.ServiceModel.Channels;
    9.34 +using System.Diagnostics;
    9.35 +using SharpLib.Display;
    9.36 +
    9.37 +
    9.38 +namespace SharpDisplayClient
    9.39 +{
    9.40 +    public partial class FormClientTest : Form
    9.41 +    {
    9.42 +		public StartParams Params { get; set; }
    9.43 +
    9.44 +		//
    9.45 +        Client iClient;
    9.46 +		//
    9.47 +        ContentAlignment Alignment;
    9.48 +        TextField iTextFieldTop;
    9.49 +
    9.50 +		
    9.51 +		/// <summary>
    9.52 +		/// Constructor
    9.53 +		/// </summary>
    9.54 +        public FormClientTest()
    9.55 +        {
    9.56 +            InitializeComponent();
    9.57 +            Alignment = ContentAlignment.MiddleLeft;
    9.58 +            iTextFieldTop = new TextField();
    9.59 +        }
    9.60 +
    9.61 +        public void OnCloseOrder()
    9.62 +        {
    9.63 +            CloseThreadSafe();
    9.64 +        }
    9.65 +
    9.66 +        /// <summary>
    9.67 +        /// 
    9.68 +        /// </summary>
    9.69 +        /// <param name="sender"></param>
    9.70 +        /// <param name="e"></param>
    9.71 +        private void MainForm_Load(object sender, EventArgs e)
    9.72 +        {
    9.73 +            iClient = new Client();
    9.74 +            iClient.CloseOrderEvent += OnCloseOrder;
    9.75 +            iClient.Open();
    9.76 +
    9.77 +            //Connect using unique name
    9.78 +            //string name = DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt");
    9.79 +            string name = "Client-" + (iClient.ClientCount() - 1);
    9.80 +            iClient.SetName(name);
    9.81 +            //Text = Text + ": " + name;
    9.82 +            Text = "[[" + name + "]]  " + iClient.SessionId;
    9.83 +
    9.84 +            //
    9.85 +            textBoxTop.Text = iClient.Name;
    9.86 +            textBoxBottom.Text = iClient.SessionId;
    9.87 +
    9.88 +			if (Params != null)
    9.89 +			{
    9.90 +				//Parameters where specified use them
    9.91 +				if (Params.TopText != "")
    9.92 +				{
    9.93 +					textBoxTop.Text = Params.TopText;
    9.94 +				}
    9.95 +
    9.96 +				if (Params.BottomText != "")
    9.97 +				{
    9.98 +					textBoxBottom.Text = Params.BottomText;
    9.99 +				}
   9.100 +
   9.101 +				Location = Params.Location;
   9.102 +				//
   9.103 +				SetBasicLayoutAndText();
   9.104 +			}
   9.105 +
   9.106 +        }
   9.107 +
   9.108 +
   9.109 +
   9.110 +        public delegate void CloseConnectionDelegate();
   9.111 +        public delegate void CloseDelegate();
   9.112 +
   9.113 +        /// <summary>
   9.114 +        ///
   9.115 +        /// </summary>
   9.116 +        public void CloseConnectionThreadSafe()
   9.117 +        {
   9.118 +            if (this.InvokeRequired)
   9.119 +            {
   9.120 +                //Not in the proper thread, invoke ourselves
   9.121 +                CloseConnectionDelegate d = new CloseConnectionDelegate(CloseConnectionThreadSafe);
   9.122 +                this.Invoke(d, new object[] { });
   9.123 +            }
   9.124 +            else
   9.125 +            {
   9.126 +                //We are in the proper thread
   9.127 +                if (IsClientReady())
   9.128 +                {
   9.129 +                    string sessionId = iClient.SessionId;
   9.130 +                    Trace.TraceInformation("Closing client: " + sessionId);
   9.131 +                    iClient.Close();
   9.132 +                    Trace.TraceInformation("Closed client: " + sessionId);
   9.133 +                }
   9.134 +
   9.135 +                iClient = null;
   9.136 +            }
   9.137 +        }
   9.138 +
   9.139 +        /// <summary>
   9.140 +        ///
   9.141 +        /// </summary>
   9.142 +        public void CloseThreadSafe()
   9.143 +        {
   9.144 +            if (this.InvokeRequired)
   9.145 +            {
   9.146 +                //Not in the proper thread, invoke ourselves
   9.147 +                CloseDelegate d = new CloseDelegate(CloseThreadSafe);
   9.148 +                this.Invoke(d, new object[] { });
   9.149 +            }
   9.150 +            else
   9.151 +            {
   9.152 +                //We are in the proper thread
   9.153 +                Close();
   9.154 +            }
   9.155 +        }
   9.156 +
   9.157 +
   9.158 +        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
   9.159 +        {
   9.160 +            CloseConnectionThreadSafe();
   9.161 +        }
   9.162 +
   9.163 +        public bool IsClientReady()
   9.164 +        {
   9.165 +            return (iClient != null && iClient.IsReady());
   9.166 +        }
   9.167 +
   9.168 +        private void buttonAlignLeft_Click(object sender, EventArgs e)
   9.169 +        {
   9.170 +            Alignment = ContentAlignment.MiddleLeft;
   9.171 +            textBoxTop.TextAlign = HorizontalAlignment.Left;
   9.172 +            textBoxBottom.TextAlign = HorizontalAlignment.Left;
   9.173 +        }
   9.174 +
   9.175 +        private void buttonAlignCenter_Click(object sender, EventArgs e)
   9.176 +        {
   9.177 +            Alignment = ContentAlignment.MiddleCenter;
   9.178 +            textBoxTop.TextAlign = HorizontalAlignment.Center;
   9.179 +            textBoxBottom.TextAlign = HorizontalAlignment.Center;
   9.180 +        }
   9.181 +
   9.182 +        private void buttonAlignRight_Click(object sender, EventArgs e)
   9.183 +        {
   9.184 +            Alignment = ContentAlignment.MiddleRight;
   9.185 +            textBoxTop.TextAlign = HorizontalAlignment.Right;
   9.186 +            textBoxBottom.TextAlign = HorizontalAlignment.Right;
   9.187 +        }
   9.188 +
   9.189 +        private void buttonSetTopText_Click(object sender, EventArgs e)
   9.190 +        {
   9.191 +            //TextField top = new TextField(0, textBoxTop.Text, ContentAlignment.MiddleLeft);
   9.192 +            iTextFieldTop.Text = textBoxTop.Text;
   9.193 +            iTextFieldTop.Alignment = Alignment;
   9.194 +            bool res = iClient.SetField(iTextFieldTop);
   9.195 +
   9.196 +            if (!res)
   9.197 +            {
   9.198 +                MessageBox.Show("Create you fields first", "Field update error", MessageBoxButtons.OK, MessageBoxIcon.Error);
   9.199 +            }
   9.200 +
   9.201 +
   9.202 +        }
   9.203 +
   9.204 +        private void buttonSetText_Click(object sender, EventArgs e)
   9.205 +        {
   9.206 +			SetBasicLayoutAndText();
   9.207 +        }
   9.208 +
   9.209 +		void SetBasicLayoutAndText()
   9.210 +		{
   9.211 +			//Set one column two lines layout
   9.212 +			TableLayout layout = new TableLayout(1, 2);
   9.213 +			iClient.SetLayout(layout);
   9.214 +
   9.215 +			//Set our fields
   9.216 +			iClient.CreateFields(new DataField[]
   9.217 +            {
   9.218 +                new TextField(textBoxTop.Text, Alignment, 0, 0),
   9.219 +                new TextField(textBoxBottom.Text, Alignment, 0, 1)
   9.220 +            });
   9.221 +
   9.222 +		}
   9.223 +
   9.224 +        private void buttonLayoutUpdate_Click(object sender, EventArgs e)
   9.225 +        {
   9.226 +            //Define a 2 by 2 layout
   9.227 +            TableLayout layout = new TableLayout(2,2);
   9.228 +            //Second column only takes up 25%
   9.229 +            layout.Columns[1].Width = 25F;
   9.230 +            //Send layout to server
   9.231 +            iClient.SetLayout(layout);
   9.232 +
   9.233 +            //
   9.234 +            RecordingField recording = new RecordingField();
   9.235 +            recording.IsActive = true;
   9.236 +            recording.Text = "Recording Tame of Gone until 22:05";
   9.237 +            //Set texts
   9.238 +            iClient.CreateFields(new DataField[]
   9.239 +            {                
   9.240 +                new TextField(textBoxTop.Text, Alignment, 0, 0),
   9.241 +                new TextField(textBoxBottom.Text, Alignment, 0, 1),
   9.242 +                new TextField("Third text field", Alignment, 1, 0),
   9.243 +                new TextField("Forth text field", Alignment, 1, 1),
   9.244 +                recording
   9.245 +            });
   9.246 +
   9.247 +        }
   9.248 +
   9.249 +        private void buttonSetBitmap_Click(object sender, EventArgs e)
   9.250 +        {
   9.251 +            int x1 = 0;
   9.252 +            int y1 = 0;
   9.253 +            int x2 = 256;
   9.254 +            int y2 = 32;
   9.255 +
   9.256 +            Bitmap bitmap = new Bitmap(x2,y2);
   9.257 +            Pen blackPen = new Pen(Color.Black, 3);
   9.258 +
   9.259 +            // Draw line to screen.
   9.260 +            using (var graphics = Graphics.FromImage(bitmap))
   9.261 +            {
   9.262 +                graphics.DrawLine(blackPen, x1, y1, x2, y2);
   9.263 +                graphics.DrawLine(blackPen, x1, y2, x2, y1);
   9.264 +            }
   9.265 +
   9.266 +            DataField field = new BitmapField(bitmap);
   9.267 +            //field.ColumnSpan = 2;
   9.268 +            iClient.SetField(field);
   9.269 +        }
   9.270 +
   9.271 +        private void buttonBitmapLayout_Click(object sender, EventArgs e)
   9.272 +        {
   9.273 +            SetLayoutWithBitmap();
   9.274 +        }
   9.275 +
   9.276 +        /// <summary>
   9.277 +        /// Define a layout with a bitmap field on the left and two lines of text on the right.
   9.278 +        /// </summary>
   9.279 +        private void SetLayoutWithBitmap()
   9.280 +        {
   9.281 +            //Define a 2 by 2 layout
   9.282 +            TableLayout layout = new TableLayout(2, 2);
   9.283 +            //First column only takes 25%
   9.284 +            layout.Columns[0].Width = 25F;
   9.285 +            //Second column takes up 75%
   9.286 +            layout.Columns[1].Width = 75F;
   9.287 +            //Send layout to server
   9.288 +            iClient.SetLayout(layout);
   9.289 +
   9.290 +            //Set a bitmap for our first field
   9.291 +            int x1 = 0;
   9.292 +            int y1 = 0;
   9.293 +            int x2 = 64;
   9.294 +            int y2 = 64;
   9.295 +
   9.296 +            Bitmap bitmap = new Bitmap(x2, y2);
   9.297 +            Pen blackPen = new Pen(Color.Black, 3);
   9.298 +
   9.299 +            // Draw line to screen.
   9.300 +            using (var graphics = Graphics.FromImage(bitmap))
   9.301 +            {
   9.302 +                graphics.DrawLine(blackPen, x1, y1, x2, y2);
   9.303 +                graphics.DrawLine(blackPen, x1, y2, x2, y1);
   9.304 +            }
   9.305 +
   9.306 +            //Create a bitmap field from the bitmap we just created
   9.307 +            //We want our bitmap field to span across two rows
   9.308 +            BitmapField bitmapField = new BitmapField(bitmap, 0, 0, 1, 2);
   9.309 +            
   9.310 +            //Set texts
   9.311 +            iClient.CreateFields(new DataField[]
   9.312 +            {
   9.313 +                bitmapField,
   9.314 +                new TextField(textBoxTop.Text, Alignment, 1, 0),
   9.315 +                new TextField(textBoxBottom.Text, Alignment, 1, 1)
   9.316 +            });
   9.317 +
   9.318 +        }
   9.319 +
   9.320 +        private void buttonIndicatorsLayout_Click(object sender, EventArgs e)
   9.321 +        {
   9.322 +            //Define a 2 by 4 layout
   9.323 +            TableLayout layout = new TableLayout(2, 4);
   9.324 +            //First column
   9.325 +            layout.Columns[0].Width = 87.5F;
   9.326 +            //Second column
   9.327 +            layout.Columns[1].Width = 12.5F;
   9.328 +            //Send layout to server
   9.329 +            iClient.SetLayout(layout);
   9.330 +
   9.331 +            //Create a bitmap for our indicators field
   9.332 +            int x1 = 0;
   9.333 +            int y1 = 0;
   9.334 +            int x2 = 32;
   9.335 +            int y2 = 16;
   9.336 +
   9.337 +            Bitmap bitmap = new Bitmap(x2, y2);
   9.338 +            Pen blackPen = new Pen(Color.Black, 3);
   9.339 +
   9.340 +            // Draw line to screen.
   9.341 +            using (var graphics = Graphics.FromImage(bitmap))
   9.342 +            {
   9.343 +                graphics.DrawLine(blackPen, x1, y1, x2, y2);
   9.344 +                graphics.DrawLine(blackPen, x1, y2, x2, y1);
   9.345 +            }
   9.346 +
   9.347 +            //Create a bitmap field from the bitmap we just created
   9.348 +            DataField indicator1 = new BitmapField(bitmap, 1, 0);
   9.349 +            //Create a bitmap field from the bitmap we just created
   9.350 +            DataField indicator2 = new BitmapField(bitmap, 1, 1);
   9.351 +            //Create a bitmap field from the bitmap we just created
   9.352 +            DataField indicator3 = new BitmapField(bitmap, 1, 2);
   9.353 +            //Create a bitmap field from the bitmap we just created
   9.354 +            DataField indicator4 = new BitmapField(bitmap, 1, 3);
   9.355 +
   9.356 +            //
   9.357 +            TextField textFieldTop = new TextField(textBoxTop.Text, Alignment, 0, 0, 1, 2);
   9.358 +            TextField textFieldBottom = new TextField(textBoxBottom.Text, Alignment, 0, 2, 1, 2);
   9.359 +
   9.360 +            //Set texts
   9.361 +            iClient.CreateFields(new DataField[]
   9.362 +            {
   9.363 +                textFieldTop,
   9.364 +                textFieldBottom,
   9.365 +                indicator1,
   9.366 +                indicator2,                
   9.367 +                indicator3,
   9.368 +                indicator4
   9.369 +            });
   9.370 +
   9.371 +        }
   9.372 +
   9.373 +        private void buttonUpdateTexts_Click(object sender, EventArgs e)
   9.374 +        {
   9.375 +
   9.376 +            bool res = iClient.SetFields(new DataField[]
   9.377 +            {
   9.378 +                new TextField(textBoxTop.Text, Alignment,0,0),
   9.379 +                new TextField(textBoxBottom.Text, Alignment,0,1)
   9.380 +            });
   9.381 +
   9.382 +            if (!res)
   9.383 +            {
   9.384 +                MessageBox.Show("Create you fields first", "Field update error", MessageBoxButtons.OK, MessageBoxIcon.Error);
   9.385 +            }
   9.386 +
   9.387 +        }
   9.388 +
   9.389 +		private void buttonLayoutOneTextField_Click(object sender, EventArgs e)
   9.390 +		{
   9.391 +			//Set one column one line layout
   9.392 +			TableLayout layout = new TableLayout(1, 1);
   9.393 +			iClient.SetLayout(layout);
   9.394 +
   9.395 +			//Set our fields
   9.396 +			iClient.CreateFields(new DataField[]
   9.397 +            {
   9.398 +                new TextField(textBoxTop.Text, Alignment)
   9.399 +            });
   9.400 +		}
   9.401 +
   9.402 +        private void numericUpDownPriority_ValueChanged(object sender, EventArgs e)
   9.403 +        {
   9.404 +            iClient.SetPriority((uint)numericUpDownPriority.Value);
   9.405 +        }
   9.406 +    }
   9.407 +}
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/Clients/Test/FormClientTest.resx	Wed Feb 03 13:20:16 2016 +0100
    10.3 @@ -0,0 +1,120 @@
    10.4 +<?xml version="1.0" encoding="utf-8"?>
    10.5 +<root>
    10.6 +  <!-- 
    10.7 +    Microsoft ResX Schema 
    10.8 +    
    10.9 +    Version 2.0
   10.10 +    
   10.11 +    The primary goals of this format is to allow a simple XML format 
   10.12 +    that is mostly human readable. The generation and parsing of the 
   10.13 +    various data types are done through the TypeConverter classes 
   10.14 +    associated with the data types.
   10.15 +    
   10.16 +    Example:
   10.17 +    
   10.18 +    ... ado.net/XML headers & schema ...
   10.19 +    <resheader name="resmimetype">text/microsoft-resx</resheader>
   10.20 +    <resheader name="version">2.0</resheader>
   10.21 +    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
   10.22 +    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
   10.23 +    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
   10.24 +    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
   10.25 +    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
   10.26 +        <value>[base64 mime encoded serialized .NET Framework object]</value>
   10.27 +    </data>
   10.28 +    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
   10.29 +        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
   10.30 +        <comment>This is a comment</comment>
   10.31 +    </data>
   10.32 +                
   10.33 +    There are any number of "resheader" rows that contain simple 
   10.34 +    name/value pairs.
   10.35 +    
   10.36 +    Each data row contains a name, and value. The row also contains a 
   10.37 +    type or mimetype. Type corresponds to a .NET class that support 
   10.38 +    text/value conversion through the TypeConverter architecture. 
   10.39 +    Classes that don't support this are serialized and stored with the 
   10.40 +    mimetype set.
   10.41 +    
   10.42 +    The mimetype is used for serialized objects, and tells the 
   10.43 +    ResXResourceReader how to depersist the object. This is currently not 
   10.44 +    extensible. For a given mimetype the value must be set accordingly:
   10.45 +    
   10.46 +    Note - application/x-microsoft.net.object.binary.base64 is the format 
   10.47 +    that the ResXResourceWriter will generate, however the reader can 
   10.48 +    read any of the formats listed below.
   10.49 +    
   10.50 +    mimetype: application/x-microsoft.net.object.binary.base64
   10.51 +    value   : The object must be serialized with 
   10.52 +            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
   10.53 +            : and then encoded with base64 encoding.
   10.54 +    
   10.55 +    mimetype: application/x-microsoft.net.object.soap.base64
   10.56 +    value   : The object must be serialized with 
   10.57 +            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
   10.58 +            : and then encoded with base64 encoding.
   10.59 +
   10.60 +    mimetype: application/x-microsoft.net.object.bytearray.base64
   10.61 +    value   : The object must be serialized into a byte array 
   10.62 +            : using a System.ComponentModel.TypeConverter
   10.63 +            : and then encoded with base64 encoding.
   10.64 +    -->
   10.65 +  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
   10.66 +    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
   10.67 +    <xsd:element name="root" msdata:IsDataSet="true">
   10.68 +      <xsd:complexType>
   10.69 +        <xsd:choice maxOccurs="unbounded">
   10.70 +          <xsd:element name="metadata">
   10.71 +            <xsd:complexType>
   10.72 +              <xsd:sequence>
   10.73 +                <xsd:element name="value" type="xsd:string" minOccurs="0" />
   10.74 +              </xsd:sequence>
   10.75 +              <xsd:attribute name="name" use="required" type="xsd:string" />
   10.76 +              <xsd:attribute name="type" type="xsd:string" />
   10.77 +              <xsd:attribute name="mimetype" type="xsd:string" />
   10.78 +              <xsd:attribute ref="xml:space" />
   10.79 +            </xsd:complexType>
   10.80 +          </xsd:element>
   10.81 +          <xsd:element name="assembly">
   10.82 +            <xsd:complexType>
   10.83 +              <xsd:attribute name="alias" type="xsd:string" />
   10.84 +              <xsd:attribute name="name" type="xsd:string" />
   10.85 +            </xsd:complexType>
   10.86 +          </xsd:element>
   10.87 +          <xsd:element name="data">
   10.88 +            <xsd:complexType>
   10.89 +              <xsd:sequence>
   10.90 +                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
   10.91 +                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
   10.92 +              </xsd:sequence>
   10.93 +              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
   10.94 +              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
   10.95 +              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
   10.96 +              <xsd:attribute ref="xml:space" />
   10.97 +            </xsd:complexType>
   10.98 +          </xsd:element>
   10.99 +          <xsd:element name="resheader">
  10.100 +            <xsd:complexType>
  10.101 +              <xsd:sequence>
  10.102 +                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
  10.103 +              </xsd:sequence>
  10.104 +              <xsd:attribute name="name" type="xsd:string" use="required" />
  10.105 +            </xsd:complexType>
  10.106 +          </xsd:element>
  10.107 +        </xsd:choice>
  10.108 +      </xsd:complexType>
  10.109 +    </xsd:element>
  10.110 +  </xsd:schema>
  10.111 +  <resheader name="resmimetype">
  10.112 +    <value>text/microsoft-resx</value>
  10.113 +  </resheader>
  10.114 +  <resheader name="version">
  10.115 +    <value>2.0</value>
  10.116 +  </resheader>
  10.117 +  <resheader name="reader">
  10.118 +    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  10.119 +  </resheader>
  10.120 +  <resheader name="writer">
  10.121 +    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  10.122 +  </resheader>
  10.123 +</root>
  10.124 \ No newline at end of file
    11.1 --- a/Clients/Test/MainForm.Designer.cs	Wed Feb 03 13:02:48 2016 +0100
    11.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.3 @@ -1,254 +0,0 @@
    11.4 -namespace SharpDisplayClient
    11.5 -{
    11.6 -    partial class MainForm
    11.7 -    {
    11.8 -        /// <summary>
    11.9 -        /// Required designer variable.
   11.10 -        /// </summary>
   11.11 -        private System.ComponentModel.IContainer components = null;
   11.12 -
   11.13 -        /// <summary>
   11.14 -        /// Clean up any resources being used.
   11.15 -        /// </summary>
   11.16 -        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
   11.17 -        protected override void Dispose(bool disposing)
   11.18 -        {
   11.19 -            if (disposing && (components != null))
   11.20 -            {
   11.21 -                components.Dispose();
   11.22 -            }
   11.23 -            base.Dispose(disposing);
   11.24 -        }
   11.25 -
   11.26 -        #region Windows Form Designer generated code
   11.27 -
   11.28 -        /// <summary>
   11.29 -        /// Required method for Designer support - do not modify
   11.30 -        /// the contents of this method with the code editor.
   11.31 -        /// </summary>
   11.32 -        private void InitializeComponent()
   11.33 -        {
   11.34 -            this.buttonSetText = new System.Windows.Forms.Button();
   11.35 -            this.textBoxTop = new System.Windows.Forms.TextBox();
   11.36 -            this.textBoxBottom = new System.Windows.Forms.TextBox();
   11.37 -            this.buttonAlignRight = new System.Windows.Forms.Button();
   11.38 -            this.buttonAlignCenter = new System.Windows.Forms.Button();
   11.39 -            this.buttonAlignLeft = new System.Windows.Forms.Button();
   11.40 -            this.buttonSetTopText = new System.Windows.Forms.Button();
   11.41 -            this.buttonLayoutUpdate = new System.Windows.Forms.Button();
   11.42 -            this.buttonSetBitmap = new System.Windows.Forms.Button();
   11.43 -            this.buttonBitmapLayout = new System.Windows.Forms.Button();
   11.44 -            this.buttonIndicatorsLayout = new System.Windows.Forms.Button();
   11.45 -            this.buttonUpdateTexts = new System.Windows.Forms.Button();
   11.46 -            this.buttonLayoutOneTextField = new System.Windows.Forms.Button();
   11.47 -            this.numericUpDownPriority = new System.Windows.Forms.NumericUpDown();
   11.48 -            this.labelPriority = new System.Windows.Forms.Label();
   11.49 -            ((System.ComponentModel.ISupportInitialize)(this.numericUpDownPriority)).BeginInit();
   11.50 -            this.SuspendLayout();
   11.51 -            // 
   11.52 -            // buttonSetText
   11.53 -            // 
   11.54 -            this.buttonSetText.Location = new System.Drawing.Point(13, 132);
   11.55 -            this.buttonSetText.Name = "buttonSetText";
   11.56 -            this.buttonSetText.Size = new System.Drawing.Size(75, 23);
   11.57 -            this.buttonSetText.TabIndex = 0;
   11.58 -            this.buttonSetText.Text = "Set Text";
   11.59 -            this.buttonSetText.UseVisualStyleBackColor = true;
   11.60 -            this.buttonSetText.Click += new System.EventHandler(this.buttonSetText_Click);
   11.61 -            // 
   11.62 -            // textBoxTop
   11.63 -            // 
   11.64 -            this.textBoxTop.Location = new System.Drawing.Point(12, 31);
   11.65 -            this.textBoxTop.Name = "textBoxTop";
   11.66 -            this.textBoxTop.Size = new System.Drawing.Size(419, 20);
   11.67 -            this.textBoxTop.TabIndex = 1;
   11.68 -            // 
   11.69 -            // textBoxBottom
   11.70 -            // 
   11.71 -            this.textBoxBottom.Location = new System.Drawing.Point(12, 57);
   11.72 -            this.textBoxBottom.Name = "textBoxBottom";
   11.73 -            this.textBoxBottom.Size = new System.Drawing.Size(419, 20);
   11.74 -            this.textBoxBottom.TabIndex = 2;
   11.75 -            // 
   11.76 -            // buttonAlignRight
   11.77 -            // 
   11.78 -            this.buttonAlignRight.Location = new System.Drawing.Point(176, 160);
   11.79 -            this.buttonAlignRight.Name = "buttonAlignRight";
   11.80 -            this.buttonAlignRight.Size = new System.Drawing.Size(75, 23);
   11.81 -            this.buttonAlignRight.TabIndex = 23;
   11.82 -            this.buttonAlignRight.Text = "Align Right";
   11.83 -            this.buttonAlignRight.UseVisualStyleBackColor = true;
   11.84 -            this.buttonAlignRight.Click += new System.EventHandler(this.buttonAlignRight_Click);
   11.85 -            // 
   11.86 -            // buttonAlignCenter
   11.87 -            // 
   11.88 -            this.buttonAlignCenter.Location = new System.Drawing.Point(94, 161);
   11.89 -            this.buttonAlignCenter.Name = "buttonAlignCenter";
   11.90 -            this.buttonAlignCenter.Size = new System.Drawing.Size(75, 23);
   11.91 -            this.buttonAlignCenter.TabIndex = 22;
   11.92 -            this.buttonAlignCenter.Text = "Align Center";
   11.93 -            this.buttonAlignCenter.UseVisualStyleBackColor = true;
   11.94 -            this.buttonAlignCenter.Click += new System.EventHandler(this.buttonAlignCenter_Click);
   11.95 -            // 
   11.96 -            // buttonAlignLeft
   11.97 -            // 
   11.98 -            this.buttonAlignLeft.Location = new System.Drawing.Point(12, 161);
   11.99 -            this.buttonAlignLeft.Name = "buttonAlignLeft";
  11.100 -            this.buttonAlignLeft.Size = new System.Drawing.Size(75, 23);
  11.101 -            this.buttonAlignLeft.TabIndex = 21;
  11.102 -            this.buttonAlignLeft.Text = "Align Left";
  11.103 -            this.buttonAlignLeft.UseVisualStyleBackColor = true;
  11.104 -            this.buttonAlignLeft.Click += new System.EventHandler(this.buttonAlignLeft_Click);
  11.105 -            // 
  11.106 -            // buttonSetTopText
  11.107 -            // 
  11.108 -            this.buttonSetTopText.Location = new System.Drawing.Point(94, 132);
  11.109 -            this.buttonSetTopText.Name = "buttonSetTopText";
  11.110 -            this.buttonSetTopText.Size = new System.Drawing.Size(75, 23);
  11.111 -            this.buttonSetTopText.TabIndex = 24;
  11.112 -            this.buttonSetTopText.Text = "Set Top Text";
  11.113 -            this.buttonSetTopText.UseVisualStyleBackColor = true;
  11.114 -            this.buttonSetTopText.Click += new System.EventHandler(this.buttonSetTopText_Click);
  11.115 -            // 
  11.116 -            // buttonLayoutUpdate
  11.117 -            // 
  11.118 -            this.buttonLayoutUpdate.Location = new System.Drawing.Point(176, 131);
  11.119 -            this.buttonLayoutUpdate.Name = "buttonLayoutUpdate";
  11.120 -            this.buttonLayoutUpdate.Size = new System.Drawing.Size(156, 23);
  11.121 -            this.buttonLayoutUpdate.TabIndex = 25;
  11.122 -            this.buttonLayoutUpdate.Text = "Layout 2x2 and Recording";
  11.123 -            this.buttonLayoutUpdate.UseVisualStyleBackColor = true;
  11.124 -            this.buttonLayoutUpdate.Click += new System.EventHandler(this.buttonLayoutUpdate_Click);
  11.125 -            // 
  11.126 -            // buttonSetBitmap
  11.127 -            // 
  11.128 -            this.buttonSetBitmap.Location = new System.Drawing.Point(12, 190);
  11.129 -            this.buttonSetBitmap.Name = "buttonSetBitmap";
  11.130 -            this.buttonSetBitmap.Size = new System.Drawing.Size(75, 23);
  11.131 -            this.buttonSetBitmap.TabIndex = 26;
  11.132 -            this.buttonSetBitmap.Text = "Set Bitmap";
  11.133 -            this.buttonSetBitmap.UseVisualStyleBackColor = true;
  11.134 -            this.buttonSetBitmap.Click += new System.EventHandler(this.buttonSetBitmap_Click);
  11.135 -            // 
  11.136 -            // buttonBitmapLayout
  11.137 -            // 
  11.138 -            this.buttonBitmapLayout.Location = new System.Drawing.Point(176, 189);
  11.139 -            this.buttonBitmapLayout.Name = "buttonBitmapLayout";
  11.140 -            this.buttonBitmapLayout.Size = new System.Drawing.Size(75, 35);
  11.141 -            this.buttonBitmapLayout.TabIndex = 27;
  11.142 -            this.buttonBitmapLayout.Text = "Bitmap Layout";
  11.143 -            this.buttonBitmapLayout.UseVisualStyleBackColor = true;
  11.144 -            this.buttonBitmapLayout.Click += new System.EventHandler(this.buttonBitmapLayout_Click);
  11.145 -            // 
  11.146 -            // buttonIndicatorsLayout
  11.147 -            // 
  11.148 -            this.buttonIndicatorsLayout.Location = new System.Drawing.Point(94, 189);
  11.149 -            this.buttonIndicatorsLayout.Name = "buttonIndicatorsLayout";
  11.150 -            this.buttonIndicatorsLayout.Size = new System.Drawing.Size(75, 35);
  11.151 -            this.buttonIndicatorsLayout.TabIndex = 28;
  11.152 -            this.buttonIndicatorsLayout.Text = "Indicators Layout ";
  11.153 -            this.buttonIndicatorsLayout.UseVisualStyleBackColor = true;
  11.154 -            this.buttonIndicatorsLayout.Click += new System.EventHandler(this.buttonIndicatorsLayout_Click);
  11.155 -            // 
  11.156 -            // buttonUpdateTexts
  11.157 -            // 
  11.158 -            this.buttonUpdateTexts.Location = new System.Drawing.Point(257, 189);
  11.159 -            this.buttonUpdateTexts.Name = "buttonUpdateTexts";
  11.160 -            this.buttonUpdateTexts.Size = new System.Drawing.Size(75, 35);
  11.161 -            this.buttonUpdateTexts.TabIndex = 29;
  11.162 -            this.buttonUpdateTexts.Text = "Update Texts";
  11.163 -            this.buttonUpdateTexts.UseVisualStyleBackColor = true;
  11.164 -            this.buttonUpdateTexts.Click += new System.EventHandler(this.buttonUpdateTexts_Click);
  11.165 -            // 
  11.166 -            // buttonLayoutOneTextField
  11.167 -            // 
  11.168 -            this.buttonLayoutOneTextField.Location = new System.Drawing.Point(257, 160);
  11.169 -            this.buttonLayoutOneTextField.Name = "buttonLayoutOneTextField";
  11.170 -            this.buttonLayoutOneTextField.Size = new System.Drawing.Size(75, 23);
  11.171 -            this.buttonLayoutOneTextField.TabIndex = 30;
  11.172 -            this.buttonLayoutOneTextField.Text = "Layout 1x1";
  11.173 -            this.buttonLayoutOneTextField.UseVisualStyleBackColor = true;
  11.174 -            this.buttonLayoutOneTextField.Click += new System.EventHandler(this.buttonLayoutOneTextField_Click);
  11.175 -            // 
  11.176 -            // numericUpDownPriority
  11.177 -            // 
  11.178 -            this.numericUpDownPriority.Increment = new decimal(new int[] {
  11.179 -            10,
  11.180 -            0,
  11.181 -            0,
  11.182 -            0});
  11.183 -            this.numericUpDownPriority.Location = new System.Drawing.Point(57, 83);
  11.184 -            this.numericUpDownPriority.Maximum = new decimal(new int[] {
  11.185 -            1000,
  11.186 -            0,
  11.187 -            0,
  11.188 -            0});
  11.189 -            this.numericUpDownPriority.Name = "numericUpDownPriority";
  11.190 -            this.numericUpDownPriority.Size = new System.Drawing.Size(60, 20);
  11.191 -            this.numericUpDownPriority.TabIndex = 31;
  11.192 -            this.numericUpDownPriority.Value = new decimal(new int[] {
  11.193 -            500,
  11.194 -            0,
  11.195 -            0,
  11.196 -            0});
  11.197 -            this.numericUpDownPriority.ValueChanged += new System.EventHandler(this.numericUpDownPriority_ValueChanged);
  11.198 -            // 
  11.199 -            // labelPriority
  11.200 -            // 
  11.201 -            this.labelPriority.AutoSize = true;
  11.202 -            this.labelPriority.Location = new System.Drawing.Point(12, 85);
  11.203 -            this.labelPriority.Name = "labelPriority";
  11.204 -            this.labelPriority.Size = new System.Drawing.Size(41, 13);
  11.205 -            this.labelPriority.TabIndex = 32;
  11.206 -            this.labelPriority.Text = "Priority:";
  11.207 -            // 
  11.208 -            // MainForm
  11.209 -            // 
  11.210 -            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
  11.211 -            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
  11.212 -            this.ClientSize = new System.Drawing.Size(443, 252);
  11.213 -            this.Controls.Add(this.labelPriority);
  11.214 -            this.Controls.Add(this.numericUpDownPriority);
  11.215 -            this.Controls.Add(this.buttonLayoutOneTextField);
  11.216 -            this.Controls.Add(this.buttonUpdateTexts);
  11.217 -            this.Controls.Add(this.buttonIndicatorsLayout);
  11.218 -            this.Controls.Add(this.buttonBitmapLayout);
  11.219 -            this.Controls.Add(this.buttonSetBitmap);
  11.220 -            this.Controls.Add(this.buttonLayoutUpdate);
  11.221 -            this.Controls.Add(this.buttonSetTopText);
  11.222 -            this.Controls.Add(this.buttonAlignRight);
  11.223 -            this.Controls.Add(this.buttonAlignCenter);
  11.224 -            this.Controls.Add(this.buttonAlignLeft);
  11.225 -            this.Controls.Add(this.textBoxBottom);
  11.226 -            this.Controls.Add(this.textBoxTop);
  11.227 -            this.Controls.Add(this.buttonSetText);
  11.228 -            this.Name = "MainForm";
  11.229 -            this.Text = "Client";
  11.230 -            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
  11.231 -            this.Load += new System.EventHandler(this.MainForm_Load);
  11.232 -            ((System.ComponentModel.ISupportInitialize)(this.numericUpDownPriority)).EndInit();
  11.233 -            this.ResumeLayout(false);
  11.234 -            this.PerformLayout();
  11.235 -
  11.236 -        }
  11.237 -
  11.238 -        #endregion
  11.239 -
  11.240 -        private System.Windows.Forms.Button buttonSetText;
  11.241 -        private System.Windows.Forms.TextBox textBoxTop;
  11.242 -        private System.Windows.Forms.TextBox textBoxBottom;
  11.243 -        private System.Windows.Forms.Button buttonAlignRight;
  11.244 -        private System.Windows.Forms.Button buttonAlignCenter;
  11.245 -        private System.Windows.Forms.Button buttonAlignLeft;
  11.246 -        private System.Windows.Forms.Button buttonSetTopText;
  11.247 -        private System.Windows.Forms.Button buttonLayoutUpdate;
  11.248 -        private System.Windows.Forms.Button buttonSetBitmap;
  11.249 -        private System.Windows.Forms.Button buttonBitmapLayout;
  11.250 -        private System.Windows.Forms.Button buttonIndicatorsLayout;
  11.251 -        private System.Windows.Forms.Button buttonUpdateTexts;
  11.252 -		private System.Windows.Forms.Button buttonLayoutOneTextField;
  11.253 -        private System.Windows.Forms.NumericUpDown numericUpDownPriority;
  11.254 -        private System.Windows.Forms.Label labelPriority;
  11.255 -    }
  11.256 -}
  11.257 -
    12.1 --- a/Clients/Test/MainForm.cs	Wed Feb 03 13:02:48 2016 +0100
    12.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.3 @@ -1,404 +0,0 @@
    12.4 -//
    12.5 -// Copyright (C) 2014-2015 Stéphane Lenclud.
    12.6 -//
    12.7 -// This file is part of SharpDisplayManager.
    12.8 -//
    12.9 -// SharpDisplayManager is free software: you can redistribute it and/or modify
   12.10 -// it under the terms of the GNU General Public License as published by
   12.11 -// the Free Software Foundation, either version 3 of the License, or
   12.12 -// (at your option) any later version.
   12.13 -//
   12.14 -// SharpDisplayManager is distributed in the hope that it will be useful,
   12.15 -// but WITHOUT ANY WARRANTY; without even the implied warranty of
   12.16 -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   12.17 -// GNU General Public License for more details.
   12.18 -//
   12.19 -// You should have received a copy of the GNU General Public License
   12.20 -// along with SharpDisplayManager.  If not, see <http://www.gnu.org/licenses/>.
   12.21 -//
   12.22 -
   12.23 -using System;
   12.24 -using System.Collections.Generic;
   12.25 -using System.ComponentModel;
   12.26 -using System.Data;
   12.27 -using System.Drawing;
   12.28 -using System.Linq;
   12.29 -using System.Text;
   12.30 -using System.Threading.Tasks;
   12.31 -using System.Windows.Forms;
   12.32 -using System.ServiceModel;
   12.33 -using System.ServiceModel.Channels;
   12.34 -using System.Diagnostics;
   12.35 -using SharpLib.Display;
   12.36 -
   12.37 -
   12.38 -namespace SharpDisplayClient
   12.39 -{
   12.40 -    public partial class MainForm : Form
   12.41 -    {
   12.42 -		public StartParams Params { get; set; }
   12.43 -
   12.44 -		//
   12.45 -        Client iClient;
   12.46 -		//
   12.47 -        ContentAlignment Alignment;
   12.48 -        TextField iTextFieldTop;
   12.49 -
   12.50 -		
   12.51 -		/// <summary>
   12.52 -		/// Constructor
   12.53 -		/// </summary>
   12.54 -        public MainForm()
   12.55 -        {
   12.56 -            InitializeComponent();
   12.57 -            Alignment = ContentAlignment.MiddleLeft;
   12.58 -            iTextFieldTop = new TextField();
   12.59 -        }
   12.60 -
   12.61 -        public void OnCloseOrder()
   12.62 -        {
   12.63 -            CloseThreadSafe();
   12.64 -        }
   12.65 -
   12.66 -        /// <summary>
   12.67 -        /// 
   12.68 -        /// </summary>
   12.69 -        /// <param name="sender"></param>
   12.70 -        /// <param name="e"></param>
   12.71 -        private void MainForm_Load(object sender, EventArgs e)
   12.72 -        {
   12.73 -            iClient = new Client();
   12.74 -            iClient.CloseOrderEvent += OnCloseOrder;
   12.75 -            iClient.Open();
   12.76 -
   12.77 -            //Connect using unique name
   12.78 -            //string name = DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt");
   12.79 -            string name = "Client-" + (iClient.ClientCount() - 1);
   12.80 -            iClient.SetName(name);
   12.81 -            //Text = Text + ": " + name;
   12.82 -            Text = "[[" + name + "]]  " + iClient.SessionId;
   12.83 -
   12.84 -            //
   12.85 -            textBoxTop.Text = iClient.Name;
   12.86 -            textBoxBottom.Text = iClient.SessionId;
   12.87 -
   12.88 -			if (Params != null)
   12.89 -			{
   12.90 -				//Parameters where specified use them
   12.91 -				if (Params.TopText != "")
   12.92 -				{
   12.93 -					textBoxTop.Text = Params.TopText;
   12.94 -				}
   12.95 -
   12.96 -				if (Params.BottomText != "")
   12.97 -				{
   12.98 -					textBoxBottom.Text = Params.BottomText;
   12.99 -				}
  12.100 -
  12.101 -				Location = Params.Location;
  12.102 -				//
  12.103 -				SetBasicLayoutAndText();
  12.104 -			}
  12.105 -
  12.106 -        }
  12.107 -
  12.108 -
  12.109 -
  12.110 -        public delegate void CloseConnectionDelegate();
  12.111 -        public delegate void CloseDelegate();
  12.112 -
  12.113 -        /// <summary>
  12.114 -        ///
  12.115 -        /// </summary>
  12.116 -        public void CloseConnectionThreadSafe()
  12.117 -        {
  12.118 -            if (this.InvokeRequired)
  12.119 -            {
  12.120 -                //Not in the proper thread, invoke ourselves
  12.121 -                CloseConnectionDelegate d = new CloseConnectionDelegate(CloseConnectionThreadSafe);
  12.122 -                this.Invoke(d, new object[] { });
  12.123 -            }
  12.124 -            else
  12.125 -            {
  12.126 -                //We are in the proper thread
  12.127 -                if (IsClientReady())
  12.128 -                {
  12.129 -                    string sessionId = iClient.SessionId;
  12.130 -                    Trace.TraceInformation("Closing client: " + sessionId);
  12.131 -                    iClient.Close();
  12.132 -                    Trace.TraceInformation("Closed client: " + sessionId);
  12.133 -                }
  12.134 -
  12.135 -                iClient = null;
  12.136 -            }
  12.137 -        }
  12.138 -
  12.139 -        /// <summary>
  12.140 -        ///
  12.141 -        /// </summary>
  12.142 -        public void CloseThreadSafe()
  12.143 -        {
  12.144 -            if (this.InvokeRequired)
  12.145 -            {
  12.146 -                //Not in the proper thread, invoke ourselves
  12.147 -                CloseDelegate d = new CloseDelegate(CloseThreadSafe);
  12.148 -                this.Invoke(d, new object[] { });
  12.149 -            }
  12.150 -            else
  12.151 -            {
  12.152 -                //We are in the proper thread
  12.153 -                Close();
  12.154 -            }
  12.155 -        }
  12.156 -
  12.157 -
  12.158 -        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
  12.159 -        {
  12.160 -            CloseConnectionThreadSafe();
  12.161 -        }
  12.162 -
  12.163 -        public bool IsClientReady()
  12.164 -        {
  12.165 -            return (iClient != null && iClient.IsReady());
  12.166 -        }
  12.167 -
  12.168 -        private void buttonAlignLeft_Click(object sender, EventArgs e)
  12.169 -        {
  12.170 -            Alignment = ContentAlignment.MiddleLeft;
  12.171 -            textBoxTop.TextAlign = HorizontalAlignment.Left;
  12.172 -            textBoxBottom.TextAlign = HorizontalAlignment.Left;
  12.173 -        }
  12.174 -
  12.175 -        private void buttonAlignCenter_Click(object sender, EventArgs e)
  12.176 -        {
  12.177 -            Alignment = ContentAlignment.MiddleCenter;
  12.178 -            textBoxTop.TextAlign = HorizontalAlignment.Center;
  12.179 -            textBoxBottom.TextAlign = HorizontalAlignment.Center;
  12.180 -        }
  12.181 -
  12.182 -        private void buttonAlignRight_Click(object sender, EventArgs e)
  12.183 -        {
  12.184 -            Alignment = ContentAlignment.MiddleRight;
  12.185 -            textBoxTop.TextAlign = HorizontalAlignment.Right;
  12.186 -            textBoxBottom.TextAlign = HorizontalAlignment.Right;
  12.187 -        }
  12.188 -
  12.189 -        private void buttonSetTopText_Click(object sender, EventArgs e)
  12.190 -        {
  12.191 -            //TextField top = new TextField(0, textBoxTop.Text, ContentAlignment.MiddleLeft);
  12.192 -            iTextFieldTop.Text = textBoxTop.Text;
  12.193 -            iTextFieldTop.Alignment = Alignment;
  12.194 -            bool res = iClient.SetField(iTextFieldTop);
  12.195 -
  12.196 -            if (!res)
  12.197 -            {
  12.198 -                MessageBox.Show("Create you fields first", "Field update error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  12.199 -            }
  12.200 -
  12.201 -
  12.202 -        }
  12.203 -
  12.204 -        private void buttonSetText_Click(object sender, EventArgs e)
  12.205 -        {
  12.206 -			SetBasicLayoutAndText();
  12.207 -        }
  12.208 -
  12.209 -		void SetBasicLayoutAndText()
  12.210 -		{
  12.211 -			//Set one column two lines layout
  12.212 -			TableLayout layout = new TableLayout(1, 2);
  12.213 -			iClient.SetLayout(layout);
  12.214 -
  12.215 -			//Set our fields
  12.216 -			iClient.CreateFields(new DataField[]
  12.217 -            {
  12.218 -                new TextField(textBoxTop.Text, Alignment, 0, 0),
  12.219 -                new TextField(textBoxBottom.Text, Alignment, 0, 1)
  12.220 -            });
  12.221 -
  12.222 -		}
  12.223 -
  12.224 -        private void buttonLayoutUpdate_Click(object sender, EventArgs e)
  12.225 -        {
  12.226 -            //Define a 2 by 2 layout
  12.227 -            TableLayout layout = new TableLayout(2,2);
  12.228 -            //Second column only takes up 25%
  12.229 -            layout.Columns[1].Width = 25F;
  12.230 -            //Send layout to server
  12.231 -            iClient.SetLayout(layout);
  12.232 -
  12.233 -            //
  12.234 -            RecordingField recording = new RecordingField();
  12.235 -            recording.IsActive = true;
  12.236 -            recording.Text = "Recording Tame of Gone until 22:05";
  12.237 -            //Set texts
  12.238 -            iClient.CreateFields(new DataField[]
  12.239 -            {                
  12.240 -                new TextField(textBoxTop.Text, Alignment, 0, 0),
  12.241 -                new TextField(textBoxBottom.Text, Alignment, 0, 1),
  12.242 -                new TextField("Third text field", Alignment, 1, 0),
  12.243 -                new TextField("Forth text field", Alignment, 1, 1),
  12.244 -                recording
  12.245 -            });
  12.246 -
  12.247 -        }
  12.248 -
  12.249 -        private void buttonSetBitmap_Click(object sender, EventArgs e)
  12.250 -        {
  12.251 -            int x1 = 0;
  12.252 -            int y1 = 0;
  12.253 -            int x2 = 256;
  12.254 -            int y2 = 32;
  12.255 -
  12.256 -            Bitmap bitmap = new Bitmap(x2,y2);
  12.257 -            Pen blackPen = new Pen(Color.Black, 3);
  12.258 -
  12.259 -            // Draw line to screen.
  12.260 -            using (var graphics = Graphics.FromImage(bitmap))
  12.261 -            {
  12.262 -                graphics.DrawLine(blackPen, x1, y1, x2, y2);
  12.263 -                graphics.DrawLine(blackPen, x1, y2, x2, y1);
  12.264 -            }
  12.265 -
  12.266 -            DataField field = new BitmapField(bitmap);
  12.267 -            //field.ColumnSpan = 2;
  12.268 -            iClient.SetField(field);
  12.269 -        }
  12.270 -
  12.271 -        private void buttonBitmapLayout_Click(object sender, EventArgs e)
  12.272 -        {
  12.273 -            SetLayoutWithBitmap();
  12.274 -        }
  12.275 -
  12.276 -        /// <summary>
  12.277 -        /// Define a layout with a bitmap field on the left and two lines of text on the right.
  12.278 -        /// </summary>
  12.279 -        private void SetLayoutWithBitmap()
  12.280 -        {
  12.281 -            //Define a 2 by 2 layout
  12.282 -            TableLayout layout = new TableLayout(2, 2);
  12.283 -            //First column only takes 25%
  12.284 -            layout.Columns[0].Width = 25F;
  12.285 -            //Second column takes up 75%
  12.286 -            layout.Columns[1].Width = 75F;
  12.287 -            //Send layout to server
  12.288 -            iClient.SetLayout(layout);
  12.289 -
  12.290 -            //Set a bitmap for our first field
  12.291 -            int x1 = 0;
  12.292 -            int y1 = 0;
  12.293 -            int x2 = 64;
  12.294 -            int y2 = 64;
  12.295 -
  12.296 -            Bitmap bitmap = new Bitmap(x2, y2);
  12.297 -            Pen blackPen = new Pen(Color.Black, 3);
  12.298 -
  12.299 -            // Draw line to screen.
  12.300 -            using (var graphics = Graphics.FromImage(bitmap))
  12.301 -            {
  12.302 -                graphics.DrawLine(blackPen, x1, y1, x2, y2);
  12.303 -                graphics.DrawLine(blackPen, x1, y2, x2, y1);
  12.304 -            }
  12.305 -
  12.306 -            //Create a bitmap field from the bitmap we just created
  12.307 -            //We want our bitmap field to span across two rows
  12.308 -            BitmapField bitmapField = new BitmapField(bitmap, 0, 0, 1, 2);
  12.309 -            
  12.310 -            //Set texts
  12.311 -            iClient.CreateFields(new DataField[]
  12.312 -            {
  12.313 -                bitmapField,
  12.314 -                new TextField(textBoxTop.Text, Alignment, 1, 0),
  12.315 -                new TextField(textBoxBottom.Text, Alignment, 1, 1)
  12.316 -            });
  12.317 -
  12.318 -        }
  12.319 -
  12.320 -        private void buttonIndicatorsLayout_Click(object sender, EventArgs e)
  12.321 -        {
  12.322 -            //Define a 2 by 4 layout
  12.323 -            TableLayout layout = new TableLayout(2, 4);
  12.324 -            //First column
  12.325 -            layout.Columns[0].Width = 87.5F;
  12.326 -            //Second column
  12.327 -            layout.Columns[1].Width = 12.5F;
  12.328 -            //Send layout to server
  12.329 -            iClient.SetLayout(layout);
  12.330 -
  12.331 -            //Create a bitmap for our indicators field
  12.332 -            int x1 = 0;
  12.333 -            int y1 = 0;
  12.334 -            int x2 = 32;
  12.335 -            int y2 = 16;
  12.336 -
  12.337 -            Bitmap bitmap = new Bitmap(x2, y2);
  12.338 -            Pen blackPen = new Pen(Color.Black, 3);
  12.339 -
  12.340 -            // Draw line to screen.
  12.341 -            using (var graphics = Graphics.FromImage(bitmap))
  12.342 -            {
  12.343 -                graphics.DrawLine(blackPen, x1, y1, x2, y2);
  12.344 -                graphics.DrawLine(blackPen, x1, y2, x2, y1);
  12.345 -            }
  12.346 -
  12.347 -            //Create a bitmap field from the bitmap we just created
  12.348 -            DataField indicator1 = new BitmapField(bitmap, 1, 0);
  12.349 -            //Create a bitmap field from the bitmap we just created
  12.350 -            DataField indicator2 = new BitmapField(bitmap, 1, 1);
  12.351 -            //Create a bitmap field from the bitmap we just created
  12.352 -            DataField indicator3 = new BitmapField(bitmap, 1, 2);
  12.353 -            //Create a bitmap field from the bitmap we just created
  12.354 -            DataField indicator4 = new BitmapField(bitmap, 1, 3);
  12.355 -
  12.356 -            //
  12.357 -            TextField textFieldTop = new TextField(textBoxTop.Text, Alignment, 0, 0, 1, 2);
  12.358 -            TextField textFieldBottom = new TextField(textBoxBottom.Text, Alignment, 0, 2, 1, 2);
  12.359 -
  12.360 -            //Set texts
  12.361 -            iClient.CreateFields(new DataField[]
  12.362 -            {
  12.363 -                textFieldTop,
  12.364 -                textFieldBottom,
  12.365 -                indicator1,
  12.366 -                indicator2,                
  12.367 -                indicator3,
  12.368 -                indicator4
  12.369 -            });
  12.370 -
  12.371 -        }
  12.372 -
  12.373 -        private void buttonUpdateTexts_Click(object sender, EventArgs e)
  12.374 -        {
  12.375 -
  12.376 -            bool res = iClient.SetFields(new DataField[]
  12.377 -            {
  12.378 -                new TextField(textBoxTop.Text, Alignment,0,0),
  12.379 -                new TextField(textBoxBottom.Text, Alignment,0,1)
  12.380 -            });
  12.381 -
  12.382 -            if (!res)
  12.383 -            {
  12.384 -                MessageBox.Show("Create you fields first", "Field update error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  12.385 -            }
  12.386 -
  12.387 -        }
  12.388 -
  12.389 -		private void buttonLayoutOneTextField_Click(object sender, EventArgs e)
  12.390 -		{
  12.391 -			//Set one column one line layout
  12.392 -			TableLayout layout = new TableLayout(1, 1);
  12.393 -			iClient.SetLayout(layout);
  12.394 -
  12.395 -			//Set our fields
  12.396 -			iClient.CreateFields(new DataField[]
  12.397 -            {
  12.398 -                new TextField(textBoxTop.Text, Alignment)
  12.399 -            });
  12.400 -		}
  12.401 -
  12.402 -        private void numericUpDownPriority_ValueChanged(object sender, EventArgs e)
  12.403 -        {
  12.404 -            iClient.SetPriority((uint)numericUpDownPriority.Value);
  12.405 -        }
  12.406 -    }
  12.407 -}
    13.1 --- a/Clients/Test/MainForm.resx	Wed Feb 03 13:02:48 2016 +0100
    13.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.3 @@ -1,120 +0,0 @@
    13.4 -<?xml version="1.0" encoding="utf-8"?>
    13.5 -<root>
    13.6 -  <!-- 
    13.7 -    Microsoft ResX Schema 
    13.8 -    
    13.9 -    Version 2.0
   13.10 -    
   13.11 -    The primary goals of this format is to allow a simple XML format 
   13.12 -    that is mostly human readable. The generation and parsing of the 
   13.13 -    various data types are done through the TypeConverter classes 
   13.14 -    associated with the data types.
   13.15 -    
   13.16 -    Example:
   13.17 -    
   13.18 -    ... ado.net/XML headers & schema ...
   13.19 -    <resheader name="resmimetype">text/microsoft-resx</resheader>
   13.20 -    <resheader name="version">2.0</resheader>
   13.21 -    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
   13.22 -    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
   13.23 -    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
   13.24 -    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
   13.25 -    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
   13.26 -        <value>[base64 mime encoded serialized .NET Framework object]</value>
   13.27 -    </data>
   13.28 -    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
   13.29 -        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
   13.30 -        <comment>This is a comment</comment>
   13.31 -    </data>
   13.32 -                
   13.33 -    There are any number of "resheader" rows that contain simple 
   13.34 -    name/value pairs.
   13.35 -    
   13.36 -    Each data row contains a name, and value. The row also contains a 
   13.37 -    type or mimetype. Type corresponds to a .NET class that support 
   13.38 -    text/value conversion through the TypeConverter architecture. 
   13.39 -    Classes that don't support this are serialized and stored with the 
   13.40 -    mimetype set.
   13.41 -    
   13.42 -    The mimetype is used for serialized objects, and tells the 
   13.43 -    ResXResourceReader how to depersist the object. This is currently not 
   13.44 -    extensible. For a given mimetype the value must be set accordingly:
   13.45 -    
   13.46 -    Note - application/x-microsoft.net.object.binary.base64 is the format 
   13.47 -    that the ResXResourceWriter will generate, however the reader can 
   13.48 -    read any of the formats listed below.
   13.49 -    
   13.50 -    mimetype: application/x-microsoft.net.object.binary.base64
   13.51 -    value   : The object must be serialized with 
   13.52 -            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
   13.53 -            : and then encoded with base64 encoding.
   13.54 -    
   13.55 -    mimetype: application/x-microsoft.net.object.soap.base64
   13.56 -    value   : The object must be serialized with 
   13.57 -            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
   13.58 -            : and then encoded with base64 encoding.
   13.59 -
   13.60 -    mimetype: application/x-microsoft.net.object.bytearray.base64
   13.61 -    value   : The object must be serialized into a byte array 
   13.62 -            : using a System.ComponentModel.TypeConverter
   13.63 -            : and then encoded with base64 encoding.
   13.64 -    -->
   13.65 -  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
   13.66 -    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
   13.67 -    <xsd:element name="root" msdata:IsDataSet="true">
   13.68 -      <xsd:complexType>
   13.69 -        <xsd:choice maxOccurs="unbounded">
   13.70 -          <xsd:element name="metadata">
   13.71 -            <xsd:complexType>
   13.72 -              <xsd:sequence>
   13.73 -                <xsd:element name="value" type="xsd:string" minOccurs="0" />
   13.74 -              </xsd:sequence>
   13.75 -              <xsd:attribute name="name" use="required" type="xsd:string" />
   13.76 -              <xsd:attribute name="type" type="xsd:string" />
   13.77 -              <xsd:attribute name="mimetype" type="xsd:string" />
   13.78 -              <xsd:attribute ref="xml:space" />
   13.79 -            </xsd:complexType>
   13.80 -          </xsd:element>
   13.81 -          <xsd:element name="assembly">
   13.82 -            <xsd:complexType>
   13.83 -              <xsd:attribute name="alias" type="xsd:string" />
   13.84 -              <xsd:attribute name="name" type="xsd:string" />
   13.85 -            </xsd:complexType>
   13.86 -          </xsd:element>
   13.87 -          <xsd:element name="data">
   13.88 -            <xsd:complexType>
   13.89 -              <xsd:sequence>
   13.90 -                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
   13.91 -                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
   13.92 -              </xsd:sequence>
   13.93 -              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
   13.94 -              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
   13.95 -              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
   13.96 -              <xsd:attribute ref="xml:space" />
   13.97 -            </xsd:complexType>
   13.98 -          </xsd:element>
   13.99 -          <xsd:element name="resheader">
  13.100 -            <xsd:complexType>
  13.101 -              <xsd:sequence>
  13.102 -                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
  13.103 -              </xsd:sequence>
  13.104 -              <xsd:attribute name="name" type="xsd:string" use="required" />
  13.105 -            </xsd:complexType>
  13.106 -          </xsd:element>
  13.107 -        </xsd:choice>
  13.108 -      </xsd:complexType>
  13.109 -    </xsd:element>
  13.110 -  </xsd:schema>
  13.111 -  <resheader name="resmimetype">
  13.112 -    <value>text/microsoft-resx</value>
  13.113 -  </resheader>
  13.114 -  <resheader name="version">
  13.115 -    <value>2.0</value>
  13.116 -  </resheader>
  13.117 -  <resheader name="reader">
  13.118 -    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  13.119 -  </resheader>
  13.120 -  <resheader name="writer">
  13.121 -    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  13.122 -  </resheader>
  13.123 -</root>
  13.124 \ No newline at end of file
    14.1 --- a/Clients/Test/Program.cs	Wed Feb 03 13:02:48 2016 +0100
    14.2 +++ b/Clients/Test/Program.cs	Wed Feb 03 13:20:16 2016 +0100
    14.3 @@ -39,7 +39,7 @@
    14.4  
    14.5              Application.EnableVisualStyles();
    14.6              Application.SetCompatibleTextRenderingDefault(false);
    14.7 -			Application.Run(new MainForm());
    14.8 +			Application.Run(new FormClientTest());
    14.9          }
   14.10  
   14.11  		[STAThread]
   14.12 @@ -50,7 +50,7 @@
   14.13  
   14.14  			Application.EnableVisualStyles();
   14.15  			Application.SetCompatibleTextRenderingDefault(false);
   14.16 -			MainForm mainForm = new MainForm();
   14.17 +			FormClientTest mainForm = new FormClientTest();
   14.18  			mainForm.Params = (StartParams)aParams;
   14.19  			Application.Run(mainForm);
   14.20  		}
    15.1 --- a/Clients/Test/SharpDisplayClient.csproj	Wed Feb 03 13:02:48 2016 +0100
    15.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.3 @@ -1,164 +0,0 @@
    15.4 -<?xml version="1.0" encoding="utf-8"?>
    15.5 -<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    15.6 -  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
    15.7 -  <PropertyGroup>
    15.8 -    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    15.9 -    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
   15.10 -    <ProjectGuid>{7EE64074-8CDB-4448-B40C-81B75D6B31CD}</ProjectGuid>
   15.11 -    <OutputType>WinExe</OutputType>
   15.12 -    <AppDesignerFolder>Properties</AppDesignerFolder>
   15.13 -    <RootNamespace>SharpDisplayClient</RootNamespace>
   15.14 -    <AssemblyName>SharpDisplayClient</AssemblyName>
   15.15 -    <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
   15.16 -    <FileAlignment>512</FileAlignment>
   15.17 -    <TargetFrameworkProfile />
   15.18 -    <PublishUrl>publish\</PublishUrl>
   15.19 -    <Install>true</Install>
   15.20 -    <InstallFrom>Disk</InstallFrom>
   15.21 -    <UpdateEnabled>false</UpdateEnabled>
   15.22 -    <UpdateMode>Foreground</UpdateMode>
   15.23 -    <UpdateInterval>7</UpdateInterval>
   15.24 -    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
   15.25 -    <UpdatePeriodically>false</UpdatePeriodically>
   15.26 -    <UpdateRequired>false</UpdateRequired>
   15.27 -    <MapFileExtensions>true</MapFileExtensions>
   15.28 -    <ApplicationRevision>0</ApplicationRevision>
   15.29 -    <ApplicationVersion>0.1.0.%2a</ApplicationVersion>
   15.30 -    <IsWebBootstrapper>false</IsWebBootstrapper>
   15.31 -    <UseApplicationTrust>false</UseApplicationTrust>
   15.32 -    <BootstrapperEnabled>true</BootstrapperEnabled>
   15.33 -  </PropertyGroup>
   15.34 -  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
   15.35 -    <PlatformTarget>AnyCPU</PlatformTarget>
   15.36 -    <DebugSymbols>true</DebugSymbols>
   15.37 -    <DebugType>full</DebugType>
   15.38 -    <Optimize>false</Optimize>
   15.39 -    <OutputPath>bin\Debug\</OutputPath>
   15.40 -    <DefineConstants>DEBUG;TRACE</DefineConstants>
   15.41 -    <ErrorReport>prompt</ErrorReport>
   15.42 -    <WarningLevel>4</WarningLevel>
   15.43 -    <Prefer32Bit>false</Prefer32Bit>
   15.44 -  </PropertyGroup>
   15.45 -  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
   15.46 -    <PlatformTarget>AnyCPU</PlatformTarget>
   15.47 -    <DebugType>pdbonly</DebugType>
   15.48 -    <Optimize>true</Optimize>
   15.49 -    <OutputPath>bin\Release\</OutputPath>
   15.50 -    <DefineConstants>TRACE</DefineConstants>
   15.51 -    <ErrorReport>prompt</ErrorReport>
   15.52 -    <WarningLevel>4</WarningLevel>
   15.53 -    <Prefer32Bit>false</Prefer32Bit>
   15.54 -  </PropertyGroup>
   15.55 -  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
   15.56 -    <DebugSymbols>true</DebugSymbols>
   15.57 -    <OutputPath>..\bin\x86\Debug\</OutputPath>
   15.58 -    <BaseIntermediateOutputPath>..\bin\x86\Debug\obj</BaseIntermediateOutputPath>
   15.59 -    <DefineConstants>DEBUG;TRACE</DefineConstants>
   15.60 -    <DebugType>full</DebugType>
   15.61 -    <PlatformTarget>x86</PlatformTarget>
   15.62 -    <ErrorReport>prompt</ErrorReport>
   15.63 -    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
   15.64 -    <Prefer32Bit>false</Prefer32Bit>
   15.65 -  </PropertyGroup>
   15.66 -  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
   15.67 -    <OutputPath>..\bin\x86\Release\</OutputPath>
   15.68 -    <BaseIntermediateOutputPath>..\bin\x86\Release\obj</BaseIntermediateOutputPath>
   15.69 -    <DefineConstants>TRACE</DefineConstants>
   15.70 -    <Optimize>true</Optimize>
   15.71 -    <DebugType>pdbonly</DebugType>
   15.72 -    <PlatformTarget>x86</PlatformTarget>
   15.73 -    <ErrorReport>prompt</ErrorReport>
   15.74 -    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
   15.75 -    <Prefer32Bit>false</Prefer32Bit>
   15.76 -  </PropertyGroup>
   15.77 -  <PropertyGroup>
   15.78 -    <SignManifests>true</SignManifests>
   15.79 -  </PropertyGroup>
   15.80 -  <PropertyGroup>
   15.81 -    <ManifestCertificateThumbprint>70A149AB9F89E507D9411D109553BE22455895D6</ManifestCertificateThumbprint>
   15.82 -  </PropertyGroup>
   15.83 -  <PropertyGroup>
   15.84 -    <ManifestKeyFile>SharpDisplayManager_TemporaryKey.pfx</ManifestKeyFile>
   15.85 -  </PropertyGroup>
   15.86 -  <PropertyGroup>
   15.87 -    <NoWin32Manifest>true</NoWin32Manifest>
   15.88 -  </PropertyGroup>
   15.89 -  <ItemGroup>
   15.90 -    <Reference Include="SharpLibDisplay, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
   15.91 -      <HintPath>..\..\packages\SharpLibDisplay.0.2.5\lib\net40\SharpLibDisplay.dll</HintPath>
   15.92 -      <Private>True</Private>
   15.93 -    </Reference>
   15.94 -    <Reference Include="System" />
   15.95 -    <Reference Include="System.Core" />
   15.96 -    <Reference Include="System.ServiceModel" />
   15.97 -    <Reference Include="System.Xml.Linq" />
   15.98 -    <Reference Include="System.Data.DataSetExtensions" />
   15.99 -    <Reference Include="Microsoft.CSharp" />
  15.100 -    <Reference Include="System.Data" />
  15.101 -    <Reference Include="System.Deployment" />
  15.102 -    <Reference Include="System.Drawing" />
  15.103 -    <Reference Include="System.Windows.Forms" />
  15.104 -    <Reference Include="System.Xml" />
  15.105 -  </ItemGroup>
  15.106 -  <ItemGroup>
  15.107 -    <Compile Include="MainForm.cs">
  15.108 -      <SubType>Form</SubType>
  15.109 -    </Compile>
  15.110 -    <Compile Include="MainForm.Designer.cs">
  15.111 -      <DependentUpon>MainForm.cs</DependentUpon>
  15.112 -    </Compile>
  15.113 -    <Compile Include="Program.cs" />
  15.114 -    <Compile Include="Properties\AssemblyInfo.cs" />
  15.115 -    <EmbeddedResource Include="MainForm.resx">
  15.116 -      <DependentUpon>MainForm.cs</DependentUpon>
  15.117 -    </EmbeddedResource>
  15.118 -    <EmbeddedResource Include="Properties\Resources.resx">
  15.119 -      <Generator>ResXFileCodeGenerator</Generator>
  15.120 -      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
  15.121 -      <SubType>Designer</SubType>
  15.122 -    </EmbeddedResource>
  15.123 -    <Compile Include="Properties\Resources.Designer.cs">
  15.124 -      <AutoGen>True</AutoGen>
  15.125 -      <DependentUpon>Resources.resx</DependentUpon>
  15.126 -      <DesignTime>True</DesignTime>
  15.127 -    </Compile>
  15.128 -    <None Include="packages.config" />
  15.129 -    <None Include="Properties\Settings.settings">
  15.130 -      <Generator>SettingsSingleFileGenerator</Generator>
  15.131 -      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
  15.132 -    </None>
  15.133 -    <Compile Include="Properties\Settings.Designer.cs">
  15.134 -      <AutoGen>True</AutoGen>
  15.135 -      <DependentUpon>Settings.settings</DependentUpon>
  15.136 -      <DesignTimeSharedInput>True</DesignTimeSharedInput>
  15.137 -    </Compile>
  15.138 -  </ItemGroup>
  15.139 -  <ItemGroup>
  15.140 -    <None Include="App.config" />
  15.141 -  </ItemGroup>
  15.142 -  <ItemGroup>
  15.143 -    <BootstrapperPackage Include=".NETFramework,Version=v4.5">
  15.144 -      <Visible>False</Visible>
  15.145 -      <ProductName>Microsoft .NET Framework 4.5 %28x86 and x64%29</ProductName>
  15.146 -      <Install>true</Install>
  15.147 -    </BootstrapperPackage>
  15.148 -    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
  15.149 -      <Visible>False</Visible>
  15.150 -      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
  15.151 -      <Install>false</Install>
  15.152 -    </BootstrapperPackage>
  15.153 -    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
  15.154 -      <Visible>False</Visible>
  15.155 -      <ProductName>.NET Framework 3.5 SP1</ProductName>
  15.156 -      <Install>false</Install>
  15.157 -    </BootstrapperPackage>
  15.158 -  </ItemGroup>
  15.159 -  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  15.160 -  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
  15.161 -       Other similar extension points exist, see Microsoft.Common.targets.
  15.162 -  <Target Name="BeforeBuild">
  15.163 -  </Target>
  15.164 -  <Target Name="AfterBuild">
  15.165 -  </Target>
  15.166 -  -->
  15.167 -</Project>
  15.168 \ No newline at end of file
    16.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2 +++ b/Clients/Test/SharpDisplayClientTest.csproj	Wed Feb 03 13:20:16 2016 +0100
    16.3 @@ -0,0 +1,164 @@
    16.4 +<?xml version="1.0" encoding="utf-8"?>
    16.5 +<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    16.6 +  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
    16.7 +  <PropertyGroup>
    16.8 +    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    16.9 +    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
   16.10 +    <ProjectGuid>{7EE64074-8CDB-4448-B40C-81B75D6B31CD}</ProjectGuid>
   16.11 +    <OutputType>WinExe</OutputType>
   16.12 +    <AppDesignerFolder>Properties</AppDesignerFolder>
   16.13 +    <RootNamespace>SharpDisplayClient</RootNamespace>
   16.14 +    <AssemblyName>SharpDisplayClient</AssemblyName>
   16.15 +    <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
   16.16 +    <FileAlignment>512</FileAlignment>
   16.17 +    <TargetFrameworkProfile />
   16.18 +    <PublishUrl>publish\</PublishUrl>
   16.19 +    <Install>true</Install>
   16.20 +    <InstallFrom>Disk</InstallFrom>
   16.21 +    <UpdateEnabled>false</UpdateEnabled>
   16.22 +    <UpdateMode>Foreground</UpdateMode>
   16.23 +    <UpdateInterval>7</UpdateInterval>
   16.24 +    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
   16.25 +    <UpdatePeriodically>false</UpdatePeriodically>
   16.26 +    <UpdateRequired>false</UpdateRequired>
   16.27 +    <MapFileExtensions>true</MapFileExtensions>
   16.28 +    <ApplicationRevision>0</ApplicationRevision>
   16.29 +    <ApplicationVersion>0.1.0.%2a</ApplicationVersion>
   16.30 +    <IsWebBootstrapper>false</IsWebBootstrapper>
   16.31 +    <UseApplicationTrust>false</UseApplicationTrust>
   16.32 +    <BootstrapperEnabled>true</BootstrapperEnabled>
   16.33 +  </PropertyGroup>
   16.34 +  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
   16.35 +    <PlatformTarget>AnyCPU</PlatformTarget>
   16.36 +    <DebugSymbols>true</DebugSymbols>
   16.37 +    <DebugType>full</DebugType>
   16.38 +    <Optimize>false</Optimize>
   16.39 +    <OutputPath>bin\Debug\</OutputPath>
   16.40 +    <DefineConstants>DEBUG;TRACE</DefineConstants>
   16.41 +    <ErrorReport>prompt</ErrorReport>
   16.42 +    <WarningLevel>4</WarningLevel>
   16.43 +    <Prefer32Bit>false</Prefer32Bit>
   16.44 +  </PropertyGroup>
   16.45 +  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
   16.46 +    <PlatformTarget>AnyCPU</PlatformTarget>
   16.47 +    <DebugType>pdbonly</DebugType>
   16.48 +    <Optimize>true</Optimize>
   16.49 +    <OutputPath>bin\Release\</OutputPath>
   16.50 +    <DefineConstants>TRACE</DefineConstants>
   16.51 +    <ErrorReport>prompt</ErrorReport>
   16.52 +    <WarningLevel>4</WarningLevel>
   16.53 +    <Prefer32Bit>false</Prefer32Bit>
   16.54 +  </PropertyGroup>
   16.55 +  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
   16.56 +    <DebugSymbols>true</DebugSymbols>
   16.57 +    <OutputPath>..\bin\x86\Debug\</OutputPath>
   16.58 +    <BaseIntermediateOutputPath>..\bin\x86\Debug\obj</BaseIntermediateOutputPath>
   16.59 +    <DefineConstants>DEBUG;TRACE</DefineConstants>
   16.60 +    <DebugType>full</DebugType>
   16.61 +    <PlatformTarget>x86</PlatformTarget>
   16.62 +    <ErrorReport>prompt</ErrorReport>
   16.63 +    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
   16.64 +    <Prefer32Bit>false</Prefer32Bit>
   16.65 +  </PropertyGroup>
   16.66 +  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
   16.67 +    <OutputPath>..\bin\x86\Release\</OutputPath>
   16.68 +    <BaseIntermediateOutputPath>..\bin\x86\Release\obj</BaseIntermediateOutputPath>
   16.69 +    <DefineConstants>TRACE</DefineConstants>
   16.70 +    <Optimize>true</Optimize>
   16.71 +    <DebugType>pdbonly</DebugType>
   16.72 +    <PlatformTarget>x86</PlatformTarget>
   16.73 +    <ErrorReport>prompt</ErrorReport>
   16.74 +    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
   16.75 +    <Prefer32Bit>false</Prefer32Bit>
   16.76 +  </PropertyGroup>
   16.77 +  <PropertyGroup>
   16.78 +    <SignManifests>true</SignManifests>
   16.79 +  </PropertyGroup>
   16.80 +  <PropertyGroup>
   16.81 +    <ManifestCertificateThumbprint>70A149AB9F89E507D9411D109553BE22455895D6</ManifestCertificateThumbprint>
   16.82 +  </PropertyGroup>
   16.83 +  <PropertyGroup>
   16.84 +    <ManifestKeyFile>SharpDisplayManager_TemporaryKey.pfx</ManifestKeyFile>
   16.85 +  </PropertyGroup>
   16.86 +  <PropertyGroup>
   16.87 +    <NoWin32Manifest>true</NoWin32Manifest>
   16.88 +  </PropertyGroup>
   16.89 +  <ItemGroup>
   16.90 +    <Reference Include="SharpLibDisplay, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
   16.91 +      <HintPath>..\..\packages\SharpLibDisplay.0.2.5\lib\net40\SharpLibDisplay.dll</HintPath>
   16.92 +      <Private>True</Private>
   16.93 +    </Reference>
   16.94 +    <Reference Include="System" />
   16.95 +    <Reference Include="System.Core" />
   16.96 +    <Reference Include="System.ServiceModel" />
   16.97 +    <Reference Include="System.Xml.Linq" />
   16.98 +    <Reference Include="System.Data.DataSetExtensions" />
   16.99 +    <Reference Include="Microsoft.CSharp" />
  16.100 +    <Reference Include="System.Data" />
  16.101 +    <Reference Include="System.Deployment" />
  16.102 +    <Reference Include="System.Drawing" />
  16.103 +    <Reference Include="System.Windows.Forms" />
  16.104 +    <Reference Include="System.Xml" />
  16.105 +  </ItemGroup>
  16.106 +  <ItemGroup>
  16.107 +    <Compile Include="FormClientTest.cs">
  16.108 +      <SubType>Form</SubType>
  16.109 +    </Compile>
  16.110 +    <Compile Include="FormClientTest.Designer.cs">
  16.111 +      <DependentUpon>FormClientTest.cs</DependentUpon>
  16.112 +    </Compile>
  16.113 +    <Compile Include="Program.cs" />
  16.114 +    <Compile Include="Properties\AssemblyInfo.cs" />
  16.115 +    <EmbeddedResource Include="FormClientTest.resx">
  16.116 +      <DependentUpon>FormClientTest.cs</DependentUpon>
  16.117 +    </EmbeddedResource>
  16.118 +    <EmbeddedResource Include="Properties\Resources.resx">
  16.119 +      <Generator>ResXFileCodeGenerator</Generator>
  16.120 +      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
  16.121 +      <SubType>Designer</SubType>
  16.122 +    </EmbeddedResource>
  16.123 +    <Compile Include="Properties\Resources.Designer.cs">
  16.124 +      <AutoGen>True</AutoGen>
  16.125 +      <DependentUpon>Resources.resx</DependentUpon>
  16.126 +      <DesignTime>True</DesignTime>
  16.127 +    </Compile>
  16.128 +    <None Include="packages.config" />
  16.129 +    <None Include="Properties\Settings.settings">
  16.130 +      <Generator>SettingsSingleFileGenerator</Generator>
  16.131 +      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
  16.132 +    </None>
  16.133 +    <Compile Include="Properties\Settings.Designer.cs">
  16.134 +      <AutoGen>True</AutoGen>
  16.135 +      <DependentUpon>Settings.settings</DependentUpon>
  16.136 +      <DesignTimeSharedInput>True</DesignTimeSharedInput>
  16.137 +    </Compile>
  16.138 +  </ItemGroup>
  16.139 +  <ItemGroup>
  16.140 +    <None Include="App.config" />
  16.141 +  </ItemGroup>
  16.142 +  <ItemGroup>
  16.143 +    <BootstrapperPackage Include=".NETFramework,Version=v4.5">
  16.144 +      <Visible>False</Visible>
  16.145 +      <ProductName>Microsoft .NET Framework 4.5 %28x86 and x64%29</ProductName>
  16.146 +      <Install>true</Install>
  16.147 +    </BootstrapperPackage>
  16.148 +    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
  16.149 +      <Visible>False</Visible>
  16.150 +      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
  16.151 +      <Install>false</Install>
  16.152 +    </BootstrapperPackage>
  16.153 +    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
  16.154 +      <Visible>False</Visible>
  16.155 +      <ProductName>.NET Framework 3.5 SP1</ProductName>
  16.156 +      <Install>false</Install>
  16.157 +    </BootstrapperPackage>
  16.158 +  </ItemGroup>
  16.159 +  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  16.160 +  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
  16.161 +       Other similar extension points exist, see Microsoft.Common.targets.
  16.162 +  <Target Name="BeforeBuild">
  16.163 +  </Target>
  16.164 +  <Target Name="AfterBuild">
  16.165 +  </Target>
  16.166 +  -->
  16.167 +</Project>
  16.168 \ No newline at end of file
    17.1 --- a/Server/SharpDisplayManager.csproj	Wed Feb 03 13:02:48 2016 +0100
    17.2 +++ b/Server/SharpDisplayManager.csproj	Wed Feb 03 13:20:16 2016 +0100
    17.3 @@ -218,13 +218,13 @@
    17.4      <None Include="SharpDisplayManager_TemporaryKey.pfx" />
    17.5    </ItemGroup>
    17.6    <ItemGroup>
    17.7 -    <ProjectReference Include="..\Clients\Idle\SharpDisplayIdleClient.csproj">
    17.8 +    <ProjectReference Include="..\Clients\Idle\SharpDisplayClientIdle.csproj">
    17.9        <Project>{a76579e5-aa8d-45a3-99e1-239a5c030a78}</Project>
   17.10 -      <Name>SharpDisplayIdleClient</Name>
   17.11 +      <Name>SharpDisplayClientIdle</Name>
   17.12      </ProjectReference>
   17.13 -    <ProjectReference Include="..\Clients\Test\SharpDisplayClient.csproj">
   17.14 +    <ProjectReference Include="..\Clients\Test\SharpDisplayClientTest.csproj">
   17.15        <Project>{7ee64074-8cdb-4448-b40c-81b75d6b31cd}</Project>
   17.16 -      <Name>SharpDisplayClient</Name>
   17.17 +      <Name>SharpDisplayClientTest</Name>
   17.18      </ProjectReference>
   17.19      <ProjectReference Include="..\PowerManager\PowerManager.vcxproj">
   17.20        <Project>{c174f23d-3055-49bc-b6b0-563011af624d}</Project>
    18.1 --- a/SharpDisplayManager.sln	Wed Feb 03 13:02:48 2016 +0100
    18.2 +++ b/SharpDisplayManager.sln	Wed Feb 03 13:20:16 2016 +0100
    18.3 @@ -9,9 +9,9 @@
    18.4  EndProject
    18.5  Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Setup", "Setup\Setup.vdproj", "{22C920A9-2352-4DC9-91E2-035EBD712866}"
    18.6  EndProject
    18.7 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpDisplayIdleClient", "Clients\Idle\SharpDisplayIdleClient.csproj", "{A76579E5-AA8D-45A3-99E1-239A5C030A78}"
    18.8 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpDisplayClientIdle", "Clients\Idle\SharpDisplayClientIdle.csproj", "{A76579E5-AA8D-45A3-99E1-239A5C030A78}"
    18.9  EndProject
   18.10 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpDisplayClient", "Clients\Test\SharpDisplayClient.csproj", "{7EE64074-8CDB-4448-B40C-81B75D6B31CD}"
   18.11 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpDisplayClientTest", "Clients\Test\SharpDisplayClientTest.csproj", "{7EE64074-8CDB-4448-B40C-81B75D6B31CD}"
   18.12  EndProject
   18.13  Global
   18.14  	GlobalSection(SolutionConfigurationPlatforms) = preSolution