git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Wed, 25 Oct 2017 16:39:26 +0000 (16:39 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Wed, 25 Oct 2017 16:39:26 +0000 (16:39 +0000)
17 files changed:
client/Maestro/Configuration/configuration-nle.json
client/Maestro/Configuration/configuration-playout.json
client/Maestro/Configuration/configuration-studio.json
client/Maestro/Configuration/configuration-sxs.json
client/Maestro/MaestroForm.Designer.cs
client/Maestro/MaestroForm.Metadata.cs
client/Maestro/MaestroForm.Source.cs
client/Maestro/MaestroForm.Target.cs
client/Maestro/MaestroForm.cs
client/Maestro/Sources/FileSourceItem.cs
client/Maestro/Sources/FileSystemSource.cs
client/Maestro/Sources/ISourceItem.cs
client/Maestro/Sources/NexioSourceItem.cs
client/Maestro/Sources/SourceInfo.cs
client/OctopusClient/OctopusIDSelector.Designer.cs
client/OctopusClient/OctopusIDSelector.cs
client/OctopusClient/OctopusIDSelector.resx

index e58db07590a72f831f43dc1ccb99def635bf324d..c94c4bd2f15d8cb376d5de0a1a437fb0dde0b995 100644 (file)
@@ -1,6 +1,6 @@
 {\r
   "title": "NLE",\r
-  "active": true,\r
+  "active": false,\r
   "startInTray": true,\r
   "enableCustomMetadataId": true,\r
   "player": {\r
index abf37876fcd3288f9530bf2444a12837d958be55..27f522f044a3c6200212f3e96115f416ec439ec5 100644 (file)
@@ -1,6 +1,6 @@
 {\r
   "title": "Adáslebony",\r
-  "active": true,\r
+  "active": false,\r
   "startInTray": true,\r
   "enableCustomMetadataId": true,\r
   "player": {\r
index 85c76159ece8cc329d4dddb459e8e2568d026892..6bd90e02a37ac285e8706c7b6a913ff68bfdb1bc 100644 (file)
@@ -1,6 +1,6 @@
 {\r
   "title": "Stúdió",\r
-  "active": true,\r
+  "active": false,\r
   "startInTray": true,\r
   "enableCustomMetadataId": true,\r
   "filter": "avi",\r
index d70fab03e2e7eafc9502e2e45355770a9f191efd..31e6ae479c63c12af9a407e4fb560f60b1c9ce07 100644 (file)
@@ -1,6 +1,6 @@
 {\r
   "title": "SxS",\r
-  "active": true,\r
+  "active": false,\r
   "startInTray": true,\r
   "enableCustomMetadataId": true,\r
   "player": {\r
index 4c575d77794534d7d408b777867945dd2b857918..99f3fbe5b99c18da328ffd9bfce58e3381134ab7 100644 (file)
@@ -77,6 +77,7 @@ namespace Maestro {
             this.columnLabel = new System.Windows.Forms.DataGridViewTextBoxColumn();\r
             this.columnID = new System.Windows.Forms.DataGridViewTextBoxColumn();\r
             this.columnStatus = new System.Windows.Forms.DataGridViewTextBoxColumn();\r
+            this.columnProgress = new Maestro.Commons.DataGridViewProgressColumn();\r
             this.columnStarted = new System.Windows.Forms.DataGridViewTextBoxColumn();\r
             this.columnFinished = new System.Windows.Forms.DataGridViewTextBoxColumn();\r
             this.columnInput = new System.Windows.Forms.DataGridViewTextBoxColumn();\r
@@ -621,6 +622,7 @@ namespace Maestro {
             this.columnLabel,\r
             this.columnID,\r
             this.columnStatus,\r
+            this.columnProgress,\r
             this.columnStarted,\r
             this.columnFinished,\r
             this.columnInput,\r
@@ -688,6 +690,20 @@ namespace Maestro {
             this.columnStatus.Name = "columnStatus";\r
             this.columnStatus.Width = 66;\r
             // \r
+            // columnProgress\r
+            // \r
+            this.columnProgress.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;\r
+            this.columnProgress.DataPropertyName = "Progress";\r
+            dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;\r
+            dataGridViewCellStyle7.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            dataGridViewCellStyle7.NullValue = null;\r
+            this.columnProgress.DefaultCellStyle = dataGridViewCellStyle7;\r
+            this.columnProgress.HeaderText = "Progress";\r
+            this.columnProgress.Name = "columnProgress";\r
+            this.columnProgress.Resizable = System.Windows.Forms.DataGridViewTriState.True;\r
+            this.columnProgress.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;\r
+            this.columnProgress.Width = 200;\r
+            // \r
             // columnStarted\r
             // \r
             this.columnStarted.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells;\r
index e4d3187022dbe15061d85658186840270eb364ef..47d46030fd198138631de58faecce2cd4499e858 100644 (file)
@@ -38,6 +38,8 @@ namespace Maestro {
             InitializeTrafficSelector();\r
             InitializeMediaCubeApi();\r
             textSelectedMetadata.ReadOnly = !Configuration.EnableCustomMetadataId;\r
+            UpdateDefineSegmentEnabled();\r
+            UpdateEditArchiveMetadataEnabled();\r
         }\r
 \r
         private void InitializeTrafficSelector() {\r
index 1e23e20636122ecccc84d1925258e61a564ad78a..06e16ef52b658cbde178eb64f88aaeb217777d08 100644 (file)
@@ -7,6 +7,7 @@ using OctopusClient;
 using System;\r
 using System.Collections.Generic;\r
 using System.Drawing;\r
+using System.IO;\r
 using System.Linq;\r
 using System.Windows.Forms;\r
 using TrafficClient;\r
@@ -18,11 +19,8 @@ namespace Maestro {
     public partial class MaestroForm {\r
         private ISource source;\r
         private SourceInfo selectedSource;\r
-        private string startingName;\r
         private List<DataGridViewRow> selectedSourceRows = new List<DataGridViewRow>();\r
 \r
-        public SourceIDType SourceIDType { get; set; }\r
-\r
         public SourceInfo SelectedSource {\r
             get {\r
                 return selectedSource;\r
@@ -30,7 +28,10 @@ namespace Maestro {
             set {\r
                 selectedSource = value;\r
                 textSelectedSource.Text = selectedSource.Name;\r
+                UpdateProcessorButtonsEnabled();\r
+                UpdateDefineSegmentEnabled();\r
                 UpdateEditArchiveMetadataEnabled();\r
+                UpdateLookupMetadataEnabled();\r
             }\r
         }\r
 \r
@@ -58,7 +59,7 @@ namespace Maestro {
 \r
             source.Startup(localAddress);\r
             bindingSource.DataSource = source;\r
-            dataGridSource.Columns.AddRange(new DataGridViewCheckBoxColumn());\r
+            //dataGridSource.Columns.AddRange(new DataGridViewCheckBoxColumn());\r
             dataGridSource.Columns.AddRange(source.Columns);\r
         }\r
 \r
@@ -74,7 +75,7 @@ namespace Maestro {
         }\r
 \r
         private void OnFileInvolved(FileActionMsg m) {\r
-            UpdateSelectedSources();\r
+            //UpdateSelectedSources();\r
         }\r
 \r
         private void dataGridSource_CellMouseEnter(object sender, DataGridViewCellEventArgs e) {\r
@@ -103,7 +104,7 @@ namespace Maestro {
             if (selectedrows == null)\r
                 return;\r
             if (e.ColumnIndex == 0) {\r
-                UpdateSelectedSources();\r
+                UpdateCheckStates(selectedrows);\r
                 return;\r
             }\r
             if (IsPlayColumn(e.ColumnIndex)) {\r
@@ -121,127 +122,71 @@ namespace Maestro {
             }\r
         }\r
 \r
-        private void UpdateSelectedSources() {\r
-            String name;\r
-            var selectedRows = dataGridSource.SelectedRows;\r
-            bool valueOfCheckBoxes = GetValueOfCheckBoxes(selectedRows);\r
-            int nameIndex = dataGridSource.Columns.Cast<DataGridViewColumn>().Where(x => x.HeaderText == StringResources.NEV).SingleOrDefault().Index;\r
-            int checkBoxIndex = dataGridSource.Columns.Cast<DataGridViewColumn>().Where(x => x.GetType() == typeof(DataGridViewCheckBoxColumn)).SingleOrDefault().Index;\r
-            foreach (DataGridViewRow actualRow in selectedRows) {\r
-                var cells = actualRow.Cells;\r
-                if (cells.Count <= 0)\r
-                    return;\r
-                name = cells[nameIndex].Value as string;\r
+        private bool GetHasChecked(DataGridViewSelectedRowCollection selectedRows) {\r
+            foreach (DataGridViewRow row in selectedRows) {\r
+                DataGridViewCheckBoxCell checkBoxCell = row.Cells[0] as DataGridViewCheckBoxCell;\r
+                if (true.Equals(checkBoxCell.Value))\r
+                    return true;\r
+            }\r
+            return false;\r
+        }\r
+\r
+        private void UpdateCheckStates(DataGridViewSelectedRowCollection rows) {\r
+            bool hasChecked = GetHasChecked(rows);\r
+            var nameColumn = dataGridSource.Columns.Cast<DataGridViewColumn>().Where(x => x.HeaderText == StringResources.NEV).FirstOrDefault();\r
+            if (nameColumn == null)\r
+                return;\r
+            int nameCellIndex = nameColumn.Index;\r
+            foreach (DataGridViewRow row in rows) {\r
+                String name = row.Cells[nameCellIndex].Value as string;\r
                 if (String.IsNullOrEmpty(name))\r
-                    return;\r
-                DataGridViewCheckBoxCell checkBoxCell = cells[checkBoxIndex] as DataGridViewCheckBoxCell;\r
-                if (selectedRows.Count > 1)\r
-                    checkBoxCell.Value = valueOfCheckBoxes;\r
+                    continue;\r
+                DataGridViewCheckBoxCell checkBoxCell = row.Cells[0] as DataGridViewCheckBoxCell;\r
+                if (rows.Count > 1)\r
+                    checkBoxCell.Value = !hasChecked;\r
                 else\r
                     checkBoxCell.Value = (checkBoxCell.Value == null || checkBoxCell.Value.Equals(false)) ? true : false;\r
+\r
                 if (checkBoxCell.Value.Equals(false))\r
-                    selectedSourceRows.Remove(actualRow);\r
-                else {\r
-                    if (!selectedSourceRows.Contains(actualRow))\r
-                        selectedSourceRows.Add(actualRow);\r
-                }\r
-                SetTextSelectedSourceTextFromCheckBoxes();\r
-                SetMetadataButtonEnabled((bool)checkBoxCell.Value);\r
+                    selectedSourceRows.Remove(row);\r
+                else\r
+                    selectedSourceRows.Add(row);\r
             }\r
+            SetSelectedSource(nameCellIndex);\r
         }\r
 \r
-        private bool GetValueOfCheckBoxes(DataGridViewSelectedRowCollection selectedRows) {\r
-            bool result = true;\r
-            int index = dataGridSource.Columns.Cast<DataGridViewColumn>().Where(x => x.GetType() == typeof(DataGridViewCheckBoxColumn)).SingleOrDefault().Index;\r
-            foreach (DataGridViewRow actualRow in selectedRows) {\r
-                var cells = actualRow.Cells;\r
-                DataGridViewCheckBoxCell checkBoxCell = cells[index] as DataGridViewCheckBoxCell;\r
-                if (checkBoxCell.Value != null && checkBoxCell.Value.Equals(true))\r
-                    result = false;\r
-                else { result = true; return result; }\r
-            }\r
-            return result;\r
+        private string GetPrefix(string name) {\r
+            string[] byHyphen = name.Replace('_', '-').Replace('.', '-').Split('-');\r
+            return byHyphen.Length > 0 ? byHyphen[0] : null;\r
         }\r
 \r
-        private void SetMetadataButtonEnabled(bool checkBox) {\r
-            SetStartingName(checkBox);\r
-            if (selectedSourceRows == null || selectedSourceRows.Count == 0) {\r
-                buttonMetadata.Enabled = false;\r
-                \r
-                //IsSelectedFileAnID();\r
-                return;\r
-            }\r
-            if (selectedSourceRows.Count == 1) {\r
-                buttonMetadata.Enabled = true;\r
-                //IsSelectedFileAnID();\r
-                return;\r
-            }\r
-            int index = dataGridSource.Columns.Cast<DataGridViewColumn>().Where(x => x.HeaderText == StringResources.NEV).SingleOrDefault().Index;\r
+        private void SetSelectedSource(int nameCellIndex) {\r
+            string selectionPrefix = null;\r
+            string selectedNames = String.Empty;\r
             foreach (DataGridViewRow actual in selectedSourceRows) {\r
-                string name = actual.Cells[index].Value as string;\r
-                if (!name.StartsWith(String.Format("{0}-", startingName)) &&\r
-                    !name.StartsWith(String.Format("{0}_", startingName)) &&\r
-                    !name.StartsWith(String.Format("{0}.", startingName))) {\r
-                    buttonMetadata.Enabled = false;\r
-                    return;\r
-                }\r
-            }\r
-            buttonMetadata.Enabled = true;\r
-            //IsSelectedFileAnID();\r
-        }\r
-\r
-        private void SetStartingName(bool checkBox) {\r
-            if (!checkBox)\r
-                if (selectedSourceRows == null || selectedSourceRows.Count == 0) {\r
-                    startingName = null;\r
-                    return;\r
-                }\r
-            int index = dataGridSource.Columns.Cast<DataGridViewColumn>().Where(x => x.HeaderText == StringResources.NEV).SingleOrDefault().Index;\r
-            string query = selectedSourceRows[0].Cells[index].Value as string;\r
-            int separatorPosition = query.IndexOf("-");\r
-            int separatorPosition2 = query.IndexOf("_");\r
-            int realseparatorPosition = 0;\r
-            if (separatorPosition < 0)\r
-                realseparatorPosition = separatorPosition2;\r
-            else if (separatorPosition2 < 0)\r
-                realseparatorPosition = separatorPosition;\r
-            else\r
-                realseparatorPosition = separatorPosition < separatorPosition2 ? separatorPosition : separatorPosition2;\r
-            int dotPosition = query.IndexOf(".");\r
-            if (realseparatorPosition > 0) {\r
-                startingName = realseparatorPosition < 0 ? query : query.Substring(0, realseparatorPosition);\r
-            } else {\r
-                if (dotPosition < 0)\r
-                    startingName = realseparatorPosition < 0 ? query : query.Substring(0, realseparatorPosition);\r
+                string name = actual.Cells[nameCellIndex].Value as string;\r
+                selectedNames += name + " ";\r
+                string currentPrefix = GetPrefix(name);\r
+                if (selectionPrefix == null)\r
+                    selectionPrefix = currentPrefix;\r
                 else\r
-                    startingName = query.Substring(0, dotPosition);\r
+                    selectionPrefix = currentPrefix.Equals(selectionPrefix) ? selectionPrefix : null;\r
             }\r
-\r
-            SourceIDType = GetSourceType(startingName);\r
-            UpdateDetectMetadataEnabled();\r
-        }\r
-\r
-        private void SetTextSelectedSourceTextFromCheckBoxes() {\r
-            String selectedNames = "";\r
-            int index = dataGridSource.Columns.Cast<DataGridViewColumn>().Where(x => x.HeaderText == StringResources.NEV).SingleOrDefault().Index;\r
-            foreach (DataGridViewRow actual in selectedSourceRows) \r
-                selectedNames += actual.Cells[index].Value + " ";\r
             SelectedSource = new SourceInfo() {\r
-                Name = selectedNames\r
+                Name = selectedNames,\r
+                FileInfo = GetSelectedSourceFileInfo(nameCellIndex),\r
+                Prefix = selectionPrefix\r
             };\r
-            SetSelectedSourceFileInfo(SelectedSource);\r
-            ApplyProcessorButtonsLogicWithoutArchiveMetadataButton();\r
         }\r
 \r
-        private void SetSelectedSourceFileInfo(SourceInfo selectedSource) {\r
+        private FileInfo GetSelectedSourceFileInfo(int nameCellIndex) {\r
             if (Configuration.Source.GetType() == typeof(NEXIOSource))\r
-                selectedSource.FileInfo = null;\r
-            else if (selectedSourceRows.Count == 1) {\r
-                int index = dataGridSource.Columns.Cast<DataGridViewColumn>().Where(x => x.HeaderText == StringResources.NEV).SingleOrDefault().Index;\r
-                string name = selectedSourceRows[0].Cells[index].Value as string;\r
-                Uri inputUri = new Uri(String.Format("{0}/{1}", Configuration.Source.Local.Address.LocalPath, name));\r
-                selectedSource.FileInfo = new System.IO.FileInfo(inputUri.LocalPath);\r
-            }\r
+                return null;\r
+            if (selectedSourceRows.Count != 1)\r
+                return null;\r
+            string name = selectedSourceRows[0].Cells[nameCellIndex].Value as string;\r
+            Uri inputUri = new Uri(String.Format("{0}/{1}", Configuration.Source.Local.Address.LocalPath, name));\r
+            return new FileInfo(inputUri.LocalPath);\r
         }\r
 \r
         private void dataGridSource_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) {\r
@@ -261,17 +206,17 @@ namespace Maestro {
         private void dataGridSource_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) {\r
             if (e.RowIndex < 0)\r
                 return;\r
-            UpdateSelectedSources();\r
+            UpdateCheckStates(dataGridSource.SelectedRows);\r
         }\r
 \r
         private void dataGridSource_KeyDown(object sender, KeyEventArgs e) {\r
             if (e.KeyCode != Keys.Space || dataGridSource.CurrentCell.GetType() == typeof(DataGridViewCheckBoxCell))\r
                 return;\r
-            UpdateSelectedSources();\r
+            UpdateCheckStates(dataGridSource.SelectedRows);\r
         }\r
 \r
         private void buttonMetadata_Click(object sender, EventArgs e) {\r
-            switch (SourceIDType) {\r
+            switch (GetSourceType(SelectedSource?.Prefix)) {\r
                 case SourceIDType.TrafficID:\r
                     LookupTraffic();\r
                     break;\r
@@ -285,16 +230,16 @@ namespace Maestro {
             TrafficAPI api = trafficIDSelector.trafficAPI;\r
             Cursor.Current = Cursors.WaitCursor;\r
             List<TrafficItem> result = null;\r
-            MetadataType metadataType = GetTrafficMetadataType(startingName);\r
+            MetadataType metadataType = GetTrafficMetadataType(SelectedSource?.Prefix);\r
             switch (metadataType) {\r
                 case MetadataType.TrafficMaterial:\r
-                    result = api.GetMaterials(startingName, false);\r
+                    result = api.GetMaterials(SelectedSource?.Prefix, false);\r
                     break;\r
                 case MetadataType.TrafficPromo:\r
-                    result = api.GetPromos(startingName, false);\r
+                    result = api.GetPromos(SelectedSource?.Prefix, false);\r
                     break;\r
                 case MetadataType.TrafficAD:\r
-                    result = api.GetADs(startingName, false);\r
+                    result = api.GetADs(SelectedSource?.Prefix, false);\r
                     break;\r
             }\r
             if (result == null || result.Count == 0) {\r
@@ -317,7 +262,7 @@ namespace Maestro {
         private void LookupOctopus() {\r
             OctopusAPI api = octopusIDSelector.GetClient();\r
             Cursor.Current = Cursors.WaitCursor;\r
-            IEnumerable<Story> stories = api.GetStoriesById(startingName);\r
+            IEnumerable<Story> stories = api.GetStoriesById(SelectedSource?.Prefix);\r
             if (stories == null || stories.Count() == 0) {\r
                 LookupOctopusMOS(api);\r
                 Cursor.Current = Cursors.Default;\r
@@ -336,7 +281,7 @@ namespace Maestro {
         }\r
 \r
         private void LookupOctopusMOS(OctopusAPI api) {\r
-            IEnumerable<MosObject> mosIDs = api.GetMosObjectsByID(startingName);\r
+            IEnumerable<MosObject> mosIDs = api.GetMosObjectsByID(SelectedSource?.Prefix);\r
             if (mosIDs == null) {\r
                 MessageBox.Show(this, StringResources.NINCS_TALALAT);\r
                 return;\r
@@ -357,8 +302,8 @@ namespace Maestro {
             box.ShowDialog();\r
         }\r
 \r
-        private void UpdateDetectMetadataEnabled() {\r
-            buttonMetadata.Enabled = SourceIDType != SourceIDType.MediaCube;\r
+        private void UpdateLookupMetadataEnabled() {\r
+            buttonMetadata.Enabled = !String.IsNullOrEmpty(SelectedSource?.Prefix) && GetSourceType(SelectedSource?.Prefix) != SourceIDType.MediaCube;\r
         }\r
 \r
     }\r
index a67fe8bb3ba6b4cc4ddfe1683e2cc58862a046c2..5f3fce01d0c2f3541c9fd8787956ecc86a10c8f4 100644 (file)
@@ -43,7 +43,7 @@ namespace Maestro {
                 CreateTarget(target);\r
             }\r
 \r
-            ApplyProcessorButtonsLogic();\r
+            UpdateProcessorButtonsEnabled();\r
             segmentConverter = new SegmentConverter();\r
         }\r
 \r
@@ -210,24 +210,10 @@ namespace Maestro {
         }\r
 \r
         private void OnMetadataIDChanged(object sender, EventArgs e) {\r
-            ApplyProcessorButtonsLogic();\r
-            ApplyMetaDataButtonLogic();\r
-        }\r
-\r
-        private void ApplyMetaDataButtonLogic() {\r
-            if (selectedSourceRows.Count <= 0) {\r
-                buttonMetadata.Enabled = false;\r
-                return;\r
-            }\r
-            if (selectedSourceRows.Count == 1)\r
-                buttonMetadata.Enabled = true;\r
-            else {\r
-                foreach (DataGridViewRow actualRow in selectedSourceRows) {\r
-                    string actualName = (actualRow.DataBoundItem as ISourceItem).Name;\r
-                    if (!actualName.StartsWith(startingName))\r
-                        buttonMetadata.Enabled = false;\r
-                }\r
-            }\r
+            UpdateProcessorButtonsEnabled();\r
+            UpdateDefineSegmentEnabled();\r
+            UpdateEditArchiveMetadataEnabled();\r
+            UpdateLookupMetadataEnabled();\r
         }\r
 \r
         private void ChangeProcessButtonsState(bool enabled) {\r
@@ -237,16 +223,13 @@ namespace Maestro {
                 c.Enabled = enabled;\r
         }\r
 \r
-        private void ApplyProcessorButtonsLogic() {\r
+        private void UpdateProcessorButtonsEnabled() {\r
             ClearSelectedProcessors();\r
             if (!String.IsNullOrEmpty(textSelectedMetadata.Text) && !String.IsNullOrEmpty(textSelectedMetadata.Text)) {\r
                 ChangeProcessButtonsState(true);\r
             } else {\r
                 ChangeProcessButtonsState(false);\r
             }\r
-\r
-            UpdateDefineSegmentEnabled();\r
-            UpdateEditArchiveMetadataEnabled();\r
         }\r
 \r
         public void OnTargetPanelsMouseClick(object sender, MouseEventArgs e) {\r
@@ -270,16 +253,6 @@ namespace Maestro {
             ActivateTabOnTabControl2(0);\r
         }\r
 \r
-        private void ApplyProcessorButtonsLogicWithoutArchiveMetadataButton() {\r
-            ClearSelectedProcessors();\r
-            if (!String.IsNullOrEmpty(textSelectedMetadata.Text) && !String.IsNullOrEmpty(textSelectedMetadata.Text)) {\r
-                ChangeProcessButtonsState(true);\r
-            } else {\r
-                ChangeProcessButtonsState(false);\r
-            }\r
-\r
-            UpdateDefineSegmentEnabled();\r
-        }\r
 \r
     }\r
 }\r
index 3d67fd99e06aa66640cb9a7e06ecb66d71b64f26..ea53ee2e3a528d8c15e269e1578c7f3c139cc97e 100644 (file)
@@ -12,7 +12,6 @@ using System.Windows.Forms;
 using System.Threading;\r
 using TrafficClient;\r
 using OctopusClient;\r
-using System.Linq;\r
 using System.IO;\r
 \r
 namespace Maestro {\r
index b90f88c58218cda5735c394983239b13fbbd7254..6aab995a96f15f10a9330699b0a2d4d18c27ce4a 100644 (file)
@@ -11,6 +11,7 @@ namespace Maestro.Sources {
         private FileInfo fileInfo;\r
         private Icon icon;\r
         private bool isHighlighted;\r
+        private bool isChecked;\r
         private static string[] sizes = { "", "KB", "MB", "GB", "TB" };\r
 \r
         public event PropertyChangedEventHandler PropertyChanged;\r
@@ -30,6 +31,18 @@ namespace Maestro.Sources {
             }\r
         }\r
 \r
+        public bool IsChecked {\r
+            get {\r
+                return isChecked;\r
+            }\r
+            set {\r
+                if (isChecked != value) {\r
+                    isChecked = value;\r
+                    NotifyPropertyChanged();\r
+                }\r
+            }\r
+        }\r
+\r
         public bool IsHighlighted {\r
             get {\r
                 return isHighlighted;\r
index 0d277666e640abe0fb2d95335de998fd9c989ece..632e17f83fdf9b6e6abb64e5b41252ec57000112 100644 (file)
@@ -31,6 +31,9 @@ namespace Maestro.Sources {
         public DataGridViewColumn[] Columns {\r
             get {\r
                 DataGridViewColumn[] result = new DataGridViewColumn[] {\r
+                    new DataGridViewCheckBoxColumn(){\r
+                        DataPropertyName = "IsChecked"\r
+                    },\r
                     new DataGridViewImageColumn(){\r
                         DataPropertyName = "Icon",\r
                         //HeaderText = StringResources.LEJATSZAS,\r
index 749c2826609a2edd7dbe3292c1c5dd766580496d..eb43f6cdc663f2576a79d62d22d9418412bf0704 100644 (file)
@@ -6,5 +6,7 @@ namespace Maestro.Sources {
         string Name { get; }\r
         DateTime Created { get; }\r
         bool IsHighlighted { get; set; }\r
+        bool IsChecked { get; set; }\r
+\r
     }\r
 }
\ No newline at end of file
index 2b9fd6eac219277f760e42a19fcbf8c66ae59ae8..19308822d5f94fc47bdc719327ee8dd3d95e660f 100644 (file)
@@ -6,6 +6,7 @@ using System.Collections.Generic;
 namespace Maestro.Sources {\r
     public class NexioSourceItem : ISourceItem {\r
         private bool isHighlighted;\r
+        private bool isChecked;\r
         private string name;\r
         private DateTime created;\r
         private DateTime modified;\r
@@ -28,6 +29,17 @@ namespace Maestro.Sources {
             }\r
         }\r
 \r
+        public bool IsChecked {\r
+            get {\r
+                return isChecked;\r
+            }\r
+            set {\r
+                if (isChecked != value) {\r
+                    isChecked = value;\r
+                    NotifyPropertyChanged();\r
+                }\r
+            }\r
+        }\r
 \r
         public DateTime Created {\r
             get {\r
index 6a0aa41882db85892bb8ea64203a5dbff3383b6b..71f50e89b25d2621125ba8ce2a717d871924e0d7 100644 (file)
@@ -5,5 +5,6 @@ namespace Maestro.Metadata {
         public FileInfo FileInfo { get; set; }\r
         public string Tooltip { get; set; }\r
         public string Name { get; set; }\r
+        public string Prefix { get; set; }\r
     }\r
 }\r
index 056baa0dc7babf6076f6367f18ce3fcbc9e1b430..f5c9aa33d2b1fafb780b3d265df93697e73c361a 100644 (file)
@@ -64,7 +64,7 @@
             this.comboRudowns.TabIndex = 3;\r
             this.comboRudowns.SelectedValueChanged += new System.EventHandler(this.comboRudowns_SelectedValueChanged);\r
             // \r
-            // treeContent\r
+            // treeOctopus\r
             // \r
             this.treeOctopus.BackColor = System.Drawing.Color.White;\r
             this.treeOctopus.BorderStyle = System.Windows.Forms.BorderStyle.None;\r
@@ -72,7 +72,7 @@
             this.treeOctopus.Dock = System.Windows.Forms.DockStyle.Fill;\r
             this.treeOctopus.FullRowSelect = true;\r
             this.treeOctopus.Location = new System.Drawing.Point(10, 70);\r
-            this.treeOctopus.Name = "treeContent";\r
+            this.treeOctopus.Name = "treeOctopus";\r
             this.treeOctopus.Size = new System.Drawing.Size(251, 273);\r
             this.treeOctopus.TabIndex = 5;\r
             this.treeOctopus.KeyDown += new System.Windows.Forms.KeyEventHandler(this.treeContent_KeyDown);\r
             this.tabControl1.Selected += new System.Windows.Forms.TabControlEventHandler(this.tabControl1_Selected);\r
             this.tabControl1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tabControl1_KeyDown);\r
             // \r
-            // tabPage1\r
+            // tpRundown\r
             // \r
             this.tpRundown.Controls.Add(this.dateScheduled);\r
             this.tpRundown.Controls.Add(this.comboRudowns);\r
             this.tpRundown.Location = new System.Drawing.Point(4, 22);\r
-            this.tpRundown.Name = "tabPage1";\r
+            this.tpRundown.Name = "tpRundown";\r
             this.tpRundown.Padding = new System.Windows.Forms.Padding(3);\r
             this.tpRundown.Size = new System.Drawing.Size(243, 34);\r
             this.tpRundown.TabIndex = 0;\r
             this.tpRundown.Text = "Rundown";\r
             this.tpRundown.UseVisualStyleBackColor = true;\r
             // \r
-            // tabPage2\r
+            // tpStoryFolder\r
             // \r
             this.tpStoryFolder.Controls.Add(this.comboStoryFolder);\r
             this.tpStoryFolder.Location = new System.Drawing.Point(4, 22);\r
-            this.tpStoryFolder.Name = "tabPage2";\r
+            this.tpStoryFolder.Name = "tpStoryFolder";\r
             this.tpStoryFolder.Padding = new System.Windows.Forms.Padding(3);\r
             this.tpStoryFolder.Size = new System.Drawing.Size(243, 34);\r
             this.tpStoryFolder.TabIndex = 1;\r
index 276618f0f7bc5171667ed86ccda8cf11534a7bf5..7bc36b06d17437e9e2236a69ea810e76f645ac4c 100644 (file)
@@ -5,12 +5,15 @@ using System.Windows.Forms;
 using System.Collections.Generic;\r
 using System.ComponentModel;\r
 using System.Drawing;\r
+using System.Runtime.InteropServices;\r
 \r
 namespace OctopusClient {\r
     public delegate void OnSelectedIDChanged(string ID);\r
     public delegate void ClearCheckBox();\r
     public delegate void OctopusErrorReporterDelegate(DateTime time, String level, String message, Color color);\r
 \r
+\r
+\r
     public partial class OctopusIDSelector : UserControl {\r
         private static Logger logger = LogManager.GetCurrentClassLogger();\r
         private string id;\r
@@ -62,9 +65,11 @@ namespace OctopusClient {
                 foreach (var story in stories) {\r
                     string name = story.Name == null ? "<UnNamed>" : story.Name;\r
                     TreeNode actualNode = treeOctopus.Nodes.Add(story.ID, String.Format($"{story.ID} {story.Name}"));\r
+                    HideCheckBox(treeOctopus, actualNode);\r
                     MosObject[] mosObjects = story.MosObjects;\r
-                    foreach (MosObject mosObject in mosObjects)\r
+                    foreach (MosObject mosObject in mosObjects) {\r
                         actualNode.Nodes.Add(mosObject.ID, mosObject.ID);\r
+                    }\r
                 }\r
             selectedRundownIndex = comboRudowns.SelectedIndex;\r
         }\r
@@ -82,6 +87,7 @@ namespace OctopusClient {
                 return;\r
             foreach (var story in stories) {\r
                 TreeNode actualNode = treeOctopus.Nodes.Add(story.ID, String.Format($"{story.ID} {story.Name}"));\r
+                HideCheckBox(treeOctopus, actualNode);\r
                 MosObject[] mosObjects = story.MosObjects;\r
                 foreach (MosObject mosObject in mosObjects)\r
                     actualNode.Nodes.Add(mosObject.ID, mosObject.ID);\r
@@ -183,11 +189,18 @@ namespace OctopusClient {
         }\r
 \r
         private void treeContent_KeyDown(object sender, KeyEventArgs e) {\r
-            this.OnKeyDown(e);\r
+            //this.OnKeyDown(e);\r
         }\r
 \r
         private void OnTreeAfterCheck(object sender, TreeViewEventArgs e) {\r
             logger.Debug("Handling {0} {1}", e.Node.Name, e.Node.Text);\r
+            if (e.Node.Level == 0) {\r
+                if (e.Node.Checked) {\r
+                    e.Node.Checked = false;\r
+                    HideCheckBox(treeOctopus, e.Node);\r
+                }\r
+                return;\r
+            }\r
             if (!e.Node.Equals(selectedNode)) {\r
                 ClearSelection();\r
                 selectedNode = e.Node;\r
@@ -211,5 +224,42 @@ namespace OctopusClient {
         public OctopusAPI GetClient() {\r
             return client;\r
         }\r
+\r
+\r
+        private const int TVIF_STATE = 0x8;\r
+        private const int TVIS_STATEIMAGEMASK = 0xF000;\r
+        private const int TV_FIRST = 0x1100;\r
+        private const int TVM_SETITEM = TV_FIRST + 63;\r
+\r
+        [StructLayout(LayoutKind.Sequential, Pack = 8, CharSet = CharSet.Auto)]\r
+        private struct TVITEM {\r
+            public int mask;\r
+            public IntPtr hItem;\r
+            public int state;\r
+            public int stateMask;\r
+            [MarshalAs(UnmanagedType.LPTStr)]\r
+            public string lpszText;\r
+            public int cchTextMax;\r
+            public int iImage;\r
+            public int iSelectedImage;\r
+            public int cChildren;\r
+            public IntPtr lParam;\r
+        }\r
+\r
+        [DllImport("user32.dll", CharSet = CharSet.Auto)]\r
+        private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam,\r
+                                                 ref TVITEM lParam);\r
+\r
+        /// <summary>\r
+        /// Hides the checkbox for the specified node on a TreeView control.\r
+        /// </summary>\r
+        private void HideCheckBox(TreeView tvw, TreeNode node) {\r
+            TVITEM tvi = new TVITEM();\r
+            tvi.hItem = node.Handle;\r
+            tvi.mask = TVIF_STATE;\r
+            tvi.stateMask = TVIS_STATEIMAGEMASK;\r
+            tvi.state = 0;\r
+            SendMessage(tvw.Handle, TVM_SETITEM, IntPtr.Zero, ref tvi);\r
+        }\r
     }\r
 }\r
index f50ab11f77d20735a36085e64c7ebd2029d9be11..0518ece7c7011ea1c495e01f3dae6bd4751e82a5 100644 (file)
   <metadata name="bindingRundown.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
     <value>17, 17</value>\r
   </metadata>\r
+  <metadata name="bindingRundown.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
+    <value>17, 17</value>\r
+  </metadata>\r
+  <metadata name="bindingStoryFolder.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
+    <value>155, 17</value>\r
+  </metadata>\r
   <metadata name="bindingStoryFolder.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
     <value>155, 17</value>\r
   </metadata>\r