\r
public partial class PlayerForm : Form {\r
\r
- private BindingList<MovieSegment> segments = new BindingList<MovieSegment>();\r
+ private BindingList<MovieSegment> segments;\r
private DateTime lastClick = DateTime.Now;\r
private string selectedFile;\r
private volatile bool trackBarAtUser;\r
}\r
\r
private void PlayerForm_FormClosing(object sender, FormClosingEventArgs e) {\r
- foreach (MovieSegment segment in segments)\r
- if (segment.TCOut == null) {\r
- e.Cancel = true;\r
- return;\r
- }\r
+ //foreach (MovieSegment segment in segments)\r
+ // if (segment.TCOut == null) {\r
+ // e.Cancel = true;\r
+ // return;\r
+ // }\r
\r
if (m_play != null) {\r
m_play.Stop();\r
}\r
\r
private void OnDefineOneSegmentClick(object sender, EventArgs e) {\r
- MovieSegment segment = new MovieSegment() {\r
- TCIn = new Timecode(),\r
- TCOut = new Timecode(m_mediaDescription.FirstFrame, m_mediaDescription.Duration)\r
- };\r
- segment.TCIn.Set(m_mediaDescription.FirstFrame.Frames);\r
- segments.Add(segment);\r
- }\r
-\r
- private void OnDeleteSegmentClick(object sender, EventArgs e) {\r
- if (dgSegments.SelectedRows.Count == 0)\r
- return;\r
- DataGridViewRow selectedRow = dgSegments.SelectedRows[0];\r
- for (int i = 0; i < dgSegments.Rows.Count; i++) {\r
- DataGridViewRow actual = dgSegments.Rows[i];\r
- if (selectedRow.Equals(actual)) {\r
- segments.Remove(segments[i]);\r
+ MovieSegment segment = null;\r
+ if (segments.Count == 0) {\r
+ segment = new MovieSegment() {\r
+ TCIn = new Timecode(m_mediaDescription.FirstFrame.Frames),\r
+ TCOut = new Timecode(m_mediaDescription.FirstFrame, m_mediaDescription.Duration)\r
+ };\r
+ } else {\r
+ MovieSegment lastSegment = segments[segments.Count - 1];\r
+ Timecode tcEnd = new Timecode(m_mediaDescription.FirstFrame, m_mediaDescription.Duration);\r
+ if (lastSegment.TCOut.Frames == tcEnd.Frames) {\r
+ MessageBox.Show("Az utolsó szegmen az anyag végéig tart, így nem hozható létre új szegmens.");\r
return;\r
}\r
+ segment = new MovieSegment() {\r
+ TCIn = new Timecode(lastSegment.TCOut.Frames),\r
+ TCOut = tcEnd\r
+ };\r
}\r
+ segments.Add(segment);\r
+ }\r
\r
+ private void OnDeleteSegmentClick(object sender, EventArgs e) {\r
+ if (bsSegments.Current != null)\r
+ segments.Remove(bsSegments.Current as MovieSegment);\r
}\r
\r
- //todo stringetket resources file-ba\r
private void OnActualPositionToTCInToolStripMenuItem1Click(object sender, EventArgs e) {\r
- MovieSegment currentSegment = GetCurrentSegment();\r
- if (currentSegment != null) {\r
-\r
- if (currentSegment.TCIn != null) {\r
- DialogResult dialogResult = MessageBox.Show("Biztos felül akarja írni az belépõt?", "Belépõ felülírása", MessageBoxButtons.YesNo);\r
- if (dialogResult == DialogResult.Yes) {\r
- if (IsTCInBeforeTCOut(m_play.CurrentTC, currentSegment.TCOut)) {\r
- Timecode actual = new Timecode();\r
- actual.Set(m_play.CurrentTC.Frames);\r
- currentSegment.TCIn = actual;\r
- } else {\r
- MessageBox.Show("A kilépõ a belépõ elõtt van!", "Hiba");\r
- currentSegment.TCIn = new Timecode();\r
- }\r
- }\r
- } else {\r
- Timecode actual = new Timecode(m_play.CurrentTC);\r
- currentSegment.TCIn = actual;\r
- }\r
- } else {\r
- MovieSegment segment = new MovieSegment() {\r
- TCIn = new Timecode(m_mediaDescription.FirstFrame),\r
- //ez kell-e?\r
- //TCOut = new Timecode(m_mediaDescription.FirstFrame, m_mediaDescription.Duration)\r
- };\r
- segments.Add(segment);\r
+ MovieSegment currentSegment = bsSegments.Current as MovieSegment;\r
+ if (currentSegment == null)\r
+ return;\r
+ if (currentSegment.TCOut.Frames <= m_play.CurrentTC.Frames) {\r
+ MessageBox.Show("A belépõ nem lehet a kilépõ után.");\r
+ return;\r
}\r
- UpdateDataChanged();\r
- }\r
-\r
- private void UpdateDataChanged() {\r
- dgSegments.DataSource = null;\r
- dgSegments.DataSource = bsSegments;\r
- }\r
+ //if (MessageBox.Show("Biztos felül akarja írni az belépõt?", "Belépõ felülírása", MessageBoxButtons.YesNo) == DialogResult.No)\r
+ // return;\r
+ MovieSegment collisionSegment = segments.Where(s => s.TCIn.Frames < m_play.CurrentTC.Frames && m_play.CurrentTC.Frames < s.TCOut.Frames).SingleOrDefault();\r
\r
- private void OnActualPositionToTCOutToolStripMenuItem1Click(object sender, EventArgs e) {\r
- MovieSegment currentSegment = GetCurrentSegment();\r
- if (currentSegment != null) {\r
- if (currentSegment.TCOut != null) {\r
- DialogResult dialogResult = MessageBox.Show("Biztos felül akarja írni a kilépõt?", "Kilépõ felülírása", MessageBoxButtons.YesNo);\r
- if (dialogResult == DialogResult.Yes) {\r
- if (IsTCInBeforeTCOut(currentSegment.TCIn, m_play.CurrentTC)) {\r
- Timecode actual = new Timecode();\r
- actual.Set(m_play.CurrentTC.Frames);\r
- currentSegment.TCOut = actual;\r
- } else {\r
- MessageBox.Show("A kilépõ a belépõ elõtt van!", "Hiba");\r
- currentSegment.TCIn = new Timecode();\r
- }\r
- }\r
- } else {\r
- Timecode actual = new Timecode(m_play.CurrentTC);\r
- currentSegment.TCOut = actual;\r
- }\r
- } else {\r
- MovieSegment segment = new MovieSegment() {\r
- //ez kell-e?\r
- //TCIn = new Timecode(m_mediaDescription.FirstFrame),\r
- TCOut = new Timecode(m_mediaDescription.FirstFrame, m_mediaDescription.Duration)\r
- };\r
- segments.Add(segment);\r
+ if (collisionSegment != null && !currentSegment.Equals(collisionSegment)) {\r
+ MessageBox.Show("A szegmensek között nem lehet átfedés.");\r
+ return;\r
}\r
- UpdateDataChanged();\r
- }\r
\r
- private bool IsTCInBeforeTCOut(Timecode tcIn, Timecode tcOut) {\r
- if (tcIn == null || tcOut == null)\r
- return true;\r
- string tcInString = tcIn.ToString();\r
- string tcOutString = tcOut.ToString();\r
- string inHour = tcInString.Substring(0, 2);\r
- string outHour = tcOutString.Substring(0, 2);\r
- if (Int32.Parse(outHour) < Int32.Parse(inHour))\r
- return false;\r
- else if (Int32.Parse(outHour) > Int32.Parse(inHour))\r
- return true;\r
- string inMinute = tcInString.Substring(3, 2);\r
- string outMinute = tcOutString.Substring(3, 2);\r
- if (Int32.Parse(outMinute) < Int32.Parse(inMinute))\r
- return false;\r
- else if (Int32.Parse(outMinute) > Int32.Parse(inMinute))\r
- return true;\r
- string inSec = tcInString.Substring(6, 2);\r
- string outSec = tcOutString.Substring(6, 2);\r
- if (Int32.Parse(outSec) < Int32.Parse(inSec))\r
- return false;\r
- else if (Int32.Parse(outSec) > Int32.Parse(inSec))\r
- return true;\r
- string inFrame = tcInString.Substring(9, 2);\r
- string outFrame = tcOutString.Substring(9, 2);\r
- if (Int32.Parse(outFrame) <= Int32.Parse(inFrame))\r
- return false;\r
-\r
- return true;\r
+ currentSegment.TCIn = new Timecode(m_play.CurrentTC.Frames);\r
}\r
\r
- private MovieSegment GetCurrentSegment() {\r
- if (dgSegments.SelectedRows.Count > 0) {\r
- DataGridViewRow selectedRow = dgSegments.SelectedRows[0];\r
- for (int i = 0; i < dgSegments.Rows.Count; i++) {\r
- DataGridViewRow actual = dgSegments.Rows[i];\r
- if (selectedRow.Equals(actual)) {\r
- return segments[i];\r
- }\r
+ private void OnActualPositionToTCOutToolStripMenuItem1Click(object sender, EventArgs e) {\r
+ MovieSegment currentSegment = bsSegments.Current as MovieSegment;\r
+ if (currentSegment == null)\r
+ return;\r
+ if (currentSegment.TCIn.Frames >= m_play.CurrentTC.Frames)\r
+ MessageBox.Show("A kilépõ nem lehet a belépõ elõtt.");\r
\r
- }\r
+ MovieSegment collisionSegment = segments.Where(s => s.TCIn.Frames < m_play.CurrentTC.Frames && m_play.CurrentTC.Frames < s.TCOut.Frames).SingleOrDefault();\r
+\r
+ if (collisionSegment != null && !currentSegment.Equals(collisionSegment)) {\r
+ MessageBox.Show("A szegmensek között nem lehet átfedés.");\r
+ return;\r
}\r
- return null;\r
+\r
+ //if (MessageBox.Show("Biztos felül akarja írni az kilépõt?", "Kilépõ felülírása", MessageBoxButtons.YesNo) == DialogResult.No)\r
+ // return;\r
+ currentSegment.TCOut = new Timecode(m_play.CurrentTC.Frames);\r
}\r
\r
private void OnSplitSegmentAtCurrentPositionClick(object sender, EventArgs e) {\r
-\r
- MovieSegment segment = segments.Where(s => m_play.CurrentTC.Frames > s.TCIn.Frames && m_play.CurrentTC.Frames < s.TCOut.Frames).FirstOrDefault();\r
- if (segment == null)\r
+ MovieSegment currentSegment = segments.Where(s => s.TCIn.Frames < m_play.CurrentTC.Frames && s.TCOut.Frames > m_play.CurrentTC.Frames).SingleOrDefault();\r
+ if (currentSegment == null)\r
return;\r
- segments.Remove(segment);\r
- MovieSegment lSegment = new MovieSegment() {\r
- TCIn = segment.TCIn,\r
- TCOut = new Timecode(m_play.CurrentTC)\r
+ int position = segments.IndexOf(currentSegment);\r
+ MovieSegment newSegment = new MovieSegment() {\r
+ TCIn = new Timecode(currentSegment.TCIn.Frames),\r
+ TCOut = new Timecode(m_play.CurrentTC.Frames)\r
};\r
- lSegment.TCOut.Set(m_play.CurrentTC.ZeroBasedFrames);\r
- segments.Add(lSegment);\r
-\r
- MovieSegment hSegment = new MovieSegment() {\r
- TCIn = new Timecode(m_play.CurrentTC),\r
- TCOut = segment.TCOut\r
- };\r
- hSegment.TCIn.Set(m_play.CurrentTC.ZeroBasedFrames + 1);\r
- segments.Add(hSegment);\r
- }\r
-\r
- private void dgSegments_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) {\r
- DataGridViewColumnCollection cols = dgSegments.Columns;\r
- if (cols.Count >= 2) {\r
- cols[0].ReadOnly = true;\r
- cols[1].ReadOnly = true;\r
- }\r
+ currentSegment.TCIn = new Timecode(m_play.CurrentTC.Frames);\r
+ segments.Insert(position, newSegment);\r
}\r
\r
private void dgSegments_ColumnAdded(object sender, DataGridViewColumnEventArgs e) {\r
int index = e.Column.Index;\r
switch (index) {\r
- case 0: e.Column.HeaderText = StringResource.BELEPO; break;\r
- case 1: e.Column.HeaderText = StringResource.KILEPO; break;\r
+ case 0:\r
+ e.Column.HeaderText = StringResource.BELEPO;\r
+ e.Column.ReadOnly = true;\r
+ break;\r
+ case 1:\r
+ e.Column.HeaderText = StringResource.KILEPO;\r
+ e.Column.ReadOnly = true;\r
+ break;\r
case 2: e.Column.HeaderText = StringResource.ELHAGYHATO; break;\r
case 3: e.Column.HeaderText = StringResource.MEGJEGYZES; break;\r
}\r
}\r
+\r
+\r
+ private void dgSegments_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) {\r
+ //MovieSegment actualSegment = bsSegments.Current as MovieSegment;\r
+ //if (actualSegment == null)\r
+ // return;\r
+ //if (e.ColumnIndex == 0) {\r
+ // m_play.Pause();\r
+ // m_play.Seek(actualSegment.TCIn.ZeroBasedFrames);\r
+ //}\r
+ //if (e.ColumnIndex == 1) {\r
+ // m_play.Pause();\r
+ // m_play.Seek(actualSegment.TCOut.ZeroBasedFrames);\r
+ //}\r
+\r
+ }\r
}\r
}\r
private TreeNode selectedNode;\r
private OctopusAPI client;\r
public OnSelectedIDChanged IDChangedEvent { get; set; }\r
- private OctopusConfiguration configuration;\r
+ private OctopusConfiguration properties;\r
private bool refreshDisabled;\r
\r
- public OctopusConfiguration Configuration {\r
+ public OctopusConfiguration Properties {\r
set {\r
- configuration = value;\r
- client = new OctopusAPI(value.Address.OriginalString, value.UserName, value.Password, value.Timeout, value.MessageBus);\r
+ properties = value;\r
+ client = new OctopusAPI(value.Configuration.Server.Address.OriginalString, value.Configuration.Server.UserName, value.Configuration.Server.Password, value.Configuration.Server.Timeout, value.MessageBus);\r
rbRundown.Checked = true;\r
RefreshFolders();\r
}\r
TreeNode storyNode = treeOctopus.Nodes.Add(ID, label);\r
storyNode.Tag = story;\r
\r
- if (configuration.DisableStoryCheck)\r
+ if (properties.Configuration.DisableStoryCheck)\r
HideCheckBox(treeOctopus, storyNode);\r
else {\r
if (lookupStoryId != null && lookupStoryId.Equals(story.ID))\r
foreach (MosObject mosObject in mosObjects) {\r
TreeNode placeHolderNode = storyNode.Nodes.Add(mosObject.ObjID, String.Format($"{mosObject.ObjID}"));\r
placeHolderNode.Tag = story;\r
- if (configuration.DisablePlaceHolderCheck)\r
+ if (properties.Configuration.DisablePlaceHolderCheck)\r
HideCheckBox(treeOctopus, placeHolderNode);\r
else {\r
if (lookupPlaceHolderId != null && lookupPlaceHolderId.Equals(mosObject.ObjID)) {\r
private void OnTreeAfterCheck(object sender, TreeViewEventArgs e) {\r
//logger.Debug("Handling {0} {1} {2}", e.Node.Name, e.Node.Text, e.Node.Checked);\r
\r
- if (configuration.DisableStoryCheck && e.Node.Level == 0) {\r
+ if (properties.Configuration.DisableStoryCheck && e.Node.Level == 0) {\r
if (e.Node.Checked) {\r
e.Node.Checked = false;\r
HideCheckBox(treeOctopus, e.Node);\r
return;\r
}\r
\r
- if (configuration.DisablePlaceHolderCheck && e.Node.Level == 1) {\r
+ if (properties.Configuration.DisablePlaceHolderCheck && e.Node.Level == 1) {\r
if (e.Node.Checked) {\r
e.Node.Checked = false;\r
HideCheckBox(treeOctopus, e.Node);\r
}\r
\r
private void treeOctopus_MouseDown(object sender, MouseEventArgs e) {\r
- if (e.Button == MouseButtons.Right)\r
- treeOctopus.SelectedNode = treeOctopus.GetNodeAt(e.X, e.Y);\r
+ treeOctopus.SelectedNode = treeOctopus.GetNodeAt(e.X, e.Y);\r
+ if (e.Button != MouseButtons.Left)\r
+ return;\r
+\r
+\r
}\r
}\r
\r