From 569ba0f4f9a900463b7dd906b2711f018c1869a7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Mon, 13 Aug 2018 14:08:58 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31237 --- client/AudioRecorder/MetadataSelectorForm.cs | 5 +- client/DxPlay/Configuration/dxplay.en | 52 +-- .../Controls/PlayerControls.Designer.cs | 9 +- client/DxPlay/DxPlayer.cs | 25 +- client/DxPlay/DxPlayerx.cs | 10 +- client/DxPlay/Integration/Traffic.cs | 49 ++- client/DxPlay/Model/DxPlayModel.cs | 91 ++++- client/DxPlay/PlayerForm.Designer.cs | 369 ++++++++++-------- client/DxPlay/PlayerForm.cs | 97 +++-- client/DxPlay/PlayerForm.resx | 34 +- client/DxPlay/Program.cs | 2 +- client/Maestro/MaestroForm.Source.cs | 2 +- client/Maestro/MaestroForm.resx | 2 +- client/MaestroShared/MaestroShared.csproj | 12 + .../Properties/Resources.Designer.cs | 30 ++ .../MaestroShared/Properties/Resources.resx | 9 + .../Resources/baseline_backup_black_24dp.png | Bin 0 -> 394 bytes .../Resources/outline_backup_black_24dp.png | Bin 0 -> 293 bytes .../sharp_keyboard_arrow_left_black_48dp.png | Bin 0 -> 170 bytes .../sharp_keyboard_arrow_right_black_48dp.png | Bin 0 -> 176 bytes client/MediaCube.sln | 5 + .../PlanAIRClient/Properties/AssemblyInfo.cs | 4 +- client/PlanAIRClient/TrafficIDSelector.cs | 34 +- .../PlanAIRClient/Workers/MaterialWorker.cs | 2 +- docs/mediacube-dxplay.md | 35 ++ 25 files changed, 562 insertions(+), 316 deletions(-) create mode 100644 client/MaestroShared/Resources/baseline_backup_black_24dp.png create mode 100644 client/MaestroShared/Resources/outline_backup_black_24dp.png create mode 100644 client/MaestroShared/Resources/sharp_keyboard_arrow_left_black_48dp.png create mode 100644 client/MaestroShared/Resources/sharp_keyboard_arrow_right_black_48dp.png create mode 100644 docs/mediacube-dxplay.md diff --git a/client/AudioRecorder/MetadataSelectorForm.cs b/client/AudioRecorder/MetadataSelectorForm.cs index 63d461ae..76b36271 100644 --- a/client/AudioRecorder/MetadataSelectorForm.cs +++ b/client/AudioRecorder/MetadataSelectorForm.cs @@ -38,7 +38,7 @@ namespace AudioRecorder { private void OctopusIDChangedEvent(string id, string name, string text) { if (name == null) - SelectedMetadata = null; + SelectedMetadata = new Metadata(); else SelectedMetadata = new Metadata() { ID = name, @@ -48,7 +48,7 @@ namespace AudioRecorder { private void TrafficIDChangedEvent(string id, int variantID, string text) { if (id == null) - SelectedMetadata = null; + SelectedMetadata = new Metadata(); else SelectedMetadata = new Metadata() { ID = id, @@ -65,5 +65,6 @@ namespace AudioRecorder { DialogResult = DialogResult.OK; Close(); } + } } diff --git a/client/DxPlay/Configuration/dxplay.en b/client/DxPlay/Configuration/dxplay.en index 3f488e8c..03ae8ad3 100644 --- a/client/DxPlay/Configuration/dxplay.en +++ b/client/DxPlay/Configuration/dxplay.en @@ -1,27 +1,29 @@ { - "define-segment": "Define segment", - "break-segment": "Break segment", - "position-as-tcin": "Current position as TC in", - "position-as-tcout": "Current position as TC out", - "delete-segment": "Delete segment", - "segments": "Segments", - "no-input": "NO INPUT", - "start": "START", - "length": "LENGTH", - "tc-in": "TC in", - "tc-out": "TC out", - "optional": "Optional", - "comment": "Comment", - "starting": "STARTING", - "exiting": "EXITING", - "paused": "PAUSED", - "playing": "PLAYING", - "stopped": "STOPPED", - "completed": "COMPLETED", - "pause": "Pause", - "play": "Play", - "stop": "Stop", - "missing-traffic-configuration": "Missing PlanAir connection configuration.", - "error-traffic-connect": "Could not connect to PlanAir system, using: {0}", - "missing-traffic-variant": "Missing metadata for {0} in PlanAir system." + "APPROVE": "Approve", + "COMMENT": "Comment", + "COMPLETED": "COMPLETED", + "DEFINESEGMENT": "Define segment", + "DELETESEGMENT": "Delete segment", + "ERRORTRAFFICCONNECT": "Could not connect to PlanAir system, using: {0}", + "EXITING": "EXITING", + "LENGTH": "LENGTH", + "METADATA": "Metadata", + "MISSINGTRAFFICCONFIGURATION": "Missing PlanAir connection configuration.", + "MISSINGTRAFFICVARIANT": "Missing metadata for {0} in PlanAir system.", + "NOINPUT": "NO INPUT", + "OPEN": "Open", + "OPTIONAL": "Optional", + "PAUSE": "Pause", + "PAUSED": "PAUSED", + "PLAY": "Play", + "PLAYING": "PLAYING", + "POSITIONASTCIN": "Current position as TC in", + "POSITIONASTCOUT": "Current position as TC out", + "SEGMENTS": "Segments", + "SPLITSEGMENT": "Split segment", + "START": "START", + "STOP": "Stop", + "STOPPED": "STOPPED", + "TCIN": "TC in", + "TCOUT": "TC out" } diff --git a/client/DxPlay/Controls/PlayerControls.Designer.cs b/client/DxPlay/Controls/PlayerControls.Designer.cs index 9ca08ea1..6d68cf44 100644 --- a/client/DxPlay/Controls/PlayerControls.Designer.cs +++ b/client/DxPlay/Controls/PlayerControls.Designer.cs @@ -111,7 +111,7 @@ // // lbCurrentTC // - this.lbCurrentTC.BackColor = System.Drawing.SystemColors.Control; + this.lbCurrentTC.BackColor = System.Drawing.Color.Transparent; this.lbCurrentTC.Dock = System.Windows.Forms.DockStyle.Top; this.lbCurrentTC.Font = new System.Drawing.Font("Calibri", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.lbCurrentTC.Location = new System.Drawing.Point(170, 13); @@ -123,7 +123,7 @@ // // lbStartTC // - this.lbStartTC.BackColor = System.Drawing.SystemColors.Control; + this.lbStartTC.BackColor = System.Drawing.Color.Transparent; this.lbStartTC.Dock = System.Windows.Forms.DockStyle.Top; this.lbStartTC.Font = new System.Drawing.Font("Calibri", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.lbStartTC.ForeColor = System.Drawing.SystemColors.WindowText; @@ -135,6 +135,7 @@ // // lbStart // + this.lbStart.BackColor = System.Drawing.Color.Transparent; this.lbStart.Dock = System.Windows.Forms.DockStyle.Top; this.lbStart.Font = new System.Drawing.Font("Calibri", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.lbStart.Location = new System.Drawing.Point(3, 0); @@ -146,6 +147,7 @@ // // lbStatus // + this.lbStatus.BackColor = System.Drawing.Color.Transparent; this.lbStatus.Dock = System.Windows.Forms.DockStyle.Top; this.lbStatus.Font = new System.Drawing.Font("Calibri", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.lbStatus.Location = new System.Drawing.Point(170, 0); @@ -157,6 +159,7 @@ // // lbDuration // + this.lbDuration.BackColor = System.Drawing.Color.Transparent; this.lbDuration.Dock = System.Windows.Forms.DockStyle.Top; this.lbDuration.Font = new System.Drawing.Font("Calibri", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.lbDuration.Location = new System.Drawing.Point(671, 0); @@ -168,7 +171,7 @@ // // lbEndTC // - this.lbEndTC.BackColor = System.Drawing.SystemColors.Control; + this.lbEndTC.BackColor = System.Drawing.Color.Transparent; this.lbEndTC.Dock = System.Windows.Forms.DockStyle.Top; this.lbEndTC.Font = new System.Drawing.Font("Calibri", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.lbEndTC.ForeColor = System.Drawing.SystemColors.WindowText; diff --git a/client/DxPlay/DxPlayer.cs b/client/DxPlay/DxPlayer.cs index c8dbab69..5ca269c0 100644 --- a/client/DxPlay/DxPlayer.cs +++ b/client/DxPlay/DxPlayer.cs @@ -58,11 +58,11 @@ namespace DxPlay { // Play an avi file into a window. Allow for snapshots. // (Control to show video in, Avi file to play public DxPlayer(Control hWin, ref MediaDescription mediaDesc, UISettings properties) { - stringValues.Add(GraphState.Exiting, properties.Resource("exiting", Resources.KILEPES)); - stringValues.Add(GraphState.Paused, properties.Resource("paused", Resources.SZUNETELTETETT)); - stringValues.Add(GraphState.Playing, properties.Resource("playing", Resources.LEJATSZAS)); - stringValues.Add(GraphState.Stopped, properties.Resource("stopped", Resources.MEGALLITVA)); - stringValues.Add(GraphState.Completed, properties.Resource("completed", Resources.VEGE)); + stringValues.Add(GraphState.Exiting, properties.Resource("EXITING", Resources.EXITING)); + stringValues.Add(GraphState.Paused, properties.Resource("PAUSED", Resources.PAUSED)); + stringValues.Add(GraphState.Playing, properties.Resource("PLAYING", Resources.PLAYING)); + stringValues.Add(GraphState.Stopped, properties.Resource("STOPPED", Resources.STOPPED)); + stringValues.Add(GraphState.Completed, properties.Resource("COMPLETED", Resources.COMPLETED)); State = GraphState.Stopped; try { int hr; @@ -165,16 +165,13 @@ namespace DxPlay { // Pause the capture graph. public void Stop() { //// Can only Stop when playing or paused - //if (State == GraphState.Playing || State == GraphState.Paused || State == GraphState.Completed) { - // int hr = graph.MediaControl.Stop(); - // DsError.ThrowExceptionForHR(hr); - // State = GraphState.Stopped; - //} - //Rewind(); - //PlayEvent?.Invoke(); - - Pause(); Rewind(); + Pause(); + if (State == GraphState.Playing || State == GraphState.Paused || State == GraphState.Completed) { + int hr = graph.MediaControl.StopWhenReady(); + DsError.ThrowExceptionForHR(hr); + State = GraphState.Stopped; + } } // Reset the clip back to the beginning diff --git a/client/DxPlay/DxPlayerx.cs b/client/DxPlay/DxPlayerx.cs index f20725fb..acf852b1 100644 --- a/client/DxPlay/DxPlayerx.cs +++ b/client/DxPlay/DxPlayerx.cs @@ -127,11 +127,11 @@ namespace DxPlay { } private void FillTheHunStringvalues() { - stateHunStringValues.Add(GraphState.Exiting, Resources.KILEPES); - stateHunStringValues.Add(GraphState.Paused, Resources.SZUNETELTETETT); - stateHunStringValues.Add(GraphState.Playing, Resources.LEJATSZAS); - stateHunStringValues.Add(GraphState.Stopped, Resources.MEGALLITVA); - stateHunStringValues.Add(GraphState.Completed, Resources.VEGE); + stateHunStringValues.Add(GraphState.Exiting, Resources.EXITING); + stateHunStringValues.Add(GraphState.Paused, Resources.PAUSED); + stateHunStringValues.Add(GraphState.Playing, Resources.PLAYING); + stateHunStringValues.Add(GraphState.Stopped, Resources.STOPPED); + stateHunStringValues.Add(GraphState.Completed, Resources.COMPLETED); } private void TcWorker_DoWork(object sender, DoWorkEventArgs e) { diff --git a/client/DxPlay/Integration/Traffic.cs b/client/DxPlay/Integration/Traffic.cs index f2bfd2ec..d2548cef 100644 --- a/client/DxPlay/Integration/Traffic.cs +++ b/client/DxPlay/Integration/Traffic.cs @@ -1,54 +1,61 @@  using LinkDotNet.MessageHandling.Contracts; using TrafficClient; -using MaestroShared.Configuration; -using System; using System.Linq; using MaestroShared.Metadata; using System.Collections.Generic; using NLog; -using DxPlay.Properties; +using MaestroShared.Targets; namespace DxPlay.Integration { public class Traffic { private static readonly Logger logger = LogManager.GetCurrentClassLogger(); - private readonly DxPlaySettings settings; - private readonly string id; - private readonly Connection connection; - public TrafficAPI Api { get; private set; } + private readonly TrafficIDSelector selector; - public Traffic(DxPlaySettings settings, string id, IMessageBus messageBus) { - connection = settings?.Metadata?.Server; - if (connection == null) - throw new Exception(settings.Resource("missing-traffic-configuration", Resources.MISSING_TRAFFIC_CONFIGURATION)); - Api = new TrafficAPI(connection.Address.OriginalString, connection.UserName, connection.Password, connection.Timeout, messageBus); - this.settings = settings; - this.id = id; + public Traffic(TrafficIDSelector selector, IMessageBus messageBus) { + this.selector = selector; } - public List LoadSegments() { + public void Lookup(string id) { var metadataType = MetadataTypeUtil.Guess(id); + switch (metadataType) { + case MetadataType.TrafficMaterial: + selector.LookupByMaterialID(id); + break; + case MetadataType.TrafficPromo: + selector.LookupByPromoID(id); + break; + case MetadataType.TrafficAD: + selector.LookupByADID(id); + break; + } + } + + public List LoadSegments(string id, MetadataType metadataType) { List result = null; switch (metadataType) { case MetadataType.TrafficMaterial: { - var trafficItem = Api.GetMaterials(id, false).FirstOrDefault(); - if (trafficItem == null) - throw new Exception(string.Format(settings.Resource("missing-traffic-variant", Resources.MISSING_TRAFFIC_VARIANT), id)); - result = Api.GetMaterialSegments(trafficItem.VariantID); + var trafficItem = selector.trafficAPI.GetMaterials(id, false).FirstOrDefault(); + if (trafficItem != null) + result = selector.trafficAPI.GetMaterialSegments(trafficItem.VariantID); break; } case MetadataType.TrafficPromo: { - result = Api.GetPromoSegments(id); + result = selector.trafficAPI.GetPromoSegments(id); break; } case MetadataType.TrafficAD: { - result = Api.GetADSegments(id); + result = selector.trafficAPI.GetADSegments(id); break; } } return result; } + public void OnTargetUpdateTrafficMessage(TargetUpdateTrafficMessage message) { + logger.Info("Now update!!!!!!!!!"); + //selector.trafficAPI.UpdateTrafficInformation(message.VariantID, message.Ready, message.MetadataType, message.Segments); + } } } diff --git a/client/DxPlay/Model/DxPlayModel.cs b/client/DxPlay/Model/DxPlayModel.cs index ea78f644..74951964 100644 --- a/client/DxPlay/Model/DxPlayModel.cs +++ b/client/DxPlay/Model/DxPlayModel.cs @@ -7,43 +7,62 @@ using System.Runtime.CompilerServices; using LinkDotNet.MessageHandling; using LinkDotNet.MessageHandling.Contracts; using TrafficClient; -using DxPlay.Properties; +using NLog; +using System.IO; +using MaestroShared.Targets; +using System.Linq; namespace DxPlay.Model { - public class DxPlayModel { + public class DxPlayModel : INotifyPropertyChanged { + private static Logger logger = LogManager.GetCurrentClassLogger(); public event PropertyChangedEventHandler PropertyChanged; private readonly DxPlaySettings settings; + private Traffic traffic; + public void InitializeTrafficIntegration(TrafficIDSelector selector) { + traffic = new Traffic(selector, MessageBus); + selector.Parameters = new TrafficParameters { + Configuration = settings.Metadata, + MessageBus = MessageBus + }; + MessageBus.Subscribe(m => traffic.OnTargetUpdateTrafficMessage(m)); + } + public DxPlayModel(DxPlaySettings settings) { this.settings = settings; - IsSegmentEditorEnabled = true.Equals(settings?.Player?.SegmentEditor); + IsSegmentEditorVisible = true.Equals(settings?.Player?.SegmentEditor); IsMenuVisible = true.Equals(settings?.IsStandalone); Segments = settings.Segments ?? new BindingList(); messageBus.Subscribe(OnMessage); } + private void OnMessage(IMessage message) { - string msg = string.Format(settings.Resource("error-traffic-connect", Resources.ERROR_TRAFFIC_CONNECT), settings?.Metadata?.Server?.Address?.OriginalString); - throw new Exception(msg); + if (message is TrafficAPIMessage) { + TrafficAPIMessage msg = message as TrafficAPIMessage; + throw new Exception(msg.Content); + } + //string msg = string.Format(settings.Resource("ERRORTRAFFICCONNECT", Resources.ERRORTRAFFICCONNECT), settings?.Metadata?.Server?.Address?.OriginalString); //MessageBox.Show(msg, "Connection error", MessageBoxButtons.OK, MessageBoxIcon.Error); } private void Notify([CallerMemberName] String propertyName = "") { + logger.Info(propertyName); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } private IMessageBus messageBus = new MessageBus(); public IMessageBus MessageBus { get => messageBus; } - private bool isSegmentEditorEnabled; - public bool IsSegmentEditorEnabled { + private bool isSegmentEditorVisible; + public bool IsSegmentEditorVisible { get { - return isSegmentEditorEnabled; + return isSegmentEditorVisible; } set { - if (value != isSegmentEditorEnabled) { - isSegmentEditorEnabled = value; + if (value != isSegmentEditorVisible) { + isSegmentEditorVisible = value; Notify(); } } @@ -62,32 +81,68 @@ namespace DxPlay.Model { } } - private bool isApproveEnabled; public bool IsApproveEnabled { get { - return isApproveEnabled; + return id != null && id.Length != 0 && CurrentFile != null && CurrentFile.Exists; + } + } + + private string id; + public string ID { + get { return id; } + set { + if (value != id) { + id = value; + Notify(); + Notify("IsApproveEnabled"); + MetadataType = MetadataTypeUtil.Guess(id); + InitializeSegments(); + } } + } + + public int VariantID { get; set; } + public MetadataType MetadataType { get; set; } + + private FileInfo currentFile; + + public FileInfo CurrentFile { + get { return currentFile; } set { - if (value != isApproveEnabled) { - isApproveEnabled = value; + if (currentFile != value) { + currentFile = value; Notify(); + Notify("IsApproveEnabled"); } } } + public BindingList Segments { get; private set; } - internal void InitializeSegments(string id) { + private void InitializeSegments() { Segments.Clear(); try { - traffic = new Traffic(settings, id, MessageBus); - List segments = traffic.LoadSegments(); + List segments = traffic.LoadSegments(id, MetadataType); if (segments != null) segments.ForEach(s => Segments.Add(s)); } catch (Exception) { - IsSegmentEditorEnabled = false; throw; } } + + public void Lookup(string id) { + traffic.Lookup(id); + } + + public void Approve() { + TargetUpdateTrafficMessage message = new TargetUpdateTrafficMessage { + VariantID = VariantID, + Ready = true, + MetadataType = MetadataType, + Segments = Segments.ToList() + }; + MessageBus.Send(message); + } } } diff --git a/client/DxPlay/PlayerForm.Designer.cs b/client/DxPlay/PlayerForm.Designer.cs index 5fdb198b..fe261c6b 100644 --- a/client/DxPlay/PlayerForm.Designer.cs +++ b/client/DxPlay/PlayerForm.Designer.cs @@ -32,16 +32,9 @@ namespace DxPlay { System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PlayerForm)); this.pVideo = new System.Windows.Forms.Panel(); - this.menuButtonSegmentActions = new DxPlay.MenuButton(); - this.ctxmSegmentActions = new System.Windows.Forms.ContextMenuStrip(this.components); - this.defineOneSegmentToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.splitSegmentAtCurrentPositionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.deleteSegmentToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.actualPositionToIntroToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.actualPositionToOutroToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mainSplit = new System.Windows.Forms.SplitContainer(); this.panelPlayer = new System.Windows.Forms.Panel(); - this.marginPanel = new System.Windows.Forms.Panel(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.tabEditor = new System.Windows.Forms.TabControl(); this.tpMetadata = new System.Windows.Forms.TabPage(); this.trafficBrowser = new TrafficClient.TrafficIDSelector(); @@ -49,110 +42,56 @@ namespace DxPlay { this.dgSegments = new System.Windows.Forms.DataGridView(); this.bsSegments = new System.Windows.Forms.BindingSource(this.components); this.segmentActions = new System.Windows.Forms.ToolStrip(); - this.toolStripButton5 = new System.Windows.Forms.ToolStripButton(); + this.tbDefineSegment = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); - this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton4 = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton2 = new System.Windows.Forms.ToolStripButton(); + this.tbPositionAsTCIn = new System.Windows.Forms.ToolStripButton(); + this.tbSplitSegment = new System.Windows.Forms.ToolStripButton(); + this.tbPositionAsTCOut = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); - this.toolStripButton3 = new System.Windows.Forms.ToolStripButton(); + this.tbDeleteSegment = new System.Windows.Forms.ToolStripButton(); this.imagesTabEdit = new System.Windows.Forms.ImageList(this.components); + this.btnToggleSegmentEditor = new MaestroShared.Controls.NoFocusCueButton(); + this.pMetadataDisplay = new System.Windows.Forms.TableLayoutPanel(); + this.btnApprove = new MaestroShared.Controls.NoFocusCueButton(); + this.labelSelectedMetadata = new System.Windows.Forms.Label(); + this.txtSelectedID = new System.Windows.Forms.TextBox(); this.mainMenu = new System.Windows.Forms.MenuStrip(); this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.menuOpenFile = new DxPlay.Controls.BindableToolStripMenuItem(); this.menuApprove = new DxPlay.Controls.BindableToolStripMenuItem(); this.playerControls = new DxPlay.Controls.PlayerControls(); - this.pVideo.SuspendLayout(); - this.ctxmSegmentActions.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.mainSplit)).BeginInit(); this.mainSplit.Panel1.SuspendLayout(); this.mainSplit.Panel2.SuspendLayout(); this.mainSplit.SuspendLayout(); this.panelPlayer.SuspendLayout(); - this.marginPanel.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); this.tabEditor.SuspendLayout(); this.tpMetadata.SuspendLayout(); this.tpSegments.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.dgSegments)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.bsSegments)).BeginInit(); this.segmentActions.SuspendLayout(); + this.pMetadataDisplay.SuspendLayout(); this.mainMenu.SuspendLayout(); this.SuspendLayout(); // // pVideo // this.pVideo.BackColor = System.Drawing.Color.Black; - this.pVideo.Controls.Add(this.menuButtonSegmentActions); this.pVideo.Dock = System.Windows.Forms.DockStyle.Fill; this.pVideo.Location = new System.Drawing.Point(0, 0); this.pVideo.Name = "pVideo"; - this.pVideo.Size = new System.Drawing.Size(689, 489); - this.pVideo.TabIndex = 10; + this.pVideo.Size = new System.Drawing.Size(741, 487); + this.pVideo.TabIndex = 0; this.pVideo.TabStop = true; this.pVideo.SizeChanged += new System.EventHandler(this.panel1_SizeChanged); this.pVideo.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseDown); // - // menuButtonSegmentActions - // - this.menuButtonSegmentActions.BackColor = System.Drawing.Color.White; - this.menuButtonSegmentActions.Location = new System.Drawing.Point(389, 462); - this.menuButtonSegmentActions.Menu = this.ctxmSegmentActions; - this.menuButtonSegmentActions.Name = "menuButtonSegmentActions"; - this.menuButtonSegmentActions.Size = new System.Drawing.Size(297, 23); - this.menuButtonSegmentActions.TabIndex = 0; - this.menuButtonSegmentActions.Text = "Segment actions"; - this.menuButtonSegmentActions.UseVisualStyleBackColor = false; - this.menuButtonSegmentActions.Visible = false; - // - // ctxmSegmentActions - // - this.ctxmSegmentActions.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.defineOneSegmentToolStripMenuItem, - this.splitSegmentAtCurrentPositionToolStripMenuItem, - this.deleteSegmentToolStripMenuItem, - this.actualPositionToIntroToolStripMenuItem, - this.actualPositionToOutroToolStripMenuItem}); - this.ctxmSegmentActions.Name = "ctxmSegmentActions"; - this.ctxmSegmentActions.Size = new System.Drawing.Size(247, 114); - // - // defineOneSegmentToolStripMenuItem - // - this.defineOneSegmentToolStripMenuItem.Name = "defineOneSegmentToolStripMenuItem"; - this.defineOneSegmentToolStripMenuItem.Size = new System.Drawing.Size(246, 22); - this.defineOneSegmentToolStripMenuItem.Text = "Define one segment for movie"; - this.defineOneSegmentToolStripMenuItem.Click += new System.EventHandler(this.OnDefineOneSegmentClick); - // - // splitSegmentAtCurrentPositionToolStripMenuItem - // - this.splitSegmentAtCurrentPositionToolStripMenuItem.Name = "splitSegmentAtCurrentPositionToolStripMenuItem"; - this.splitSegmentAtCurrentPositionToolStripMenuItem.Size = new System.Drawing.Size(246, 22); - this.splitSegmentAtCurrentPositionToolStripMenuItem.Text = "Split segment at current position"; - this.splitSegmentAtCurrentPositionToolStripMenuItem.Click += new System.EventHandler(this.OnSplitSegmentAtCurrentPositionClick); - // - // deleteSegmentToolStripMenuItem - // - this.deleteSegmentToolStripMenuItem.Name = "deleteSegmentToolStripMenuItem"; - this.deleteSegmentToolStripMenuItem.Size = new System.Drawing.Size(246, 22); - this.deleteSegmentToolStripMenuItem.Text = "Delete segment"; - this.deleteSegmentToolStripMenuItem.Click += new System.EventHandler(this.OnDeleteSegmentClick); - // - // actualPositionToIntroToolStripMenuItem - // - this.actualPositionToIntroToolStripMenuItem.Name = "actualPositionToIntroToolStripMenuItem"; - this.actualPositionToIntroToolStripMenuItem.Size = new System.Drawing.Size(246, 22); - this.actualPositionToIntroToolStripMenuItem.Text = "Actual position to TCIn"; - this.actualPositionToIntroToolStripMenuItem.Click += new System.EventHandler(this.OnActualPositionToTCInToolStripMenuItem1Click); - // - // actualPositionToOutroToolStripMenuItem - // - this.actualPositionToOutroToolStripMenuItem.Name = "actualPositionToOutroToolStripMenuItem"; - this.actualPositionToOutroToolStripMenuItem.Size = new System.Drawing.Size(246, 22); - this.actualPositionToOutroToolStripMenuItem.Text = "Actual position to TCOut"; - this.actualPositionToOutroToolStripMenuItem.Click += new System.EventHandler(this.OnActualPositionToTCOutToolStripMenuItem1Click); - // // mainSplit // - this.mainSplit.BackColor = System.Drawing.Color.DimGray; + this.mainSplit.BackColor = System.Drawing.Color.Black; + this.mainSplit.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.mainSplit.Dock = System.Windows.Forms.DockStyle.Fill; this.mainSplit.Location = new System.Drawing.Point(0, 24); this.mainSplit.Name = "mainSplit"; @@ -163,9 +102,11 @@ namespace DxPlay { // // mainSplit.Panel2 // - this.mainSplit.Panel2.Controls.Add(this.marginPanel); - this.mainSplit.Size = new System.Drawing.Size(990, 489); - this.mainSplit.SplitterDistance = 689; + this.mainSplit.Panel2.Controls.Add(this.tableLayoutPanel1); + this.mainSplit.Panel2.Controls.Add(this.pMetadataDisplay); + this.mainSplit.Panel2MinSize = 300; + this.mainSplit.Size = new System.Drawing.Size(1068, 489); + this.mainSplit.SplitterDistance = 743; this.mainSplit.TabIndex = 20; // // panelPlayer @@ -174,19 +115,24 @@ namespace DxPlay { this.panelPlayer.Dock = System.Windows.Forms.DockStyle.Fill; this.panelPlayer.Location = new System.Drawing.Point(0, 0); this.panelPlayer.Name = "panelPlayer"; - this.panelPlayer.Size = new System.Drawing.Size(689, 489); + this.panelPlayer.Size = new System.Drawing.Size(741, 487); this.panelPlayer.TabIndex = 0; // - // marginPanel - // - this.marginPanel.BackColor = System.Drawing.SystemColors.ControlDark; - this.marginPanel.Controls.Add(this.tabEditor); - this.marginPanel.Dock = System.Windows.Forms.DockStyle.Fill; - this.marginPanel.Location = new System.Drawing.Point(0, 0); - this.marginPanel.Name = "marginPanel"; - this.marginPanel.Padding = new System.Windows.Forms.Padding(4); - this.marginPanel.Size = new System.Drawing.Size(297, 489); - this.marginPanel.TabIndex = 3; + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 2; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Controls.Add(this.tabEditor, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.btnToggleSegmentEditor, 0, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 1; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(319, 424); + this.tableLayoutPanel1.TabIndex = 4; // // tabEditor // @@ -194,14 +140,15 @@ namespace DxPlay { this.tabEditor.Controls.Add(this.tpMetadata); this.tabEditor.Controls.Add(this.tpSegments); this.tabEditor.Dock = System.Windows.Forms.DockStyle.Fill; - this.tabEditor.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.tabEditor.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.tabEditor.ImageList = this.imagesTabEdit; - this.tabEditor.Location = new System.Drawing.Point(4, 4); + this.tabEditor.Location = new System.Drawing.Point(23, 4); + this.tabEditor.Margin = new System.Windows.Forms.Padding(0, 4, 4, 4); this.tabEditor.Multiline = true; this.tabEditor.Name = "tabEditor"; this.tabEditor.Padding = new System.Drawing.Point(10, 5); this.tabEditor.SelectedIndex = 0; - this.tabEditor.Size = new System.Drawing.Size(289, 481); + this.tabEditor.Size = new System.Drawing.Size(292, 416); this.tabEditor.TabIndex = 2; // // tpMetadata @@ -213,7 +160,7 @@ namespace DxPlay { this.tpMetadata.Location = new System.Drawing.Point(4, 4); this.tpMetadata.Name = "tpMetadata"; this.tpMetadata.Padding = new System.Windows.Forms.Padding(3); - this.tpMetadata.Size = new System.Drawing.Size(281, 442); + this.tpMetadata.Size = new System.Drawing.Size(284, 377); this.tpMetadata.TabIndex = 0; this.tpMetadata.Text = "Metadata"; // @@ -225,7 +172,7 @@ namespace DxPlay { this.trafficBrowser.Location = new System.Drawing.Point(3, 3); this.trafficBrowser.Margin = new System.Windows.Forms.Padding(0); this.trafficBrowser.Name = "trafficBrowser"; - this.trafficBrowser.Size = new System.Drawing.Size(275, 436); + this.trafficBrowser.Size = new System.Drawing.Size(278, 371); this.trafficBrowser.TabIndex = 0; // // tpSegments @@ -237,7 +184,7 @@ namespace DxPlay { this.tpSegments.Location = new System.Drawing.Point(4, 4); this.tpSegments.Name = "tpSegments"; this.tpSegments.Padding = new System.Windows.Forms.Padding(3); - this.tpSegments.Size = new System.Drawing.Size(192, 30); + this.tpSegments.Size = new System.Drawing.Size(284, 377); this.tpSegments.TabIndex = 1; this.tpSegments.Text = "Segments"; this.tpSegments.UseVisualStyleBackColor = true; @@ -267,7 +214,7 @@ namespace DxPlay { this.dgSegments.Name = "dgSegments"; this.dgSegments.RowHeadersVisible = false; this.dgSegments.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.dgSegments.Size = new System.Drawing.Size(186, 0); + this.dgSegments.Size = new System.Drawing.Size(278, 346); this.dgSegments.TabIndex = 1; this.dgSegments.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgSegments_CellContentClick); this.dgSegments.CellMouseDoubleClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dgSegments_CellMouseDoubleClick); @@ -278,79 +225,84 @@ namespace DxPlay { this.segmentActions.AutoSize = false; this.segmentActions.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; this.segmentActions.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.toolStripButton5, + this.tbDefineSegment, this.toolStripSeparator2, - this.toolStripButton1, - this.toolStripButton4, - this.toolStripButton2, + this.tbPositionAsTCIn, + this.tbSplitSegment, + this.tbPositionAsTCOut, this.toolStripSeparator1, - this.toolStripButton3}); + this.tbDeleteSegment}); this.segmentActions.Location = new System.Drawing.Point(3, 3); this.segmentActions.Name = "segmentActions"; this.segmentActions.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; - this.segmentActions.Size = new System.Drawing.Size(186, 25); + this.segmentActions.Size = new System.Drawing.Size(278, 25); this.segmentActions.TabIndex = 0; this.segmentActions.Text = "toolStrip1"; // - // toolStripButton5 + // tbDefineSegment // - this.toolStripButton5.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.toolStripButton5.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton5.Image"))); - this.toolStripButton5.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; - this.toolStripButton5.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripButton5.Name = "toolStripButton5"; - this.toolStripButton5.Size = new System.Drawing.Size(23, 22); - this.toolStripButton5.Text = "toolStripButton5"; + this.tbDefineSegment.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.tbDefineSegment.Image = ((System.Drawing.Image)(resources.GetObject("tbDefineSegment.Image"))); + this.tbDefineSegment.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; + this.tbDefineSegment.ImageTransparentColor = System.Drawing.Color.Magenta; + this.tbDefineSegment.Name = "tbDefineSegment"; + this.tbDefineSegment.Size = new System.Drawing.Size(23, 22); + this.tbDefineSegment.Text = "toolStripButton5"; + this.tbDefineSegment.Click += new System.EventHandler(this.OnDefineOneSegmentClick); // // toolStripSeparator2 // this.toolStripSeparator2.Name = "toolStripSeparator2"; this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25); // - // toolStripButton1 - // - this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image"))); - this.toolStripButton1.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; - this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripButton1.Name = "toolStripButton1"; - this.toolStripButton1.Size = new System.Drawing.Size(23, 22); - this.toolStripButton1.Text = "toolStripButton1"; - // - // toolStripButton4 - // - this.toolStripButton4.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.toolStripButton4.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton4.Image"))); - this.toolStripButton4.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; - this.toolStripButton4.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripButton4.Name = "toolStripButton4"; - this.toolStripButton4.Size = new System.Drawing.Size(23, 22); - this.toolStripButton4.Text = "toolStripButton4"; - // - // toolStripButton2 - // - this.toolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.toolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton2.Image"))); - this.toolStripButton2.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; - this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripButton2.Name = "toolStripButton2"; - this.toolStripButton2.Size = new System.Drawing.Size(23, 22); - this.toolStripButton2.Text = "toolStripButton2"; + // tbPositionAsTCIn + // + this.tbPositionAsTCIn.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.tbPositionAsTCIn.Image = ((System.Drawing.Image)(resources.GetObject("tbPositionAsTCIn.Image"))); + this.tbPositionAsTCIn.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; + this.tbPositionAsTCIn.ImageTransparentColor = System.Drawing.Color.Magenta; + this.tbPositionAsTCIn.Name = "tbPositionAsTCIn"; + this.tbPositionAsTCIn.Size = new System.Drawing.Size(23, 22); + this.tbPositionAsTCIn.Text = "toolStripButton1"; + this.tbPositionAsTCIn.Click += new System.EventHandler(this.OnActualPositionToTCInToolStripMenuItem1Click); + // + // tbSplitSegment + // + this.tbSplitSegment.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.tbSplitSegment.Image = ((System.Drawing.Image)(resources.GetObject("tbSplitSegment.Image"))); + this.tbSplitSegment.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; + this.tbSplitSegment.ImageTransparentColor = System.Drawing.Color.Magenta; + this.tbSplitSegment.Name = "tbSplitSegment"; + this.tbSplitSegment.Size = new System.Drawing.Size(23, 22); + this.tbSplitSegment.Text = "toolStripButton4"; + this.tbSplitSegment.Click += new System.EventHandler(this.OnSplitSegmentAtCurrentPositionClick); + // + // tbPositionAsTCOut + // + this.tbPositionAsTCOut.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.tbPositionAsTCOut.Image = ((System.Drawing.Image)(resources.GetObject("tbPositionAsTCOut.Image"))); + this.tbPositionAsTCOut.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; + this.tbPositionAsTCOut.ImageTransparentColor = System.Drawing.Color.Magenta; + this.tbPositionAsTCOut.Name = "tbPositionAsTCOut"; + this.tbPositionAsTCOut.Size = new System.Drawing.Size(23, 22); + this.tbPositionAsTCOut.Text = "toolStripButton2"; + this.tbPositionAsTCOut.Click += new System.EventHandler(this.OnActualPositionToTCOutToolStripMenuItem1Click); // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25); // - // toolStripButton3 + // tbDeleteSegment // - this.toolStripButton3.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.toolStripButton3.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton3.Image"))); - this.toolStripButton3.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; - this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripButton3.Name = "toolStripButton3"; - this.toolStripButton3.Size = new System.Drawing.Size(23, 22); - this.toolStripButton3.Text = "toolStripButton3"; + this.tbDeleteSegment.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.tbDeleteSegment.Image = ((System.Drawing.Image)(resources.GetObject("tbDeleteSegment.Image"))); + this.tbDeleteSegment.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; + this.tbDeleteSegment.ImageTransparentColor = System.Drawing.Color.Magenta; + this.tbDeleteSegment.Name = "tbDeleteSegment"; + this.tbDeleteSegment.Size = new System.Drawing.Size(23, 22); + this.tbDeleteSegment.Text = "toolStripButton3"; + this.tbDeleteSegment.Click += new System.EventHandler(this.OnDeleteSegmentClick); // // imagesTabEdit // @@ -359,13 +311,91 @@ namespace DxPlay { this.imagesTabEdit.Images.SetKeyName(0, "round_publish_black_24dp.png"); this.imagesTabEdit.Images.SetKeyName(1, "ic_playlist_add_check_black_24dp_1x.png"); // + // btnToggleSegmentEditor + // + this.btnToggleSegmentEditor.BackColor = System.Drawing.Color.White; + this.btnToggleSegmentEditor.FlatAppearance.BorderSize = 0; + this.btnToggleSegmentEditor.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnToggleSegmentEditor.Image = ((System.Drawing.Image)(resources.GetObject("btnToggleSegmentEditor.Image"))); + this.btnToggleSegmentEditor.Location = new System.Drawing.Point(0, 4); + this.btnToggleSegmentEditor.Margin = new System.Windows.Forms.Padding(0, 4, 0, 0); + this.btnToggleSegmentEditor.Name = "btnToggleSegmentEditor"; + this.btnToggleSegmentEditor.Size = new System.Drawing.Size(23, 63); + this.btnToggleSegmentEditor.TabIndex = 0; + this.btnToggleSegmentEditor.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; + this.btnToggleSegmentEditor.UseVisualStyleBackColor = false; + this.btnToggleSegmentEditor.Visible = false; + this.btnToggleSegmentEditor.Click += new System.EventHandler(this.OnToggleSegmentEditor); + // + // pMetadataDisplay + // + this.pMetadataDisplay.AutoSize = true; + this.pMetadataDisplay.ColumnCount = 2; + this.pMetadataDisplay.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.pMetadataDisplay.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.pMetadataDisplay.Controls.Add(this.btnApprove, 1, 1); + this.pMetadataDisplay.Controls.Add(this.labelSelectedMetadata, 0, 0); + this.pMetadataDisplay.Controls.Add(this.txtSelectedID, 0, 1); + this.pMetadataDisplay.Dock = System.Windows.Forms.DockStyle.Bottom; + this.pMetadataDisplay.Location = new System.Drawing.Point(0, 424); + this.pMetadataDisplay.Margin = new System.Windows.Forms.Padding(0); + this.pMetadataDisplay.Name = "pMetadataDisplay"; + this.pMetadataDisplay.RowCount = 2; + this.pMetadataDisplay.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.pMetadataDisplay.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.pMetadataDisplay.Size = new System.Drawing.Size(319, 63); + this.pMetadataDisplay.TabIndex = 5; + // + // btnApprove + // + this.btnApprove.AutoSize = true; + this.btnApprove.BackColor = System.Drawing.Color.White; + this.btnApprove.FlatAppearance.BorderSize = 0; + this.btnApprove.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnApprove.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.btnApprove.Image = ((System.Drawing.Image)(resources.GetObject("btnApprove.Image"))); + this.btnApprove.Location = new System.Drawing.Point(217, 29); + this.btnApprove.Margin = new System.Windows.Forms.Padding(0, 4, 0, 0); + this.btnApprove.Name = "btnApprove"; + this.btnApprove.Size = new System.Drawing.Size(102, 30); + this.btnApprove.TabIndex = 17; + this.btnApprove.Text = "Approve"; + this.btnApprove.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; + this.btnApprove.UseVisualStyleBackColor = false; + this.btnApprove.Click += new System.EventHandler(this.OnApprove); + // + // labelSelectedMetadata + // + this.labelSelectedMetadata.AutoSize = true; + this.labelSelectedMetadata.BackColor = System.Drawing.Color.Transparent; + this.labelSelectedMetadata.Dock = System.Windows.Forms.DockStyle.Fill; + this.labelSelectedMetadata.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.labelSelectedMetadata.ForeColor = System.Drawing.SystemColors.ActiveCaption; + this.labelSelectedMetadata.Location = new System.Drawing.Point(3, 0); + this.labelSelectedMetadata.Name = "labelSelectedMetadata"; + this.labelSelectedMetadata.Padding = new System.Windows.Forms.Padding(0, 5, 0, 5); + this.labelSelectedMetadata.Size = new System.Drawing.Size(211, 25); + this.labelSelectedMetadata.TabIndex = 13; + this.labelSelectedMetadata.Text = "Selected metadata"; + // + // txtSelectedID + // + this.txtSelectedID.BackColor = System.Drawing.SystemColors.ActiveCaption; + this.txtSelectedID.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtSelectedID.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtSelectedID.Font = new System.Drawing.Font("Microsoft Sans Serif", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.txtSelectedID.Location = new System.Drawing.Point(3, 28); + this.txtSelectedID.Name = "txtSelectedID"; + this.txtSelectedID.Size = new System.Drawing.Size(211, 32); + this.txtSelectedID.TabIndex = 12; + // // mainMenu // this.mainMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.fileToolStripMenuItem}); this.mainMenu.Location = new System.Drawing.Point(0, 0); this.mainMenu.Name = "mainMenu"; - this.mainMenu.Size = new System.Drawing.Size(990, 24); + this.mainMenu.Size = new System.Drawing.Size(1068, 24); this.mainMenu.TabIndex = 21; this.mainMenu.Text = "menuStrip1"; // @@ -392,7 +422,7 @@ namespace DxPlay { this.menuApprove.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S))); this.menuApprove.Size = new System.Drawing.Size(165, 22); this.menuApprove.Text = "Approve"; - this.menuApprove.Click += new System.EventHandler(this.OnClick_menuApprove); + this.menuApprove.Click += new System.EventHandler(this.OnApprove); // // playerControls // @@ -401,7 +431,7 @@ namespace DxPlay { this.playerControls.Location = new System.Drawing.Point(0, 513); this.playerControls.Margin = new System.Windows.Forms.Padding(0); this.playerControls.Name = "playerControls"; - this.playerControls.Size = new System.Drawing.Size(990, 116); + this.playerControls.Size = new System.Drawing.Size(1068, 116); this.playerControls.TabIndex = 22; // // PlayerForm @@ -409,7 +439,7 @@ namespace DxPlay { this.AllowDrop = true; this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.BackColor = System.Drawing.Color.White; - this.ClientSize = new System.Drawing.Size(990, 629); + this.ClientSize = new System.Drawing.Size(1068, 629); this.Controls.Add(this.mainSplit); this.Controls.Add(this.mainMenu); this.Controls.Add(this.playerControls); @@ -427,14 +457,13 @@ namespace DxPlay { this.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter); this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.PlayerForm_KeyDown); this.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.PlayerForm_PreviewKeyDown); - this.pVideo.ResumeLayout(false); - this.ctxmSegmentActions.ResumeLayout(false); this.mainSplit.Panel1.ResumeLayout(false); this.mainSplit.Panel2.ResumeLayout(false); + this.mainSplit.Panel2.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.mainSplit)).EndInit(); this.mainSplit.ResumeLayout(false); this.panelPlayer.ResumeLayout(false); - this.marginPanel.ResumeLayout(false); + this.tableLayoutPanel1.ResumeLayout(false); this.tabEditor.ResumeLayout(false); this.tpMetadata.ResumeLayout(false); this.tpSegments.ResumeLayout(false); @@ -442,6 +471,8 @@ namespace DxPlay { ((System.ComponentModel.ISupportInitialize)(this.bsSegments)).EndInit(); this.segmentActions.ResumeLayout(false); this.segmentActions.PerformLayout(); + this.pMetadataDisplay.ResumeLayout(false); + this.pMetadataDisplay.PerformLayout(); this.mainMenu.ResumeLayout(false); this.mainMenu.PerformLayout(); this.ResumeLayout(false); @@ -451,16 +482,9 @@ namespace DxPlay { #endregion private SplitContainer mainSplit; private Panel panelPlayer; - private MenuButton menuButtonSegmentActions; - private ContextMenuStrip ctxmSegmentActions; private System.ComponentModel.IContainer components; - private ToolStripMenuItem defineOneSegmentToolStripMenuItem; - private ToolStripMenuItem splitSegmentAtCurrentPositionToolStripMenuItem; private DataGridView dgSegments; private BindingSource bsSegments; - private ToolStripMenuItem deleteSegmentToolStripMenuItem; - private ToolStripMenuItem actualPositionToIntroToolStripMenuItem; - private ToolStripMenuItem actualPositionToOutroToolStripMenuItem; private MenuStrip mainMenu; private ToolStripMenuItem fileToolStripMenuItem; private DxPlay.Controls.BindableToolStripMenuItem menuOpenFile; @@ -470,16 +494,21 @@ namespace DxPlay { private TabPage tpMetadata; private TabPage tpSegments; private ToolStrip segmentActions; - private ToolStripButton toolStripButton1; - private ToolStripButton toolStripButton2; - private ToolStripButton toolStripButton3; - private ToolStripButton toolStripButton4; - private ToolStripButton toolStripButton5; + private ToolStripButton tbPositionAsTCIn; + private ToolStripButton tbPositionAsTCOut; + private ToolStripButton tbDeleteSegment; + private ToolStripButton tbSplitSegment; + private ToolStripButton tbDefineSegment; private ImageList imagesTabEdit; - private Panel marginPanel; private TrafficClient.TrafficIDSelector trafficBrowser; private ToolStripSeparator toolStripSeparator2; private ToolStripSeparator toolStripSeparator1; + private TableLayoutPanel tableLayoutPanel1; + private NoFocusCueButton btnToggleSegmentEditor; + private TableLayoutPanel pMetadataDisplay; + private NoFocusCueButton btnApprove; + private Label labelSelectedMetadata; + private TextBox txtSelectedID; } } diff --git a/client/DxPlay/PlayerForm.cs b/client/DxPlay/PlayerForm.cs index 5a9f246d..0f3aaeab 100644 --- a/client/DxPlay/PlayerForm.cs +++ b/client/DxPlay/PlayerForm.cs @@ -5,9 +5,9 @@ using System.Linq; using MaestroShared.Metadata; using NLog; using DxPlay.Model; -using TrafficClient; using MaestroShared.Commons; using DxPlay.Properties; +using MaestroShared.Targets; namespace DxPlay { @@ -54,10 +54,12 @@ namespace DxPlay { private void ApplyModel() { bsSegments.DataSource = model.Segments; dgSegments.AutoGenerateColumns = true; - mainMenu.DataBindings.Add(new Binding("Visible", model, "IsMenuVisible")); - menuOpenFile.DataBindings.Add(new Binding("Enabled", model, "IsMenuVisible")); - menuApprove.DataBindings.Add(new Binding("Enabled", model, "IsApproveEnabled")); - Binding segmentEditorPanelBinding = new Binding("Panel2Collapsed", model, "IsSegmentEditorEnabled"); + mainMenu.DataBindings.Add(new Binding("Visible", model, "IsMenuVisible", false, DataSourceUpdateMode.Never)); + menuOpenFile.DataBindings.Add(new Binding("Enabled", model, "IsMenuVisible", false, DataSourceUpdateMode.Never)); + menuApprove.DataBindings.Add(new Binding("Enabled", model, "IsApproveEnabled", false, DataSourceUpdateMode.Never)); + btnApprove.DataBindings.Add(new Binding("Enabled", model, "IsApproveEnabled", false, DataSourceUpdateMode.Never)); + tpSegments.DataBindings.Add(new Binding("Enabled", model, "IsApproveEnabled", false, DataSourceUpdateMode.Never)); + Binding segmentEditorPanelBinding = new Binding("Panel2Collapsed", model, "IsSegmentEditorVisible", true, DataSourceUpdateMode.Never); segmentEditorPanelBinding.Format += (s, e) => { bool enabled = (bool)e.Value; e.Value = !enabled; @@ -67,9 +69,21 @@ namespace DxPlay { mainSplit.Panel2.Hide(); }; mainSplit.DataBindings.Add(segmentEditorPanelBinding); - trafficBrowser.Parameters = new TrafficParameters { - Configuration = Settings.Metadata, MessageBus = model.MessageBus - }; + txtSelectedID.DataBindings.Add(new Binding("Text", model, "ID", false, DataSourceUpdateMode.Never)); + + trafficBrowser.IDChangedEvent += OnSelectedIDChanged; + model.InitializeTrafficIntegration(trafficBrowser); + } + + private void OnSelectedIDChanged(string ID, int variantID, string text) { + //logger.Info("Selected ID: " + ID); + try { + model.ID = ID; + model.VariantID = variantID; + } catch (Exception e) { + MsgBox.Error(e.Message); + logger.Error(e); + } } public PlayerForm() { @@ -84,21 +98,24 @@ namespace DxPlay { } private void InitializeTexts() { - - defineOneSegmentToolStripMenuItem.Text = Settings.Resource("define-segment", Resources.SZEGMENS_DEFINIALASA); - splitSegmentAtCurrentPositionToolStripMenuItem.Text = Settings.Resource("break-segment", Resources.SZEGMENS_SZETVAGASA); - actualPositionToIntroToolStripMenuItem.Text = Settings.Resource("position-as-tcin", Resources.AKTUALIS_POZICIO_BELEPO); - actualPositionToOutroToolStripMenuItem.Text = Settings.Resource("position-as-tcout", Resources.AKTUALIS_POZICIO_KILEPO); - deleteSegmentToolStripMenuItem.Text = Settings.Resource("delete-segment", Resources.SZEGMENS_TORLESE); - menuButtonSegmentActions.Text = Settings.Resource("segments", Resources.SZEGMENSEK); + tpMetadata.Text = Settings.Resource("METADATA", Resources.METADATA); + tpSegments.Text = Settings.Resource("SEGMENTS", Resources.SEGMENTS); + tbPositionAsTCIn.Text = Settings.Resource("POSITIONASTCIN", Resources.POSITIONASTCIN); + tbPositionAsTCOut.Text = Settings.Resource("POSITIONASTCOUT", Resources.POSITIONASTCOUT); + tbDefineSegment.Text = Settings.Resource("DEFINESEGMENT", Resources.DEFINESEGMENT); + tbDeleteSegment.Text = Settings.Resource("DELETESEGMENT", Resources.DELETESEGMENT); + tbSplitSegment.Text = Settings.Resource("SPLITSEGMENT", Resources.SPLITSEGMENT); + menuOpenFile.Text = Settings.Resource("OPEN", Resources.OPEN); + menuApprove.Text = Settings.Resource("APPROVE", Resources.APPROVE); + btnApprove.Text = Settings.Resource("APPROVE", Resources.APPROVE); ToolTip tt = new ToolTip(); - tt.SetToolTip(playerControls.Pause, Settings.Resource("pause", Resources.SZUNET)); - tt.SetToolTip(playerControls.Play, Settings.Resource("play", Resources.LEJATSZAS)); - tt.SetToolTip(playerControls.Stop, Settings.Resource("stop", Resources.LEALLITAS)); - playerControls.Status.Text = Settings.Resource("no-input", Resources.NINCS_BEMENET); - playerControls.Start.Text = Settings.Resource("start", Resources.INDULASI_PONT); - playerControls.Duration.Text = Settings.Resource("length", Resources.HOSSZ); + tt.SetToolTip(playerControls.Pause, Settings.Resource("PAUSE", Resources.PAUSE)); + tt.SetToolTip(playerControls.Play, Settings.Resource("PLAY", Resources.PLAY)); + tt.SetToolTip(playerControls.Stop, Settings.Resource("STOP", Resources.STOP)); + playerControls.Status.Text = Settings.Resource("NOINPUT", Resources.NOINPUT); + playerControls.Start.Text = Settings.Resource("START", Resources.START); + playerControls.Duration.Text = Settings.Resource("LENGTH", Resources.LENGTH); } private void Cueue() { @@ -149,20 +166,26 @@ namespace DxPlay { } } - public void Open(FileInfo fileInfo) { + public void OpenFile(FileInfo fileInfo) { logger.Debug("Open"); + if (model.IsMenuVisible) { + model.ID = null; + model.CurrentFile = null; + } + if (m_play != null) m_play.Dispose(); this.Text = fileInfo.Name; selectedFile = fileInfo.FullName; - + Cueue(); if (model.IsMenuVisible) { + model.CurrentFile = fileInfo; openFileDialog.InitialDirectory = fileInfo.Directory.FullName; string id = fileInfo.Name.Replace(fileInfo.Extension, ""); try { - model.InitializeSegments(id); + model.Lookup(id); } catch (Exception e) { MsgBox.Error(e.Message); logger.Error(e); @@ -174,7 +197,7 @@ namespace DxPlay { private void Form1_DragDrop(object sender, DragEventArgs e) { string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); FileInfo fileInfo = new FileInfo(files[0]); - Open(fileInfo); + OpenFile(fileInfo); } private void panel1_MouseDown(object sender, MouseEventArgs e) { @@ -362,6 +385,8 @@ namespace DxPlay { } private void OnDefineOneSegmentClick(object sender, EventArgs e) { + if (m_play == null) + return; MovieSegment segment = null; if (model.Segments.Count == 0) { segment = new MovieSegment() { @@ -389,6 +414,8 @@ namespace DxPlay { } private void SetActualPositionAsIn() { + if (m_play == null) + return; MovieSegment currentSegment = bsSegments.Current as MovieSegment; if (currentSegment == null || bsSegments.Count == 0) { MovieSegment newSegment = new MovieSegment() { @@ -425,6 +452,8 @@ namespace DxPlay { private void SetActualPositionAsOut() { + if (m_play == null) + return; MovieSegment currentSegment = bsSegments.Current as MovieSegment; if (currentSegment == null || bsSegments.Count == 0) { MovieSegment newSegment = new MovieSegment() { @@ -474,18 +503,18 @@ namespace DxPlay { int index = e.Column.Index; switch (index) { case 0: - e.Column.HeaderText = Settings.Resource("tc-in", Resources.BELEPO); + e.Column.HeaderText = Settings.Resource("TCIN", Resources.TCIN); e.Column.ReadOnly = true; break; case 1: - e.Column.HeaderText = Settings.Resource("tc-out", Resources.KILEPO); + e.Column.HeaderText = Settings.Resource("TCOUT", Resources.TCOUT); e.Column.ReadOnly = true; break; case 2: - e.Column.HeaderText = Settings.Resource("optional", Resources.ELHAGYHATO); + e.Column.HeaderText = Settings.Resource("OPTIONAL", Resources.OPTIONAL); break; case 3: - e.Column.HeaderText = Settings.Resource("comment", Resources.MEGJEGYZES); + e.Column.HeaderText = Settings.Resource("COMMENT", Resources.COMMENT); break; } } @@ -525,11 +554,15 @@ namespace DxPlay { private void menuOpenFile_Click(object sender, EventArgs e) { if (openFileDialog.ShowDialog() == DialogResult.OK) - Open(new FileInfo(openFileDialog.FileName)); + OpenFile(new FileInfo(openFileDialog.FileName)); + } + + private void OnApprove(object sender, EventArgs e) { + model.Approve(); } - private void OnClick_menuApprove(object sender, EventArgs e) { - MessageBox.Show("approve"); + private void OnToggleSegmentEditor(object sender, EventArgs e) { + } } } diff --git a/client/DxPlay/PlayerForm.resx b/client/DxPlay/PlayerForm.resx index b5dcd9ba..0bbfdd1b 100644 --- a/client/DxPlay/PlayerForm.resx +++ b/client/DxPlay/PlayerForm.resx @@ -117,9 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 17, 17 - 184, 17 @@ -127,7 +124,7 @@ 412, 17 - + iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAC8SURBVDhP1ZO9DcIwFISfqKGjpaENG4S/GZiEOiWMkR2Y @@ -136,7 +133,7 @@ joA3SmCG2RrIDDz6jTEwy46gBfBPi4WIn2M2K/9fKX8hkQ9xw2LrlhXH8QAAAABJRU5ErkJggg== - + iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABOSURBVDhPYxgFVAWOUJoiUALE/4HYB8wjE8AMmQbmkQmo @@ -144,7 +141,7 @@ RK5CYII= - + iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABlSURBVDhPYxjZ4AAUUwxGDUIFFUDcD2HCATaDQGoKIEzs @@ -152,7 +149,7 @@ UGzIkAUMDABv+SVD4UMwTwAAAABJRU5ErkJggg== - + iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABOSURBVDhPYxgFFAMnKE0R8APi/0BcAuZRCKYBMdUMmwfE @@ -160,7 +157,7 @@ RK5CYII= - + iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABvSURBVDhPYxhZwBVK4wOOUBoncAPi/0DcDuZhByA5kBon @@ -176,7 +173,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABo - CAAAAk1TRnQBSQFMAgEBAgEAAWgBAAFoAQABGAEAARgBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAUABAQFAAQEBGAEAARgBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABYAMAARgDAAEBAQABCAYAAQkYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -212,6 +209,25 @@ Av8B+AEfBgAB/wGBAv8B8AEPBgAB/wGBAf8BwAEhAYcGAAH/AYEB/wHAATMBwwYAAfwBAAE/Av8B4QYA AfwBAAE/Av8B8QYAAf4BAAF/AcABAwH7BgAB/wEAAf8BwAEDAf8GAAH/AYEE/wYAAf8BwwT/BgAB/wHn Af8BwAEDAf8GAAP/AcABAwH/BgAB+AEAAR8D/wYAAfgBAAEfA/8GAAb/BgAG/wYABv8GAAb/BgAL + + + + + iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAAAJpJREFUaEPt + 1zEKwzAAQ1Efp0uWnq17UujWm3YIgR6gkWi92VtDLPgPBCGTBAE7BQAAAH/zUObvY56n8vnl5hdJ7kot + HzniorwURpzNI1YlesSkMGIEHrEp0SOuCiNG4BFvJXZEb8CiDK/3CfnuNDzKn6V3BsSUb53ClD9a7yYa + U771LxBR3nwgxZavXDi2fOXiseUBAACylLIDyDZ2w7cTLqQAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAAVJJREFUSEvt + 008rBVEYx/FJ6i5QFG7CG7AnL0A2bNS9W0VWLCiXhSwUindgK/begJWNmw0pWd0FKzellJX/3980z22c + Zg5z3QV1f/VZPOecec7MnJmgmX+RIezhEk/4wD12MIhfZQlqmOYZJdSVFajJOw4xjm50YhgHsI32kSlj + UOMXFDSQkiJskzkN+NKCaZzhFbpoHd9lG1pbCauU9OICdjdyg1bEsxGJpw12+CMacKMF19CCW8ygHW7U + 2DZ3N7HzeMQRdF61rEKTesQODSQk3tzEN5mHO7+LMOfQQNphJjU37pN0QZ/2GzQ/ivBbVpFX4Ym+d2u8 + rAFPFqF1el21AxpQ4UmWDXSzWldVUY4KHa4vWTbog9bp5oPZqHiAJhqRNajniQr9YKfRwB0m0YN60o9N + qJdMIIwmrmATjbCFL8lhAfofki74qWNMoZk/kSD4BI3xj2R8oQqYAAAAAElFTkSuQmCC diff --git a/client/DxPlay/Program.cs b/client/DxPlay/Program.cs index b53f777b..0a67593d 100644 --- a/client/DxPlay/Program.cs +++ b/client/DxPlay/Program.cs @@ -30,7 +30,7 @@ namespace Maestro { if (arguments.Length > 1) { FileInfo fi = new FileInfo(arguments[1]); if (fi.Exists) - playerForm.Open(fi); + playerForm.OpenFile(fi); } return playerForm.IsDisposed; } diff --git a/client/Maestro/MaestroForm.Source.cs b/client/Maestro/MaestroForm.Source.cs index 4cc4969d..b05e5817 100644 --- a/client/Maestro/MaestroForm.Source.cs +++ b/client/Maestro/MaestroForm.Source.cs @@ -138,7 +138,7 @@ namespace Maestro { }, Segments = movieSegments }; - player.Open(fileInfo); + player.OpenFile(fileInfo); if (!player.IsDisposed) player.ShowDialog(); } else { diff --git a/client/Maestro/MaestroForm.resx b/client/Maestro/MaestroForm.resx index c0d65f6c..13a772d0 100644 --- a/client/Maestro/MaestroForm.resx +++ b/client/Maestro/MaestroForm.resx @@ -128,7 +128,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAS - CAAAAk1TRnQBSQFMAgEBAgEAAWgBAQFoAQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAXgBAQF4AQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/client/MaestroShared/MaestroShared.csproj b/client/MaestroShared/MaestroShared.csproj index 4169050f..2527002d 100644 --- a/client/MaestroShared/MaestroShared.csproj +++ b/client/MaestroShared/MaestroShared.csproj @@ -217,5 +217,17 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/client/MaestroShared/Properties/Resources.Designer.cs b/client/MaestroShared/Properties/Resources.Designer.cs index 15edbb2a..7142c5d5 100644 --- a/client/MaestroShared/Properties/Resources.Designer.cs +++ b/client/MaestroShared/Properties/Resources.Designer.cs @@ -240,6 +240,16 @@ namespace MaestroShared.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap outline_backup_black_24dp { + get { + object obj = ResourceManager.GetObject("outline_backup_black_24dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -249,5 +259,25 @@ namespace MaestroShared.Properties { return ((System.Drawing.Bitmap)(obj)); } } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap sharp_keyboard_arrow_left_black_48dp { + get { + object obj = ResourceManager.GetObject("sharp_keyboard_arrow_left_black_48dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap sharp_keyboard_arrow_right_black_48dp { + get { + object obj = ResourceManager.GetObject("sharp_keyboard_arrow_right_black_48dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } } } diff --git a/client/MaestroShared/Properties/Resources.resx b/client/MaestroShared/Properties/Resources.resx index c11d6ca0..e7450e91 100644 --- a/client/MaestroShared/Properties/Resources.resx +++ b/client/MaestroShared/Properties/Resources.resx @@ -175,4 +175,13 @@ ..\Resources\round_publish_black_24dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\sharp_keyboard_arrow_left_black_48dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\sharp_keyboard_arrow_right_black_48dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\outline_backup_black_24dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/client/MaestroShared/Resources/baseline_backup_black_24dp.png b/client/MaestroShared/Resources/baseline_backup_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..57d8362f9664bb58d71416ed061f821917ed894e GIT binary patch literal 394 zcmV;50d@X~P)y-%ZPPR#73^$qvvLO2q7S;fHlHSf4r(nGMi3 zKp&Qv1I!H2hb8iLfb#+R(8MzpcrHq7g&|67qsUD(aGc+X2A(JVh;q1+Xy6w!6Ae6} zRic5za45mRSZM68D3QHW1?ZoMzCbqsrY8`XqY#5-m+93nP#83~OHP^SU+XT02BtXc ovEQQb`R=xTMyMh~h717s5BcZaS-uDh9{>OV07*qoM6N<$f&{s-Q2+n{ literal 0 HcmV?d00001 diff --git a/client/MaestroShared/Resources/outline_backup_black_24dp.png b/client/MaestroShared/Resources/outline_backup_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..154c556ce48edeef2736ed5e1e02da1dcb0ce0c1 GIT binary patch literal 293 zcmV+=0owkFP)hOgo>g{s%4ZGkf0z6AWEQ6R3RZMY8fd2+CU&EL5Tzg1xiE= zsOkj#e5e@!Jr`Wg>sDR7I54b%RVnV>x<71)Zzm@7=rZD1#F1Z&`}Sc*1+yX+m9&_1 zCC+JaA)ZX>^}9j4 rA|_$boiufO0Bx4l8jR0O`zL+?dA^Ti3x@L|00000NkvXXu0mjf{jzob literal 0 HcmV?d00001 diff --git a/client/MaestroShared/Resources/sharp_keyboard_arrow_left_black_48dp.png b/client/MaestroShared/Resources/sharp_keyboard_arrow_left_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..f3535b1f1ba04a78f4b6907155b9f924691f8563 GIT binary patch literal 170 zcmV;b09F5qP)03~*rs5ADAx$gOIMfrS- zC0md4UHyFK{6Cz()z2TCU!Y0{3{J%65m`N=6R}Z5QjcgvY!Xo{s7APn@>n$h002z! Y0z9R5nDu|3ZvX%Q07*qoM6N<$f@3m12><{9 literal 0 HcmV?d00001 diff --git a/client/MaestroShared/Resources/sharp_keyboard_arrow_right_black_48dp.png b/client/MaestroShared/Resources/sharp_keyboard_arrow_right_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..e6a35c1df87039b604bb9e098c094dad4f878f79 GIT binary patch literal 176 zcmV;h08jskP)qHSo+~kN+Kq9|TcD&=qB7J;y{0|oT_(B}tCGz+#lgD?N eJYJF{iRJ~!Hg?0+b4<7Z0000 *Verzió: 1.0 - 2018.08.13* + +A DxPlay alkalmazás lehetővé teszi a nagyfelbontású MXF fájlok lejátszását, és a megnyitott anyaghoz PlanAir szegmens adatok hozzárendelését. + +## MediaCube server +* Platformfüggetlen Java OSGi alkalmazás média állományok és metaadataik kezeléséhez. +* Magas rendelkezésreállású Linux cluster környezet. +* Tetszőlegesen ütemezhető, könnyen konfigurálható és bővíthető folyamatkezelés. +* A támogatott folyamatok: TSM archiválás/visszatöltés on-demand és automatizált módon, média másolás/mozgatás tárhelyek között, tárhely felszabadítás lejárati feltételek teljesülésekor, média transzkódolás. +* A tárhely kezeléshez beépített API: tsm, ftp, smb, filesystem támogatással. +* Konfigurálható metaadat kezelés, Full-Text keresési lehetőséggel. +* Webes HTML5 kliens: keresés, kisfelbontású videók megtekintése, on-demand visszatöltés, folyamatok kézi indítása, folyamatok monitorozása, média mozgatási folyamatok megtekintése idővonalon. +* REST API az adatok lekérdezéséhez, módosításához. + +## MediaCube Maestro +* Windows .NET vastag kliens a média állományok és metaadataik felhasználói kezeléséhez. +* Tálca alkalmazásként vagy ablakban futva több forrásmappa változás-monitorozása lehetséges, változás esetén felhasználói értesítés. +* Beépített videólejátszó a nagyfelbontású anyagok megtekintéséhez és szegmentáláshoz. +* Beépített hangrögzítő a hangalámondás és a telefonos interjúk felvételéhez. +* Támogatott források: smb, ftp, filesystem +* Társrendszerekből érkező metaadat hozzárendelése videó állományhoz, a cél állományok fájlnév képzése sablonokkal konfigurálva. +* Egy vagy több forrásfájlra tetszőleges számú célba történő másolási/mozgatási folyamat elindítása. +* Konfigurációban engedélyezhető munkafolyamat segítő funkciók: lejárati dátumok beállítása, jelzés küldése emailben, metaadatok exportálása specifikus formátumokba. +* Televíziós munkahelyekre kihegyezett médiakezelési sablonok: szerkesztő, szerkesztő-riporter, vágó, adásmegtekintő, adáslebonyolító. +* FXP alapú átvitel támogatása a forrás és a cél tárolók között. + +## Beállítások +![Dxplay Main](dxplay-main.png) + +* Octopus hírrendszer: metaadat forrásként REST API-n keresztül. +* PlanAir adástervező rendszer: lekérdezés, adásinformáció visszatöltése SQL tárolt eljáráson keresztül (adáskész, szegmensadatok, új kópiák létrehozása). +* Morpheus adáskijátszó rendszer: XML alapú metaadat betöltés. +* NEXIO videóserver: API-n keresztül a MediaBase lekérdezése, metaadatok feltöltése. +* TSM: API-n keresztül anyag betöltés/visszatöltés. -- 2.54.0