Persisting selection of optical drive to eject.
authorStephaneLenclud
Wed, 02 Sep 2015 16:02:24 +0200
changeset 15395f253aaf588
parent 152 03a1757a38df
child 154 5ecbb2f57a16
Persisting selection of optical drive to eject.
Server/App.config
Server/MainForm.Designer.cs
Server/MainForm.Hid.cs
Server/MainForm.cs
Server/MainForm.resx
Server/Properties/Settings.Designer.cs
Server/Properties/Settings.settings
     1.1 --- a/Server/App.config	Wed Sep 02 12:54:07 2015 +0200
     1.2 +++ b/Server/App.config	Wed Sep 02 16:02:24 2015 +0200
     1.3 @@ -28,6 +28,9 @@
     1.4              <setting name="StartFileName" serializeAs="String">
     1.5                  <value>None</value>
     1.6              </setting>
     1.7 +            <setting name="OpticalDriveToEject" serializeAs="String">
     1.8 +                <value>None</value>
     1.9 +            </setting>
    1.10          </SharpDisplayManager.Properties.Settings>
    1.11      </userSettings>
    1.12  </configuration>
     2.1 --- a/Server/MainForm.Designer.cs	Wed Sep 02 12:54:07 2015 +0200
     2.2 +++ b/Server/MainForm.Designer.cs	Wed Sep 02 16:02:24 2015 +0200
     2.3 @@ -91,6 +91,8 @@
     2.4              this.checkBoxMute = new System.Windows.Forms.CheckBox();
     2.5              this.trackBarMasterVolume = new System.Windows.Forms.TrackBar();
     2.6              this.tabPageInput = new System.Windows.Forms.TabPage();
     2.7 +            this.comboBoxOpticalDrives = new System.Windows.Forms.ComboBox();
     2.8 +            this.labelOpticalDriveEject = new System.Windows.Forms.Label();
     2.9              this.pictureBoxGreenStart = new System.Windows.Forms.PictureBox();
    2.10              this.labelStartFileName = new System.Windows.Forms.Label();
    2.11              this.buttonSelectFile = new System.Windows.Forms.Button();
    2.12 @@ -104,8 +106,6 @@
    2.13              this.toolTip = new System.Windows.Forms.ToolTip(this.components);
    2.14              this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
    2.15              this.pictureBoxDemo = new System.Windows.Forms.PictureBox();
    2.16 -            this.labelOpticalDriveEject = new System.Windows.Forms.Label();
    2.17 -            this.comboBoxOpticalDrives = new System.Windows.Forms.ComboBox();
    2.18              this.panelDisplay.SuspendLayout();
    2.19              this.tableLayoutPanel.SuspendLayout();
    2.20              this.statusStrip.SuspendLayout();
    2.21 @@ -718,6 +718,25 @@
    2.22              this.tabPageInput.Text = "Input";
    2.23              this.tabPageInput.UseVisualStyleBackColor = true;
    2.24              // 
    2.25 +            // comboBoxOpticalDrives
    2.26 +            // 
    2.27 +            this.comboBoxOpticalDrives.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
    2.28 +            this.comboBoxOpticalDrives.FormattingEnabled = true;
    2.29 +            this.comboBoxOpticalDrives.Location = new System.Drawing.Point(113, 53);
    2.30 +            this.comboBoxOpticalDrives.Name = "comboBoxOpticalDrives";
    2.31 +            this.comboBoxOpticalDrives.Size = new System.Drawing.Size(55, 21);
    2.32 +            this.comboBoxOpticalDrives.TabIndex = 18;
    2.33 +            this.comboBoxOpticalDrives.SelectedIndexChanged += new System.EventHandler(this.comboBoxOpticalDrives_SelectedIndexChanged);
    2.34 +            // 
    2.35 +            // labelOpticalDriveEject
    2.36 +            // 
    2.37 +            this.labelOpticalDriveEject.AutoSize = true;
    2.38 +            this.labelOpticalDriveEject.Location = new System.Drawing.Point(0, 56);
    2.39 +            this.labelOpticalDriveEject.Name = "labelOpticalDriveEject";
    2.40 +            this.labelOpticalDriveEject.Size = new System.Drawing.Size(107, 13);
    2.41 +            this.labelOpticalDriveEject.TabIndex = 3;
    2.42 +            this.labelOpticalDriveEject.Text = "Optical drive to eject:";
    2.43 +            // 
    2.44              // pictureBoxGreenStart
    2.45              // 
    2.46              this.pictureBoxGreenStart.Image = ((System.Drawing.Image)(resources.GetObject("pictureBoxGreenStart.Image")));
    2.47 @@ -837,24 +856,6 @@
    2.48              this.pictureBoxDemo.TabIndex = 21;
    2.49              this.pictureBoxDemo.TabStop = false;
    2.50              // 
    2.51 -            // labelOpticalDriveEject
    2.52 -            // 
    2.53 -            this.labelOpticalDriveEject.AutoSize = true;
    2.54 -            this.labelOpticalDriveEject.Location = new System.Drawing.Point(0, 56);
    2.55 -            this.labelOpticalDriveEject.Name = "labelOpticalDriveEject";
    2.56 -            this.labelOpticalDriveEject.Size = new System.Drawing.Size(107, 13);
    2.57 -            this.labelOpticalDriveEject.TabIndex = 3;
    2.58 -            this.labelOpticalDriveEject.Text = "Optical drive to eject:";
    2.59 -            // 
    2.60 -            // comboBoxOpticalDrives
    2.61 -            // 
    2.62 -            this.comboBoxOpticalDrives.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
    2.63 -            this.comboBoxOpticalDrives.FormattingEnabled = true;
    2.64 -            this.comboBoxOpticalDrives.Location = new System.Drawing.Point(113, 53);
    2.65 -            this.comboBoxOpticalDrives.Name = "comboBoxOpticalDrives";
    2.66 -            this.comboBoxOpticalDrives.Size = new System.Drawing.Size(44, 21);
    2.67 -            this.comboBoxOpticalDrives.TabIndex = 18;
    2.68 -            // 
    2.69              // MainForm
    2.70              // 
    2.71              this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
     3.1 --- a/Server/MainForm.Hid.cs	Wed Sep 02 12:54:07 2015 +0200
     3.2 +++ b/Server/MainForm.Hid.cs	Wed Sep 02 16:02:24 2015 +0200
     3.3 @@ -279,7 +279,15 @@
     3.4          /// </summary>
     3.5          private void HandleEject()
     3.6          {
     3.7 -            SafeFileHandle handle = OpenVolume(((MainForm)this).OpticalDriveToEject());
     3.8 +            string drive = ((MainForm)this).OpticalDriveToEject();
     3.9 +            if (drive.Length!=2)
    3.10 +            {
    3.11 +                //Not a proper drive spec.
    3.12 +                //Probably 'None' selected.
    3.13 +                return;
    3.14 +            }
    3.15 +
    3.16 +            SafeFileHandle handle = OpenVolume(drive);
    3.17              if (handle.IsInvalid)
    3.18              {
    3.19                  return;
     4.1 --- a/Server/MainForm.cs	Wed Sep 02 12:54:07 2015 +0200
     4.2 +++ b/Server/MainForm.cs	Wed Sep 02 16:02:24 2015 +0200
     4.3 @@ -494,6 +494,7 @@
     4.4          {
     4.5              //Reset our list of drives
     4.6              comboBoxOpticalDrives.Items.Clear();
     4.7 +            comboBoxOpticalDrives.Items.Add("None");
     4.8  
     4.9              //Go through each drives on our system and collected the optical ones in our list
    4.10              DriveInfo[] allDrives = DriveInfo.GetDrives();
    4.11 @@ -507,13 +508,7 @@
    4.12                      //This is an optical drive, add it now
    4.13                      comboBoxOpticalDrives.Items.Add(d.Name.Substring(0,2));
    4.14                  }                
    4.15 -            }
    4.16 -
    4.17 -            //Select current drive to eject
    4.18 -            if (comboBoxOpticalDrives.Items.Count>0)
    4.19 -            {
    4.20 -                comboBoxOpticalDrives.SelectedIndex = 0;
    4.21 -            }            
    4.22 +            }           
    4.23          }
    4.24  
    4.25          /// <summary>
    4.26 @@ -522,7 +517,7 @@
    4.27          /// <returns></returns>
    4.28          public string OpticalDriveToEject()
    4.29          {
    4.30 -            return comboBoxOpticalDrives.Items[comboBoxOpticalDrives.SelectedIndex].ToString();
    4.31 +            return comboBoxOpticalDrives.SelectedItem.ToString();
    4.32          }
    4.33  
    4.34  
    4.35 @@ -1060,6 +1055,31 @@
    4.36  			checkBoxMinimizeToTray.Checked = Properties.Settings.Default.MinimizeToTray;
    4.37  			checkBoxStartMinimized.Checked = Properties.Settings.Default.StartMinimized;
    4.38  			labelStartFileName.Text = Properties.Settings.Default.StartFileName;
    4.39 +
    4.40 +            //Try find our drive in our drive list
    4.41 +            int opticalDriveItemIndex=0;
    4.42 +            bool driveNotFound = true;
    4.43 +            string opticalDriveToEject=Properties.Settings.Default.OpticalDriveToEject;
    4.44 +            foreach (object item in comboBoxOpticalDrives.Items)
    4.45 +            {
    4.46 +                if (opticalDriveToEject.Equals(item.ToString()))
    4.47 +                {
    4.48 +                    comboBoxOpticalDrives.SelectedIndex = opticalDriveItemIndex;
    4.49 +                    driveNotFound = false;
    4.50 +                    break;
    4.51 +                }
    4.52 +                opticalDriveItemIndex++;
    4.53 +            }
    4.54 +
    4.55 +            if (driveNotFound)
    4.56 +            {
    4.57 +                //We could not find the drive we had saved.
    4.58 +                //Select "None" then.
    4.59 +                comboBoxOpticalDrives.SelectedIndex = 0;
    4.60 +            }
    4.61 +
    4.62 +
    4.63 +
    4.64              checkBoxReverseScreen.Checked = cds.ReverseScreen;
    4.65              checkBoxInverseColors.Checked = cds.InverseColors;
    4.66  			checkBoxShowVolumeLabel.Checked = cds.ShowVolumeLabel;
    4.67 @@ -2139,5 +2159,17 @@
    4.68  				Properties.Settings.Default.Save();
    4.69  			}
    4.70  		}
    4.71 +
    4.72 +        /// <summary>
    4.73 +        /// 
    4.74 +        /// </summary>
    4.75 +        /// <param name="sender"></param>
    4.76 +        /// <param name="e"></param>
    4.77 +        private void comboBoxOpticalDrives_SelectedIndexChanged(object sender, EventArgs e)
    4.78 +        {
    4.79 +            //Save the optical drive the user selected for ejection
    4.80 +            Properties.Settings.Default.OpticalDriveToEject = comboBoxOpticalDrives.SelectedItem.ToString();
    4.81 +            Properties.Settings.Default.Save();
    4.82 +        }
    4.83      }
    4.84  }
     5.1 --- a/Server/MainForm.resx	Wed Sep 02 12:54:07 2015 +0200
     5.2 +++ b/Server/MainForm.resx	Wed Sep 02 16:02:24 2015 +0200
     5.3 @@ -133,56 +133,57 @@
     5.4    <data name="pictureBoxGreenStart.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     5.5      <value>
     5.6          iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
     5.7 -        YQUAAAuOSURBVFhHfZYHWFVHGoaPJfjoatRVsBE0dk0iSIkabEBEBIIg1UZHqoKI9HLxIiAgErmICnYR
     5.8 -        idgQCSpiiy1GsaMuFtCAolhXMG6y787Bspqwe57nvXfu3Jn/++afckbidch/gf9JHxtJXeAhKBY0Cuhr
     5.9 -        p0ZfezXksuB3wX5BsECrpRjv+UDzox8tNRbBhgsytezaMGB6RwY4d0EvoD+OSjNsYo2acRLlUXMHM2B2
    5.10 -        FwbM6CSMfSIbWif4uqWYH2p+9OPPDUWAJFl4iFsXjEN0WJjtTe6eDLYf2kT+gVzy979FlAvLN7KmeDnB
    5.11 -        Knd05vRhsGsX+tk3G1kq6PxR7A803xf+/dt/DYgOWn2spZVDnDthFDqC1PxotpWv/1i0Bba8/d74YzZz
    5.12 -        M2ai76vJMGFexNrwYTb0Pdp9bEAWb658I/6VLD7CqytuS75j048rWL9XxbrizI/Z+yf+8r+K9SWq5hgj
    5.13 -        vLrxmW1r2YjlOwPvTDR//N604L2B3lOlVXo+6nilWbNqVyqqbYlvKEx6w/Yksna0gKh/30a0z3zbL3tn
    5.14 -        Cl6p1uj7aaA5rZU8JZ9/ZEAe/ctngc0VwuFyHc+umIV+SeqWKJI2hL1hUxjJm8NZWbCIPbtUHNizksKd
    5.15 -        S1FtjSMlP4KULW9YkhfejNw2aWMYiaKvzJJNkZiH6qAvBiYP8J0BWVv6V1OwdL/WVxa3HDarA4bzeuKf
    5.16 -        7khEtk8zkat8iM7x43hhFs9LtvO0cC3PtuXwomgDLw5s48y2dNLXzSN2nS8xawVrfInK9SFqtei/0ofw
    5.17 -        LBlvfFNtGeWnjrbbp7IJf9nA68ZgSWp8HihVXHGVU186cX5vDLy645fqgE+qvTDiwNzvHVGqfKhPj+NB
    5.18 -        nA/3F9pRH2nHozg7Hqe48EhpR06aI6qihYTnOjM/y4kgwbxMJwKWOeKb5iDEHfFJsUPfozsmIX3eTUWb
    5.19 -        fz4NlKSGen+pt5VkNMK1ExPn9xKNNHBOmIJr4hTcUy3wTLMkK8WD+kW+PAgy52GoKY9jTXmWZMqTZZbU
    5.20 -        ZjsRmGZFeaWSI9cyWV0aTtxGd8KEmZh1c8jcEUfeQRXO8eYYuPdgbIAGo7y7ITRd6+v8JKmm2lsefaFZ
    5.21 -        mCajfLqi49od+9jxzFBOZHayES4pJhxY4sVDxWzqg8bxJMaQFymGNKoMebLejBM5FoTmmrLrshXbL9hQ
    5.22 -        fDGA/ZcXc+DicsourKH4TDbzls/ENny8iK2OvmdnLCL7ytNw8uZNL0nedmpaYovYKfqj5/Epw2b+jalR
    5.23 -        BtjGj8IpeQyOiWOoUrrzMMKSx2IhvUjWoTFLh6b1ujza8S3ZmRNI32vMvipLfrikw4YzOmQf1SPzgDG5
    5.24 -        5V7knc7AUTEFiwX6DBWnpLbL37CO/pwBjp/Q+zupm5x+Qz3PT7GJ7ouue0cGzlDDNHQoUxXa2CWNxEs5
    5.25 -        nruR9lQusuJq7myqtkyjdpsRj4vGUFduwpwEPXZXOnDwrg27boxky4XB5J76gpyjJmw+MY+0vdFMCdbD
    5.26 -        eN4QBjq146vZHbAM12RcgNgRVtJMSbgIMF3QU7jSQtejE8Nc2zM6SB3L+GFYJw1HkWhBQqQjIUoHXCMm
    5.27 -        4h0zmZjE2RRu8+PwMTvcMww5/iCYQ3WOFN/+hoKrA9lwdiibTk1m67kIPJbZYxw8RJyKPRg8qz1fuHQU
    5.28 -        W7IPVpFacgZSpV6WUoJ1lBa2MVroe3cWp1ZHDII6Y6roi1XSQOyWmBGQu5TQ7aXEHb5OdGkZgRuVTI0e
    5.29 -        iW/y18TstufY8yUcbvCjtMaIwmuD2FwxmPyKaeRfTmRSxGjGhWii49eZ4WILjnDvwndhnzF90QDZQJ7U
    5.30 -        y0L63im+P07xnzM6oBu6AV0xDBPbRdkDi+R+eK8+yYy1txi9ug7tvBdM2/+aZZf+zbrLDcxYNgGbpV/i
    5.31 -        X+5MxoOl5NyPJKvamZQbXsRdWoTLDk+MIgYxJkydrxdooO3TDfmUtYnuh2vSEMTgd0o9p0iLHeP64bFk
    5.32 -        OONDejEqpCdGCk3MUgTxpuiHH6dz0FnU4u6g9v1TNDe/wnz/H0T80ohLpj7Hz3+Pv2oiY4N7YqwcwqTl
    5.33 -        IxmvGMQ3QT1wihuGUZyIp9TEUGRZL0hT1H/GrMXDcEsWBixEBnpOlvynikURlKXHlNgBokN/zFMHYpXR
    5.34 -        H7OYaEYGH6K11wmksBtIKQ/pkNPIyKJ/YbN9P0n5E3jxeA31tau4XpXJzkNzWV/kTOmRcKouqVAtG4Xl
    5.35 -        ss+xWDYY48VDGRs1BJPIoQRkjhHnzBDE4JdLGkaSyTj/v5OQZ8KMND0sUrWZtmIkdllfMiGwgL7uJUiz
    5.36 -        y5ECLyLF30MSWeiZ/wqj7AhKj1rw+mE4rx940lTrwos7s3n6Dy9e3ljIo6sJBCcNxnbVcGxX62KeYcCk
    5.37 -        JH2mJRmg2GSOlRh0j0mSh6TWTer0mW0rVLutCN9szfTsscxYN46ZmQ6MdN1Ge8stSHZ7kbxOIoVep3VS
    5.38 -        He1ynuGgMqK20opX95x4VW1O001jmq6No+mKFY2VQVSWzWf60qHM2mzArLyJ2K+ZhI3qW+autSar2FGc
    5.39 -        Ce3o/JXUTxJPG5GK3TFrJ7Binw++m83xKjDHQqlk0JwfGBi5B53ko/RLOEn3+Au0X3wTjfTjpBfo8qJy
    5.40 -        Mk2V39B0dRSNF/VoPGvAq7NTeXopnD25Nrhs0MW/6Fu8d1vjutUet422LCsJILXAQp7/M0JbTfrj1QKp
    5.41 -        2xjJ0jiwFzvPLCSp1IO5u+xEumIZl+DG5OTJWKWNxSzNHsOMBIasOM1YVRr7dn5B4y9jaTw1jMaTQ2k8
    5.42 -        OpjGw+KE/MmGhrMxpKWMJrDIhLCjjsw/5M7ckjlEF/tQcDoax9jBqE+U/IWBVm/eyZLUSWThVHbxLLaf
    5.43 -        U6AocyN4jx3Buy2ILDFDUToFZYkpsTuNCd1qRmihA8fK9Kg8Ykz1wa9p+HEQz4v68rRYl9ojHpw/ski8
    5.44 -        jicQe8yB+HO+xP68gNjD88k7oyTvsH/z7ahtR6l7s3bzrUSSWncfJ3mO9lbnZFUGBecVpJ/2IfOCH2uu
    5.45 -        +ZJ3w5sfquZQeN2T7ZWe/HDRjexya1aWWbL1hDN7T/jy40/iIDoRybp9IsWFNij2TSP9sj8Z16JIvRDN
    5.46 -        xguLOXEzG/OF/eXRK4Rm2/dXsrcmOvb4ViqYqdTlwr01FFXGk/ePEAprwthbF0Z5fTjHGyL55Vk0Zx5H
    5.47 -        c/DOfAoq3Fh52I7UEguUO01RCBYVW7D02HRWXZ7L2tvR5FQpyL+WyM81awhZMQkNE2m30Ory/kr2gYFW
    5.48 -        Ag0NY6k0VqzUq3XrKbsprmC3QigTJ9zJx3Gcf6mk8lUiVb8lcVNw5fkifnkYxbFfQzkgDJXcDqLoTjC7
    5.49 -        hOnCmii23oqm+GYiFbXrWV3sK4sfadddGih02vzFgFwhnrYd+kraIkVlcWvtqW7Yxs/VKRy6HcJxkYWK
    5.50 -        J3Fce5nArd+Sqfk9hbt/pFIjuC3KlU2JnH+u5PijOMp+jaDkVhjH7iyh6mEBqh2+yK/8vxtItkLjE1mr
    5.51 -        RQNvTai17y1piwPqgEOsHlerC7hVv4mKGiWn7wZzrm4hlx9FUvk0hutP47j+LI4rT2KpeBjB6dpQfqoO
    5.52 -        5tQdBTfub+Dm/SL80k3lOT8k9ryliN3unc5fDPzZhEBLLMz1/ezbihXtxN36UuqflXDrQQ5X7iVyQaS5
    5.53 -        oiaQc9XzqKgO5dI9JVX3V1P3pJjahjLS8n0ZNL096uOlQhGrf0vifzHwIeJpI+japr1kIIzslFM4I/4b
    5.54 -        VheF8XPlFu4+OMg/m841c7/hKKdF3eb9ClwWTxC3nXaIPiUdtCRzEUNd0LziW6LFyg8Rj5wNjdafSDpd
    5.55 -        tKUY9QlSeU8z6Z64zbwU1zn5divfbF6Jul/FtJ3ooiMltO0kjRF9egnkdLZqKe47WqxsCfG0FXQS9BEM
    5.56 -        EnwhGCHQFnz5tk5T0Fkgt/2/wm8Ikf4Dc27lpLCDATgAAAAASUVORK5CYII=
    5.57 +        YQUAAAujSURBVFhHjZcJWM7ZHsf/wwwPl8GlbE2MpTAzimow2aqRVJPSam+RVkrSvrx5U6lUozehkCVp
    5.58 +        ikiakGxjG0P2cLMUU0TWq4w7cz/3/CMPd9zlfZ7v85739z/n9/2e7znn956/xKtA6S1A4j+gr42kJuAm
    5.59 +        UCLQJEA/u3b0s2+H3Bb4XWCfQICA5n/K0xJ/h/O9Hx8aJJINE0jXtGvLwOmdGDinK3q+A3BUmmETZdQC
    5.60 +        J9EetUCLgbO7MnBGZyHsE1nQBoGvPyjk/xUgEsTLxNouXTEO1GVJpgfZu9PYfnAzefuzydv3BqJdWLGJ
    5.61 +        dSUrCVC5oju/L1rOXelv3yJkhUCX94R8SMA/fxNL8cZ+2cK+1tJq7TmdMQoaTlJeBAUVOe+TtpK/8731
    5.62 +        TXvTj5ksSJuJvpcGQ4V4kWvju27ou7V/63xLQyZvCQoBouNXMvlw9264LP+OzT+uImePig0l6e9jj/j9
    5.63 +        Lv70XEVOqaolx3D37nxm20YWYilzyFytIloE/N68+K2APlOlNXqeargnW7NmZxKqgrjXKIx/je3xZOz4
    5.64 +        AET8bR/RP/3NuMyiRNyTrNH3Vkdj2kfyknz+ngB59i+e+rUIEApX6s7rhlnQlyRtDSd+Y/BrbA4mYUsI
    5.65 +        q/OXsnuniv27V1NYtALVtmgS80JJ3Poay3NDWiD3jd8UTJwYK2P55jDMg3TRFxOTJ9gqQOaW/tEcIN2r
    5.66 +        85LJLYfO6ojhwl74pDgSmunZgrA1nkRkeXOsMINnpdt5UriepwVZPC/eyPP9BZwuSCFlw0KiNngRuV5g
    5.67 +        nRfh2Z6ErxXjV3sSkiHDA68kW0Z5q6Hj8qkswkcW8aopQJKanvlJlZedJREsm7ioDwbuPfBOcsAzyV4I
    5.68 +        cWDB944oVZ40pERzP9qTe0vsaAiz42G0HY8S5/JQaUdWsiOq4iWEZM9hUYYT/gIL053wTXXEK9lBkDvi
    5.69 +        mWiHvlsPTAL7ti5F278/8ZOkxgYfqY+VZDTcuTMTF/UWndSZEzsF57gpuCZZMC/ZkoxENxqWenHf35wH
    5.70 +        QaY8ijLlabwpj1Mtqct0wi/ZiooqJYevprO2LIToTa4ECzGRG+aTviOa3AMq5sSYY+Dak7G+6ozy6I7g
    5.71 +        dG6o95ak2hoPefaFZsEajPLshq5zD+yjxjNDOZHZCUbMTTRh/3J3Hihm0+A/jseRhjxPNKRJZcjjHDOO
    5.72 +        Z1kQlG3KzktWbD9vQ8kFX/ZdWsb+CyspP7+OktOZLFw5E9uQ8SK3GvrzumAR1k9ehhM3brhL8rFrpymO
    5.73 +        iJ1iAHpunzJ05l+YGm6AbcwonBLG4Bg3hmqlKw9CLXkkNtLzBF2aMnRpzhnJwx3fkpk+gZQ9xuyttuSH
    5.74 +        i7psPK1L5hE90vcbk13hTu6pNBwVU7BYrM8QUSV15v4F64jPGej4CX2+k7rL9hvqzfsUm4h+jHTtxKAZ
    5.75 +        7TANGsJUhQ528SNwV47nTpg9VUutuJI9m+qt06grMOJR8RjqK0yYH6vHrioHDtyxYef1EWw9r0X2yS/I
    5.76 +        OmLCluMLSd4TwZQAPYwXajPIqT1fze6IZYgG43zFibCSZkpCha/p4l5ClSYj3Toz1LkDo/3VsIwZinX8
    5.77 +        MBRxFsSGORKodMA5dCIekZOJjJtNYYE3h47a4ZpmyLH7ARysd6Tk1jfkXxnExjND2HxyMtvOhuKWao9x
    5.78 +        gLaoij3RmtWBL+Z2EkeyL1ZhmrIDSVJvSynWOlwT20hN9D26iKrVCQP/Lpgq+mEVPwi75Wb4Zq8gaHsZ
    5.79 +        0YeuEVFWjt8mJVMjRuCV8DWRu+w5+mw5hxq9Kas1ovDqYLZUapFXOY28S3FMCh3NuEANdL27MEwcweGu
    5.80 +        Xfku+DOmLx0oC8iVeltI3zvFDMAp5nNG+3ZnpG83DIPFcVH2xCKhPx5rTzBj/U1Gr61HJ/c50/a9IvXi
    5.81 +        P9lwqZEZqROwWfElPhVzSLu/gqx7YWTUzCHxujvRF5cyd8c8jEIHMyZYja8Xq6Pj2R25ytpE9Mc5Xhsx
    5.82 +        +SKp1xRpmWN0f9yWD2N8YG9GBfbCSKGBWaJAjCn6Icfo4n+GdtG3aff9EzS2vMR83x+E/tLE3HR9jp37
    5.83 +        Hh/VRMYG9MJYqc2klSMYrxjMN/49cYoeilG0yKfUwFC4rOevIeKfMWvZUFwShAAL4UCvyZLPVLEp/DP0
    5.84 +        mBI1UAwYgHnSIKzSBmAWGcGIgIO0cT+OFHwdKfEBHbOaGFH8D2y27yM+bwLPH62joW4N16rTKTq4gJzi
    5.85 +        OZQdDqH6ogpV6igsUz/HIlUL42VDGBuujUnYEHzTx4g6o42Y/EpJ3UgyGefzV2JzTZiRrIdFkg7TVo3A
    5.86 +        LuNLJvjl08+1FGl2BZLfBaSYu0jChV55LzHKDKXsiAWvHoTw6v48muvm8vz2bJ78zZ0X15fw8EosAfFa
    5.87 +        2K4Zhu3akZinGTApXp9p8QYoNptjJSbdc5LkJrXrLnX+zPYjVLusCNlizfTMsczYMI6Z6Q6McC6gg+VW
    5.88 +        JLs9SO4nkIKu0Sa+nvZZT3FQGVFXZcXLu068rDGn+YYxzVfH0XzZiqYqf6rKFzF9xRBmbTFgVu5E7NdN
    5.89 +        wkb1LQvWW5NR4ihqQnu6fCX1l8SnrbBiV+T6Caza64nXFnPc882xUCoZPP8HBoXtRjfhCP1jT9Aj5jwd
    5.90 +        lt1APeUYKfkjeV41meaqb2i+MoqmC3o0nTHg5ZmpPLkYwu5sG+ZuHIlP8bd47LLGeZs9LptsSS31JSnf
    5.91 +        Ql7/04K7nfTHy8VS9zGSpbFfb4pOLyG+zI0FO+2EXVGMi3VhcsJkrJLHYpZsj2FaLNqrTjFWlczeoi9o
    5.92 +        +mUsTSeH0nRiCE1HtGg6JCrkTzY0nokkOXE0fsUmBB9xZNFBVxaUzieixJP8UxE4RmmhNlHyEQI+arkN
    5.93 +        iU9n4cLJzJJZbD+rQFHuQsBuOwJ2WRBWaoaibArKUlOiiowJ2mZGUKEDR8v1qDpsTM2Br2n8cTDPivvx
    5.94 +        pGQkdYfdOHd4qfg7nkDUUQdiznoR9fNiog4tIve0ktxDPi23o487ST1auOUbkfi06TFOmjfaQ40T1Wnk
    5.95 +        n1OQcsqT9PPerLvqRe51D36onk/htXlsr5rHDxdcyKywZnW5JduOz2HPcS9+/EkUouNhbNgrLC60QbF3
    5.96 +        GimXfEi7Gk7S+Qg2nV/G8RuZmC8ZIM9eITg/buFuvaOLQKee30r5M5UjOX93HcVVMeT+LZDC2mD21AdT
    5.97 +        0RDCscYwfnkawelHERy4vYj8ShdWH7IjqdQCZZEpCoGlJRasODqdNZcWsP5WBFnVCvKuxvFz7ToCV01C
    5.98 +        3UTaJbi6vncnfOPCR+KBurqxVBYlduqV+hzKb4gr2M1AykWFO/EomnMvlFS9jKP6t3huCFx+tpRfHoRz
    5.99 +        9Ncg9gtBpbf8Kb4dwE4hurA2nG03Iyi5EUdlXQ5rS7xk8sPte0iD5I3/JwFyQLalYz9JR1hUHr3enprG
   5.100 +        An6uSeTgrUCOCRcqH0dz9UUsN39LoPb3RO78kUStwC3RrmqO49wzJcceRlP+ayilN4M5ens51Q/yUe3w
   5.101 +        Qv7L/6uBZCs4PvnTrVh2oDUoH40OfSQdUaD2O0TpcaUmn5sNm6msVXLqTgBn65dw6WEYVU8iufYkmmtP
   5.102 +        o7n8OIrKB6Gcqgvip5oATt5WcP3eRm7cK8Y7xVRe84PizFuK3O1bef7kwL+LEJ01xcbM6W//sdjRTtxp
   5.103 +        KKPhaSk372dx+W4c54XNlbV+nK1ZSGVNEBfvKqm+t5b6xyXUNZaTnOfF4OkdUBsvFYpcAz5E/t4mfO8l
   5.104 +        9fXJaCvQrW0HyUAIKZItnBHzDWuLg/m5ait37h/g781nW3Cv8QinRGzLPgVzl00Qt532iDGlHTUlc5FD
   5.105 +        rXXH/zvHfxXwzuloJ2/ONp9Iul11pEi1CVJFLzPprrjNvHjzVizfbF6K2K9i2Y531ZViP+4sjRFjesuz
   5.106 +        lovNh4jf5v9vD997jRYbVC5YAn0FBgt8ITBcQEfgyzcxDfHdRZ7x/yJuzf0vc27lpI33P0QAAAAASUVO
   5.107 +        RK5CYII=
   5.108  </value>
   5.109    </data>
   5.110    <metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     6.1 --- a/Server/Properties/Settings.Designer.cs	Wed Sep 02 12:54:07 2015 +0200
     6.2 +++ b/Server/Properties/Settings.Designer.cs	Wed Sep 02 16:02:24 2015 +0200
     6.3 @@ -105,5 +105,17 @@
     6.4                  this["StartFileName"] = value;
     6.5              }
     6.6          }
     6.7 +        
     6.8 +        [global::System.Configuration.UserScopedSettingAttribute()]
     6.9 +        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    6.10 +        [global::System.Configuration.DefaultSettingValueAttribute("None")]
    6.11 +        public string OpticalDriveToEject {
    6.12 +            get {
    6.13 +                return ((string)(this["OpticalDriveToEject"]));
    6.14 +            }
    6.15 +            set {
    6.16 +                this["OpticalDriveToEject"] = value;
    6.17 +            }
    6.18 +        }
    6.19      }
    6.20  }
     7.1 --- a/Server/Properties/Settings.settings	Wed Sep 02 12:54:07 2015 +0200
     7.2 +++ b/Server/Properties/Settings.settings	Wed Sep 02 16:02:24 2015 +0200
     7.3 @@ -23,5 +23,8 @@
     7.4      <Setting Name="StartFileName" Type="System.String" Scope="User">
     7.5        <Value Profile="(Default)">None</Value>
     7.6      </Setting>
     7.7 +    <Setting Name="OpticalDriveToEject" Type="System.String" Scope="User">
     7.8 +      <Value Profile="(Default)">None</Value>
     7.9 +    </Setting>
    7.10    </Settings>
    7.11  </SettingsFile>
    7.12 \ No newline at end of file