git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 10 Nov 2017 15:34:43 +0000 (15:34 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 10 Nov 2017 15:34:43 +0000 (15:34 +0000)
31 files changed:
client/AudioRecorder/Resources/configuration.json
client/AudioRecorder/WavRecorder.cs
client/Maestro/Commons/MorpheusXML.cs
client/Maestro/Commons/NexioXML.cs
client/Maestro/Configuration/ConfigurationInfo.cs
client/Maestro/Configuration/configuration-nexio-ingest.json
client/Maestro/Configuration/configuration-playout-ingest.json
client/Maestro/Configuration/configuration-playout.json
client/Maestro/Maestro.csproj
client/Maestro/MaestroForm.Designer.cs
client/Maestro/MaestroForm.Metadata.cs
client/Maestro/MaestroForm.Target.cs
client/Maestro/MaestroForm.cs
client/Maestro/Program.cs
client/Maestro/Properties/AssemblyInfo.cs
client/Maestro/Properties/Resources.Designer.cs
client/Maestro/Properties/Resources.resx
client/Maestro/Resources/ic_playlist_add_check_black_24dp_1x.png [new file with mode: 0644]
client/Maestro/Resources/ic_search_black_24dp_1x.png [new file with mode: 0644]
client/Maestro/Resources/installforge-installer-project.ifp
client/Maestro/Sources/CreatedFileMonitor.cs
client/Maestro/Targets/FXPTargetProcessor.cs
client/Maestro/Targets/UNCTargetProcessor.cs
client/OctopusClient/CheckableTreeView.cs [new file with mode: 0644]
client/OctopusClient/OctopusClient.csproj
client/OctopusClient/OctopusConfiguration.cs
client/OctopusClient/OctopusIDSelector.Designer.cs
client/OctopusClient/OctopusIDSelector.cs
client/PlanAIRClient/Workers/ADWorker.cs
client/PlanAIRClient/Workers/PromoWorker.cs
client/PlanAIRClient/Workers/SegmentWorker.cs

index d34157038c11dec635eafbb72eef8d11ebd59f78..626a9e1c12a899cea0f92e5cefd0005f228712d1 100644 (file)
@@ -1,6 +1,6 @@
 {\r
   "audio_device_name": "",\r
-  "unc_path": "\\\\store.in.user.hu\\upload",\r
+  "unc_path": "c:\\temp",\r
   "working_dir": "C:\\temp",\r
   "loud_percent": 30,\r
   "address": "http://10.10.1.28/services/rest/octopus/",\r
index 01b5c47c4a4076e463061adcd5bb0f979d0f24c8..b4a3a3a24b838f20f26a05897b4366f0272ad726 100644 (file)
@@ -56,8 +56,13 @@ namespace AudioRecorder {
             if (!pausing) {\r
                 waveWriter.Write(e.Buffer, 0, e.BytesRecorded);\r
                 waveWriter.Flush();\r
-                //float panelHeight = (device.AudioMeterInformation.MasterPeakValue + device.AudioSessionManager.SimpleAudioVolume.Volume) * 100;\r
-                //mainForm.setPanelSizeHeight(panelHeight);\r
+                try {\r
+                    float panelHeight = (device.AudioMeterInformation.MasterPeakValue + device.AudioSessionManager.SimpleAudioVolume.Volume) * 100;\r
+                    mainForm.setPanelSizeHeight(panelHeight);\r
+                }\r
+                catch (Exception ex) {\r
+                    Debug.WriteLine(ex.Message);\r
+                }\r
             }\r
         }\r
 \r
index cc059cf6fbcae9323cb3e2a810f7427ad969688f..71b314a3ecd57bc2719333855046e31825e1fa3e 100644 (file)
@@ -1,40 +1,80 @@
-using System;\r
+using DxPlay;\r
+using System;\r
+using System.Collections.Generic;\r
+using System.Globalization;\r
 using System.IO;\r
 using System.Text;\r
 using System.Xml;\r
 \r
 /*\r
-<?xml version="1.0" encoding="UTF-16"?>\r
-<ID extendedId="aaaaaaa">\r
-       <KillDate>02-02-2018</KillDate>\r
-       <ExtendedDescription>TEST TEST</ExtendedDescription>\r
-       <ExtendedAgency>AGENT AGENT</ExtendedAgency>\r
-</ID>\r
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ImportItems>\r
+  <ImportItem>\r
+    <Item>\r
+      <Material_Id>XMLTEST011</Material_Id>\r
+      <Title>Teszt Mozi</Title>\r
+      <On_Air_Duration>00000914</On_Air_Duration>\r
+    </Item>\r
+    <Instance>\r
+      <Device_Id>ISILON</Device_Id>\r
+      <Quality_Check>09/11/2017</Quality_Check>\r
+      <Long_File_Id>XMLTEST011</Long_File_Id>\r
+    </Instance>\r
+  </ImportItem>\r
+</ImportItems>\r
 */\r
 namespace Commons {\r
 \r
     public class MorpheusXML {\r
-        public static string ToXML(string fileName, DateTime? killDate, string description, string agency) {\r
+\r
+        private static string FlattenTC(string tc) {\r
+            return tc?.Replace(":", "").Replace(".", "");\r
+        }\r
+\r
+        public static byte[] ToXML(string title, string fileName, string deviceID, List<MovieSegment> segments) {\r
+            if (String.IsNullOrEmpty(title))\r
+                throw new NullReferenceException("Hiányzik a cél állomány címe.");\r
             if (String.IsNullOrEmpty(fileName))\r
                 throw new NullReferenceException("Hiányzik a cél állomány neve.");\r
+            if (String.IsNullOrEmpty(deviceID))\r
+                throw new NullReferenceException("Hiányzik a cél állomány eszköz leírója.");\r
 \r
-            string result = null;\r
+            byte[] result = null;\r
             XmlDocument doc = new XmlDocument();\r
-            XmlElement rootElement = (XmlElement)doc.AppendChild(doc.CreateElement("ID"));\r
-            rootElement.SetAttribute("extendedId", fileName);\r
-            if (killDate != null)\r
-                rootElement.AppendChild(doc.CreateElement("KillDate")).InnerText = ((DateTime)killDate).ToString("MM-dd-yyyy");\r
-            if (!String.IsNullOrEmpty(description))\r
-                rootElement.AppendChild(doc.CreateElement("ExtendedDescription")).InnerText = description;\r
-            if (!String.IsNullOrEmpty(agency))\r
-                rootElement.AppendChild(doc.CreateElement("ExtendedAgency")).InnerText = agency;\r
-\r
-            XmlWriterSettings settings = new XmlWriterSettings();\r
-            settings.Indent = true;\r
-            StringBuilder ms = new StringBuilder();\r
-            XmlWriter writer = XmlWriter.Create(ms, settings);\r
-            doc.Save(writer);\r
-            result = ms.ToString();\r
+            XmlElement rootElement = (XmlElement)doc.AppendChild(doc.CreateElement("ImportItems"));\r
+\r
+            foreach (MovieSegment segment in segments) {\r
+                Timecode duration = new Timecode();\r
+                duration.Set(segment.TCOut.Frames - segment.TCIn.Frames);\r
+                XmlNode importItemNode = rootElement.AppendChild(doc.CreateElement("ImportItem"));\r
+                XmlElement itemElement = doc.CreateElement("Item");\r
+                importItemNode.AppendChild(itemElement);\r
+                itemElement.AppendChild(doc.CreateElement("Material_Id")).InnerText = fileName;\r
+                itemElement.AppendChild(doc.CreateElement("Title")).InnerText = title;\r
+                itemElement.AppendChild(doc.CreateElement("On_Air_Duration")).InnerText = FlattenTC(duration.ToString());\r
+                XmlElement instanceElement = doc.CreateElement("Instance");\r
+                importItemNode.AppendChild(instanceElement);\r
+                instanceElement.AppendChild(doc.CreateElement("Long_File_Id")).InnerText = fileName;\r
+                instanceElement.AppendChild(doc.CreateElement("Device_Id")).InnerText = deviceID;\r
+                instanceElement.AppendChild(doc.CreateElement("Quality_Check")).InnerText = DateTime.Now.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);\r
+                instanceElement.AppendChild(doc.CreateElement("Timecode_In")).InnerText = FlattenTC(segment.TCIn.ToString());\r
+                instanceElement.AppendChild(doc.CreateElement("Timecode_Out")).InnerText = FlattenTC(segment.TCOut.ToString());\r
+            }\r
+\r
+            UTF8Encoding encoding = new UTF8Encoding(false, true);\r
+\r
+            //XmlWriterSettings settings = new XmlWriterSettings();\r
+            //settings.Indent = true;\r
+            //settings.Encoding = encoding;\r
+\r
+            using (MemoryStream output = new MemoryStream()) {\r
+                using (XmlTextWriter writer = new XmlTextWriter(output, encoding)) {\r
+                    writer.Formatting = Formatting.Indented;\r
+                    writer.WriteStartDocument();\r
+                    doc.Save(writer);\r
+                }\r
+                result = output.ToArray();\r
+            }\r
             return result;\r
         }\r
     }\r
index bca4977f27808275d293bcdd02de1b63cd1d19b1..05fb32a234bbc69b159cd06f8453938ed3ef55e6 100644 (file)
@@ -1,5 +1,4 @@
 using System;\r
-using System.IO;\r
 using System.Text;\r
 using System.Xml;\r
 \r
index 185f71c617cf52fb8963f1c25be54c2742332dab..53dc80c40eea27667372998c210debb7bfa39412 100644 (file)
@@ -65,6 +65,8 @@ namespace Maestro.Configuration {
         public string Tag { get; set; }\r
         public bool SaveArchiveMetadata { get; set; }\r
         public bool SaveMorpheusMetadata { get; set; }\r
+        public string DeviceIDMorpheus { get; set; }\r
+        public string PathMorpheusMetadata { get; set; }\r
         public bool DisableFileVersioning { get; set; }\r
         public bool SendEmailOnError { get; set; }\r
         public string ErrorEmailRecipient { get; set; }\r
@@ -103,6 +105,8 @@ namespace Maestro.Configuration {
     }\r
 \r
     public class OctopusMetadata : MetadataProvider {\r
+        public bool DisablePlaceHolderCheck { get; set; }\r
+        public bool DisableStoryCheck { get; set; }\r
     }\r
 \r
     public class TrafficMetadata : MetadataProvider {\r
index b3bd70bfa81cd87f50fb7e9834fda247b6d080aa..d247d4f9f3c0e7be6a566f816a5354b11adb0cf0 100644 (file)
@@ -1,6 +1,6 @@
 {\r
   "title": "NEXIO betöltő",\r
-  "active": false,\r
+  "active": true,\r
   "startInTray": false,\r
   "enableCustomMetadataId": true,\r
   "player": {\r
@@ -18,6 +18,8 @@
   "metadatas": [\r
     {\r
       "$type": "OctopusMetadata",\r
+      "disablePlaceHolderCheck": false,\r
+      "disableStoryCheck": true,\r
       "server": {\r
         "address": "http://10.10.1.27/services/rest/octopus/",\r
         "timeout": 1000\r
index 59c9038894572e4d22c66634785a1b12982e6f0b..2cc6c0d2269e63439693f06f4e652c4d47cc0bca 100644 (file)
       "tag": "Adáskész",\r
       "disableFileVersioning": true,\r
       "saveMorpheusMetadata": true,\r
+      "pathMorpheusMetadata": "/PLAYOUT/MorpheusGateway/Input",\r
+      "deviceIdMorpheus": "ISILON",\r
       "remote": {\r
-        "address": "ftp://10.10.1.100/PLAYOUT/IceGateway/Input",\r
+        "address": "ftp://10.10.1.100/PLAYOUT/Video",\r
         "userName": "mediacube",\r
         "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
         "timeout": 1000\r
       "tag": "XAdáskész",\r
       "disableFileVersioning": false,\r
       "saveMorpheusMetadata": true,\r
+      "pathMorpheusMetadata": "/PLAYOUT/MorpheusGateway/Input",\r
+      "deviceIdMorpheus": "ISILON",\r
       "remote": {\r
-        "address": "ftp://10.10.1.100/PLAYOUT/IceGateway/Input",\r
+        "address": "ftp://10.10.1.100/PLAYOUT/Video",\r
         "userName": "mediacube",\r
         "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
         "timeout": 1000\r
index ef45e6c7b58e0ff335f3787605a5782f9c33f657..5a16806fc29fe7e96e4efbf557a5946fe1c8b8fb 100644 (file)
@@ -1,7 +1,7 @@
 {\r
   "title": "Adáslebony",\r
   "active": false,\r
-  "startInTray": true,\r
+  "startInTray": false,\r
   "enableCustomMetadataId": true,\r
   "player": {\r
     "enabled": true,\r
index 88c783c08e512cb0ba77dcf4e888d57262f5ff58..abfa5d7ff0f9e9b9bdecdae56d65e3fb585f280e 100644 (file)
     <None Include="maestro.ico" />\r
     <None Include="Resources\ic_clear_black_24dp_1x.png" />\r
     <None Include="Resources\ic_play_arrow_black_24dp_1x.ico" />\r
+    <None Include="Resources\ic_search_black_24dp_1x.png" />\r
+    <None Include="Resources\ic_playlist_add_check_black_24dp_1x.png" />\r
     <Content Include="TODO.txt" />\r
   </ItemGroup>\r
   <ItemGroup>\r
index 229d1128e608fce63013df5c3a24a957ab387d7c..d861d1c167ec5bfae02c008abb0a5859d0b22dad 100644 (file)
@@ -26,21 +26,21 @@ namespace Maestro {
         /// </summary>\r
         private void InitializeComponent() {\r
             this.components = new System.ComponentModel.Container();\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle15 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle16 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle17 = new System.Windows.Forms.DataGridViewCellStyle();\r
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MaestroForm));\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle();\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle();\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle();\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle();\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle12 = new System.Windows.Forms.DataGridViewCellStyle();\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle13 = new System.Windows.Forms.DataGridViewCellStyle();\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle14 = new System.Windows.Forms.DataGridViewCellStyle();\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle18 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle21 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle22 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle23 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle19 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle20 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle24 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle26 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle27 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle28 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle25 = new System.Windows.Forms.DataGridViewCellStyle();\r
             this.groupSource = new System.Windows.Forms.GroupBox();\r
             this.dgSource = new System.Windows.Forms.DataGridView();\r
             this.bindingSource = new System.Windows.Forms.BindingSource(this.components);\r
@@ -63,9 +63,9 @@ namespace Maestro {
             this.tpTraffic = new System.Windows.Forms.TabPage();\r
             this.trafficIDSelector = new TrafficClient.TrafficIDSelector();\r
             this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();\r
+            this.mActions = new Maestro.MenuButton();\r
             this.labelSelectedMetadata = new System.Windows.Forms.Label();\r
             this.textSelectedMetadata = new System.Windows.Forms.TextBox();\r
-            this.menuButtonActions = new Maestro.MenuButton();\r
             this.groupTarget = new System.Windows.Forms.GroupBox();\r
             this.panelActions = new System.Windows.Forms.TableLayoutPanel();\r
             this.panel1 = new System.Windows.Forms.Panel();\r
@@ -159,32 +159,32 @@ namespace Maestro {
             this.dgSource.BackgroundColor = System.Drawing.Color.White;\r
             this.dgSource.BorderStyle = System.Windows.Forms.BorderStyle.None;\r
             this.dgSource.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.Raised;\r
-            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
-            dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;\r
-            dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;\r
-            dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;\r
-            dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;\r
-            dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;\r
-            this.dgSource.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;\r
+            dataGridViewCellStyle15.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
+            dataGridViewCellStyle15.BackColor = System.Drawing.SystemColors.Control;\r
+            dataGridViewCellStyle15.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            dataGridViewCellStyle15.ForeColor = System.Drawing.SystemColors.WindowText;\r
+            dataGridViewCellStyle15.SelectionBackColor = System.Drawing.SystemColors.Highlight;\r
+            dataGridViewCellStyle15.SelectionForeColor = System.Drawing.SystemColors.HighlightText;\r
+            dataGridViewCellStyle15.WrapMode = System.Windows.Forms.DataGridViewTriState.True;\r
+            this.dgSource.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle15;\r
             this.dgSource.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;\r
             this.dgSource.DataSource = this.bindingSource;\r
-            dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
-            dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;\r
-            dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;\r
-            dataGridViewCellStyle2.SelectionBackColor = System.Drawing.Color.Gainsboro;\r
-            dataGridViewCellStyle2.SelectionForeColor = System.Drawing.Color.Black;\r
-            dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;\r
-            this.dgSource.DefaultCellStyle = dataGridViewCellStyle2;\r
+            dataGridViewCellStyle16.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
+            dataGridViewCellStyle16.BackColor = System.Drawing.SystemColors.Window;\r
+            dataGridViewCellStyle16.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            dataGridViewCellStyle16.ForeColor = System.Drawing.SystemColors.ControlText;\r
+            dataGridViewCellStyle16.SelectionBackColor = System.Drawing.Color.Gainsboro;\r
+            dataGridViewCellStyle16.SelectionForeColor = System.Drawing.Color.Black;\r
+            dataGridViewCellStyle16.WrapMode = System.Windows.Forms.DataGridViewTriState.False;\r
+            this.dgSource.DefaultCellStyle = dataGridViewCellStyle16;\r
             this.dgSource.Dock = System.Windows.Forms.DockStyle.Fill;\r
             this.dgSource.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically;\r
             this.dgSource.EnableHeadersVisualStyles = false;\r
             this.dgSource.Location = new System.Drawing.Point(10, 47);\r
             this.dgSource.Name = "dgSource";\r
             this.dgSource.RowHeadersVisible = false;\r
-            dataGridViewCellStyle3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            this.dgSource.RowsDefaultCellStyle = dataGridViewCellStyle3;\r
+            dataGridViewCellStyle17.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            this.dgSource.RowsDefaultCellStyle = dataGridViewCellStyle17;\r
             this.dgSource.RowTemplate.DefaultCellStyle.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
             this.dgSource.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;\r
             this.dgSource.Size = new System.Drawing.Size(347, 352);\r
@@ -268,7 +268,7 @@ namespace Maestro {
             this.textSelectedSource.Location = new System.Drawing.Point(3, 28);\r
             this.textSelectedSource.Name = "textSelectedSource";\r
             this.textSelectedSource.ReadOnly = true;\r
-            this.textSelectedSource.Size = new System.Drawing.Size(245, 26);\r
+            this.textSelectedSource.Size = new System.Drawing.Size(309, 26);\r
             this.textSelectedSource.TabIndex = 10;\r
             // \r
             // label1\r
@@ -287,15 +287,16 @@ namespace Maestro {
             // buttonMetadata\r
             // \r
             this.buttonMetadata.BackColor = System.Drawing.SystemColors.ButtonFace;\r
+            this.buttonMetadata.Cursor = System.Windows.Forms.Cursors.Hand;\r
             this.buttonMetadata.Dock = System.Windows.Forms.DockStyle.Top;\r
             this.buttonMetadata.Enabled = false;\r
             this.buttonMetadata.FlatStyle = System.Windows.Forms.FlatStyle.Popup;\r
             this.buttonMetadata.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F);\r
-            this.buttonMetadata.Location = new System.Drawing.Point(254, 28);\r
+            this.buttonMetadata.Image = global::Maestro.Properties.Resources.ic_search_black_24dp_1x;\r
+            this.buttonMetadata.Location = new System.Drawing.Point(318, 28);\r
             this.buttonMetadata.Name = "buttonMetadata";\r
-            this.buttonMetadata.Size = new System.Drawing.Size(90, 26);\r
+            this.buttonMetadata.Size = new System.Drawing.Size(26, 26);\r
             this.buttonMetadata.TabIndex = 14;\r
-            this.buttonMetadata.Text = "Metadata";\r
             this.buttonMetadata.UseVisualStyleBackColor = false;\r
             this.buttonMetadata.Click += new System.EventHandler(this.buttonMetadata_Click);\r
             // \r
@@ -438,9 +439,9 @@ namespace Maestro {
             this.tableLayoutPanel1.ColumnCount = 2;\r
             this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));\r
             this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());\r
+            this.tableLayoutPanel1.Controls.Add(this.mActions, 0, 0);\r
             this.tableLayoutPanel1.Controls.Add(this.labelSelectedMetadata, 0, 0);\r
             this.tableLayoutPanel1.Controls.Add(this.textSelectedMetadata, 0, 1);\r
-            this.tableLayoutPanel1.Controls.Add(this.menuButtonActions, 1, 1);\r
             this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom;\r
             this.tableLayoutPanel1.Location = new System.Drawing.Point(10, 399);\r
             this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);\r
@@ -451,16 +452,30 @@ namespace Maestro {
             this.tableLayoutPanel1.Size = new System.Drawing.Size(286, 62);\r
             this.tableLayoutPanel1.TabIndex = 4;\r
             // \r
+            // mActions\r
+            // \r
+            this.mActions.BackColor = System.Drawing.SystemColors.Control;\r
+            this.mActions.Dock = System.Windows.Forms.DockStyle.Top;\r
+            this.mActions.FlatStyle = System.Windows.Forms.FlatStyle.Popup;\r
+            this.mActions.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            this.mActions.Location = new System.Drawing.Point(196, 0);\r
+            this.mActions.Margin = new System.Windows.Forms.Padding(0);\r
+            this.mActions.Menu = this.ctxmActions;\r
+            this.mActions.Name = "mActions";\r
+            this.mActions.Size = new System.Drawing.Size(90, 26);\r
+            this.mActions.TabIndex = 15;\r
+            this.mActions.Text = "Actions";\r
+            this.mActions.UseVisualStyleBackColor = false;\r
+            // \r
             // labelSelectedMetadata\r
             // \r
             this.labelSelectedMetadata.AutoSize = true;\r
-            this.tableLayoutPanel1.SetColumnSpan(this.labelSelectedMetadata, 2);\r
-            this.labelSelectedMetadata.Dock = System.Windows.Forms.DockStyle.Fill;\r
+            this.labelSelectedMetadata.Dock = System.Windows.Forms.DockStyle.Left;\r
             this.labelSelectedMetadata.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
             this.labelSelectedMetadata.Location = new System.Drawing.Point(3, 0);\r
             this.labelSelectedMetadata.Name = "labelSelectedMetadata";\r
             this.labelSelectedMetadata.Padding = new System.Windows.Forms.Padding(0, 5, 0, 5);\r
-            this.labelSelectedMetadata.Size = new System.Drawing.Size(280, 25);\r
+            this.labelSelectedMetadata.Size = new System.Drawing.Size(110, 26);\r
             this.labelSelectedMetadata.TabIndex = 13;\r
             this.labelSelectedMetadata.Text = "Selected metadata";\r
             // \r
@@ -470,26 +485,12 @@ namespace Maestro {
             this.textSelectedMetadata.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r
             this.textSelectedMetadata.Dock = System.Windows.Forms.DockStyle.Fill;\r
             this.textSelectedMetadata.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            this.textSelectedMetadata.Location = new System.Drawing.Point(3, 28);\r
+            this.textSelectedMetadata.Location = new System.Drawing.Point(3, 29);\r
             this.textSelectedMetadata.Name = "textSelectedMetadata";\r
-            this.textSelectedMetadata.Size = new System.Drawing.Size(184, 26);\r
+            this.textSelectedMetadata.Size = new System.Drawing.Size(190, 26);\r
             this.textSelectedMetadata.TabIndex = 12;\r
             this.textSelectedMetadata.TextChanged += new System.EventHandler(this.OnMetadataIDChanged);\r
             // \r
-            // menuButtonActions\r
-            // \r
-            this.menuButtonActions.BackColor = System.Drawing.SystemColors.ButtonFace;\r
-            this.menuButtonActions.Dock = System.Windows.Forms.DockStyle.Top;\r
-            this.menuButtonActions.FlatStyle = System.Windows.Forms.FlatStyle.Popup;\r
-            this.menuButtonActions.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            this.menuButtonActions.Location = new System.Drawing.Point(193, 28);\r
-            this.menuButtonActions.Menu = this.ctxmActions;\r
-            this.menuButtonActions.Name = "menuButtonActions";\r
-            this.menuButtonActions.Size = new System.Drawing.Size(90, 27);\r
-            this.menuButtonActions.TabIndex = 14;\r
-            this.menuButtonActions.Text = "Actions";\r
-            this.menuButtonActions.UseVisualStyleBackColor = false;\r
-            // \r
             // groupTarget\r
             // \r
             this.groupTarget.BackColor = System.Drawing.Color.Transparent;\r
@@ -613,14 +614,14 @@ namespace Maestro {
             this.dgJobs.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.DisplayedCells;\r
             this.dgJobs.BackgroundColor = System.Drawing.Color.White;\r
             this.dgJobs.BorderStyle = System.Windows.Forms.BorderStyle.None;\r
-            dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
-            dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Control;\r
-            dataGridViewCellStyle4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText;\r
-            dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight;\r
-            dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText;\r
-            dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True;\r
-            this.dgJobs.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle4;\r
+            dataGridViewCellStyle18.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
+            dataGridViewCellStyle18.BackColor = System.Drawing.SystemColors.Control;\r
+            dataGridViewCellStyle18.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            dataGridViewCellStyle18.ForeColor = System.Drawing.SystemColors.WindowText;\r
+            dataGridViewCellStyle18.SelectionBackColor = System.Drawing.SystemColors.Highlight;\r
+            dataGridViewCellStyle18.SelectionForeColor = System.Drawing.SystemColors.HighlightText;\r
+            dataGridViewCellStyle18.WrapMode = System.Windows.Forms.DataGridViewTriState.True;\r
+            this.dgJobs.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle18;\r
             this.dgJobs.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;\r
             this.dgJobs.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {\r
             this.columnLabel,\r
@@ -633,32 +634,32 @@ namespace Maestro {
             this.columnOutput,\r
             this.columnKillDate});\r
             this.dgJobs.DataSource = this.bindingSourceJobs;\r
-            dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
-            dataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Window;\r
-            dataGridViewCellStyle7.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            dataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.ControlText;\r
-            dataGridViewCellStyle7.NullValue = null;\r
-            dataGridViewCellStyle7.SelectionBackColor = System.Drawing.Color.Gainsboro;\r
-            dataGridViewCellStyle7.SelectionForeColor = System.Drawing.Color.Black;\r
-            dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.False;\r
-            this.dgJobs.DefaultCellStyle = dataGridViewCellStyle7;\r
+            dataGridViewCellStyle21.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
+            dataGridViewCellStyle21.BackColor = System.Drawing.SystemColors.Window;\r
+            dataGridViewCellStyle21.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            dataGridViewCellStyle21.ForeColor = System.Drawing.SystemColors.ControlText;\r
+            dataGridViewCellStyle21.NullValue = null;\r
+            dataGridViewCellStyle21.SelectionBackColor = System.Drawing.Color.Gainsboro;\r
+            dataGridViewCellStyle21.SelectionForeColor = System.Drawing.Color.Black;\r
+            dataGridViewCellStyle21.WrapMode = System.Windows.Forms.DataGridViewTriState.False;\r
+            this.dgJobs.DefaultCellStyle = dataGridViewCellStyle21;\r
             this.dgJobs.Dock = System.Windows.Forms.DockStyle.Fill;\r
             this.dgJobs.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically;\r
             this.dgJobs.EnableHeadersVisualStyles = false;\r
             this.dgJobs.GridColor = System.Drawing.Color.White;\r
             this.dgJobs.Location = new System.Drawing.Point(3, 3);\r
             this.dgJobs.Name = "dgJobs";\r
-            dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
-            dataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Control;\r
-            dataGridViewCellStyle8.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            dataGridViewCellStyle8.ForeColor = System.Drawing.SystemColors.WindowText;\r
-            dataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight;\r
-            dataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText;\r
-            dataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.True;\r
-            this.dgJobs.RowHeadersDefaultCellStyle = dataGridViewCellStyle8;\r
+            dataGridViewCellStyle22.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
+            dataGridViewCellStyle22.BackColor = System.Drawing.SystemColors.Control;\r
+            dataGridViewCellStyle22.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            dataGridViewCellStyle22.ForeColor = System.Drawing.SystemColors.WindowText;\r
+            dataGridViewCellStyle22.SelectionBackColor = System.Drawing.SystemColors.Highlight;\r
+            dataGridViewCellStyle22.SelectionForeColor = System.Drawing.SystemColors.HighlightText;\r
+            dataGridViewCellStyle22.WrapMode = System.Windows.Forms.DataGridViewTriState.True;\r
+            this.dgJobs.RowHeadersDefaultCellStyle = dataGridViewCellStyle22;\r
             this.dgJobs.RowHeadersVisible = false;\r
-            dataGridViewCellStyle9.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            this.dgJobs.RowsDefaultCellStyle = dataGridViewCellStyle9;\r
+            dataGridViewCellStyle23.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            this.dgJobs.RowsDefaultCellStyle = dataGridViewCellStyle23;\r
             this.dgJobs.RowTemplate.DefaultCellStyle.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
             this.dgJobs.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;\r
             this.dgJobs.Size = new System.Drawing.Size(988, 92);\r
@@ -678,8 +679,8 @@ namespace Maestro {
             // \r
             this.columnID.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells;\r
             this.columnID.DataPropertyName = "ID";\r
-            dataGridViewCellStyle5.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            this.columnID.DefaultCellStyle = dataGridViewCellStyle5;\r
+            dataGridViewCellStyle19.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            this.columnID.DefaultCellStyle = dataGridViewCellStyle19;\r
             this.columnID.HeaderText = "ID";\r
             this.columnID.Name = "columnID";\r
             this.columnID.Width = 44;\r
@@ -696,8 +697,8 @@ namespace Maestro {
             // \r
             this.columnStatus.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells;\r
             this.columnStatus.DataPropertyName = "Status";\r
-            dataGridViewCellStyle6.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            this.columnStatus.DefaultCellStyle = dataGridViewCellStyle6;\r
+            dataGridViewCellStyle20.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            this.columnStatus.DefaultCellStyle = dataGridViewCellStyle20;\r
             this.columnStatus.HeaderText = "Status";\r
             this.columnStatus.Name = "columnStatus";\r
             this.columnStatus.Width = 66;\r
@@ -762,14 +763,14 @@ namespace Maestro {
             this.dgMessages.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.DisplayedCells;\r
             this.dgMessages.BackgroundColor = System.Drawing.Color.White;\r
             this.dgMessages.BorderStyle = System.Windows.Forms.BorderStyle.None;\r
-            dataGridViewCellStyle10.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
-            dataGridViewCellStyle10.BackColor = System.Drawing.SystemColors.Control;\r
-            dataGridViewCellStyle10.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            dataGridViewCellStyle10.ForeColor = System.Drawing.SystemColors.WindowText;\r
-            dataGridViewCellStyle10.SelectionBackColor = System.Drawing.SystemColors.Highlight;\r
-            dataGridViewCellStyle10.SelectionForeColor = System.Drawing.SystemColors.HighlightText;\r
-            dataGridViewCellStyle10.WrapMode = System.Windows.Forms.DataGridViewTriState.True;\r
-            this.dgMessages.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle10;\r
+            dataGridViewCellStyle24.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
+            dataGridViewCellStyle24.BackColor = System.Drawing.SystemColors.Control;\r
+            dataGridViewCellStyle24.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            dataGridViewCellStyle24.ForeColor = System.Drawing.SystemColors.WindowText;\r
+            dataGridViewCellStyle24.SelectionBackColor = System.Drawing.SystemColors.Highlight;\r
+            dataGridViewCellStyle24.SelectionForeColor = System.Drawing.SystemColors.HighlightText;\r
+            dataGridViewCellStyle24.WrapMode = System.Windows.Forms.DataGridViewTriState.True;\r
+            this.dgMessages.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle24;\r
             this.dgMessages.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;\r
             this.dgMessages.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {\r
             this.dataGridViewTextBoxColumn1,\r
@@ -777,15 +778,15 @@ namespace Maestro {
             this.timeDataGridViewTextBoxColumn,\r
             this.messageDataGridViewTextBoxColumn});\r
             this.dgMessages.DataSource = this.systemMessageBindingSource;\r
-            dataGridViewCellStyle12.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
-            dataGridViewCellStyle12.BackColor = System.Drawing.SystemColors.Window;\r
-            dataGridViewCellStyle12.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            dataGridViewCellStyle12.ForeColor = System.Drawing.Color.Red;\r
-            dataGridViewCellStyle12.NullValue = null;\r
-            dataGridViewCellStyle12.SelectionBackColor = System.Drawing.Color.Gainsboro;\r
-            dataGridViewCellStyle12.SelectionForeColor = System.Drawing.Color.Red;\r
-            dataGridViewCellStyle12.WrapMode = System.Windows.Forms.DataGridViewTriState.False;\r
-            this.dgMessages.DefaultCellStyle = dataGridViewCellStyle12;\r
+            dataGridViewCellStyle26.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
+            dataGridViewCellStyle26.BackColor = System.Drawing.SystemColors.Window;\r
+            dataGridViewCellStyle26.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            dataGridViewCellStyle26.ForeColor = System.Drawing.Color.Red;\r
+            dataGridViewCellStyle26.NullValue = null;\r
+            dataGridViewCellStyle26.SelectionBackColor = System.Drawing.Color.Gainsboro;\r
+            dataGridViewCellStyle26.SelectionForeColor = System.Drawing.Color.Red;\r
+            dataGridViewCellStyle26.WrapMode = System.Windows.Forms.DataGridViewTriState.False;\r
+            this.dgMessages.DefaultCellStyle = dataGridViewCellStyle26;\r
             this.dgMessages.Dock = System.Windows.Forms.DockStyle.Fill;\r
             this.dgMessages.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically;\r
             this.dgMessages.EnableHeadersVisualStyles = false;\r
@@ -793,17 +794,17 @@ namespace Maestro {
             this.dgMessages.Location = new System.Drawing.Point(3, 3);\r
             this.dgMessages.Name = "dgMessages";\r
             this.dgMessages.ReadOnly = true;\r
-            dataGridViewCellStyle13.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
-            dataGridViewCellStyle13.BackColor = System.Drawing.SystemColors.Control;\r
-            dataGridViewCellStyle13.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            dataGridViewCellStyle13.ForeColor = System.Drawing.SystemColors.WindowText;\r
-            dataGridViewCellStyle13.SelectionBackColor = System.Drawing.SystemColors.Highlight;\r
-            dataGridViewCellStyle13.SelectionForeColor = System.Drawing.SystemColors.HighlightText;\r
-            dataGridViewCellStyle13.WrapMode = System.Windows.Forms.DataGridViewTriState.True;\r
-            this.dgMessages.RowHeadersDefaultCellStyle = dataGridViewCellStyle13;\r
+            dataGridViewCellStyle27.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
+            dataGridViewCellStyle27.BackColor = System.Drawing.SystemColors.Control;\r
+            dataGridViewCellStyle27.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            dataGridViewCellStyle27.ForeColor = System.Drawing.SystemColors.WindowText;\r
+            dataGridViewCellStyle27.SelectionBackColor = System.Drawing.SystemColors.Highlight;\r
+            dataGridViewCellStyle27.SelectionForeColor = System.Drawing.SystemColors.HighlightText;\r
+            dataGridViewCellStyle27.WrapMode = System.Windows.Forms.DataGridViewTriState.True;\r
+            this.dgMessages.RowHeadersDefaultCellStyle = dataGridViewCellStyle27;\r
             this.dgMessages.RowHeadersVisible = false;\r
-            dataGridViewCellStyle14.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            this.dgMessages.RowsDefaultCellStyle = dataGridViewCellStyle14;\r
+            dataGridViewCellStyle28.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            this.dgMessages.RowsDefaultCellStyle = dataGridViewCellStyle28;\r
             this.dgMessages.RowTemplate.DefaultCellStyle.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
             this.dgMessages.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;\r
             this.dgMessages.Size = new System.Drawing.Size(988, 92);\r
@@ -822,8 +823,8 @@ namespace Maestro {
             // \r
             this.dataGridViewTextBoxColumn2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;\r
             this.dataGridViewTextBoxColumn2.DataPropertyName = "Message";\r
-            dataGridViewCellStyle11.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            this.dataGridViewTextBoxColumn2.DefaultCellStyle = dataGridViewCellStyle11;\r
+            dataGridViewCellStyle25.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            this.dataGridViewTextBoxColumn2.DefaultCellStyle = dataGridViewCellStyle25;\r
             this.dataGridViewTextBoxColumn2.HeaderText = "Üzenet";\r
             this.dataGridViewTextBoxColumn2.Name = "dataGridViewTextBoxColumn2";\r
             this.dataGridViewTextBoxColumn2.ReadOnly = true;\r
@@ -934,7 +935,6 @@ namespace Maestro {
         private System.Windows.Forms.TabPage tpTraffic;\r
         private System.Windows.Forms.BindingSource metadataInfoBindingSource;\r
         private System.Windows.Forms.Panel panel1;\r
-        private MenuButton menuButtonActions;\r
         private System.Windows.Forms.ContextMenuStrip ctxmActions;\r
         private System.Windows.Forms.ToolStripMenuItem ctxiDefineSegments;\r
         private System.Windows.Forms.ToolStripMenuItem ctxiModifyArchiveMetadata;\r
@@ -964,6 +964,7 @@ namespace Maestro {
         private System.Windows.Forms.DataGridViewTextBoxColumn timeDataGridViewTextBoxColumn;\r
         private System.Windows.Forms.DataGridViewTextBoxColumn messageDataGridViewTextBoxColumn;\r
         private System.Windows.Forms.PictureBox picClearFilter;\r
+        private MenuButton mActions;\r
     }\r
 }\r
 \r
index 4a8e1481707e00d059c4a027bbe296cb2f19cc5d..db8149da059988fdc8faff47e3ca1c2b95ec66c9 100644 (file)
@@ -23,6 +23,7 @@ namespace Maestro {
 \r
         private MetadataInfo selectedMetadata;\r
         private List<Segment> segments;\r
+        private BindingList<MovieSegment> movieSegments;\r
         private MediaCubeApi mediaCubeApi;\r
         private ArchiveMetadata archiveMetadata;\r
         private static MetadataType[] validTypes = { MetadataType.TrafficAD, MetadataType.TrafficMaterial, MetadataType.TrafficPromo };\r
@@ -66,16 +67,18 @@ namespace Maestro {
         }\r
 \r
         private void InitializeOctopusSelector() {\r
-            OctopusMetadata metadata = Configuration.GetMetadataProvider<OctopusMetadata>();\r
-            if (metadata == null) {\r
+            OctopusMetadata octopusConfiguration = Configuration.GetMetadataProvider<OctopusMetadata>();\r
+            if (octopusConfiguration == null) {\r
                 tabMetadata.TabPages.Remove(tpOctopus);\r
                 return;\r
             }\r
             octopusIDSelector.Configuration = new OctopusConfiguration() {\r
-                Address = metadata.Server.Address,\r
-                UserName = metadata.Server.UserName,\r
-                Password = metadata.Server.Password,\r
-                Timeout = metadata.Server.Timeout,\r
+                Address = octopusConfiguration.Server.Address,\r
+                UserName = octopusConfiguration.Server.UserName,\r
+                Password = octopusConfiguration.Server.Password,\r
+                Timeout = octopusConfiguration.Server.Timeout,\r
+                DisablePlaceHolderCheck = octopusConfiguration.DisablePlaceHolderCheck,\r
+                DisableStoryCheck = octopusConfiguration.DisableStoryCheck,\r
                 MessageBus = errorMessageBus\r
             };\r
             octopusIDSelector.IDChangedEvent += OnOctopusIDSelected;\r
@@ -129,17 +132,17 @@ namespace Maestro {
             if (SelectedSource?.FileInfo == null)\r
                 return;\r
             Cursor = Cursors.WaitCursor;\r
-            BindingList<MovieSegment> movieSegments = GetEditableSegments();\r
+            CreateEditableSegments();\r
             PlayerForm player = new PlayerForm(ref movieSegments);\r
             player.AutoStart = Configuration.Player.AutoStart;\r
             player.SegmentEditor = Configuration.Player.SegmentEditor;\r
             player.Open(SelectedSource.FileInfo);\r
             Cursor = Cursors.Default;\r
             player.ShowDialog();\r
-            ConvertMovieSegmentsToSegments(movieSegments);\r
+            CreateSegments(movieSegments);\r
         }\r
 \r
-        private void ConvertMovieSegmentsToSegments(BindingList<MovieSegment> movieSegments) {\r
+        private void CreateSegments(BindingList<MovieSegment> movieSegments) {\r
             if (movieSegments == null || movieSegments.Count == 0) {\r
                 segments = null;\r
                 return;\r
@@ -154,17 +157,16 @@ namespace Maestro {
             }\r
         }\r
 \r
-        private BindingList<MovieSegment> GetEditableSegments() {\r
-            BindingList<MovieSegment> result = new BindingList<MovieSegment>();\r
+        private void CreateEditableSegments() {\r
             if (segments == null)\r
                 segments = GetSegments();\r
+            movieSegments = new BindingList<MovieSegment>();\r
             if (segments != null) {\r
                 foreach (Segment segment in segments) {\r
                     MovieSegment movieSegment = segmentConverter.ConvertToMovieSegment(segment);\r
-                    result.Add(movieSegment);\r
+                    movieSegments.Add(movieSegment);\r
                 }\r
             }\r
-            return result;\r
         }\r
 \r
         private List<Segment> GetSegments() {\r
@@ -303,12 +305,14 @@ namespace Maestro {
                 }\r
             }\r
 \r
+            segments = null;\r
+            movieSegments = null;\r
+            archiveMetadata = null;\r
+\r
             UpdateProcessorButtonsEnabled();\r
             UpdateDefineSegmentEnabled();\r
             UpdateEditArchiveMetadataEnabled();\r
             UpdateLookupMetadataEnabled();\r
-            segments = null;\r
-            archiveMetadata = null;\r
         }\r
 \r
         private void OnOctopusIDSelected(string id, string name) {\r
@@ -318,24 +322,25 @@ namespace Maestro {
                 SelectedMetadata = null;\r
                 return;\r
             }\r
+            MetadataType metadataType = GuessMetadataType(id);\r
             SelectedMetadata = new MetadataInfo() {\r
-                Kind = MetadataType.OctopusPlaceHolder,\r
+                Kind = metadataType,\r
                 ID = name,\r
                 VariantID = int.Parse(id)\r
             };\r
         }\r
 \r
-        private void OnTrafficIDSelected(string selectedID, int variantID) {\r
+        private void OnTrafficIDSelected(string id, int variantID) {\r
             octopusIDSelector.ClearSelection();\r
             archiveMetadata = null;\r
-            if (selectedID == null) {\r
+            if (id == null) {\r
                 SelectedMetadata = null;\r
                 return;\r
             }\r
-            MetadataType metadataType = GuessMetadataType(selectedID);\r
+            MetadataType metadataType = GuessMetadataType(id);\r
             SelectedMetadata = new MetadataInfo() {\r
                 Kind = metadataType,\r
-                ID = selectedID,\r
+                ID = id,\r
                 VariantID = variantID\r
             };\r
         }\r
index 49cf6a0b1e44867cd41f9c34c224e5d7b3dada53..f35041e97d386a448221fdc858bf6824567602ae 100644 (file)
@@ -8,6 +8,7 @@ using Maestro.Metadata;
 using System.Collections.Generic;\r
 using TrafficClient;\r
 using MediaCubeClient;\r
+using DxPlay;\r
 \r
 namespace Maestro {\r
 \r
@@ -17,6 +18,7 @@ namespace Maestro {
         public string InputFileName { get; set; }\r
         public string ID { get; set; }\r
         public List<Segment> Segments { get; set; }\r
+        public List<MovieSegment> MovieSegments { get; set; }\r
         public MediaCubeApi MediaCubeApi { get; set; }\r
         public ArchiveMetadata ArchiveMetadata { get; set; }\r
         public TrafficAPI TrafficApi { get; set; }\r
@@ -104,13 +106,14 @@ namespace Maestro {
 \r
 \r
         private bool EnsureSegments(Target target) {\r
-            if (target.SaveSegments && (segments == null || segments.Count == 0)) {\r
+            if ((target.SaveMorpheusMetadata || target.SaveSegments) && (segments == null || segments.Count == 0)) {\r
                 if (selectedMetadata?.VariantID != null && selectedMetadata?.VariantID != 0)\r
                     segments = GetSegments();\r
                 if (segments == null) {\r
                     MessageBox.Show(String.Format("A {0} folyamat nem futtatható szegmens adatok nélkül.", target.Label));\r
                     return false;\r
                 }\r
+                CreateEditableSegments();\r
                 switch (selectedMetadata.Kind) {\r
                     case MetadataType.TrafficPromo: {\r
                             if (segments.Count != 1) {\r
@@ -132,7 +135,7 @@ namespace Maestro {
         }\r
 \r
         private bool EnsureMetadata(Target target) {\r
-            if ((target.SaveArchiveMetadata || target.SaveMorpheusMetadata) && (archiveMetadata == null || !archiveMetadata.IsFilled)) {\r
+            if ((target.SaveArchiveMetadata || target.SaveMorpheusMetadata || target.NexioServer) && (archiveMetadata == null || !archiveMetadata.IsFilled)) {\r
                 archiveMetadata = GetArchiveMetadata();\r
                 if (archiveMetadata == null) {\r
                     MessageBox.Show(String.Format("A {0} folyamat nem futtatható kísérő adatok nélkül.", target.Label));\r
@@ -156,6 +159,7 @@ namespace Maestro {
                 ID = textSelectedMetadata.Text,\r
                 InputFileName = sourceItem.Name,\r
                 Segments = segments == null ? null : new List<Segment>(segments),\r
+                MovieSegments = movieSegments == null ? null : movieSegments.ToList(), \r
                 ArchiveMetadata = ArchiveMetadata.DeepClone(archiveMetadata),\r
                 VariantID = selectedMetadata == null ? 0 : selectedMetadata.VariantID,\r
                 MetadataKind = selectedMetadata == null ? MetadataType.None : selectedMetadata.Kind\r
index 8ff1f3b707b3aa21556cd091cdd3cfe62c68e1a8..6ec946e7c24f7f030f33b4fb7a9d5e97f2c853c1 100644 (file)
@@ -59,7 +59,7 @@ namespace Maestro {
             label1.Text = StringResources.KIVALASZTOTT_FORRAS;\r
             labelSelectedMetadata.Text = StringResources.KIVALASZTOTT_METAADAT;\r
             btnExecute.Text = StringResources.VEGREHAJT;\r
-            menuButtonActions.Text = StringResources.AKCIOK;\r
+            mActions.Text = StringResources.AKCIOK;\r
             groupActions.Text = StringResources.AKCIOK;\r
             columnStarted.HeaderText = StringResources.KEZDES;\r
             columnFinished.HeaderText = StringResources.BEFEJEZES;\r
index 4efd52abec9f7107d3adf193080d2610e16a6f08..c52406909a3c1a0b19b2fb7419b299ba507bb50c 100644 (file)
@@ -1,4 +1,5 @@
-using LinkDotNet.MessageHandling;\r
+using Commons;\r
+using LinkDotNet.MessageHandling;\r
 using LinkDotNet.MessageHandling.Contracts;\r
 using Maestro.Configuration;\r
 using Maestro.Properties;\r
@@ -10,15 +11,19 @@ using System.Collections.Generic;
 using System.Diagnostics;\r
 using System.DirectoryServices.AccountManagement;\r
 using System.Drawing;\r
+using System.Globalization;\r
 using System.IO;\r
 using System.Linq;\r
 using System.Reflection;\r
 using System.Runtime.InteropServices;\r
 using System.Security.AccessControl;\r
 using System.Security.Principal;\r
+using System.Text;\r
 using System.Threading;\r
 using System.Threading.Tasks;\r
 using System.Windows.Forms;\r
+using System.Xml;\r
+using System.Xml.Linq;\r
 \r
 namespace Maestro {\r
 \r
@@ -59,7 +64,7 @@ namespace Maestro {
                         }\r
                         catch (Exception e) {\r
                             Debug.WriteLine(e.Message);\r
-                            MessageBox.Show(new Form() { TopMost = true }, "Nincs aktív konfiguráció!");\r
+                            MessageBox.Show(new Form() { TopMost = true }, e.Message);\r
                         }\r
                         finally {\r
                             mutex.ReleaseMutex();\r
@@ -78,8 +83,8 @@ namespace Maestro {
     public class TrayApplicationContext : ApplicationContext {\r
         private const string GLOBAL_JSON = "global.json";\r
         private const string JSON_WILDCARD = "*.json";\r
-        private const string CONFIG_ERROR = "Nincs aktív konfiguráció!";\r
-        private const string SYSCONFIG_ERROR = "Nincs rendszer konfiguráció!";\r
+        private const string CONFIG_ERROR = "Nem található aktív konfiguráció.";\r
+        private const string SYSCONFIG_ERROR = "Nem található a 'global.json' rendszer konfiguráció.";\r
         private const string CONFIGURATION_FOLDER = "./Configuration";\r
         private static Logger logger = LogManager.GetCurrentClassLogger();\r
         private NotifyIcon trayIcon;\r
@@ -97,8 +102,8 @@ namespace Maestro {
                     Application.Run(splash);\r
                 });\r
             }\r
-            CreateTrayIcon();\r
             CreateForms();\r
+            CreateTrayIcon();\r
         }\r
 \r
         private void CreateForms() {\r
index 5f7bab4258e590bbb372ff19d09f211c744df4b8..5664da0d49df6eac1dbbd57ce384eec4b7635874 100644 (file)
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
 // You can specify all the values or you can default the Build and Revision Numbers\r
 // by using the '*' as shown below:\r
 // [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("1.9.6")]\r
-[assembly: AssemblyFileVersion("1.9.6")]\r
+[assembly: AssemblyVersion("1.9.8")]\r
+[assembly: AssemblyFileVersion("1.9.8")]\r
index ea490d5f1dab0633f60816c86f2a67bb3382dafb..641caf4d1a785bae3982ef5d84b8541632ed4208 100644 (file)
@@ -80,6 +80,26 @@ namespace Maestro.Properties {
             }\r
         }\r
         \r
+        /// <summary>\r
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r
+        /// </summary>\r
+        internal static System.Drawing.Bitmap ic_playlist_add_check_black_24dp_1x {\r
+            get {\r
+                object obj = ResourceManager.GetObject("ic_playlist_add_check_black_24dp_1x", resourceCulture);\r
+                return ((System.Drawing.Bitmap)(obj));\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r
+        /// </summary>\r
+        internal static System.Drawing.Bitmap ic_search_black_24dp_1x {\r
+            get {\r
+                object obj = ResourceManager.GetObject("ic_search_black_24dp_1x", resourceCulture);\r
+                return ((System.Drawing.Bitmap)(obj));\r
+            }\r
+        }\r
+        \r
         /// <summary>\r
         ///   Looks up a localized resource of type System.Drawing.Icon similar to (Icon).\r
         /// </summary>\r
index e37b6e60b9982118b4a345911e1a0086cca0ea3f..3008b80908dd51a66d941561c82673573df1c8a7 100644 (file)
   <data name="Stop" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
     <value>..\Resources\Stop.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
+  <data name="ic_search_black_24dp_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\ic_search_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  </data>\r
+  <data name="ic_playlist_add_check_black_24dp_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\ic_playlist_add_check_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  </data>\r
 </root>
\ No newline at end of file
diff --git a/client/Maestro/Resources/ic_playlist_add_check_black_24dp_1x.png b/client/Maestro/Resources/ic_playlist_add_check_black_24dp_1x.png
new file mode 100644 (file)
index 0000000..4164907
Binary files /dev/null and b/client/Maestro/Resources/ic_playlist_add_check_black_24dp_1x.png differ
diff --git a/client/Maestro/Resources/ic_search_black_24dp_1x.png b/client/Maestro/Resources/ic_search_black_24dp_1x.png
new file mode 100644 (file)
index 0000000..6b16343
Binary files /dev/null and b/client/Maestro/Resources/ic_search_black_24dp_1x.png differ
index c716f1134d41ba8c013591842da4ff346ea0ce05..480eb59c45c53a83bc552cac56d6359434e5f068 100644 (file)
Binary files a/client/Maestro/Resources/installforge-installer-project.ifp and b/client/Maestro/Resources/installforge-installer-project.ifp differ
index 785d83fd23eeca0d4553a0e204b140536f79808d..2aafd2de05bfc9ac0f3ddb01cb7c6b2b52a32ba0 100644 (file)
@@ -15,7 +15,7 @@ namespace Maestro.Sources {
 \r
         private bool IsFileAccessible(string path) {\r
             try {\r
-                using (FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read)) {\r
+                using (FileStream stream = File.Open(path, FileMode.Open, FileAccess.Write, FileShare.None)) {\r
                     return true;\r
                 }\r
             }\r
@@ -36,13 +36,15 @@ namespace Maestro.Sources {
                     double currentDiff = (fi.LastWriteTime - fi.CreationTime).TotalSeconds;\r
                     Debug.WriteLine(string.Format("Diffs current {0} last {1}", currentDiff, lastDiff));\r
                     if (lastDiff == currentDiff) {\r
-                        if (IsFileAccessible(fi.FullName))\r
+                        if (IsFileAccessible(fi.FullName)) {\r
                             e.Result = fi;\r
-                        else\r
-                            e.Cancel = true;\r
-                        break;\r
-                    } else\r
-                        lastDiff = currentDiff;\r
+                            //else\r
+                            //    e.Cancel = true;\r
+                            break;\r
+                        }\r
+                    }\r
+\r
+                    lastDiff = currentDiff;\r
                 }\r
             }\r
 \r
index 9718a32bbff2901efe2f37beeb4ddaf6d00d103d..ab42865923a7d74f4905f52ec0da730ca2731164 100644 (file)
@@ -77,7 +77,9 @@ namespace Maestro.Targets {
 \r
                 monitorFTP = CreateClient(parameters.TargetConfig.Remote);\r
                 monitorFTP.SetWorkingDirectory(workingDir);\r
-                monitorFTP.Execute("TYPE I");\r
+                FtpReply monitorReplyTYPE = monitorFTP.Execute("TYPE I");\r
+                if (!monitorReplyTYPE.Success)\r
+                    throw new Exception(targetReplyTYPE.ErrorMessage);\r
                 if (!monitorFTP.FileExists(OutputName))\r
                     throw new Exception("A cél állomány nem jött létre.");\r
                 long overall = 0;\r
index c260c51a716515fa6f0c41ea38ce34aa141e2ad6..ba7ce562d5683ce9172bc17fc2e3ec9503b46f09 100644 (file)
@@ -109,11 +109,11 @@ namespace Maestro.Targets {
 \r
             if (parameters.TargetConfig.SaveArchiveMetadata && parameters.ArchiveMetadata != null)\r
                 CreateArchiveMetadata();\r
-            if (parameters.TargetConfig.SaveMorpheusMetadata && parameters.ArchiveMetadata != null)\r
-                CreateArchiveMetadata();\r
+            if (parameters.TargetConfig.SaveMorpheusMetadata && parameters.ArchiveMetadata != null && parameters.MovieSegments != null && parameters.MovieSegments.Count > 0)\r
+                UploadMorpheusMetadata();\r
             if (parameters.TargetConfig.SaveSegments && parameters.Segments != null)\r
-                //eljuthat-e ide a felhasználó, ha a MetadataKind octopus?\r
                 parameters.TrafficApi.UpdateTrafficInformation(parameters.VariantID, true, (TrafficMetadataType)parameters.MetadataKind, parameters.Segments);\r
+\r
             if (parameters.TargetConfig.SendEmailOnSuccess && !String.IsNullOrEmpty(parameters.TargetConfig.SuccessEmailRecipient) && !String.IsNullOrEmpty(parameters.TargetConfig.SuccessEmailPattern))\r
                 SendEmail(parameters.TargetConfig.SuccessEmailRecipient, parameters.TargetConfig.SuccessEmailPattern);\r
             Status = "Kész";\r
@@ -123,18 +123,27 @@ namespace Maestro.Targets {
         private void UploadNexioMetadata() {\r
             String xml = null;\r
             string name = GetOutputName();\r
-            string description = parameters.ArchiveMetadata?.mediaTitle == null ? parameters.ArchiveMetadata?.itemTitle : parameters.ArchiveMetadata?.mediaTitle;\r
+            string description = parameters.ArchiveMetadata?.mediaTitle;\r
             if (parameters.TargetConfig.KillDateDays > 0) {\r
                 DateTime date = GetKillDate();\r
                 KillDate = date.ToString("yyyy.MM.dd");\r
                 xml = NexioXML.ToXML(name, date, description, parameters.TargetConfig.Agency);\r
-            }\r
-            else\r
+            } else\r
                 xml = NexioXML.ToXML(name, null, description, parameters.TargetConfig.Agency);\r
             byte[] content = Encoding.Unicode.GetBytes(xml);\r
             UploadContent(name + ".xml", content);\r
         }\r
 \r
+        private void UploadMorpheusMetadata() {\r
+            string name = GetOutputName();\r
+            string title = parameters.ArchiveMetadata?.itemTitle;\r
+            if (!title.Equals(parameters.ArchiveMetadata?.mediaTitle))\r
+                title += " - " + parameters.ArchiveMetadata?.mediaTitle;\r
+            byte[] content = MorpheusXML.ToXML(title, name, parameters.TargetConfig.DeviceIDMorpheus, parameters.MovieSegments);\r
+            EnsureDirectoryExistence(parameters.TargetConfig.PathMorpheusMetadata);\r
+            UploadContent(name + ".xml", content);\r
+        }\r
+\r
         private void SendEmail(string to, string messagePattern) {\r
             try {\r
                 string message = messagePattern.Replace("%TARGETNAME%", OutputName);\r
@@ -144,7 +153,7 @@ namespace Maestro.Targets {
                 MessageBox.Show(parent, e.Message);\r
             }\r
         }\r
-        \r
+\r
         protected virtual void AfterExecute() {\r
             Finished = DateTime.Now;\r
             workFlowAction.finished = Finished;\r
@@ -172,8 +181,7 @@ namespace Maestro.Targets {
                 if (ID.Contains("_"))\r
                     subDir = ID.Split('_')[0];\r
                 result = Path.Combine(connection.Address.LocalPath, ID);\r
-            }\r
-            else\r
+            } else\r
                 result = connection.Address.LocalPath;\r
             return result;\r
         }\r
diff --git a/client/OctopusClient/CheckableTreeView.cs b/client/OctopusClient/CheckableTreeView.cs
new file mode 100644 (file)
index 0000000..5906b16
--- /dev/null
@@ -0,0 +1,11 @@
+using System;\r
+using System.Windows.Forms;\r
+\r
+namespace OctopusClient {\r
+    class CheckableTreeView : TreeView {\r
+        protected override void WndProc(ref Message m) {\r
+            // Suppress WM_LBUTTONDBLCLK\r
+            if (m.Msg == 0x203) { m.Result = IntPtr.Zero; } else base.WndProc(ref m);\r
+        }\r
+    }\r
+}\r
index ae78894eb0579a05838802e06ea6637bf0ffbdf7..0e3ed536551ad6fbe7bc1089d53ea4ed499fdf8e 100644 (file)
@@ -97,6 +97,9 @@
     <Reference Include="System.Xml" />\r
   </ItemGroup>\r
   <ItemGroup>\r
+    <Compile Include="CheckableTreeView.cs">\r
+      <SubType>Component</SubType>\r
+    </Compile>\r
     <Compile Include="OctopusAPI.cs" />\r
     <Compile Include="OctopusConfiguration.cs" />\r
     <Compile Include="OctopusIDSelector.cs">\r
index 96c0b3120ba2b93d58eaebdd9a43dca4d67965c3..ea8a9f0bee01af5f0371103f222d736647cd9f6a 100644 (file)
@@ -7,6 +7,8 @@ namespace OctopusClient {
         public string UserName { get; set; }\r
         public string Password { get; set; }\r
         public int Timeout;\r
+        public bool DisablePlaceHolderCheck { get; set; }\r
+        public bool DisableStoryCheck { get; set; }\r
         public IMessageBus MessageBus { get; set; }\r
     }\r
 }\r
index 5da9be3bb7abe0c41ce5b76ff55ff1fa87830bd1..17b6531157aea2ead6e0117a5f87b40151dd9911 100644 (file)
@@ -27,7 +27,7 @@
             this.dateScheduled = new System.Windows.Forms.DateTimePicker();\r
             this.comboRudowns = new System.Windows.Forms.ComboBox();\r
             this.bindingRundown = new System.Windows.Forms.BindingSource(this.components);\r
-            this.treeOctopus = new System.Windows.Forms.TreeView();\r
+            this.treeOctopus = new CheckableTreeView();\r
             this.tabControl1 = new System.Windows.Forms.TabControl();\r
             this.tpRundown = new System.Windows.Forms.TabPage();\r
             this.tpStoryFolder = new System.Windows.Forms.TabPage();\r
index 46350fe8abf6539af7090c1c0b03ddc1b0215c53..d74fe1a303d16bfae7121c478f512648249d4852 100644 (file)
@@ -18,9 +18,11 @@ namespace OctopusClient {
         private TreeNode selectedNode;\r
         private OctopusAPI client;\r
         public OnSelectedIDChanged IDChangedEvent { get; set; }\r
+        private OctopusConfiguration configuration;\r
 \r
         public OctopusConfiguration Configuration {\r
             set {\r
+                configuration = value;    \r
                 client = new OctopusAPI(value.Address.OriginalString, value.UserName, value.Password, value.Timeout, value.MessageBus);\r
                 //refreshStoryFolders();\r
                 refreshRundowns();\r
@@ -31,7 +33,6 @@ namespace OctopusClient {
             InitializeComponent();\r
             InitializeControlTexts();\r
             treeOctopus.AfterCheck += OnTreeAfterCheck;\r
-\r
             //treeOctopus.DrawMode = TreeViewDrawMode.OwnerDrawText;\r
             //treeOctopus.DrawNode += new DrawTreeNodeEventHandler(OnDrawNode);\r
         }\r
@@ -81,20 +82,24 @@ namespace OctopusClient {
 \r
         private void AddStories(IEnumerable<Story> stories) {\r
             foreach (var story in stories) {\r
-                string name = story.Name == null ? "<UnNamed>" : story.Name;\r
+                string name = story.Name == null ? "<névtelen>" : story.Name;\r
                 string label = story.ID;\r
                 if (!String.IsNullOrEmpty(story.Format))\r
                     label += String.Format($" [{story.Format}] {story.Name}");\r
                 else\r
                     label += String.Format($" {story.Name}");\r
-                TreeNode actualNode = treeOctopus.Nodes.Add(story.ID, label);\r
-                HideCheckBox(treeOctopus, actualNode);\r
+                TreeNode storyNode = treeOctopus.Nodes.Add(story.ID, label);\r
+                storyNode.Tag = story.ID;\r
+                if (configuration.DisableStoryCheck)\r
+                    HideCheckBox(treeOctopus, storyNode);\r
                 MosObject[] mosObjects = story.MosObjects;\r
                 if (mosObjects == null)\r
                     continue;\r
                 foreach (MosObject mosObject in mosObjects) {\r
-                    TreeNode node = actualNode.Nodes.Add(mosObject.ObjID, String.Format($"{mosObject.ObjID}"));\r
-                    node.Tag = mosObject.ID;\r
+                    TreeNode placeHolderNode = storyNode.Nodes.Add(mosObject.ObjID, String.Format($"{mosObject.ObjID}"));\r
+                    placeHolderNode.Tag = mosObject.ID;\r
+                    if (configuration.DisablePlaceHolderCheck)\r
+                        HideCheckBox(treeOctopus, placeHolderNode);\r
                 }\r
             }\r
         }\r
@@ -125,8 +130,9 @@ namespace OctopusClient {
             }\r
             BindingList<Rundown> bindingRundowns = new BindingList<Rundown>();\r
             bindingRundowns.Add(new Rundown() { ID = 0.ToString(), Name = Resources.VALASSZON_ELEMET });\r
-            foreach (Rundown actualRundown in rundowns)\r
+            foreach (Rundown actualRundown in rundowns) {\r
                 bindingRundowns.Add(actualRundown);\r
+            }\r
             bindingRundown.DataSource = bindingRundowns;\r
             comboRudowns.SelectedIndex = selectedRundownIndex == -1 ? 0 : selectedRundownIndex;\r
             InitCheckID(treeOctopus.Nodes);\r
@@ -208,19 +214,30 @@ namespace OctopusClient {
         }\r
 \r
         private void OnTreeAfterCheck(object sender, TreeViewEventArgs e) {\r
-            logger.Debug("Handling {0} {1} {2}", e.Node.Name, e.Node.Text, e.Node.Checked);\r
-            if (e.Node.Level == 0) {\r
+            //logger.Debug("Handling {0} {1} {2}", e.Node.Name, e.Node.Text, e.Node.Checked);\r
+\r
+            if (configuration.DisableStoryCheck && e.Node.Level == 0) { \r
+                if (e.Node.Checked) {\r
+                    e.Node.Checked = false;\r
+                    HideCheckBox(treeOctopus, e.Node);\r
+                }\r
+                return;\r
+            }\r
+\r
+            if (configuration.DisablePlaceHolderCheck && e.Node.Level == 1) {\r
                 if (e.Node.Checked) {\r
                     e.Node.Checked = false;\r
                     HideCheckBox(treeOctopus, e.Node);\r
                 }\r
                 return;\r
             }\r
+\r
             if (!e.Node.Equals(selectedNode)) {\r
                 ClearSelection();\r
                 selectedNode = e.Node;\r
                 treeOctopus.SelectedNode = selectedNode;\r
             }\r
+\r
             if (selectedNode.Checked)\r
                 IDChangedEvent?.Invoke(selectedNode.Tag as string, selectedNode.Name);\r
             else\r
index 7dd574aa6c931447f7196440d14f1628ea7fb22e..e47cc2b73eaebf032fc170453a8cdc9964a75cd9 100644 (file)
@@ -108,7 +108,7 @@ namespace TrafficClient.Workers {
                 using (SqlCommand cmd = new SqlCommand("dbo.clIFsp_EC_MAM", connection)) {\r
                     cmd.CommandType = CommandType.StoredProcedure;\r
                     cmd.Parameters.AddWithValue("@Operation", 3001);\r
-                    cmd.Parameters.AddWithValue("@@@Options", 40);\r
+                    cmd.Parameters.AddWithValue("@@@Options", 0);\r
                     cmd.Parameters.AddWithValue("@@ItemID", DBNull.Value);\r
                     cmd.Parameters.AddWithValue("@@StrParam1", strParam);\r
                     using (SqlDataReader reader = cmd.ExecuteReader()) {\r
index e0133a67fff6675f1f2f01fecff446f3ccd9c5f2..fc9161a48efd94e449c41664f7b7297c1430cf2f 100644 (file)
@@ -34,7 +34,7 @@ namespace TrafficClient.Workers {
             return new TrafficItemMetadata() {\r
                     EpisodeID = data.t_MediaID,\r
                     ProgID = data.t_SpotID.ToString(),\r
-                    ProgTitle = data.v_ProgTitle,\r
+                    ProgTitle = data.v_Title,\r
             };\r
         }\r
 \r
index da0d42c597c96d9927639f810a0627c790ec4aaf..f96b222459b092310ed6cc348df54bb245ce22bd 100644 (file)
@@ -192,7 +192,7 @@ namespace TrafficClient.Workers {
                 using (SqlCommand cmd = new SqlCommand("dbo.clIFsp_EC_MAM", connection)) {\r
                     cmd.CommandType = CommandType.StoredProcedure;\r
                     cmd.Parameters.AddWithValue("@Operation", 2001);\r
-                    cmd.Parameters.AddWithValue("@@@Options", 16);\r
+                    cmd.Parameters.AddWithValue("@@@Options", 0);\r
                     cmd.Parameters.AddWithValue("@@ItemID", DBNull.Value);\r
                     cmd.Parameters.AddWithValue("@@StrParam1", strParam);\r
                     using (SqlDataReader reader = cmd.ExecuteReader()) {\r
@@ -224,7 +224,7 @@ namespace TrafficClient.Workers {
                 using (SqlCommand cmd = new SqlCommand("dbo.clIFsp_EC_MAM", connection)) {\r
                     cmd.CommandType = CommandType.StoredProcedure;\r
                     cmd.Parameters.AddWithValue("@Operation", 3001);\r
-                    cmd.Parameters.AddWithValue("@@@Options", 4);\r
+                    cmd.Parameters.AddWithValue("@@@Options", 0);\r
                     cmd.Parameters.AddWithValue("@@ItemID", DBNull.Value);\r
                     cmd.Parameters.AddWithValue("@@StrParam1", strParam);\r
                     using (SqlDataReader reader = cmd.ExecuteReader()) {\r