From: <ju...@us...> - 2006-08-01 09:36:46
|
Revision: 717 Author: julienq Date: 2006-08-01 02:35:31 -0700 (Tue, 01 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=717&view=rev Log Message: ----------- Updated VU meter to avoid race conditions. Resume playing does not work. Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Dialogs/Play.cs trunk/urakawa/application/Obi/Obi/Events/Node/RenameNodeEventArgs.cs trunk/urakawa/application/Obi/Obi/Obi.csproj trunk/urakawa/application/Obi/Obi/Project.cs trunk/urakawa/application/Obi/Obi/UserControls/AudioBlock.Designer.cs trunk/urakawa/application/Obi/Obi/UserControls/AudioBlock.cs trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs trunk/urakawa/application/VirtualAudioBackend/VuMeterForm.cs Added Paths: ----------- trunk/urakawa/application/Obi/Obi/Events/Node/SetMediaEventArgs.cs Modified: trunk/urakawa/application/Obi/Obi/Dialogs/Play.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Dialogs/Play.cs 2006-08-01 08:49:24 UTC (rev 716) +++ trunk/urakawa/application/Obi/Obi/Dialogs/Play.cs 2006-08-01 09:35:31 UTC (rev 717) @@ -34,9 +34,23 @@ private void AudioPlayer_EndOfAudioAsset(object sender, EndOfAudioAsset e) { AudioPlayer.Instance.VuMeterObject.CloseVuMeterForm(); - this.Close(); + Close(); } + // Convoluted way to close necessary for debugging (JQ) + private delegate void CloseCallback(); + public new void Close() + { + if (InvokeRequired) + { + Invoke(new CloseCallback(Close)); + } + else + { + base.Close(); + } + } + private void AudioPlayer_EndOfAudioBuffer(object sender, EndOfAudioBuffer e) { } Modified: trunk/urakawa/application/Obi/Obi/Events/Node/RenameNodeEventArgs.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Events/Node/RenameNodeEventArgs.cs 2006-08-01 08:49:24 UTC (rev 716) +++ trunk/urakawa/application/Obi/Obi/Events/Node/RenameNodeEventArgs.cs 2006-08-01 09:35:31 UTC (rev 717) @@ -14,7 +14,7 @@ /// </summary> public class RenameNodeEventArgs : NodeEventArgs { - private string mLabel; // the new text label of the node + private string mLabel; // the new text label of the node public string Label { Added: trunk/urakawa/application/Obi/Obi/Events/Node/SetMediaEventArgs.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Events/Node/SetMediaEventArgs.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/Events/Node/SetMediaEventArgs.cs 2006-08-01 09:35:31 UTC (rev 717) @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using urakawa.core; +using urakawa.media; + +namespace Obi.Events.Node +{ + public delegate void SetMediaHandler(object sender, SetMediaEventArgs e); + + public class SetMediaEventArgs: NodeEventArgs + { + private string mChannel; // the channel on which to set + private IMedia mMedia; // the media object + + public string Channel + { + get + { + return mChannel; + } + } + + public IMedia Media + { + get + { + return mMedia; + } + } + + public SetMediaEventArgs(object origin, CoreNode node, string channel, IMedia media): + base(origin, node) + { + mChannel = channel; + mMedia = media; + } + } +} Modified: trunk/urakawa/application/Obi/Obi/Obi.csproj =================================================================== --- trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-01 08:49:24 UTC (rev 716) +++ trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-01 09:35:31 UTC (rev 717) @@ -109,6 +109,7 @@ <Compile Include="Events\Node\NodeEventArgs.cs" /> <Compile Include="Events\Node\RenameNodeEventArgs.cs" /> <Compile Include="Events\Node\MovedNodeEventArgs.cs" /> + <Compile Include="Events\Node\SetMediaEventArgs.cs" /> <Compile Include="Events\Project\CommandCreatedEventArgs.cs" /> <Compile Include="Events\Project\StateChangedEventArgs.cs" /> <Compile Include="Events\Strip\ImportAssetEventArgs.cs" /> Modified: trunk/urakawa/application/Obi/Obi/Project.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.cs 2006-08-01 08:49:24 UTC (rev 716) +++ trunk/urakawa/application/Obi/Obi/Project.cs 2006-08-01 09:35:31 UTC (rev 717) @@ -807,6 +807,26 @@ RenameNode(sender, e.Node, e.Label); } + private void SetMedia(object origin, CoreNode node, string channel, IMedia media) + { + ChannelsProperty channelsProp = (ChannelsProperty)node.getProperty(typeof(ChannelsProperty)); + IList channelsList = channelsProp.getListOfUsedChannels(); + for (int i = 0; i < channelsList.Count; i++) + { + string channelName = ((IChannel)channelsList[i]).getName(); + if (channelName == channel) + { + channelsProp.setMedia((Channel)channelsList[i], media); + } + } + throw new Exception("argl!"); + } + + public void SetMediaRequested(object sender, Events.Node.SetMediaEventArgs e) + { + SetMedia(sender, e.Node, e.Channel, e.Media); + } + /// <summary> /// Create a new phrase node and add it to the section node. /// (Well it's not added yet because otherwise it would create all sorts of problems.) Modified: trunk/urakawa/application/Obi/Obi/UserControls/AudioBlock.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/AudioBlock.Designer.cs 2006-08-01 08:49:24 UTC (rev 716) +++ trunk/urakawa/application/Obi/Obi/UserControls/AudioBlock.Designer.cs 2006-08-01 09:35:31 UTC (rev 717) @@ -30,6 +30,7 @@ { this.mAnnotationLabel = new System.Windows.Forms.Label(); this.mTimeLabel = new System.Windows.Forms.Label(); + this.mRenameBox = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // // mAnnotationLabel @@ -52,12 +53,24 @@ this.mTimeLabel.TabIndex = 1; this.mTimeLabel.Text = "(time)"; // + // mRenameBox + // + this.mRenameBox.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.mRenameBox.Location = new System.Drawing.Point(5, 3); + this.mRenameBox.Name = "mRenameBox"; + this.mRenameBox.Size = new System.Drawing.Size(100, 12); + this.mRenameBox.TabIndex = 2; + this.mRenameBox.Visible = false; + this.mRenameBox.Leave += new System.EventHandler(this.mRenameBox_Leave); + this.mRenameBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.mRenameBox_KeyDown); + // // AudioBlock // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoSize = true; this.BackColor = System.Drawing.Color.MistyRose; + this.Controls.Add(this.mRenameBox); this.Controls.Add(this.mTimeLabel); this.Controls.Add(this.mAnnotationLabel); this.Margin = new System.Windows.Forms.Padding(0, 0, 1, 0); @@ -72,5 +85,6 @@ private System.Windows.Forms.Label mAnnotationLabel; private System.Windows.Forms.Label mTimeLabel; + private System.Windows.Forms.TextBox mRenameBox; } } Modified: trunk/urakawa/application/Obi/Obi/UserControls/AudioBlock.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/AudioBlock.cs 2006-08-01 08:49:24 UTC (rev 716) +++ trunk/urakawa/application/Obi/Obi/UserControls/AudioBlock.cs 2006-08-01 09:35:31 UTC (rev 717) @@ -8,6 +8,7 @@ using VirtualAudioBackend; using urakawa.core; +using urakawa.media; namespace Obi.UserControls { @@ -36,8 +37,12 @@ } } - public string Annotation + public string Label { + get + { + return mAnnotationLabel.Text; + } set { mAnnotationLabel.Text = value; @@ -71,5 +76,61 @@ { mManager.SelectedPhrase = mNode; } + + internal void StartRenaming() + { + mRenameBox.BackColor = BackColor; + mRenameBox.Text = ""; + mRenameBox.SelectedText = ((TextMedia)Project.GetMediaForChannel(mNode, Project.AnnotationChannel)).getText(); + mRenameBox.Visible = true; + mRenameBox.Focus(); + } + + /// <summary> + /// Leaving the text box updates the text property. + /// </summary> + private void mRenameBox_Leave(object sender, EventArgs e) + { + mRenameBox.Visible = false; + } + + /// <summary> + /// Typing return updates the text property; escape cancels the edit. + /// </summary> + private void mRenameBox_KeyDown(object sender, KeyEventArgs e) + { + switch (e.KeyCode) + { + case Keys.Return: + UpdateText(); + break; + case Keys.Escape: + mRenameBox.Visible = false; + break; + default: + break; + } + } + + /// <summary> + /// Upate the text label from the text box input. + /// If the input is empty, then do not change the text and warn the user. + /// The manager is then asked to send a rename event. + /// </summary> + private void UpdateText() + { + mRenameBox.Visible = false; + if (mRenameBox.Text != "") + { + mAnnotationLabel.Text = mRenameBox.Text; + mManager.RenamedAudioBlock(this); + } + else + { + MessageBox.Show(Localizer.Message("empty_label_warning_text"), + Localizer.Message("empty_label_warning_caption"), + MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + } } } Modified: trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs 2006-08-01 08:49:24 UTC (rev 716) +++ trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs 2006-08-01 09:35:31 UTC (rev 717) @@ -63,6 +63,8 @@ mStripManagerPanel.ImportPhrase -= new Events.Strip.RequestToImportAssetHandler(mProject.ImportPhraseRequested); mProject.ImportedAsset -= new Events.Node.ImportedAssetHandler(mStripManagerPanel.SyncImportedAsset); + mStripManagerPanel.SetMedia -= new Events.Node.SetMediaHandler(mProject.SetMediaRequested); + //marisa: TESTING only mTOCPanel.RequestToUndoMoveNode -= new Events.Node.RequestToUndoMoveNodeHandler(mProject.TestUndoMoveNode); } @@ -103,6 +105,8 @@ mStripManagerPanel.ImportPhrase += new Events.Strip.RequestToImportAssetHandler(value.ImportPhraseRequested); value.ImportedAsset += new Events.Node.ImportedAssetHandler(mStripManagerPanel.SyncImportedAsset); + mStripManagerPanel.SetMedia += new Events.Node.SetMediaHandler(value.SetMediaRequested); + //marisa: TESTING only mTOCPanel.RequestToUndoMoveNode += new Events.Node.RequestToUndoMoveNodeHandler(value.TestUndoMoveNode); } Modified: trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs 2006-08-01 08:49:24 UTC (rev 716) +++ trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs 2006-08-01 09:35:31 UTC (rev 717) @@ -24,6 +24,7 @@ public event Events.Node.RequestToAddSiblingNodeHandler AddSiblingSection; public event Events.Node.RequestToRenameNodeHandler RenameSection; + public event Events.Node.SetMediaHandler SetMedia; public event Events.Strip.RequestToImportAssetHandler ImportPhrase; public event Events.Strip.SelectedHandler SelectedStrip; @@ -135,7 +136,7 @@ block.Node = (CoreNode)node; mPhraseNodeMap[(CoreNode)node] = block; TextMedia annotation = (TextMedia)Project.GetMediaForChannel((CoreNode)node, Project.AnnotationChannel); - block.Annotation = annotation.getText(); + block.Label = annotation.getText(); block.Time = (Project.GetAudioMediaAsset((CoreNode)node).LengthInMilliseconds / 1000).ToString() + "s"; strip.AppendAudioBlock(block); SelectedPhrase = block.Node; @@ -198,7 +199,7 @@ block.Node = e.Node; mPhraseNodeMap[e.Node] = block; TextMedia annotation = (TextMedia)Project.GetMediaForChannel(e.Node, Project.AnnotationChannel); - block.Annotation = annotation.getText(); + block.Label = annotation.getText(); block.Time = (Project.GetAudioMediaAsset(e.Node).LengthInMilliseconds / 1000).ToString() + "s"; strip.AppendAudioBlock(block); } @@ -259,6 +260,7 @@ { if (mSelectedPhrase != null) { + mPhraseNodeMap[mSelectedPhrase].StartRenaming(); } } @@ -275,6 +277,13 @@ RenameSection(this, new Events.Node.RenameNodeEventArgs(this, strip.Node, strip.Label)); } + internal void RenamedAudioBlock(AudioBlock block) + { + TextMedia media = (TextMedia)block.Node.getPresentation().getMediaFactory().createMedia(MediaType.TEXT); + media.setText(block.Label); + SetMedia(this, new Events.Node.SetMediaEventArgs(this, block.Node, Project.AnnotationChannel, media)); + } + private void mFlowLayoutPanel_Click(object sender, EventArgs e) { SelectedSection = null; Modified: trunk/urakawa/application/VirtualAudioBackend/VuMeterForm.cs =================================================================== --- trunk/urakawa/application/VirtualAudioBackend/VuMeterForm.cs 2006-08-01 08:49:24 UTC (rev 716) +++ trunk/urakawa/application/VirtualAudioBackend/VuMeterForm.cs 2006-08-01 09:35:31 UTC (rev 717) @@ -352,6 +352,25 @@ } + /// <summary> + /// Thread-safe way to set the text on a control. + /// </summary> + /// <remarks>Added by JQ</remarks> + /// <param name="BeepEnabled"></param> + private void SetTextBoxText(TextBox box, string text) + { + if (InvokeRequired) + { + Invoke(new SetTextBoxTextCallback(SetTextBoxText), new object[] { box, text }); + } + else + { + box.Text = text; + } + } + + private delegate void SetTextBoxTextCallback(TextBox box, string text); + bool BeepEnabled = false ; // catch the peak overload event triggered by VuMeter public void CatchPeakOverloadEvent ( object sender , PeakOverload ob_PeakOverload ) @@ -359,13 +378,15 @@ VuMeter ob_VuMeter = sender as VuMeter ; if (ob_PeakOverload .Channel == 1) { - txtOverloadLeft.Text = ob_VuMeter.m_MeanValueLeft.ToString () ; + //txtOverloadLeft.Text = ob_VuMeter.m_MeanValueLeft.ToString () ; + SetTextBoxText(txtOverloadLeft, ob_VuMeter.m_MeanValueLeft.ToString()); // JQ -- avoid race condition } if (ob_PeakOverload .Channel== 2) { - txtOverloadRight.Text = ob_VuMeter.m_MeanValueRight.ToString () ; + //txtOverloadRight.Text = ob_VuMeter.m_MeanValueRight.ToString () ; + SetTextBoxText(txtOverloadRight, ob_VuMeter.m_MeanValueRight.ToString()); } BeepEnabled =true ; @@ -429,6 +450,20 @@ txtOverloadRight.Text = " " ; } + private delegate void CloseCallback(); + + public new void Close() + { + if (InvokeRequired) + { + Invoke(new CloseCallback(Close)); + } + else + { + base.Close(); + } + } + // end of class } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2006-08-01 11:19:56
|
Revision: 723 Author: markusgy Date: 2006-08-01 04:19:45 -0700 (Tue, 01 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=723&view=rev Log Message: ----------- First commit. This contains static helper methods, right now only ValidateAndCreateDir. Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Obi.csproj Added Paths: ----------- trunk/urakawa/application/Obi/Obi/IOUtils.cs Added: trunk/urakawa/application/Obi/Obi/IOUtils.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/IOUtils.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/IOUtils.cs 2006-08-01 11:19:45 UTC (rev 723) @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.IO; +using System.Windows.Forms; + +namespace Obi +{ + class IOUtils + { + + /// <summary> + /// Check if a string representation of a directory + /// exists as a directory on the filesystem, + /// if not, try to create it, asking the user first. + /// </summary> + /// <param name="dirPath">String representation of the directory to be checked/created</param> + /// <returns>True if the directory exists or was successfully created, false otherwise.</returns> + + public static bool ValidateAndCreateDir(string dirPath) { + if (File.Exists(dirPath)) + { + return false; + } + + if (!Directory.Exists(dirPath)) + { + DialogResult result = MessageBox.Show( + String.Format(Localizer.Message("create_directory_query"), dirPath), + String.Format(Localizer.Message("create_directory_caption")), + MessageBoxButtons.YesNo, MessageBoxIcon.Question); + + if (result == DialogResult.Yes) + { + try + { + Directory.CreateDirectory(dirPath); + return true; + } + catch (Exception x) + { + MessageBox.Show(String.Format(Localizer.Message("create_directory_failure"), dirPath, x.Message), + String.Format(Localizer.Message("error")), + MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + } //if (result == DialogResult.Yes) + return false; + } //if (!Directory.Exists(dirPath)) + return true; + } //private void CheckAndCreateDir + } +} Modified: trunk/urakawa/application/Obi/Obi/Obi.csproj =================================================================== --- trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-01 11:07:42 UTC (rev 722) +++ trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-01 11:19:45 UTC (rev 723) @@ -115,6 +115,7 @@ <Compile Include="Events\Strip\ImportAssetEventArgs.cs" /> <Compile Include="Events\Strip\SelectedEventArgs.cs" /> <Compile Include="Events\Node\AddedSectionNodeEventArgs.cs" /> + <Compile Include="IOUtils.cs" /> <Compile Include="Localizer.cs" /> <Compile Include="messages.Designer.cs"> <AutoGen>True</AutoGen> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2006-08-02 05:12:20
|
Revision: 737 Author: julienq Date: 2006-08-01 22:12:04 -0700 (Tue, 01 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=737&view=rev Log Message: ----------- Disabled missing Command (Commands/TOC/IncreaseSectionLevel.cs) Updated Play dialog. Need to remove references to "assets" in the menu (replace with audio blocks) Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Dialogs/Play.Designer.cs trunk/urakawa/application/Obi/Obi/Dialogs/Play.cs trunk/urakawa/application/Obi/Obi/Obi.csproj trunk/urakawa/application/Obi/Obi/Project.cs trunk/urakawa/application/Obi/Obi/messages.Designer.cs trunk/urakawa/application/Obi/Obi/messages.resx Modified: trunk/urakawa/application/Obi/Obi/Dialogs/Play.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Dialogs/Play.Designer.cs 2006-08-01 21:39:10 UTC (rev 736) +++ trunk/urakawa/application/Obi/Obi/Dialogs/Play.Designer.cs 2006-08-02 05:12:04 UTC (rev 737) @@ -29,65 +29,90 @@ private void InitializeComponent() { this.components = new System.ComponentModel.Container(); - this.txtDisplayAsset = new System.Windows.Forms.TextBox(); - this.txtDisplayTime = new System.Windows.Forms.TextBox(); - this.btnPlay = new System.Windows.Forms.Button(); - this.btnStop = new System.Windows.Forms.Button(); + this.mNameDisplay = new System.Windows.Forms.TextBox(); + this.mTimeDisplay = new System.Windows.Forms.TextBox(); + this.mPlayButton = new System.Windows.Forms.Button(); + this.mStopButton = new System.Windows.Forms.Button(); this.tmUpdateCurrentTime = new System.Windows.Forms.Timer(this.components); + this.label1 = new System.Windows.Forms.Label(); this.SuspendLayout(); // - // txtDisplayAsset + // mNameDisplay // - this.txtDisplayAsset.Location = new System.Drawing.Point(20, 18); - this.txtDisplayAsset.Name = "txtDisplayAsset"; - this.txtDisplayAsset.ReadOnly = true; - this.txtDisplayAsset.Size = new System.Drawing.Size(228, 19); - this.txtDisplayAsset.TabIndex = 0; + this.mNameDisplay.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.mNameDisplay.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.mNameDisplay.Location = new System.Drawing.Point(12, 24); + this.mNameDisplay.Name = "mNameDisplay"; + this.mNameDisplay.ReadOnly = true; + this.mNameDisplay.Size = new System.Drawing.Size(268, 19); + this.mNameDisplay.TabIndex = 0; + this.mNameDisplay.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; // - // txtDisplayTime + // mTimeDisplay // - this.txtDisplayTime.Location = new System.Drawing.Point(20, 102); - this.txtDisplayTime.Name = "txtDisplayTime"; - this.txtDisplayTime.ReadOnly = true; - this.txtDisplayTime.Size = new System.Drawing.Size(100, 19); - this.txtDisplayTime.TabIndex = 4; + this.mTimeDisplay.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.mTimeDisplay.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.mTimeDisplay.Location = new System.Drawing.Point(96, 49); + this.mTimeDisplay.Name = "mTimeDisplay"; + this.mTimeDisplay.ReadOnly = true; + this.mTimeDisplay.Size = new System.Drawing.Size(100, 19); + this.mTimeDisplay.TabIndex = 4; + this.mTimeDisplay.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; // - // btnPlay + // mPlayButton // - this.btnPlay.Location = new System.Drawing.Point(20, 46); - this.btnPlay.Name = "btnPlay"; - this.btnPlay.Size = new System.Drawing.Size(75, 21); - this.btnPlay.TabIndex = 2; - this.btnPlay.Text = "&Play"; - this.btnPlay.UseVisualStyleBackColor = true; - this.btnPlay.Click += new System.EventHandler(this.btnPlay_Click); + this.mPlayButton.Anchor = System.Windows.Forms.AnchorStyles.None; + this.mPlayButton.Location = new System.Drawing.Point(68, 101); + this.mPlayButton.Name = "mPlayButton"; + this.mPlayButton.Size = new System.Drawing.Size(75, 21); + this.mPlayButton.TabIndex = 2; + this.mPlayButton.Text = "&Play"; + this.mPlayButton.UseVisualStyleBackColor = true; + this.mPlayButton.Click += new System.EventHandler(this.mPlayButton_Click); // - // btnStop + // mStopButton // - this.btnStop.Location = new System.Drawing.Point(20, 74); - this.btnStop.Name = "btnStop"; - this.btnStop.Size = new System.Drawing.Size(75, 21); - this.btnStop.TabIndex = 3; - this.btnStop.Text = "&Stop"; - this.btnStop.UseVisualStyleBackColor = true; - this.btnStop.Click += new System.EventHandler(this.btnStop_Click); + this.mStopButton.Anchor = System.Windows.Forms.AnchorStyles.None; + this.mStopButton.DialogResult = System.Windows.Forms.DialogResult.OK; + this.mStopButton.Location = new System.Drawing.Point(149, 101); + this.mStopButton.Name = "mStopButton"; + this.mStopButton.Size = new System.Drawing.Size(75, 21); + this.mStopButton.TabIndex = 3; + this.mStopButton.Text = "&Stop"; + this.mStopButton.UseVisualStyleBackColor = true; + this.mStopButton.Click += new System.EventHandler(this.mStopButton_Click); // // tmUpdateCurrentTime // this.tmUpdateCurrentTime.Interval = 1000; this.tmUpdateCurrentTime.Tick += new System.EventHandler(this.tmUpdateCurrentTime_Tick); // + // label1 + // + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(99, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(94, 12); + this.label1.TabIndex = 5; + this.label1.Text = "Currently playing:"; + // // Play // + this.AcceptButton = this.mStopButton; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(292, 246); - this.Controls.Add(this.btnStop); - this.Controls.Add(this.btnPlay); - this.Controls.Add(this.txtDisplayTime); - this.Controls.Add(this.txtDisplayAsset); + this.ClientSize = new System.Drawing.Size(292, 134); + this.Controls.Add(this.label1); + this.Controls.Add(this.mStopButton); + this.Controls.Add(this.mPlayButton); + this.Controls.Add(this.mTimeDisplay); + this.Controls.Add(this.mNameDisplay); this.Name = "Play"; - this.Text = "Play"; + this.Text = "Play audio block"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Play_FormClosing); this.Load += new System.EventHandler(this.Play_Load); this.ResumeLayout(false); @@ -97,10 +122,11 @@ #endregion - private System.Windows.Forms.TextBox txtDisplayAsset; - private System.Windows.Forms.TextBox txtDisplayTime; - private System.Windows.Forms.Button btnPlay; - private System.Windows.Forms.Button btnStop; + private System.Windows.Forms.TextBox mNameDisplay; + private System.Windows.Forms.TextBox mTimeDisplay; + private System.Windows.Forms.Button mPlayButton; + private System.Windows.Forms.Button mStopButton; private System.Windows.Forms.Timer tmUpdateCurrentTime; + private System.Windows.Forms.Label label1; } } \ No newline at end of file Modified: trunk/urakawa/application/Obi/Obi/Dialogs/Play.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Dialogs/Play.cs 2006-08-01 21:39:10 UTC (rev 736) +++ trunk/urakawa/application/Obi/Obi/Dialogs/Play.cs 2006-08-02 05:12:04 UTC (rev 737) @@ -59,31 +59,25 @@ { } - private void btnStop_Click(object sender, EventArgs e) + private void mStopButton_Click(object sender, EventArgs e) { - AudioPlayer.Instance.Stop(); AudioPlayer.Instance.VuMeterObject.CloseVuMeterForm(); this.Close(); } - //ob_play. - //AudioPlayer ob_play = AudioPlayer.Instance; - - private void btnPlay_Click(object sender, EventArgs e) + private void mPlayButton_Click(object sender, EventArgs e) { - - if (AudioPlayer.Instance.State.Equals(AudioPlayerState.Playing)) { AudioPlayer.Instance.Pause(); - btnPlay.Text = "&Play"; + mPlayButton.Text = Localizer.Message("play"); tmUpdateCurrentTime.Enabled = false; } else if (AudioPlayer.Instance.State.Equals(AudioPlayerState.Paused)) { AudioPlayer.Instance.Resume(); - btnPlay.Text = "&Pause"; + mPlayButton.Text = Localizer.Message("pause"); tmUpdateCurrentTime.Enabled = true; } @@ -117,20 +111,14 @@ //string sDisplayTime = Hours.ToString () +":" + Minutes.ToString () + ":" + Seconds.ToString() ; string sDisplayTime = sHours + ":" + sMinutes + ":" + sSeconds; - txtDisplayTime.Text = sDisplayTime; + mTimeDisplay.Text = sDisplayTime; } private void Play_Load(object sender, EventArgs e) { - - txtDisplayAsset.Text = ((TextMedia)Project.GetMediaForChannel(mNode, Project.AnnotationChannel)).getText(); - + mNameDisplay.Text = ((TextMedia)Project.GetMediaForChannel(mNode, Project.AnnotationChannel)).getText(); if (AudioPlayer.Instance.State.Equals(AudioPlayerState.Stopped)) - { - - - VuMeter ob_VuMeter = new VuMeter(); ob_VuMeter.ScaleFactor = 2; ob_VuMeter.LowerThreshold = 70; @@ -138,15 +126,10 @@ ob_VuMeter.SampleTimeLength = 1000; ob_VuMeter.ShowForm(); AudioPlayer.Instance.VuMeterObject = ob_VuMeter; -// AudioPlayer.Instance.GetOutputDevices(); - - - //AudioPlayer.Instance.SetDevice(this, 0); AudioPlayer.Instance.Play(Project.GetAudioMediaAsset(mNode)); - btnPlay.Text = "&Pause"; + mPlayButton.Text = Localizer.Message("pause"); tmUpdateCurrentTime.Enabled = true; } - } private void Play_FormClosing(object sender, FormClosingEventArgs e) Modified: trunk/urakawa/application/Obi/Obi/Obi.csproj =================================================================== --- trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-01 21:39:10 UTC (rev 736) +++ trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-02 05:12:04 UTC (rev 737) @@ -72,7 +72,6 @@ <Compile Include="Commands\CommandManager.cs" /> <Compile Include="Commands\TOC\AddSection.cs" /> <Compile Include="Commands\TOC\DeleteSection.cs" /> - <Compile Include="Commands\TOC\IncreaseSectionLevel.cs" /> <Compile Include="Commands\TOC\MoveSectionDown.cs" /> <Compile Include="Commands\TOC\MoveSectionUp.cs" /> <Compile Include="Commands\TOC\Rename.cs" /> Modified: trunk/urakawa/application/Obi/Obi/Project.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.cs 2006-08-01 21:39:10 UTC (rev 736) +++ trunk/urakawa/application/Obi/Obi/Project.cs 2006-08-02 05:12:04 UTC (rev 737) @@ -694,7 +694,7 @@ public void IncreaseNodeLevel(object origin, CoreNode node) { - Commands.TOC.IncreaseSectionLevel command = null; + //Commands.TOC.IncreaseSectionLevel command = null; // the command file is missing :( JQ if (origin != this) { @@ -702,8 +702,8 @@ NodePositionVisitor visitor = new NodePositionVisitor(node); getPresentation().getRootNode().acceptDepthFirst(visitor); //we need to save the state of the node before it is altered - command = new Commands.TOC.IncreaseSectionLevel - (this, node, parent, parent.indexOf(node), visitor.Position); + //command = new Commands.TOC.IncreaseSectionLevel + // (this, node, parent, parent.indexOf(node), visitor.Position); // Same problem JQ } //a facade API function could do this for us @@ -721,7 +721,7 @@ mUnsaved = true; StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); - if (command != null) CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); + // if (command != null) CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); // JQ } } Modified: trunk/urakawa/application/Obi/Obi/messages.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/messages.Designer.cs 2006-08-01 21:39:10 UTC (rev 736) +++ trunk/urakawa/application/Obi/Obi/messages.Designer.cs 2006-08-02 05:12:04 UTC (rev 737) @@ -345,6 +345,24 @@ } /// <summary> + /// Looks up a localized string similar to &Pause. + /// </summary> + internal static string pause { + get { + return ResourceManager.GetString("pause", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to &Play. + /// </summary> + internal static string play { + get { + return ResourceManager.GetString("play", resourceCulture); + } + } + + /// <summary> /// Looks up a localized string similar to Ready.. /// </summary> internal static string ready { Modified: trunk/urakawa/application/Obi/Obi/messages.resx =================================================================== --- trunk/urakawa/application/Obi/Obi/messages.resx 2006-08-01 21:39:10 UTC (rev 736) +++ trunk/urakawa/application/Obi/Obi/messages.resx 2006-08-02 05:12:04 UTC (rev 737) @@ -258,4 +258,12 @@ <value>Could not find channel named "{0}".</value> <comment>Channel not found exception (JQ)</comment> </data> + <data name="pause" xml:space="preserve"> + <value>&Pause</value> + <comment>Pause button label (JQ)</comment> + </data> + <data name="play" xml:space="preserve"> + <value>&Play</value> + <comment>Play button label (JQ)</comment> + </data> </root> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <su...@us...> - 2006-08-02 05:32:31
|
Revision: 738 Author: summy Date: 2006-08-01 22:32:17 -0700 (Tue, 01 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=738&view=rev Log Message: ----------- Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Dialogs/Preferences.cs trunk/urakawa/application/Obi/Obi/Settings.cs Modified: trunk/urakawa/application/Obi/Obi/Dialogs/Preferences.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Dialogs/Preferences.cs 2006-08-02 05:12:04 UTC (rev 737) +++ trunk/urakawa/application/Obi/Obi/Dialogs/Preferences.cs 2006-08-02 05:32:17 UTC (rev 738) @@ -91,6 +91,12 @@ mTemplateBox.Text = mIdTemplate; mDefaultDir = settings.DefaultPath; mDirectoryBox.Text = mDefaultDir; + mInputDevice = settings.LastInputDevice; + mOutputDevice = settings.LastOutputDevice; + mSampleRate = settings.SampleRate; + mSampleRate = settings.SampleRate; + mAudioChannels = settings.AudioChannels; + mBitDepth = settings.BitDepth; } private void button1_Click(object sender, EventArgs e) @@ -132,17 +138,24 @@ m_InDevicesList = ob_AudioRecorder.GetInputDevices(); m_OutDevicesList = ob_AudioPlayer.GetOutputDevices(); comboInputDevice.DataSource = m_InDevicesList; + comboInputDevice.SelectedIndex = m_InDevicesList.IndexOf(mInputDevice); comboOutputDevice.DataSource = m_OutDevicesList; + comboOutputDevice.SelectedIndex = m_OutDevicesList.IndexOf(mOutputDevice); ArrayList mSample = new ArrayList(); - mSample.Add("44100"); mSample.Add("11025"); mSample.Add("22050"); + mSample.Add("44100"); mSample.Add("48000"); comboSampleRate.DataSource= mSample; + comboSampleRate.SelectedIndex = mSample.IndexOf(mSampleRate.ToString()); ArrayList mArrayChannels = new ArrayList(); mArrayChannels.Add("Mono"); mArrayChannels.Add("Stereo"); comboChannels.DataSource = mArrayChannels; + if (mAudioChannels == 1) + comboChannels.SelectedIndex = mArrayChannels.IndexOf("Mono"); + else + comboChannels.SelectedIndex = mArrayChannels.IndexOf("Stereo"); } Modified: trunk/urakawa/application/Obi/Obi/Settings.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Settings.cs 2006-08-02 05:12:04 UTC (rev 737) +++ trunk/urakawa/application/Obi/Obi/Settings.cs 2006-08-02 05:32:17 UTC (rev 738) @@ -59,7 +59,7 @@ if (settings.LastOutputDevice == null) settings.LastOutputDevice = ""; if (settings.LastInputDevice == null) settings.LastInputDevice = ""; if (settings.AudioChannels == 0) settings.AudioChannels = 1; - if (settings.SampleRate == 0) settings.SampleRate = 44000; + if (settings.SampleRate == 0) settings.SampleRate = 44100; if (settings.BitDepth == 0) settings.BitDepth = 16; return settings; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2006-08-02 07:14:14
|
Revision: 743 Author: julienq Date: 2006-08-02 00:13:50 -0700 (Wed, 02 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=743&view=rev Log Message: ----------- Added menu for splitting blocks. Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Dialogs/Split.cs trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs trunk/urakawa/application/Obi/Obi/ObiForm.cs trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs Modified: trunk/urakawa/application/Obi/Obi/Dialogs/Split.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Dialogs/Split.cs 2006-08-02 06:48:37 UTC (rev 742) +++ trunk/urakawa/application/Obi/Obi/Dialogs/Split.cs 2006-08-02 07:13:50 UTC (rev 743) @@ -6,6 +6,7 @@ using System.Text; using System.Windows.Forms; +using urakawa.core; using VirtualAudioBackend; using VirtualAudioBackend.events.AudioPlayerEvents; @@ -13,20 +14,27 @@ { public partial class Split : Form { - public Split() + private CoreNode mNode; // the node to split + + public double SplitTime { + get + { + return m_dSplitTime; + } + } + + public Split(CoreNode node, double splitTime) + { InitializeComponent(); + mNode = node; + m_dSplitTime = splitTime; + ob_AudioAsset = Project.GetAudioMediaAsset(node); AudioPlayer.Instance.StateChanged += new StateChangedHandler(AudioPlayer_StateChanged); AudioPlayer.Instance.EndOfAudioAsset += new EndOfAudioAssetHandler(AudioPlayer_EndOfAudioAsset); AudioPlayer.Instance.EndOfAudioBuffer += new EndOfAudioBufferHandler(AudioPlayer_EndOfAudioBuffer); AudioPlayer.Instance.UpdateVuMeter += new UpdateVuMeterHandler(AudioPlayer_UpdateVuMeter); tmUpdateTimePosition.Enabled = true; - - - AudioClip ob_Clip = new AudioClip("c:\\atest\\a\\a1.wav"); - ArrayList al = new ArrayList(); - al.Add(ob_Clip); - ob_AudioAsset = new AudioMediaAsset (al) ; } AudioMediaAsset ob_AudioAsset; Modified: trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs 2006-08-02 06:48:37 UTC (rev 742) +++ trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs 2006-08-02 07:13:50 UTC (rev 743) @@ -53,9 +53,14 @@ this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.mAddSectionAtSameLevelToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mAddsubsectionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); this.mRenameSectionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mDeleteSectionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); this.mMoveSectionUpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.moveSectionDownToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.increaseSectionDepthToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.decreaseSectionLevelToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mStripsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mAddStripToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.renameStripToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -69,11 +74,7 @@ this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); this.mProjectPanel = new Obi.UserControls.ProjectPanel(); - this.moveSectionDownToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); - this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); - this.increaseSectionDepthToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.decreaseSectionLevelToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.splitFirstAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.menuStrip1.SuspendLayout(); this.statusStrip1.SuspendLayout(); this.SuspendLayout(); @@ -106,20 +107,20 @@ this.toolStripSeparator3, this.exitToolStripMenuItem}); this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - this.fileToolStripMenuItem.Size = new System.Drawing.Size(35, 20); + this.fileToolStripMenuItem.Size = new System.Drawing.Size(36, 20); this.fileToolStripMenuItem.Text = "&File"; // // mNewProjectToolStripMenuItem // this.mNewProjectToolStripMenuItem.Name = "mNewProjectToolStripMenuItem"; - this.mNewProjectToolStripMenuItem.Size = new System.Drawing.Size(173, 22); + this.mNewProjectToolStripMenuItem.Size = new System.Drawing.Size(171, 22); this.mNewProjectToolStripMenuItem.Text = "&New project"; this.mNewProjectToolStripMenuItem.Click += new System.EventHandler(this.mNewProjectToolStripMenuItem_Click); // // mOpenProjectToolStripMenuItem // this.mOpenProjectToolStripMenuItem.Name = "mOpenProjectToolStripMenuItem"; - this.mOpenProjectToolStripMenuItem.Size = new System.Drawing.Size(173, 22); + this.mOpenProjectToolStripMenuItem.Size = new System.Drawing.Size(171, 22); this.mOpenProjectToolStripMenuItem.Text = "&Open project"; this.mOpenProjectToolStripMenuItem.Click += new System.EventHandler(this.mOpenProjectToolStripMenuItem_Click); // @@ -129,64 +130,64 @@ this.openrecentSeparator, this.mClearListToolStripMenuItem}); this.mOpenRecentProjectToolStripMenuItem.Name = "mOpenRecentProjectToolStripMenuItem"; - this.mOpenRecentProjectToolStripMenuItem.Size = new System.Drawing.Size(173, 22); + this.mOpenRecentProjectToolStripMenuItem.Size = new System.Drawing.Size(171, 22); this.mOpenRecentProjectToolStripMenuItem.Text = "Open &recent project"; // // openrecentSeparator // this.openrecentSeparator.Name = "openrecentSeparator"; - this.openrecentSeparator.Size = new System.Drawing.Size(112, 6); + this.openrecentSeparator.Size = new System.Drawing.Size(114, 6); // // mClearListToolStripMenuItem // this.mClearListToolStripMenuItem.Name = "mClearListToolStripMenuItem"; - this.mClearListToolStripMenuItem.Size = new System.Drawing.Size(115, 22); + this.mClearListToolStripMenuItem.Size = new System.Drawing.Size(117, 22); this.mClearListToolStripMenuItem.Text = "&Clear list"; this.mClearListToolStripMenuItem.Click += new System.EventHandler(this.mClearListToolStripMenuItem_Click); // // toolStripSeparator2 // this.toolStripSeparator2.Name = "toolStripSeparator2"; - this.toolStripSeparator2.Size = new System.Drawing.Size(170, 6); + this.toolStripSeparator2.Size = new System.Drawing.Size(168, 6); // // mSaveProjectToolStripMenuItem // this.mSaveProjectToolStripMenuItem.Name = "mSaveProjectToolStripMenuItem"; this.mSaveProjectToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S))); - this.mSaveProjectToolStripMenuItem.Size = new System.Drawing.Size(173, 22); + this.mSaveProjectToolStripMenuItem.Size = new System.Drawing.Size(171, 22); this.mSaveProjectToolStripMenuItem.Text = "&Save project"; this.mSaveProjectToolStripMenuItem.Click += new System.EventHandler(this.mSaveProjectToolStripMenuItem_Click); // // mSaveProjectasToolStripMenuItem // this.mSaveProjectasToolStripMenuItem.Name = "mSaveProjectasToolStripMenuItem"; - this.mSaveProjectasToolStripMenuItem.Size = new System.Drawing.Size(173, 22); + this.mSaveProjectasToolStripMenuItem.Size = new System.Drawing.Size(171, 22); this.mSaveProjectasToolStripMenuItem.Text = "Save project &as"; this.mSaveProjectasToolStripMenuItem.Click += new System.EventHandler(this.mSaveProjectasToolStripMenuItem_Click); // // mDiscardChangesToolStripMenuItem // this.mDiscardChangesToolStripMenuItem.Name = "mDiscardChangesToolStripMenuItem"; - this.mDiscardChangesToolStripMenuItem.Size = new System.Drawing.Size(173, 22); + this.mDiscardChangesToolStripMenuItem.Size = new System.Drawing.Size(171, 22); this.mDiscardChangesToolStripMenuItem.Text = "&Discard changes"; this.mDiscardChangesToolStripMenuItem.Click += new System.EventHandler(this.mDiscardChangesToolStripMenuItem_Click); // // mCloseProjectToolStripMenuItem // this.mCloseProjectToolStripMenuItem.Name = "mCloseProjectToolStripMenuItem"; - this.mCloseProjectToolStripMenuItem.Size = new System.Drawing.Size(173, 22); + this.mCloseProjectToolStripMenuItem.Size = new System.Drawing.Size(171, 22); this.mCloseProjectToolStripMenuItem.Text = "&Close project"; this.mCloseProjectToolStripMenuItem.Click += new System.EventHandler(this.mCloseProjectToolStripMenuItem_Click); // // toolStripSeparator3 // this.toolStripSeparator3.Name = "toolStripSeparator3"; - this.toolStripSeparator3.Size = new System.Drawing.Size(170, 6); + this.toolStripSeparator3.Size = new System.Drawing.Size(168, 6); // // exitToolStripMenuItem // this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; - this.exitToolStripMenuItem.Size = new System.Drawing.Size(173, 22); + this.exitToolStripMenuItem.Size = new System.Drawing.Size(171, 22); this.exitToolStripMenuItem.Text = "E&xit"; this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); // @@ -259,45 +260,73 @@ // mShowhideTableOfCOntentsToolStripMenuItem // this.mShowhideTableOfCOntentsToolStripMenuItem.Name = "mShowhideTableOfCOntentsToolStripMenuItem"; - this.mShowhideTableOfCOntentsToolStripMenuItem.Size = new System.Drawing.Size(188, 22); + this.mShowhideTableOfCOntentsToolStripMenuItem.Size = new System.Drawing.Size(192, 22); this.mShowhideTableOfCOntentsToolStripMenuItem.Text = "Show &table of contents "; this.mShowhideTableOfCOntentsToolStripMenuItem.Click += new System.EventHandler(this.mShowhideTableOfContentsToolStripMenuItem_Click); // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(185, 6); + this.toolStripSeparator1.Size = new System.Drawing.Size(189, 6); // // mAddSectionAtSameLevelToolStripMenuItem // this.mAddSectionAtSameLevelToolStripMenuItem.Name = "mAddSectionAtSameLevelToolStripMenuItem"; - this.mAddSectionAtSameLevelToolStripMenuItem.Size = new System.Drawing.Size(188, 22); + this.mAddSectionAtSameLevelToolStripMenuItem.Size = new System.Drawing.Size(192, 22); this.mAddSectionAtSameLevelToolStripMenuItem.Text = "&Add section"; // // mAddsubsectionToolStripMenuItem // this.mAddsubsectionToolStripMenuItem.Name = "mAddsubsectionToolStripMenuItem"; - this.mAddsubsectionToolStripMenuItem.Size = new System.Drawing.Size(188, 22); + this.mAddsubsectionToolStripMenuItem.Size = new System.Drawing.Size(192, 22); this.mAddsubsectionToolStripMenuItem.Text = "Add &sub-section"; // + // toolStripSeparator6 + // + this.toolStripSeparator6.Name = "toolStripSeparator6"; + this.toolStripSeparator6.Size = new System.Drawing.Size(189, 6); + // // mRenameSectionToolStripMenuItem // this.mRenameSectionToolStripMenuItem.Name = "mRenameSectionToolStripMenuItem"; - this.mRenameSectionToolStripMenuItem.Size = new System.Drawing.Size(188, 22); + this.mRenameSectionToolStripMenuItem.Size = new System.Drawing.Size(192, 22); this.mRenameSectionToolStripMenuItem.Text = "&Rename section"; // // mDeleteSectionToolStripMenuItem // this.mDeleteSectionToolStripMenuItem.Name = "mDeleteSectionToolStripMenuItem"; - this.mDeleteSectionToolStripMenuItem.Size = new System.Drawing.Size(188, 22); + this.mDeleteSectionToolStripMenuItem.Size = new System.Drawing.Size(192, 22); this.mDeleteSectionToolStripMenuItem.Text = "&Delete section"; // + // toolStripSeparator7 + // + this.toolStripSeparator7.Name = "toolStripSeparator7"; + this.toolStripSeparator7.Size = new System.Drawing.Size(189, 6); + // // mMoveSectionUpToolStripMenuItem // this.mMoveSectionUpToolStripMenuItem.Name = "mMoveSectionUpToolStripMenuItem"; - this.mMoveSectionUpToolStripMenuItem.Size = new System.Drawing.Size(188, 22); + this.mMoveSectionUpToolStripMenuItem.Size = new System.Drawing.Size(192, 22); this.mMoveSectionUpToolStripMenuItem.Text = "Move section &up"; // + // moveSectionDownToolStripMenuItem + // + this.moveSectionDownToolStripMenuItem.Name = "moveSectionDownToolStripMenuItem"; + this.moveSectionDownToolStripMenuItem.Size = new System.Drawing.Size(192, 22); + this.moveSectionDownToolStripMenuItem.Text = "Move section down"; + // + // increaseSectionDepthToolStripMenuItem + // + this.increaseSectionDepthToolStripMenuItem.Name = "increaseSectionDepthToolStripMenuItem"; + this.increaseSectionDepthToolStripMenuItem.Size = new System.Drawing.Size(192, 22); + this.increaseSectionDepthToolStripMenuItem.Text = "Increase section level"; + // + // decreaseSectionLevelToolStripMenuItem + // + this.decreaseSectionLevelToolStripMenuItem.Name = "decreaseSectionLevelToolStripMenuItem"; + this.decreaseSectionLevelToolStripMenuItem.Size = new System.Drawing.Size(192, 22); + this.decreaseSectionLevelToolStripMenuItem.Text = "Decrease section level"; + // // mStripsToolStripMenuItem // this.mStripsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -305,39 +334,40 @@ this.renameStripToolStripMenuItem, this.toolStripSeparator5, this.importAssetToolStripMenuItem, - this.playFirstPhraseToolStripMenuItem}); + this.playFirstPhraseToolStripMenuItem, + this.splitFirstAudioBlockToolStripMenuItem}); this.mStripsToolStripMenuItem.Name = "mStripsToolStripMenuItem"; - this.mStripsToolStripMenuItem.Size = new System.Drawing.Size(46, 20); + this.mStripsToolStripMenuItem.Size = new System.Drawing.Size(47, 20); this.mStripsToolStripMenuItem.Text = "Strips"; // // mAddStripToolStripMenuItem // this.mAddStripToolStripMenuItem.Name = "mAddStripToolStripMenuItem"; - this.mAddStripToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.mAddStripToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.mAddStripToolStripMenuItem.Text = "&Add strip"; // // renameStripToolStripMenuItem // this.renameStripToolStripMenuItem.Name = "renameStripToolStripMenuItem"; - this.renameStripToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.renameStripToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.renameStripToolStripMenuItem.Text = "&Rename strip"; // // toolStripSeparator5 // this.toolStripSeparator5.Name = "toolStripSeparator5"; - this.toolStripSeparator5.Size = new System.Drawing.Size(149, 6); + this.toolStripSeparator5.Size = new System.Drawing.Size(177, 6); // // importAssetToolStripMenuItem // this.importAssetToolStripMenuItem.Name = "importAssetToolStripMenuItem"; - this.importAssetToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.importAssetToolStripMenuItem.Text = "&Import asset"; + this.importAssetToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.importAssetToolStripMenuItem.Text = "&Import audio file"; // // playFirstPhraseToolStripMenuItem // this.playFirstPhraseToolStripMenuItem.Name = "playFirstPhraseToolStripMenuItem"; - this.playFirstPhraseToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.playFirstPhraseToolStripMenuItem.Text = "&Play first phrase"; + this.playFirstPhraseToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.playFirstPhraseToolStripMenuItem.Text = "&Play first audio block"; this.playFirstPhraseToolStripMenuItem.Click += new System.EventHandler(this.playFirstPhraseToolStripMenuItem_Click); // // toolsToolStripMenuItem @@ -347,27 +377,27 @@ this.preferencesToolStripMenuItem, this.audioPreferencesToolStripMenuItem}); this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem"; - this.toolsToolStripMenuItem.Size = new System.Drawing.Size(44, 20); + this.toolsToolStripMenuItem.Size = new System.Drawing.Size(45, 20); this.toolsToolStripMenuItem.Text = "&Tools"; // // userSettingsToolStripMenuItem // this.userSettingsToolStripMenuItem.Name = "userSettingsToolStripMenuItem"; - this.userSettingsToolStripMenuItem.Size = new System.Drawing.Size(169, 22); + this.userSettingsToolStripMenuItem.Size = new System.Drawing.Size(170, 22); this.userSettingsToolStripMenuItem.Text = "&User profile"; this.userSettingsToolStripMenuItem.Click += new System.EventHandler(this.userSettingsToolStripMenuItem_Click); // // preferencesToolStripMenuItem // this.preferencesToolStripMenuItem.Name = "preferencesToolStripMenuItem"; - this.preferencesToolStripMenuItem.Size = new System.Drawing.Size(169, 22); + this.preferencesToolStripMenuItem.Size = new System.Drawing.Size(170, 22); this.preferencesToolStripMenuItem.Text = "&Project preferences"; this.preferencesToolStripMenuItem.Click += new System.EventHandler(this.preferencesToolStripMenuItem_Click); // // audioPreferencesToolStripMenuItem // this.audioPreferencesToolStripMenuItem.Name = "audioPreferencesToolStripMenuItem"; - this.audioPreferencesToolStripMenuItem.Size = new System.Drawing.Size(169, 22); + this.audioPreferencesToolStripMenuItem.Size = new System.Drawing.Size(170, 22); this.audioPreferencesToolStripMenuItem.Text = "&Audio preferences"; this.audioPreferencesToolStripMenuItem.Click += new System.EventHandler(this.audioPreferencesToolStripMenuItem_Click); // @@ -375,7 +405,7 @@ // this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.toolStripStatusLabel1}); - this.statusStrip1.Location = new System.Drawing.Point(0, 522); + this.statusStrip1.Location = new System.Drawing.Point(0, 480); this.statusStrip1.Name = "statusStrip1"; this.statusStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.ManagerRenderMode; this.statusStrip1.Size = new System.Drawing.Size(775, 22); @@ -394,46 +424,25 @@ | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.mProjectPanel.BackColor = System.Drawing.Color.White; - this.mProjectPanel.Location = new System.Drawing.Point(4, 29); + this.mProjectPanel.Location = new System.Drawing.Point(4, 27); this.mProjectPanel.Name = "mProjectPanel"; this.mProjectPanel.Project = null; - this.mProjectPanel.Size = new System.Drawing.Size(767, 488); + this.mProjectPanel.Size = new System.Drawing.Size(767, 450); this.mProjectPanel.TabIndex = 4; // - // moveSectionDownToolStripMenuItem + // splitFirstAudioBlockToolStripMenuItem // - this.moveSectionDownToolStripMenuItem.Name = "moveSectionDownToolStripMenuItem"; - this.moveSectionDownToolStripMenuItem.Size = new System.Drawing.Size(188, 22); - this.moveSectionDownToolStripMenuItem.Text = "Move section down"; + this.splitFirstAudioBlockToolStripMenuItem.Name = "splitFirstAudioBlockToolStripMenuItem"; + this.splitFirstAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.splitFirstAudioBlockToolStripMenuItem.Text = "&Split first audio block"; + this.splitFirstAudioBlockToolStripMenuItem.Click += new System.EventHandler(this.splitFirstAudioBlockToolStripMenuItem_Click); // - // toolStripSeparator6 - // - this.toolStripSeparator6.Name = "toolStripSeparator6"; - this.toolStripSeparator6.Size = new System.Drawing.Size(185, 6); - // - // toolStripSeparator7 - // - this.toolStripSeparator7.Name = "toolStripSeparator7"; - this.toolStripSeparator7.Size = new System.Drawing.Size(185, 6); - // - // increaseSectionDepthToolStripMenuItem - // - this.increaseSectionDepthToolStripMenuItem.Name = "increaseSectionDepthToolStripMenuItem"; - this.increaseSectionDepthToolStripMenuItem.Size = new System.Drawing.Size(188, 22); - this.increaseSectionDepthToolStripMenuItem.Text = "Increase section level"; - // - // decreaseSectionLevelToolStripMenuItem - // - this.decreaseSectionLevelToolStripMenuItem.Name = "decreaseSectionLevelToolStripMenuItem"; - this.decreaseSectionLevelToolStripMenuItem.Size = new System.Drawing.Size(188, 22); - this.decreaseSectionLevelToolStripMenuItem.Text = "Decrease section level"; - // // ObiForm // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.Color.White; - this.ClientSize = new System.Drawing.Size(775, 544); + this.ClientSize = new System.Drawing.Size(775, 502); this.Controls.Add(this.mProjectPanel); this.Controls.Add(this.statusStrip1); this.Controls.Add(this.menuStrip1); @@ -499,6 +508,7 @@ private System.Windows.Forms.ToolStripSeparator toolStripSeparator7; private System.Windows.Forms.ToolStripMenuItem increaseSectionDepthToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem decreaseSectionLevelToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem splitFirstAudioBlockToolStripMenuItem; } Modified: trunk/urakawa/application/Obi/Obi/ObiForm.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/ObiForm.cs 2006-08-02 06:48:37 UTC (rev 742) +++ trunk/urakawa/application/Obi/Obi/ObiForm.cs 2006-08-02 07:13:50 UTC (rev 743) @@ -698,8 +698,6 @@ /// Find the first phrase in the book and play it. /// For debugging purposes only! /// </summary> - /// <param name="sender"></param> - /// <param name="e"></param> private void playFirstPhraseToolStripMenuItem_Click(object sender, EventArgs e) { Visitors.PhraseEnumerator enumerator = new Visitors.PhraseEnumerator(); @@ -710,5 +708,20 @@ dialog.ShowDialog(); } } + + /// <summary> + /// Find the first phrase in the book and split it. + /// For debugging purposes only! + /// </summary> + private void splitFirstAudioBlockToolStripMenuItem_Click(object sender, EventArgs e) + { + Visitors.PhraseEnumerator enumerator = new Visitors.PhraseEnumerator(); + mProject.RootNode.acceptDepthFirst(enumerator); + if (enumerator.Phrases.Count > 0) + { + Dialogs.Split dialog = new Dialogs.Split(enumerator.Phrases[0], 0.0); + dialog.ShowDialog(); + } + } } } \ No newline at end of file Modified: trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs 2006-08-02 06:48:37 UTC (rev 742) +++ trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs 2006-08-02 07:13:50 UTC (rev 743) @@ -38,6 +38,7 @@ this.importAssetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.playAssetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.renameAssetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.splitAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.contextMenuStrip1.SuspendLayout(); this.SuspendLayout(); // @@ -74,10 +75,11 @@ this.toolStripSeparator1, this.importAssetToolStripMenuItem, this.playAssetToolStripMenuItem, + this.splitAudioBlockToolStripMenuItem, this.renameAssetToolStripMenuItem}); this.contextMenuStrip1.Name = "contextMenuStrip1"; this.contextMenuStrip1.ShowImageMargin = false; - this.contextMenuStrip1.Size = new System.Drawing.Size(149, 120); + this.contextMenuStrip1.Size = new System.Drawing.Size(149, 164); // // addStripToolStripMenuItem // @@ -119,6 +121,13 @@ this.renameAssetToolStripMenuItem.Text = "Re&name audio block"; this.renameAssetToolStripMenuItem.Click += new System.EventHandler(this.renameAssetToolStripMenuItem_Click); // + // splitAudioBlockToolStripMenuItem + // + this.splitAudioBlockToolStripMenuItem.Name = "splitAudioBlockToolStripMenuItem"; + this.splitAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.splitAudioBlockToolStripMenuItem.Text = "&Split audio block"; + this.splitAudioBlockToolStripMenuItem.Click += new System.EventHandler(this.splitAudioBlockToolStripMenuItem_Click); + // // StripManagerPanel // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); @@ -144,5 +153,6 @@ private System.Windows.Forms.ToolStripMenuItem importAssetToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem playAssetToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem renameAssetToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem splitAudioBlockToolStripMenuItem; } } Modified: trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs 2006-08-02 06:48:37 UTC (rev 742) +++ trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs 2006-08-02 07:13:50 UTC (rev 743) @@ -246,8 +246,9 @@ } /// <summary> - /// Play the currently selected audio block. (JQ) + /// Play the currently selected audio block. /// </summary> + /// <remarks>JQ</remarks> private void playAssetToolStripMenuItem_Click(object sender, EventArgs e) { if (mSelectedPhrase != null) @@ -258,6 +259,19 @@ } /// <summary> + /// Split the currently selected audio block. + /// </summary> + /// <remarks>JQ</remarks> + private void splitAudioBlockToolStripMenuItem_Click(object sender, EventArgs e) + { + if (mSelectedPhrase != null) + { + Dialogs.Split dialog = new Dialogs.Split(mSelectedPhrase, 0.0); + dialog.ShowDialog(); + } + } + + /// <summary> /// Rename the currently selected audio block (JQ) /// </summary> private void renameAssetToolStripMenuItem_Click(object sender, EventArgs e) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2006-08-02 11:36:29
|
Revision: 750 Author: julienq Date: 2006-08-02 04:36:04 -0700 (Wed, 02 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=750&view=rev Log Message: ----------- Set the devices according to preferences. Asset manager creates a project directory. Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Dialogs/Preferences.Designer.cs trunk/urakawa/application/Obi/Obi/Dialogs/Preferences.cs trunk/urakawa/application/Obi/Obi/Dialogs/Record.cs trunk/urakawa/application/Obi/Obi/Obi.csproj trunk/urakawa/application/Obi/Obi/ObiForm.cs trunk/urakawa/application/Obi/Obi/messages.Designer.cs trunk/urakawa/application/Obi/Obi/messages.resx trunk/urakawa/application/VirtualAudioBackend/AssetManager.cs trunk/urakawa/application/VirtualAudioBackend/AudioPlayer.cs trunk/urakawa/application/VirtualAudioBackend/AudioRecorder.cs Modified: trunk/urakawa/application/Obi/Obi/Dialogs/Preferences.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Dialogs/Preferences.Designer.cs 2006-08-02 11:00:13 UTC (rev 749) +++ trunk/urakawa/application/Obi/Obi/Dialogs/Preferences.Designer.cs 2006-08-02 11:36:04 UTC (rev 750) @@ -108,7 +108,7 @@ this.mOKButton.TabIndex = 5; this.mOKButton.Text = "&OK"; this.mOKButton.UseVisualStyleBackColor = true; - this.mOKButton.Click += new System.EventHandler(this.button2_Click); + this.mOKButton.Click += new System.EventHandler(this.mOKButton_Click); // // mCancelButton // Modified: trunk/urakawa/application/Obi/Obi/Dialogs/Preferences.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Dialogs/Preferences.cs 2006-08-02 11:00:13 UTC (rev 749) +++ trunk/urakawa/application/Obi/Obi/Dialogs/Preferences.cs 2006-08-02 11:36:04 UTC (rev 750) @@ -31,11 +31,13 @@ } } - private string mOutputDevice; // preferred output device - private string mInputDevice; // preferred input device - private int mAudioChannels; // preferred number of audio channels - private int mSampleRate; // preferred sample rate - private int mBitDepth; // preferred bit depth + private string mOutputDevice; // preferred output device + private int mOutputDeviceIndex; // index of the output device + private string mInputDevice; // preferred input device + private int mInputDeviceIndex; // index of the input device + private int mAudioChannels; // preferred number of audio channels + private int mSampleRate; // preferred sample rate + private int mBitDepth; // preferred bit depth public string OutputDevice { @@ -45,6 +47,14 @@ } } + public int OutputDeviceIndex + { + get + { + return mOutputDeviceIndex; + } + } + public string InputDevice { get @@ -53,6 +63,14 @@ } } + public int InputDeviceIndex + { + get + { + return mInputDeviceIndex; + } + } + public int AudioChannels { get @@ -111,7 +129,7 @@ } } - private void button2_Click(object sender, EventArgs e) + private void mOKButton_Click(object sender, EventArgs e) { mIdTemplate = mTemplateBox.Text; //mDefaultDir = mDirectoryBox.Text; @@ -125,7 +143,9 @@ } mInputDevice = comboInputDevice.SelectedItem.ToString(); + mInputDeviceIndex = comboInputDevice.SelectedIndex; mOutputDevice = comboOutputDevice.SelectedItem.ToString(); + mOutputDeviceIndex = comboOutputDevice.SelectedIndex; if (comboChannels.SelectedItem.ToString() == "Mono") mAudioChannels = 1; else Modified: trunk/urakawa/application/Obi/Obi/Dialogs/Record.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Dialogs/Record.cs 2006-08-02 11:00:13 UTC (rev 749) +++ trunk/urakawa/application/Obi/Obi/Dialogs/Record.cs 2006-08-02 11:36:04 UTC (rev 750) @@ -64,7 +64,7 @@ { ArrayList arDevices = new ArrayList(); arDevices = AudioRecorder.Instance.GetInputDevices(); - AudioRecorder.Instance.InitDirectSound(2); + //AudioRecorder.Instance.InitDirectSound(2); //AudioRecorder.Instance.InitDirectSound(mIndex); ob_VuMeter.ScaleFactor = 2; Modified: trunk/urakawa/application/Obi/Obi/Obi.csproj =================================================================== --- trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-02 11:00:13 UTC (rev 749) +++ trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-02 11:36:04 UTC (rev 750) @@ -51,6 +51,8 @@ <SpecificVersion>False</SpecificVersion> <HintPath>..\..\VirtualAudioBackend\bin\Debug\Commands.dll</HintPath> </Reference> + <Reference Include="Microsoft.DirectX, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> + <Reference Include="Microsoft.DirectX.DirectSound, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <Reference Include="System" /> <Reference Include="System.Data" /> <Reference Include="System.Deployment" /> Modified: trunk/urakawa/application/Obi/Obi/ObiForm.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/ObiForm.cs 2006-08-02 11:00:13 UTC (rev 749) +++ trunk/urakawa/application/Obi/Obi/ObiForm.cs 2006-08-02 11:36:04 UTC (rev 750) @@ -284,7 +284,9 @@ if (dialog.IdTemplate.Contains("#")) mSettings.IdTemplate = dialog.IdTemplate; if (Directory.Exists(dialog.DefaultDir)) mSettings.DefaultPath = dialog.DefaultDir; mSettings.LastOutputDevice = dialog.OutputDevice; + AudioPlayer.Instance.SetDevice(this, dialog.OutputDeviceIndex); mSettings.LastInputDevice = dialog.InputDevice; + AudioRecorder.Instance.SetInputDeviceForRecording(this, dialog.InputDeviceIndex); mSettings.AudioChannels = dialog.AudioChannels; mSettings.SampleRate = dialog.SampleRate; mSettings.BitDepth = dialog.BitDepth; @@ -431,7 +433,7 @@ mSettings.RecentProjects.RemoveAt(i); } } - // Use the first available device by default + // Try to use the last input and output devices ArrayList devices = AudioPlayer.Instance.GetOutputDevices(); if (devices.Count == 0) { @@ -439,7 +441,15 @@ MessageBoxButtons.OK, MessageBoxIcon.Error); Application.Exit(); } - AudioPlayer.Instance.SetDevice(this, 0); + AudioPlayer.Instance.SetDevice(this, mSettings.LastOutputDevice); + devices = AudioRecorder.Instance.GetInputDevices(); + if (devices.Count == 0) + { + MessageBox.Show(Localizer.Message("no_input_device_text"), Localizer.Message("no_input_device_caption"), + MessageBoxButtons.OK, MessageBoxIcon.Error); + Application.Exit(); + } + AudioRecorder.Instance.SetInputDeviceForRecording(this, mSettings.LastInputDevice); } /// <summary> Modified: trunk/urakawa/application/Obi/Obi/messages.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/messages.Designer.cs 2006-08-02 11:00:13 UTC (rev 749) +++ trunk/urakawa/application/Obi/Obi/messages.Designer.cs 2006-08-02 11:36:04 UTC (rev 750) @@ -272,6 +272,24 @@ } /// <summary> + /// Looks up a localized string similar to No input device found. + /// </summary> + internal static string no_input_device_caption { + get { + return ResourceManager.GetString("no_input_device_caption", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Could not select and audio input device: node found. Sorry :(. + /// </summary> + internal static string no_input_device_text { + get { + return ResourceManager.GetString("no_input_device_text", resourceCulture); + } + } + + /// <summary> /// Looks up a localized string similar to No project is currently open.. /// </summary> internal static string no_open_project { Modified: trunk/urakawa/application/Obi/Obi/messages.resx =================================================================== --- trunk/urakawa/application/Obi/Obi/messages.resx 2006-08-02 11:00:13 UTC (rev 749) +++ trunk/urakawa/application/Obi/Obi/messages.resx 2006-08-02 11:36:04 UTC (rev 750) @@ -274,4 +274,10 @@ <value>Stereo</value> <comment>two channels (JQ)</comment> </data> + <data name="no_input_device_caption" xml:space="preserve"> + <value>No input device found</value> + </data> + <data name="no_input_device_text" xml:space="preserve"> + <value>Could not select and audio input device: node found. Sorry :(</value> + </data> </root> \ No newline at end of file Modified: trunk/urakawa/application/VirtualAudioBackend/AssetManager.cs =================================================================== --- trunk/urakawa/application/VirtualAudioBackend/AssetManager.cs 2006-08-02 11:00:13 UTC (rev 749) +++ trunk/urakawa/application/VirtualAudioBackend/AssetManager.cs 2006-08-02 11:36:04 UTC (rev 750) @@ -1,6 +1,7 @@ using System; using System.Windows.Forms; using System.Collections; +using System.IO; namespace VirtualAudioBackend { @@ -35,11 +36,22 @@ /// <summary> /// Create the asset manager taking as argument the project directory where the data should live. + /// The directory is created if it didn't exist; an exception is raised if a problem occurs. /// </summary> public AssetManager(string projectDirectory) { - m_sDirPath = projectDirectory ; - + m_sDirPath = projectDirectory; + if (!Directory.Exists(m_sDirPath)) + { + try + { + Directory.CreateDirectory(m_sDirPath); + } + catch (Exception e) + { + throw new Exception(String.Format("Could not create project directory {0}", m_sDirPath), e); + } + } } /// <summary> Modified: trunk/urakawa/application/VirtualAudioBackend/AudioPlayer.cs =================================================================== --- trunk/urakawa/application/VirtualAudioBackend/AudioPlayer.cs 2006-08-02 11:00:13 UTC (rev 749) +++ trunk/urakawa/application/VirtualAudioBackend/AudioPlayer.cs 2006-08-02 11:36:04 UTC (rev 750) @@ -187,6 +187,14 @@ SndDevice = dSound ; } + /// <summary> + /// Find the device that matches this name; if it could not be found, default to 0. + /// </summary> + public void SetDevice (Control FormHandle, string name) + { + SetDevice(FormHandle, 0); + } + DevicesCollection devList ; DevicesCollection CollectOutputDevices() { Modified: trunk/urakawa/application/VirtualAudioBackend/AudioRecorder.cs =================================================================== --- trunk/urakawa/application/VirtualAudioBackend/AudioRecorder.cs 2006-08-02 11:00:13 UTC (rev 749) +++ trunk/urakawa/application/VirtualAudioBackend/AudioRecorder.cs 2006-08-02 11:36:04 UTC (rev 750) @@ -514,6 +514,12 @@ mDevice .SetCooperativeLevel(FormHandle, CooperativeLevel.Priority); m_InputDevice = mDevice; } + + public void SetInputDeviceForRecording(Control FormHandle, string name) + { + SetInputDeviceForRecording(FormHandle, 0); + } + public Device InputDevice { get This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2006-08-03 11:01:58
|
Revision: 772 Author: julienq Date: 2006-08-03 04:00:48 -0700 (Thu, 03 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=772&view=rev Log Message: ----------- Audio backend, asset manager and commands moved into Obi. This will probably break much stuff. Sorry. Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Commands/CommandManager.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/AddSection.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/DeleteSection.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/IncreaseSectionLevel.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionDown.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionUp.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/Rename.cs trunk/urakawa/application/Obi/Obi/CustomProperties.cs trunk/urakawa/application/Obi/Obi/Dialogs/Play.cs trunk/urakawa/application/Obi/Obi/Dialogs/Preferences.cs trunk/urakawa/application/Obi/Obi/Dialogs/Record.cs trunk/urakawa/application/Obi/Obi/Dialogs/Split.cs trunk/urakawa/application/Obi/Obi/Events/Project/CommandCreatedEventArgs.cs trunk/urakawa/application/Obi/Obi/Obi.csproj trunk/urakawa/application/Obi/Obi/ObiForm.cs trunk/urakawa/application/Obi/Obi/Project.cs trunk/urakawa/application/Obi/Obi/UserControls/AudioBlock.cs trunk/urakawa/application/Obi/Obi/Visitors/AssetVisitor.cs Added Paths: ----------- trunk/urakawa/application/Obi/Obi/Assets/ trunk/urakawa/application/Obi/Obi/Assets/AssetManager.cs trunk/urakawa/application/Obi/Obi/Assets/AudioClip.cs trunk/urakawa/application/Obi/Obi/Assets/AudioMediaAsset.cs trunk/urakawa/application/Obi/Obi/Assets/MediaAsset.cs trunk/urakawa/application/Obi/Obi/Audio/ trunk/urakawa/application/Obi/Obi/Audio/AudioDevice.cs trunk/urakawa/application/Obi/Obi/Audio/AudioPlayer.cs trunk/urakawa/application/Obi/Obi/Audio/AudioRecorder.cs trunk/urakawa/application/Obi/Obi/Audio/CalculationFunctions.cs trunk/urakawa/application/Obi/Obi/Audio/Commands.cs trunk/urakawa/application/Obi/Obi/Audio/VuMeter.cs trunk/urakawa/application/Obi/Obi/Audio/VuMeterForm.cs trunk/urakawa/application/Obi/Obi/Audio/VuMeterForm.resx trunk/urakawa/application/Obi/Obi/Commands/Command.cs trunk/urakawa/application/Obi/Obi/Commands/ConsCommand.cs trunk/urakawa/application/Obi/Obi/Events/Audio/ trunk/urakawa/application/Obi/Obi/Events/Audio/Player/ trunk/urakawa/application/Obi/Obi/Events/Audio/Player/EndOfAudioDataEventArgs.cs trunk/urakawa/application/Obi/Obi/Events/Audio/Player/StateChangedEventArgs.cs trunk/urakawa/application/Obi/Obi/Events/Audio/Player/UpdateVuMeter.cs trunk/urakawa/application/Obi/Obi/Events/Audio/Recorder/ trunk/urakawa/application/Obi/Obi/Events/Audio/Recorder/StateChangedEventArgs.cs trunk/urakawa/application/Obi/Obi/Events/Audio/Recorder/UpdateVuMeter.cs trunk/urakawa/application/Obi/Obi/Events/Audio/VuMeter/ trunk/urakawa/application/Obi/Obi/Events/Audio/VuMeter/LevelTooLowEventArgs.cs trunk/urakawa/application/Obi/Obi/Events/Audio/VuMeter/PeakOverloadEventArgs.cs trunk/urakawa/application/Obi/Obi/Events/Audio/VuMeter/ResetEventArgs.cs trunk/urakawa/application/Obi/Obi/Events/Audio/VuMeter/UpdateFormsEventArgs.cs Added: trunk/urakawa/application/Obi/Obi/Assets/AssetManager.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Assets/AssetManager.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/Assets/AssetManager.cs 2006-08-03 11:00:48 UTC (rev 772) @@ -0,0 +1,275 @@ +using System; +using System.Windows.Forms; +using System.Collections; +using System.IO; + +namespace Obi.Assets +{ + public class AssetManager + { + // member variables + // hold path of project directory + + private string m_sDirPath; + + internal string DirPath + { + get + { + return m_sDirPath ; + } + } + + + //hash table to hold paths of assets being managed + private Hashtable m_htAssetList = new Hashtable(); + + + // hash table to contain list of all existing assets + public Hashtable m_htExists = new Hashtable (); + + // object for catch class + //CatchEvents ob_Catch = new CatchEvents(); + + /// <summary> + /// Create the asset manager taking as argument the project directory where the data should live. + /// The directory is created if it didn't exist; an exception is raised if a problem occurs. + /// </summary> + public AssetManager(string projectDirectory) + { + m_sDirPath = projectDirectory; + if (!Directory.Exists(m_sDirPath)) + { + try + { + Directory.CreateDirectory(m_sDirPath); + } + catch (Exception e) + { + throw new Exception(String.Format("Could not create project directory {0}", m_sDirPath), e); + } + } + } + + /// <summary> + /// Create a new empty AudioMediaAsset object with the given parameters and add it to the list of managed assets. + /// </summary> + /// <param name="channels">Number of channels</param> + /// <param name="bitDepth">Bit depth</param> + /// <param name="sampleRate">Sample rate</param> + /// <returns>The newly created asset.</returns> + public AudioMediaAsset NewAudioMediaAsset(int channels, int bitDepth, int sampleRate) + { + AudioMediaAsset ob_AudioMediaAsset = new AudioMediaAsset (channels , bitDepth , sampleRate) ; + ob_AudioMediaAsset.Name = NewMediaAssetName () ; + ob_AudioMediaAsset.m_AssetManager = this ; + m_htAssetList.Add (ob_AudioMediaAsset.Name, ob_AudioMediaAsset) ; + m_htExists.Add (ob_AudioMediaAsset.Name, ob_AudioMediaAsset) ; + return ob_AudioMediaAsset ; + } + + /// <summary> + /// Create a new AudioMediaAsset object from a list of clips and add it to the list of managed assets. + /// </summary> + /// <param name="clips">The array of <see cref="AudioClip"/>s.</param> + /// <returns>The newly created asset.</returns> + public AudioMediaAsset NewAudioMediaAsset(ArrayList clips) + { + + AudioMediaAsset ob_AudioMediaAsset = new AudioMediaAsset (clips) ; + + ob_AudioMediaAsset.Name = NewMediaAssetName () ; + ob_AudioMediaAsset.m_AssetManager = this ; + m_htAssetList.Add (ob_AudioMediaAsset.Name, ob_AudioMediaAsset) ; + m_htExists.Add (ob_AudioMediaAsset.Name, ob_AudioMediaAsset) ; + return ob_AudioMediaAsset ; + + + } + + /// <summary> + /// Produce a unique name for IMediaAsset + /// </summary> + public string NewMediaAssetName() + { + + long i = 0 ; + + string sTemp ; + + sTemp = "amMediaAsset" ; + string sTempName ; + sTempName = sTemp + i.ToString () ; + + while ( m_htExists.ContainsKey (sTempName) && i<9000000) + { + + i++; + sTempName = sTemp + i.ToString () ; + + + } + + + if (i<9000000) + + { + + return sTempName ; + + } + else + { + return null ; + } + } + + + + + #region IAssetManager Members + + public Hashtable Assets + { + get + { + return m_htAssetList ; + } + } + + public void AddAsset(Assets.MediaAsset asset) + { + if (asset.Type== MediaType.Audio) + { + AudioMediaAsset Asset = asset as AudioMediaAsset; + if (Asset.Name == null ) + { + Asset.Name = NewMediaAssetName () ; + } + Asset.m_AssetManager = this ; + + m_htAssetList.Add (Asset.Name, asset) ; + m_htExists.Add (Asset.Name, asset) ; + } + } + + public Hashtable GetAssets(Assets.MediaType assetType) + { + + IDictionaryEnumerator en = m_htAssetList.GetEnumerator(); + + Hashtable htTemp = new Hashtable () ; + + MediaAsset m ; + //find the asset from hash table using key + while (en.MoveNext() ) + { + m =en.Value as MediaAsset ; + + if (m.Type.Equals (assetType)) + { + htTemp.Add ( en.Key , en.Value) ; + } + } + + return htTemp ; + } + + + public Assets.MediaAsset GetAsset(string assetName) + { + if (m_htAssetList.ContainsKey (assetName)) + { + return m_htAssetList [assetName] as MediaAsset; + } + else + throw new Exception ("Asset not found in Hashtable") ; + + + } + + public Assets.MediaAsset NewAsset(Assets.MediaType assetType) + { + return null; + } + + public void DeleteAsset(Assets.MediaAsset assetToDelete) + { + + if ( m_htAssetList.ContainsKey(assetToDelete.Name) ) + { + m_htAssetList.Remove(assetToDelete.Name) ; + m_htExists.Remove(assetToDelete.Name) ; + assetToDelete = null ; + } + else + { + + throw new Exception ("Asset could not be deleted : not in hashtable") ; + } + + } + + public void RemoveAsset(Assets.MediaAsset assetToRemove) + { + MediaAsset MediaAssetToRemove = assetToRemove as MediaAsset ; + if ( m_htAssetList.ContainsKey(MediaAssetToRemove.Name) ) + { + m_htAssetList.Remove(MediaAssetToRemove.Name) ; + MediaAssetToRemove.m_AssetManager = null ; + + } + else + throw new Exception ("Asset could not be removed : not in hashtable") ; + + } + + public Assets.MediaAsset CopyAsset(Assets.MediaAsset asset) + { + if (m_htAssetList.ContainsKey (asset.Name) ) + { + MediaAsset ob_MediaAsset = asset.Copy() as MediaAsset; + ob_MediaAsset.Name = NewMediaAssetName () ; + m_htAssetList.Add (ob_MediaAsset.Name, ob_MediaAsset) ; + m_htExists.Add (ob_MediaAsset.Name, ob_MediaAsset) ; + return ob_MediaAsset ; + } + else + { + throw new Exception ("Asset not found in Hashtable") ; + + } + + } + + + public string RenameAsset(Assets.MediaAsset asset, String newName) + { + string OldName = asset.Name; + bool boolRenamed = false ; + IDictionaryEnumerator enRemove = m_htAssetList.GetEnumerator(); + while(enRemove.MoveNext()) + { + + if(enRemove.Key.ToString() == asset.Name) + { + m_htAssetList.Remove(OldName ); + m_htExists.Remove(OldName ); + asset.Name = newName; + m_htAssetList.Add(asset.Name, asset); + m_htExists.Add(asset.Name, asset); + boolRenamed = true ; + break ; + } + } + if (boolRenamed == false) + throw new Exception ("Asset cannot be renamed : not in hashtable") ; + return OldName; + } + } + + #endregion + + +} + Added: trunk/urakawa/application/Obi/Obi/Assets/AudioClip.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Assets/AudioClip.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/Assets/AudioClip.cs 2006-08-03 11:00:48 UTC (rev 772) @@ -0,0 +1,808 @@ +using System; +using System.IO; +using System.Windows.Forms; +using System.Collections; + +namespace Obi.Assets +{ + /// <summary> + /// Audio clips. + /// </summary> + public class AudioClip + { + + // Member variables + private string m_sPath; + private double m_dBeginTime; + private double m_dEndTime; + + private int m_ClipChannels; + private int m_ClipBitDepth; + private int m_ClipSamplingRate; + private int m_ClipFrameSize; + private double m_dLengthInTime; + + private long m_lBeginByte; + private long m_lEndByte; + private long m_lLengthInBytes; + + // Total length of file for checking the valid time input + private long m_lFileAudioLengthInBytes; + private double m_dFileAudioLengthInTime; + + // hash table to contain entry for active clips and the Name and the NameCount for support of hash table + internal static Hashtable static_htClipExists = new Hashtable(); + internal static long static_lNameCount; + private string m_sName; + // finalise as internal instead of public + public string Name + { + get + { + return m_sName; + } + } + /// <summary> + /// The path of the audio file that this clip is part of. + /// </summary> + public string Path + { + get + { + return m_sPath; + } + } + + /// <summary> + /// Begin time of the clip in milliseconds. + /// </summary> + public double BeginTime + { + get + { + return m_dBeginTime; + } + } + + /// <summary> + /// End time of the clip in milliseconds. + /// </summary> + public double EndTime + { + get + { + return m_dEndTime; + } + } + + internal long BeginByte + { + get + { + return m_lBeginByte; + } + } + + internal long EndByte + { + get + { + return m_lEndByte; + } + } + + internal long LengthInBytes + { + get + { + return m_lLengthInBytes; + } + } + + public int Channels + { + get + { + return m_ClipChannels; + } + } + + public int BitDepth + { + get + { + return m_ClipBitDepth; + } + } + + public int SampleRate + { + get + { + return m_ClipSamplingRate; + } + } + + internal int FrameSize + { + get + { + return m_ClipFrameSize; + } + } + + internal double LengthInTime + { + get + { + return m_dLengthInTime; + } + } + + // create calc object for calculations class + Audio.CalculationFunctions Calc = new Audio.CalculationFunctions(); + + /// <summary> + /// Create a new AudioClip object from an existing audio file. + /// </summary> + /// <param name="path">Path of the audio file.</param> + /// <param name="beginTime">Begin time of the clip in milliseconds.</param> + /// <param name="endTime">End time of the clip in milliseconds.</param> + public AudioClip(string path, double beginTime, double endTime) + { + // Read header and assign values to member variables + Init(path); + + // check validity of input parameters + if (beginTime < 0 || endTime > m_dFileAudioLengthInTime) + { + throw new Exception("time parameters of clip are out of bound of file size"); + } + else if (beginTime >= endTime) + { + throw new Exception("BeginTime more than EndTime of clip "); + } + else + { + m_sPath = path; + m_dBeginTime = beginTime; + m_dEndTime = endTime; + m_dLengthInTime = m_dEndTime - m_dBeginTime; + + + m_lBeginByte = Calc.ConvertTimeToByte(m_dBeginTime, m_ClipSamplingRate, m_ClipFrameSize); + m_lBeginByte = Calc.AdaptToFrame(m_lBeginByte, m_ClipFrameSize); + + m_lEndByte = Calc.ConvertTimeToByte(m_dEndTime, m_ClipSamplingRate, m_ClipFrameSize); + m_lEndByte = Calc.AdaptToFrame(m_lEndByte, m_ClipFrameSize); + + m_lLengthInBytes = m_lEndByte - m_lBeginByte; + + // generate unique clip name and add entry to hash table for representation of active clip + m_sName = GenerateClipName(); + static_htClipExists.Add(m_sName, this); + } + } + + public AudioClip(string path) + { + // read values from file header and assign them to member variables + Init(path); + + //checks if the file has audio data + if (m_dFileAudioLengthInTime <= 0) + { + throw new Exception("File has no audio data"); + } + + else + { + m_sPath = path; + m_dBeginTime = 0; + m_dEndTime = m_dFileAudioLengthInTime; + m_dLengthInTime = m_dFileAudioLengthInTime; + + + m_lBeginByte = Calc.ConvertTimeToByte(m_dBeginTime, m_ClipSamplingRate, m_ClipFrameSize); + m_lBeginByte = Calc.AdaptToFrame(m_lBeginByte, m_ClipFrameSize); + + m_lEndByte = Calc.ConvertTimeToByte(m_dEndTime, m_ClipSamplingRate, m_ClipFrameSize); + m_lEndByte = Calc.AdaptToFrame(m_lEndByte, m_ClipFrameSize); + + m_lLengthInBytes = m_lEndByte - m_lBeginByte; + + m_sName = GenerateClipName(); + static_htClipExists.Add(m_sName, this); + + } + } + + /// <summary> + /// Make a copy of the audio clip. + /// </summary> + /// <returns>A copy of the clip.</returns> + public AudioClip Copy() + { + AudioClip ob_AudioClip = new AudioClip(this.Path, this.BeginTime, this.EndTime); + + return ob_AudioClip; + } + + /// <summary> + /// Split an audio clip at the given time (in millisecond.) + /// </summary> + /// <param name="time"></param> + /// <returns>The new clip (second half); the first clip has been modified.</returns> + public AudioClip Split(double time) + { + // time taken as input parameter is respect to clip so it is converted to absolute time + time = m_dBeginTime + time; + + // create a new clip of back part for returning + AudioClip ob_AudioClip = new AudioClip(this.Path, time, this.EndTime); + + // end time of original clip is modified + m_dEndTime = time; + m_dLengthInTime = m_dEndTime - m_dBeginTime; + + return ob_AudioClip; + } + + /// <summary> + /// Merge two audio clips. The end time of this clip must match the begin time of the next, and of course the files must match. + /// </summary> + /// <param name="next">The next clip to merge with.</param> + public void MergeWith(AudioClip next) + { + // checks if clips have same source file and times are compatible + if (m_sPath == next.Path && m_ClipChannels == next.Channels && m_ClipBitDepth == next.BitDepth && m_ClipSamplingRate == next.SampleRate && m_dEndTime <= next.BeginTime) + { + m_dEndTime = next.EndTime; + m_dLengthInTime = m_dEndTime - m_dBeginTime; + } + else + throw new Exception("Clips of different formats cannot be merged"); + } + + // Create a small clip from a large clip + // param BeginTime is starting time of new clip + // parameter EndTime is end time of new clip + // takes relative time as parameters + internal AudioClip CopyClipPart(double BeginTime, double EndTime) + { + //convert relative time taken as input parameters to absolute time + BeginTime = m_dBeginTime + BeginTime; + EndTime = m_dBeginTime + EndTime; + + + // temp checks are as follows , these are to be removed during finalising + if (BeginTime < this.BeginTime) + MessageBox.Show("error begin time"); + + if (EndTime > this.EndTime) + MessageBox.Show("error in end time"); + + if (BeginTime >= EndTime) + MessageBox.Show("both"); + + // checks that the new clip time parameters are not out of boun of original clip + if (BeginTime >= this.BeginTime && EndTime <= this.EndTime && BeginTime < EndTime) + { + AudioClip ob_AudioClip = new AudioClip(this.Path, BeginTime, EndTime); + return ob_AudioClip; + } + else + throw new Exception("Partial clip cannot be created: Invalid time parameters"); + } + + + // to be called in constructor , reads theheader of wav file and assign values to member variables + void Init(string sPath) + { + + //declare array variable of size 4 as the max chunk in header is 4 bytes long + int[] Ar = new int[4]; + Ar[0] = Ar[1] = Ar[2] = Ar[3] = 0; + BinaryReader br = new BinaryReader(File.OpenRead(sPath)); + + // channels + Ar[0] = Ar[1] = Ar[2] = Ar[3] = 0; + + br.BaseStream.Position = 22; + for (int i = 0; i < 2; i++) + { + Ar[i] = br.ReadByte(); + } + + m_ClipChannels = Convert.ToInt32(ConvertToDecimal(Ar)); + + // Sampling rate + Ar[0] = Ar[1] = Ar[2] = Ar[3] = 0; + + br.BaseStream.Position = 24; + for (int i = 0; i < 4; i++) + { + Ar[i] = br.ReadByte(); + } + + m_ClipSamplingRate = Convert.ToInt32(ConvertToDecimal(Ar)); + + //Frame size + Ar[0] = Ar[1] = Ar[2] = Ar[3] = 0; + + br.BaseStream.Position = 32; + for (int i = 0; i < 2; i++) + { + Ar[i] = br.ReadByte(); + } + + m_ClipFrameSize = Convert.ToInt32(ConvertToDecimal(Ar)); + + //bit depth + Ar[0] = Ar[1] = Ar[2] = Ar[3] = 0; + + br.BaseStream.Position = 34; + for (int i = 0; i < 2; i++) + { + Ar[i] = br.ReadByte(); + } + + m_ClipBitDepth = Convert.ToInt32(ConvertToDecimal(Ar)); + + // AudioLengthBytes + + br.BaseStream.Position = 40; + + for (int i = 0; i < 4; i++) + { + Ar[i] = Convert.ToInt32(br.ReadByte()); + + } + m_lFileAudioLengthInBytes = ConvertToDecimal(Ar); + m_dFileAudioLengthInTime = Calc.ConvertByteToTime(m_lFileAudioLengthInBytes, m_ClipSamplingRate, m_ClipFrameSize) - 10; + + + + /* + //size in time + if (m_AudioLengthBytes != 0) + m_LengthTime = Convert.ToDouble ((m_AudioLengthBytes * 1000)/ (m_SamplingRate * m_FrameSize)); + else + m_LengthTime = 0 ; + */ + + br.Close(); + } + + internal long ConvertToDecimal(int[] Ar) + { + //convert from mod 256 to mod 10 + return Ar[0] + (Ar[1] * 256) + (Ar[2] * 256 * 256) + (Ar[3] * 256 * 256 * 256); + } + + + // Detects the phrases in a clip + // return an ArrayList containing Clips of detected phrases + // param SilVal is value of silence determined by GetSilenceAmplitude function + // param PhraseLength is minimum length of phrases to be detected + // param Before is audio included before actual begining of phrase + internal ArrayList DetectPhrases(long SilVal, long PhraseLength, long BeforePhrase) + { + + // adapt values to frame size + PhraseLength = Calc.AdaptToFrame(PhraseLength, this.FrameSize); + BeforePhrase = Calc.AdaptToFrame(BeforePhrase, this.FrameSize); + + // Block size of audio chunck which is least count of detection + int Block; + + // determine the Block size + if (this.SampleRate > 22500) + { + Block = 96; + } + else + { + Block = 48; + } + + + // Detection starts here + + BinaryReader br = new BinaryReader(File.OpenRead(this.Path)); + + + + // Gets the count of file size + long lSize = this.EndByte + 44; + + // sets position to begining position of clip + header offset of 44 + br.BaseStream.Position = 44 + this.BeginByte; + + // count chunck of silence which trigger phrase detection + long lCountSilGap = PhraseLength / Block; + long lSum = 0; + ArrayList alPhrases = new ArrayList(); + long lCheck = 0; + + // adjustment to prevent end of file exception + lSize = ((lSize / Block) * Block) - 4; + + // flags to indicate phrases and silence + bool boolPhraseDetected = false; + bool boolBeginPhraseDetected = false; + + // scanning of file starts + for (long j = this.BeginByte / Block; j < (lSize / Block); j++) + { + // decodes audio chunck inside block + lSum = BlockSum(br, (j * Block) + 44, Block, this.FrameSize, this.Channels); + + // conditional triggering of phrase detection + if (lSum < SilVal) + { + lCheck++; + //lHighAmpCheck = 0 ; + } + else + { + if ((j - (this.BeginByte / Block)) < lCountSilGap && boolBeginPhraseDetected == false) + { + boolBeginPhraseDetected = true; + alPhrases.Add(Convert.ToInt64(0)); + boolPhraseDetected = true; + lCheck = 0; + //lHighAmpCheck = 0 ; + } + + // checks the length of silence + if (lCheck > lCountSilGap) + { + //sets the detection flag + boolPhraseDetected = true; + + alPhrases.Add((j * Block) - BeforePhrase - this.BeginByte); + + lCheck = 0; + //lHighAmpCheck = 0 ; + } + } + + // end outer For + } + + br.Close(); + + // create clips from time information of phrases added in ArrayList + double dBeginTime; + double dEndTime; + + ArrayList alClipList = new ArrayList(); + + alClipList.Add(boolPhraseDetected); + + + if (boolPhraseDetected == false) + { + alClipList.Add(this); + + + } + else + { + + for (int i = 0; i < alPhrases.Count - 1; i++) + { + dBeginTime = Calc.ConvertByteToTime(Convert.ToInt64(alPhrases[i]), m_ClipSamplingRate, m_ClipFrameSize); + dEndTime = Calc.ConvertByteToTime(Convert.ToInt64(alPhrases[i + 1]), m_ClipSamplingRate, m_ClipFrameSize); + + alClipList.Add(CopyClipPart(dBeginTime, dEndTime)); + } + dBeginTime = Calc.ConvertByteToTime(Convert.ToInt64(alPhrases[alPhrases.Count - 1]), m_ClipSamplingRate, m_ClipFrameSize); + alClipList.Add(CopyClipPart(dBeginTime, m_dEndTime)); + } + + return alClipList; + + } + + // Detecs the maximum size of noise level in a silent sample file + public long GetClipSilenceAmplitude() + { + + BinaryReader brRef = new BinaryReader(File.OpenRead(this.Path)); + + + + // creates counter of size equal to clip size + long lSize = this.EndByte + 44; + + // Block size of audio chunck which is least count of detection + int Block; + + // determine the Block size + if (this.SampleRate > 22500) + { + Block = 96; + } + else + { + Block = 48; + } + + //set reading position after the header + brRef.BaseStream.Position = 44 + this.BeginByte; + long lLargest = 0; + long lBlockSum; + + // adjust the lSize to avoid reading beyond file length + lSize = ((lSize / Block) * Block) - 4; + + // loop to end of file reading collective value of samples in Block and determine highest value denoted by lLargest + // Step size is the Block size + for (long j = 44 + this.BeginByte; j < (lSize); j = j + Block) + { + // BlockSum is function to retrieve average amplitude in Block + lBlockSum = BlockSum(brRef, j, Block, this.FrameSize, this.Channels); + if (lLargest < lBlockSum) + { + lLargest = lBlockSum; + } + } + long SilVal = Convert.ToInt64(lLargest); + + brRef.Close(); + + return SilVal; + + } + + + + // function to compute the amplitude of a small chunck of samples + + long BlockSum(BinaryReader br, long Pos, int Block, int FrameSize, int + Channels) + { + long sum = 0; + long SubSum; + for (int i = 0; i < Block; i = i + FrameSize) + { + br.BaseStream.Position = i + Pos; + SubSum = 0; + if (FrameSize == 1) + { + SubSum = Convert.ToInt64((br.ReadByte())); + + // FrameSize 1 ends + } + else if (FrameSize == 2) + { + if (Channels == 1) + { + SubSum = Convert.ToInt64(br.ReadByte()); + SubSum = SubSum + (Convert.ToInt64(br.ReadByte()) * 256); SubSum = (SubSum * 256) / 65792; + } + else if (Channels == 2) + { + SubSum = Convert.ToInt64(br.ReadByte()); + SubSum = SubSum + Convert.ToInt64(br.ReadByte()); SubSum = SubSum / 2; + } + // FrameSize 2 ends + } + else if (FrameSize == 4) + { + if (Channels == 1) + { + SubSum = Convert.ToInt64(br.ReadByte()); + SubSum = SubSum + + (Convert.ToInt64(br.ReadByte()) * 256); + SubSum = SubSum + + (Convert.ToInt64(br.ReadByte()) * 256 * 256); + SubSum = SubSum + + (Convert.ToInt64(br.ReadByte()) * 256 * 256 * 256); + } + else if (Channels == 2) + { + SubSum = Convert.ToInt64(br.ReadByte()); + + SubSum = SubSum + (Convert.ToInt64(br.ReadByte()) * 256); + + // second channel + SubSum = SubSum + Convert.ToInt64(br.ReadByte()); SubSum = SubSum + (Convert.ToInt64(br.ReadByte()) * 256); + SubSum = (SubSum * 256) / (65792 * 2); + + } + // FrameSize 4 ends + } + sum = sum + SubSum; + + + // Outer, For ends + } + + + + sum = sum / (Block / FrameSize); + + //MessageBox.Show(sum.ToString()) ; + return sum; + } + + + //Generate a unique clip name for each active clip in hash table + internal string GenerateClipName() + { + if (static_lNameCount.Equals(null)) + { + long i = 0; + + string sTempName; + sTempName = i.ToString(); + + while (static_htClipExists.ContainsKey(sTempName) && i < 9000000) + { + + i++; + sTempName = i.ToString(); + } + + if (i < 90000000) + { + static_lNameCount = i; + return sTempName; + } + else + { + return null; + } + } + else + { + static_lNameCount++; + return static_lNameCount.ToString(); + } + + } + + + // checks if a physical file is held by any clip and deletes it if it is free + internal void DeletePhysicalResource() + { + string sClipPath; + sClipPath = m_sPath; + m_sPath = " "; + IDictionaryEnumerator en = static_htClipExists.GetEnumerator(); + + long lCount = 0; + AudioClip ob_Clip; + while (en.MoveNext()) + { + ob_Clip = en.Value as AudioClip; + if (sClipPath == ob_Clip.Path.ToString()) + lCount++; + + } + if (lCount == 0) + { + + FileInfo ob_File = new FileInfo(sClipPath); + try + { + ob_File.Delete(); + } + catch (Exception Ex) + { + MessageBox.Show(Ex.ToString()); + } + + } + } + + // validates the wave file + public bool Validate(string sPath) + { + + BinaryReader Reader = new BinaryReader(File.OpenRead(sPath)); + long RiffStartPos = Reader.BaseStream.Position; + RiffStartPos = 0; + long RiffEndPpos = Reader.BaseStream.Position; + RiffEndPpos = 3; + string sRiff = string.Empty; + string rRiff = string.Empty; + for (long i = RiffStartPos; i <= RiffEndPpos; i++) + { + sRiff = Reader.ReadChar().ToString(); + rRiff = rRiff + sRiff; + } + + long LenPos = Reader.BaseStream.Position; + LenPos = 4; + long LenEndPos = Reader.BaseStream.Position; + LenEndPos = 7; + int bLen = 0; + int brLen = 0; + + for (long i = LenPos; i <= LenEndPos; i++) + { + bLen = Reader.ReadByte(); + brLen = brLen + bLen; + } + + long WaveStartPos = Reader.BaseStream.Position; + WaveStartPos = 8; + long WaveEndPos = Reader.BaseStream.Position; + WaveEndPos = 11; + string sWave = string.Empty; + string rWave = string.Empty; + for (long i = WaveStartPos; i <= WaveEndPos; i++) + { + sWave = Reader.ReadChar().ToString(); + rWave = rWave + sWave; + } + + long fmtStartPos = Reader.BaseStream.Position; + fmtStartPos = 12; + long fmtEndPos = Reader.BaseStream.Position; + fmtEndPos = 15; + string sfmt = string.Empty; + string rfmt = string.Empty; + for (long i = fmtStartPos; i <= fmtEndPos; i++) + { + sfmt = Reader.ReadChar().ToString(); + rfmt = rfmt + sfmt; + } + + long fLenStartPos = Reader.BaseStream.Position; + fLenStartPos = 16; + long fLenEndPos = Reader.BaseStream.Position; + fLenEndPos = 19; + int fLen = 0; + int rfLen = 0; + for (long i = fLenStartPos; i <= fLenEndPos; i++) + { + fLen = Reader.ReadByte(); + rfLen = rfLen + fLen; + } + + long PadStartPos = Reader.BaseStream.Position; + PadStartPos = 20; + long PadEndPos = Reader.BaseStream.Position; + PadEndPos = 21; + int pLen = 0; + int rpLen = 0; + for (long i = PadStartPos; i <= PadEndPos; i++) + { + pLen = Reader.ReadByte(); + rpLen = rpLen + pLen; + } + Reader.Close(); + if (rfLen == 16 || rRiff == "RIFF" && rWave == "WAVE" && rfmt == "fmt" && rpLen == 1) + { + return true; + } + else + { + return false; + } + } + + + public AudioClip ImportClip(string Path, AssetManager manager) + { + string sNewFilePath = Calc.GenerateFileName(".wav", manager.DirPath); + FileInfo ob_FileInfo = new FileInfo(Path); + try + { + ob_FileInfo.CopyTo(sNewFilePath); + } + catch (Exception Ex) + { + MessageBox.Show(Ex.ToString()); + } + AudioClip ob_AudioClip = new AudioClip(sNewFilePath); + return ob_AudioClip; + } + + }// end of class +} \ No newline at end of file Added: trunk/urakawa/application/Obi/Obi/Assets/AudioMediaAsset.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Assets/AudioMediaAsset.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/Assets/AudioMediaAsset.cs 2006-08-03 11:00:48 UTC (rev 772) @@ -0,0 +1,704 @@ +using System; +using System.IO; +using System.Windows.Forms; +using System.Collections; + +namespace Obi.Assets +{ + public class AudioMediaAsset : MediaAsset + { + // member variables + //ArrayList is to be finally changed to internal + public ArrayList m_alClipList = new ArrayList(); + private int m_Channels; + private int m_BitDepth; + private int m_SamplingRate; + private int m_FrameSize; + private long m_lAudioLengthInBytes = 0; + private double m_dAudioLengthInTime = 0; + + private Audio.CalculationFunctions Calc = new Audio.CalculationFunctions(); + public int SampleRate + { + get + { + return m_SamplingRate; + } + } + + public int Channels + { + get + { + return m_Channels; + } + } + + public int BitDepth + { + get + { + return m_BitDepth; + } + } + + internal int FrameSize + { + get + { + return m_FrameSize; + } + } + + public double LengthInMilliseconds + { + get + { + return m_dAudioLengthInTime; + } + } + + public long AudioLengthInBytes + { + get + { + return m_lAudioLengthInBytes; + } + } + + /// <summary> + /// Constructor for an empty AudioMediaAsset. The format is specified by the arguments and there is no initial audio data. + /// </summary> + /// <param name="channels">Number of channels (1 or 2.)</param> + /// <param name="bitDepth">Bit depth (8 or 16?)</param> + /// <param name="sampleRate">Sample rate in Hz.</param> + public AudioMediaAsset(int channels, int bitDepth, int sampleRate) + { + //MessageBox.Show (channels.ToString () + "-" + bitDepth.ToString () + "-" + sampleRate.ToString ()) ; + if (channels >= 1 && channels <= 2 && bitDepth >= 8 && bitDepth <= 16 && sampleRate >= 8000) + { + m_Channels = channels; + m_BitDepth = bitDepth; + m_SamplingRate = sampleRate; + m_FrameSize = (m_BitDepth / 8) * m_Channels; + m_eMediaType = MediaType.Audio; + } + else + throw new Exception("Audio media of this format is not supported"); + } + + /// <summary> + /// Constructor for an audio asset from existing clips. + /// </summary> + /// <param name="clips">The list of <see cref="AudioClip"/>s.</param> + public AudioMediaAsset(ArrayList clips) + { + if (clips != null) + { + m_eMediaType = MediaType.Audio; + AudioClip ob_AudioClip = clips[0] as AudioClip; + m_Channels = ob_AudioClip.Channels; + m_BitDepth = ob_AudioClip.BitDepth; + m_SamplingRate = ob_AudioClip.SampleRate; + m_FrameSize = ob_AudioClip.FrameSize; + m_alClipList = clips; + m_dAudioLengthInTime = 0; + + // compute total time ofasset from clip lengths + for (int i = 0; i < clips.Count; i++) + { + + ob_AudioClip = clips[i] as AudioClip; + + if (m_Channels == ob_AudioClip.Channels && m_BitDepth == ob_AudioClip.BitDepth && m_SamplingRate == ob_AudioClip.SampleRate) + m_dAudioLengthInTime = m_dAudioLengthInTime + ob_AudioClip.LengthInTime; + else + throw new Exception("Clip format do not match Asset format"); + } + + m_lAudioLengthInBytes = Calc.ConvertTimeToByte(m_dAudioLengthInTime, m_SamplingRate, m_FrameSize); + m_lSizeInBytes = m_lAudioLengthInBytes; + } + else + throw new Exception("No AudioMediaAsset can be created as clip list is empty"); + } + + /// <summary> + /// Make a copy of the asset, sharing the same format and data. + /// </summary> + /// <returns>The new, identical asset.</returns> + public override Assets.MediaAsset Copy() + { + AudioMediaAsset ob_AudioMediaAsset = new AudioMediaAsset(this.Channels, this.BitDepth, this.SampleRate); + ob_AudioMediaAsset.m_eMediaType = m_eMediaType; + ob_AudioMediaAsset.m_AssetManager = m_AssetManager; + //if (this.Name != null) + ob_AudioMediaAsset.Name = m_sName; + + + // Add clips to clip list of new asset + for (int i = 0; i < this.m_alClipList.Count; i++) + ob_AudioMediaAsset.m_alClipList.Add(this.m_alClipList[i]); + + ob_AudioMediaAsset.m_FrameSize = m_FrameSize; + ob_AudioMediaAsset.m_dAudioLengthInTime = m_dAudioLengthInTime; + ob_AudioMediaAsset.m_lAudioLengthInBytes = m_lAudioLengthInBytes; + ob_AudioMediaAsset.m_lSizeInBytes = m_lSizeInBytes; + return ob_AudioMediaAsset; + } + + + /// <summary> + /// Remove the asset from the project, and actually delete all corresponding resources. + /// Throw an exception if the asset could not be deleted. + /// </summary> + public override void Delete() + { + + // remove the asset from AssetManager + if (m_AssetManager != null) + { + m_AssetManager.Assets.Remove(this.Name); + m_AssetManager.m_htExists.Remove(this.Name); + } + //if (VirtualAudioBackend.AssetManager.static_htExists.ContainsKey (this.Name)) + //VirtualAudioBackend.AssetManager.static_htExists.Remove (this.Name) ; + + // clean up physical resources + AudioClip ob_Clip; + + for (int i = 0; i < m_alClipList.Count; i++) + { + ob_Clip = m_alClipList[i] as AudioClip; + ob_Clip.DeletePhysicalResource(); + + // Remove clip from clip list hash table + AudioClip.static_htClipExists.Remove(ob_Clip.Name); + }// current clip ends + + m_alClipList = null; + m_AssetManager = null; + m_sName = null; + + } + + public void AppendBytes(byte[] data) + { + } + + public Assets.AudioMediaAsset GetChunk(long beginPosition, long endPosition) + { + double dBeginTime = Calc.ConvertByteToTime(beginPosition, m_SamplingRate, m_FrameSize); + double dEndTime = Calc.ConvertByteToTime(endPosition, m_SamplingRate, m_FrameSize); + return GetChunk(dBeginTime, dEndTime); + } + + public Assets.AudioMediaAsset GetChunk(double beginTime, double endTime) + { + // checks if the input parameters are in bounds of asset and in order + if (beginTime >= 0 && beginTime < endTime && endTime <= m_dAudioLengthInTime) + { + ArrayList alNewClipList = new ArrayList(); + + // finds the data for chunk begin point including Clip index, local clip time etc from FindClipToProcess in form of ArrayList and copy it in an ArrayList active in this function + ArrayList alBeginList = new ArrayList(FindClipToProcess(beginTime)); + //BeginClipIndex is index of clip in Asset Clip list which is to be split at begin point + int BeginClipIndex = Convert.ToInt32(alBeginList[0]); + // dBeginTimeMark is the time marking in target clip at which point split has to be made + double dBeginTimeMark = Convert.ToDouble(alBeginList[1]); + + // All above steps are repeated for finding marking for EndTime of chunk + ArrayList alEndList = new ArrayList(FindClipToProcess(endTime)); + int EndClipIndex = Convert.ToInt32(alEndList[0]); + double dEndTimeMark = Convert.ToDouble(alEndList[1]); + + // transfer clip to process to separate object + AudioClip ob_BeginClip = m_alClipList[BeginClipIndex] as AudioClip; + + + // if begin time and end time lie in same clip then make a new clip from that clip create an asset for it and return + if (BeginClipIndex == EndClipIndex) + { + AudioClip ob_NewClip = ob_BeginClip.CopyClipPart(dBeginTimeMark, dEndTimeMark); + alNewClipList.Add(ob_NewClip); + + } + else + { + // Normalise EndClip from m_ClipList to original class + AudioClip ob_EndClip = m_alClipList[EndClipIndex] as AudioClip; + + // branch if BeginClip time mark is not end of target clip + if (dBeginTimeMark < ob_BeginClip.LengthInTime) + { + // derive new begin clip from target clip + AudioClip ob_NewBeginClip = ob_BeginClip.CopyClipPart(dBeginTimeMark, ob_BeginClip.LengthInTime); + //if (ob_NewBeginClip.Equals (null) ) + //MessageBox.Show ("if (dBeginTimeMark <ob_BeginClip.LengthInTime )") ; + // Add new derived begin clip to clip list of return asset + alNewClipList.Add(ob_NewBeginClip); + } + + // add clips between beginClip index and EndClip index to ClipList of return asset excluding begin and end clips + for (int i = BeginClipIndex + 1; i < EndClipIndex; i++) + { + alNewClipList.Add(m_alClipList[i]); + + } + + // if EndClip time mark is not at beginning of target clip then do following + if (dEndTimeMark > 0) + { + // Create new endClip to be added to Clip list of return asset from target end clip + AudioClip ob_NewEndClip = ob_EndClip.CopyClipPart(0, dEndTimeMark); + + //if (ob_NewEndClip.Equals (null) ) + //MessageBox.Show ("if (dEndTimeMark > 0)") ; + + + alNewClipList.Add(ob_NewEndClip); + } + + } + + + // create return AudioMediaAsset from new clip list + AudioMediaAsset ob_AudioMediaAsset = new AudioMediaAsset(alNewClipList); + return ob_AudioMediaAsset; + } + else + throw new Exception("Invalid input parameters"); + + } + + public void InsertAsset(Assets.AudioMediaAsset chunk, long position) + { + double dPosition = Calc.ConvertByteToTime(position, m_SamplingRate, m_FrameSize); + InsertAsset(chunk, dPosition); + } + + public void InsertAsset(Assets.AudioMediaAsset chunk, double time) + { + // checks if audio formats of original asset and chunk asset are of same formats + if (CompareAudioAssetFormat(this, chunk) == true && time <= m_dAudioLengthInTime && time >= 0) + { + // creates the temporary blank asset + AudioMediaAsset ob1 = new AudioMediaAsset(this.Channels, this.BitDepth, this.SampleRate); + + // if Chunk is to be inserted somewhere in between of original asset + if (time > -0 && time < m_dAudioLengthInTime) + { + // copies part of original asset before insertion time to temporary ob1 asset + ob1 = GetChunk(0, time) as AudioMediaAsset; + // merges the chunk to temp ob1 asset + ob1.MergeWith(chunk); + // copies part of original assetafter insertion time to temporary ob2 asset + AudioMediaAsset ob2 = GetChunk(time, this.LengthInMilliseconds) as AudioMediaAsset; + // merge ob2 at back of ob1 so as to finalise ob1 + ob1.MergeWith(ob2); + + + } + // if chunk asset is to be placed before original asset + else if (time == 0) + { + // points chunk to ob1 and merge original asset at back of ob1 + ob1 = chunk as AudioMediaAsset; + ob1.MergeWith(this); + } + // clears clip list of original asset and copy clips in clip list of ob1 to it + m_alClipList.Clear(); + for (int i = 0; i < ob1.m_alClipList.Count; i++) + { + m_alClipList.Add(ob1.m_alClipList[i]); + } + m_dAudioLengthInTime = ob1.LengthInMilliseconds; + m_lAudioLengthInBytes = ob1.AudioLengthInBytes; + m_lSizeInBytes = ob1.SizeInBytes; + + // if Chunk is to be appended to original asset + if (time == m_dAudioLengthInTime) + { + MergeWith(chunk); + } + + } // end of main format check + else + { + throw new Exception("Incompatible format or Insertion time not in asset range"); + } + + + // end of insert chunk function + } + + public Assets.AudioMediaAsset DeleteChunk(long beginPosition, long endPosition) + { + double dBeginTime = Calc.ConvertByteToTime(beginPosition, m_SamplingRate, m_FrameSize); + double dEndTime = Calc.ConvertByteToTime(endPosition, m_SamplingRate, m_FrameSize); + return DeleteChunk(dBeginTime, dEndTime); + } + + public Assets.AudioMediaAsset DeleteChunk(double beginTime, double endTime) + { + // checks if beginTime and EndTime is within bounds of asset and are in order + if (beginTime >= 0 && beginTime < endTime && endTime <= m_dAudioLengthInTime) + { + // create new asset from original asset from part which has to be deleted and keep for returning back + AudioMediaAsset ob_NewAsset = GetChunk(beginTime, endTime) as AudioMediaAsset; + + // create two temp assets for holding clips in front of BeginTime and a asset to hold Clips after endTime + AudioMediaAsset ob_FromtAsset = new AudioMediaAsset(m_Channels, m_BitDepth, m_SamplingRate); + AudioMediaAsset ob_RearAsset = new AudioMediaAsset(m_Channels, m_BitDepth, m_SamplingRate); + + // if deletion part lies somewhere in between body of asset + if (beginTime != 0 && endTime != m_dAudioLengthInTime) + { + // Copy respective clips to Front and Rear Assets and merge them + ob_FromtAsset = GetChunk(0, beginTime) as AudioMediaAsset; + + ob_RearAsset = GetChunk(endTime, m_dAudioLengthInTime) as AudioMediaAsset; + + ob_FromtAsset.MergeWith(ob_RearAsset); + } + // if deletion is from in between to end of asset + else if (beginTime != 0) + { + // copies only front part of asset + ob_FromtAsset = GetChunk(0, beginTime) as AudioMediaAsset; + } + // if Deletion is in front including start + else if (endTime != m_dAudioLengthInTime) + { + // copies end part of asset to front asset + ob_FromtAsset = GetChunk(endTime, m_dAudioLengthInTime) as AudioMediaAsset; + } + + // replaces clip list of original asset with clip list of front asset + m_alClipList = ob_FromtAsset.m_alClipList; + m_dAudioLengthInTime = ob_FromtAsset.LengthInMilliseconds; + m_lAudioLengthInBytes = ob_FromtAsset.AudioLengthInBytes; + m_lSizeInBytes = ob_FromtAsset.SizeInBytes; + + ob_FromtAsset = null; + + return ob_NewAsset; + } + else + throw new Exception("Invalid input parameters"); + + + } + + internal ArrayList FindClipToProcess(double Time) + { + // checks if the time taken as input parameter is within bounds of Asset + if (Time <= m_dAudioLengthInTime && Time >= 0) + { + + AudioClip ob_AudioClip = m_alClipList[0] as AudioClip; + + // Add the length in time of each clip and add untill time parameter is close enough upto atmost one clip distance + double TimeSum = 0; + int Count = 0; + while (TimeSum <= Time && TimeSum < m_dAudioLengthInTime) + { + if (Count < m_alClipList.Count) + ob_AudioClip = m_alClipList[Count] as AudioClip; + else + { + + break; + } + TimeSum = TimeSum + ob_AudioClip.LengthInTime; + Count++; + } + // decrement count by one so as to compensate one increment done to it in while loop + Count--; + + // find localtime of target clip + ob_AudioClip = m_alClipList[Count] as AudioClip; + double NewClipTime = TimeSum - Time; + + NewClipTime = ob_AudioClip.LengthInTime - NewClipTime; + + // create ArrayList to return at index one the " target clip index" and in second index "local clip time to process" + ArrayList alReturnList = new ArrayList(); + alReturnList.Add(Count); + + alReturnList.Add(NewClipTime); + + return alReturnList; + } + else + throw new Exception("find clip time is out of bound of Asset time"); + + } + + + public override void MergeWith(Assets.MediaAsset next) + { + + AudioMediaAsset ob_AudioMediaAsset = next as AudioMediaAsset; + // checks if the formats of both clips is same + if (CompareAudioAssetFormat(this, ob_AudioMediaAsset) == true) + { + // append clips of next asset to clip list of original asset + for (int i = 0; i < ob_AudioMediaAsset.m_alClipList.Count; i++) + { + m_alClipList.Add(ob_AudioMediaAsset.m_alClipList[i]); + } + m_dAudioLengthInTime = m_dAudioLengthInTime + ob_AudioMediaAsset.LengthInMilliseconds; + m_lAudioLengthInBytes = m_lAudioLengthInBytes + ob_AudioMediaAsset.AudioLengthInBytes; + m_lSizeInBytes = m_lSizeInBytes + ob_AudioMediaAsset.SizeInBytes; + next = null; + } + else + throw new Exception("Cannot merge assets: incompatible format"); + } + + public Assets.AudioMediaAsset Split(long position) + { + double dTime = Calc.ConvertByteToTime(position, m_SamplingRate, m_FrameSize); + return Split(dTime); + } + + public Assets.AudioMediaAsset Split(double time) + { + // checks if time parameter is in bounds of asset + if (time >= 0 && time <= m_dAudioLengthInTime) + { + // create new asset for clips after time specified in parameter + + AudioMediaAsset ob_AudioMediaAsset = GetChunk(time, m_dAudioLengthInTime) as AudioMediaAsset; + + //// modify original asset + ArrayList alMarksList = new ArrayList(FindClipToProcess(time)); + int ClipIndex = Convert.ToInt32(alMarksList[0]); + double dClipTimeMark = Convert.ToDouble(alMarksList[1]); + + + AudioClip ob_AudioClip = m_alClipList[ClipIndex] as AudioClip; + + if (dClipTimeMark > 0 && dClipTimeMark < ob_AudioClip.LengthInTime) + { + ob_AudioClip.Split(dClipTimeMark); + } + else if (dClipTimeMark == 0) + { + ClipIndex--; + } + //MessageBox.Show (m_alClipList.Count.ToString () ) ; + // Remove clips after clip index + m_alClipList.RemoveRange(ClipIndex + 1, (m_alClipList.Count - ClipIndex - 1)); + + + m_dAudioLengthInTime = m_dAudioLengthInTime - ob_AudioMediaAsset.LengthInMilliseconds; + m_lAudioLengthInBytes = m_lAudioLengthInBytes - ob_AudioMediaAsset.AudioLengthInBytes; + m_lSizeInBytes = m_lAudioLengthInBytes; + + return ob_AudioMediaAsset; + } + else + throw new Exception("Cannot split: parameter value out of bound of asset"); + } + + public long GetSilenceAmplitude(Assets.AudioMediaAsset silenceRef) + { + AudioMediaAsset ob_AudioMediaSilenceRef = silenceRef as AudioMediaAsset; + AudioClip Ref = ob_AudioMediaSilenceRef.m_alClipList[0] as AudioClip; + return Ref.GetClipSilenceAmplitude(); + + } + + public ArrayList ApplyPhraseDetection(long threshold, long length, long before) + { + double dLength = Calc.ConvertByteToTime(length, m_SamplingRate, m_FrameSize); + double dBefore = Calc.ConvertByteToTime(before, m_SamplingRate, m_FrameSize); + + return ApplyPhraseDetection(threshold, dLength, dBefore); + } + + public ArrayList ApplyPhraseDetection(long threshold, double length, double before) + { + // convert input parameters from time to byte + long lLength = Calc.ConvertTimeToByte(length, m_SamplingRate, m_FrameSize); + long lBefore = Calc.ConvertTimeToByte(before, m_SamplingRate, m_FrameSize); + + + AudioClip ob_Clip; + // AssetList is list of assets returned by phrase detector + ArrayList alAssetList = new ArrayList(); + // clipList is clip list for each return asset + ArrayList alClipList; + AudioMediaAsset ob_Asset = new AudioMediaAsset(m_Channels, m_BitDepth, m_SamplingRate); + + + // apply phrase detection on each clip in clip list of this asset + for (int i = 0; i < m_alClipList.Count; i++) + { + ob_Clip = m_alClipList[i] as AudioClip; + alClipList = ob_Clip.DetectPhrases(threshold, lLength, lBefore); + //MessageBox.Show (alClipList.Count.ToString () + "Clip Count") ; + if (Convert.ToBoolean(alClipList[0]) == false) + { + + //MessageBox.Show ("bool is False") ; + ob_Asset.AddClip(alClipList[1] as AudioClip); + + if (i == m_alClipList.Count - 1 && ob_Asset.m_alClipList != null) + { + alAssetList.Add(ob_Asset); + //MessageBox.Show ("last Asset added") ; + } + ... [truncated message content] |
From: <ju...@us...> - 2006-08-03 11:50:36
|
Revision: 776 Author: julienq Date: 2006-08-03 04:50:20 -0700 (Thu, 03 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=776&view=rev Log Message: ----------- Small change in Audio Player (ported from previous change to old project) Problem when recreating assets when loading a file... to be corrected. Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Audio/AudioDevice.cs trunk/urakawa/application/Obi/Obi/Audio/AudioPlayer.cs trunk/urakawa/application/Obi/Obi/Project.cs trunk/urakawa/application/Obi/Obi/Visitors/AssetVisitor.cs Modified: trunk/urakawa/application/Obi/Obi/Audio/AudioDevice.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Audio/AudioDevice.cs 2006-08-03 11:29:15 UTC (rev 775) +++ trunk/urakawa/application/Obi/Obi/Audio/AudioDevice.cs 2006-08-03 11:50:20 UTC (rev 776) @@ -4,7 +4,18 @@ { public class AudioDevice { - public AudioDevice() + /// <summary> + /// An informative string for this device. + /// </summary> + public string Name + { + get + { + return ""; + } + } + + internal AudioDevice() { } } Modified: trunk/urakawa/application/Obi/Obi/Audio/AudioPlayer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Audio/AudioPlayer.cs 2006-08-03 11:29:15 UTC (rev 775) +++ trunk/urakawa/application/Obi/Obi/Audio/AudioPlayer.cs 2006-08-03 11:50:20 UTC (rev 776) @@ -619,6 +619,7 @@ m_br =new BinaryReader (File.OpenRead(ob_Clip.Path)) ; long lPositionInClip = Calc.ConvertTimeToByte (dPositionInClip , m_SamplingRate , m_FrameSize) + 44; m_br.BaseStream.Position = lPositionInClip ; + lPositionInClip = Calc.AdaptToFrame(lPositionInClip, m_FrameSize); m_lClipByteCount = lPositionInClip - ob_Clip.BeginByte ; for (long l = 0 ; l < ob_Clip.LengthInBytes && l < 2* (m_RefreshLength ); l=l+m_FrameSize) { Modified: trunk/urakawa/application/Obi/Obi/Project.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.cs 2006-08-03 11:29:15 UTC (rev 775) +++ trunk/urakawa/application/Obi/Obi/Project.cs 2006-08-03 11:50:20 UTC (rev 776) @@ -225,7 +225,7 @@ Uri absoluteAssPath = new Uri(new Uri(xukPath), mAssPath); mAssManager = new Assets.AssetManager(absoluteAssPath.AbsolutePath); // Recreate the assets from the phrase nodes - getPresentation().getRootNode().acceptDepthFirst(new Visitors.AssetVisitor()); + getPresentation().getRootNode().acceptDepthFirst(new Visitors.AssetVisitor(mAssManager)); StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Opened)); } else Modified: trunk/urakawa/application/Obi/Obi/Visitors/AssetVisitor.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Visitors/AssetVisitor.cs 2006-08-03 11:29:15 UTC (rev 775) +++ trunk/urakawa/application/Obi/Obi/Visitors/AssetVisitor.cs 2006-08-03 11:50:20 UTC (rev 776) @@ -9,6 +9,13 @@ { class AssetVisitor: ICoreNodeVisitor { + private Assets.AssetManager mAssManager; + + public AssetVisitor(Assets.AssetManager assManager) + { + mAssManager = assManager; + } + #region ICoreNodeVisitor Members public void postVisit(ICoreNode node) @@ -30,8 +37,9 @@ clips.Add(new Assets.AudioClip(audio.getLocation().Location, audio.getClipBegin().getAsMilliseconds(), audio.getClipEnd().getAsMilliseconds())); } - Assets.AudioMediaAsset asset = new Assets.AudioMediaAsset(clips); - asset.Name = ((TextMedia)Project.GetMediaForChannel((CoreNode)node, Project.AnnotationChannel)).getText(); + Assets.AudioMediaAsset asset = mAssManager.NewAudioMediaAsset(clips); + mAssManager.RenameAsset(asset, + ((TextMedia)Project.GetMediaForChannel((CoreNode)node, Project.AnnotationChannel)).getText()); AssetProperty assProp = (AssetProperty)node.getPresentation().getPropertyFactory().createProperty("AssetProperty", ObiPropertyFactory.ObiNS); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <su...@us...> - 2006-08-04 05:27:08
|
Revision: 795 Author: summy Date: 2006-08-03 22:26:58 -0700 (Thu, 03 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=795&view=rev Log Message: ----------- Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/messages.Designer.cs trunk/urakawa/application/Obi/Obi/messages.resx Modified: trunk/urakawa/application/Obi/Obi/messages.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/messages.Designer.cs 2006-08-04 05:11:41 UTC (rev 794) +++ trunk/urakawa/application/Obi/Obi/messages.Designer.cs 2006-08-04 05:26:58 UTC (rev 795) @@ -397,26 +397,22 @@ return ResourceManager.GetString("play", resourceCulture); } } - - + /// <summary> - /// Looks up a localized string similar to &Record. + /// Looks up a localized string similar to Ready.. /// </summary> - internal static string Record - { - get - { - return ResourceManager.GetString("Record", resourceCulture); + internal static string ready { + get { + return ResourceManager.GetString("ready", resourceCulture); } } - -/// + /// <summary> - /// Looks up a localized string similar to Ready.. + /// Looks up a localized string similar to &Record. /// </summary> - internal static string ready { + internal static string Record { get { - return ResourceManager.GetString("ready", resourceCulture); + return ResourceManager.GetString("Record", resourceCulture); } } Modified: trunk/urakawa/application/Obi/Obi/messages.resx =================================================================== --- trunk/urakawa/application/Obi/Obi/messages.resx 2006-08-04 05:11:41 UTC (rev 794) +++ trunk/urakawa/application/Obi/Obi/messages.resx 2006-08-04 05:26:58 UTC (rev 795) @@ -284,4 +284,8 @@ <value>Could not find path to asset directory.</value> <comment>JQ</comment> </data> + <data name="Record" xml:space="preserve"> + <value>&Record</value> + <comment>RecordButtonLabel</comment> + </data> </root> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2006-08-04 12:01:53
|
Revision: 807 Author: julienq Date: 2006-08-04 05:01:20 -0700 (Fri, 04 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=807&view=rev Log Message: ----------- Touched section strip and strip manager. Replace node position visitor with *section* node position visitor. Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Obi.csproj trunk/urakawa/application/Obi/Obi/Project.cs trunk/urakawa/application/Obi/Obi/UserControls/AudioBlock.cs trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs trunk/urakawa/application/Obi/Obi/UserControls/SectionStrip.Designer.cs trunk/urakawa/application/Obi/Obi/UserControls/SectionStrip.cs trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs trunk/urakawa/application/Obi/Obi/Visitors/UndeleteSubtree.cs trunk/urakawa/application/Obi/Obi/messages.Designer.cs trunk/urakawa/application/Obi/Obi/messages.resx Added Paths: ----------- trunk/urakawa/application/Obi/Obi/Visitors/SectionNodePosition.cs Removed Paths: ------------- trunk/urakawa/application/Obi/Obi/Visitors/NodePositionVisitor.cs Modified: trunk/urakawa/application/Obi/Obi/Obi.csproj =================================================================== --- trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-04 11:49:07 UTC (rev 806) +++ trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-04 12:01:20 UTC (rev 807) @@ -79,6 +79,7 @@ <Compile Include="Commands\Command.cs" /> <Compile Include="Commands\CommandManager.cs" /> <Compile Include="Commands\ConsCommand.cs" /> + <Compile Include="Commands\Strips\AddPhrase.cs" /> <Compile Include="Commands\TOC\AddSection.cs" /> <Compile Include="Commands\TOC\DeleteSection.cs" /> <Compile Include="Commands\TOC\IncreaseSectionLevel.cs" /> @@ -282,8 +283,8 @@ <Compile Include="UserProfile.cs" /> <Compile Include="Visitors\AssetVisitor.cs" /> <Compile Include="Visitors\DescendantsVisitor.cs" /> - <Compile Include="Visitors\NodePositionVisitor.cs" /> <Compile Include="Visitors\PhraseEnumerator.cs" /> + <Compile Include="Visitors\SectionNodePosition.cs" /> <Compile Include="Visitors\UndeleteSubtree.cs" /> </ItemGroup> <ItemGroup> Modified: trunk/urakawa/application/Obi/Obi/Project.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.cs 2006-08-04 11:49:07 UTC (rev 806) +++ trunk/urakawa/application/Obi/Obi/Project.cs 2006-08-04 12:01:20 UTC (rev 807) @@ -402,7 +402,7 @@ { parent.insert(sibling, parent.indexOf(contextNode) + 1); } - Visitors.NodePositionVisitor visitor = new Visitors.NodePositionVisitor(sibling); + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(sibling); getPresentation().getRootNode().acceptDepthFirst(visitor); AddedSectionNode(this, new Events.Node.AddedSectionNodeEventArgs(origin, sibling, parent.indexOf(sibling), visitor.Position)); @@ -427,7 +427,7 @@ CoreNode child = CreateSectionNode(); if (parent == null) parent = getPresentation().getRootNode(); parent.appendChild(child); - Visitors.NodePositionVisitor visitor = new Visitors.NodePositionVisitor(child); + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(child); getPresentation().getRootNode().acceptDepthFirst(visitor); AddedSectionNode(this, new Events.Node.AddedSectionNodeEventArgs(origin, child, parent.indexOf(child), visitor.Position)); mUnsaved = true; @@ -483,7 +483,7 @@ if (origin != this) { CoreNode parent = (CoreNode)node.getParent(); - Visitors.NodePositionVisitor visitor = new Visitors.NodePositionVisitor(node); + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); getPresentation().getRootNode().acceptDepthFirst(visitor); command = new Commands.TOC.DeleteSection(this, node, parent, parent.indexOf(node), visitor.Position); } @@ -510,7 +510,7 @@ if (origin != this) { CoreNode parent = (CoreNode)node.getParent(); - Visitors.NodePositionVisitor visitor = new Visitors.NodePositionVisitor(node); + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); getPresentation().getRootNode().acceptDepthFirst(visitor); //we need to save the state of the node before it is moved command = new Commands.TOC.MoveSectionUp @@ -523,7 +523,7 @@ { CoreNode newParent = (CoreNode)node.getParent(); - Visitors.NodePositionVisitor visitor = new Visitors.NodePositionVisitor(node); + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); getPresentation().getRootNode().acceptDepthFirst(visitor); MovedNode(this, new Events.Node.MovedNodeEventArgs @@ -624,7 +624,7 @@ if (origin != this) { CoreNode parent = (CoreNode)node.getParent(); - Visitors.NodePositionVisitor visitor = new Visitors.NodePositionVisitor(node); + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); getPresentation().getRootNode().acceptDepthFirst(visitor); //we need to save the state of the node before it is moved command = new Commands.TOC.MoveSectionDown @@ -637,7 +637,7 @@ { CoreNode newParent = (CoreNode)node.getParent(); - Visitors.NodePositionVisitor visitor = new Visitors.NodePositionVisitor(node); + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); getPresentation().getRootNode().acceptDepthFirst(visitor); MovedNode(this, new Events.Node.MovedNodeEventArgs @@ -704,7 +704,7 @@ if (origin != this) { CoreNode parent = (CoreNode)node.getParent(); - Visitors.NodePositionVisitor visitor = new Visitors.NodePositionVisitor(node); + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); getPresentation().getRootNode().acceptDepthFirst(visitor); //we need to save the state of the node before it is altered command = new Commands.TOC.IncreaseSectionLevel @@ -717,7 +717,7 @@ { CoreNode newParent = (CoreNode)node.getParent(); - Visitors.NodePositionVisitor visitor = new Visitors.NodePositionVisitor(node); + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); getPresentation().getRootNode().acceptDepthFirst(visitor); //IncreasedNodeLevel(this, new Events.Node.NodeEventArgs(origin, node)); @@ -876,6 +876,7 @@ Assets.AudioMediaAsset asset = mAssManager.ImportAudioMediaAsset(e.AssetPath); CoreNode node = CreatePhraseNode(asset); e.SectionNode.appendChild(node); + ImportedAsset(this, new Events.Node.NodeEventArgs(sender, node)); mUnsaved = true; StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); Modified: trunk/urakawa/application/Obi/Obi/UserControls/AudioBlock.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/AudioBlock.cs 2006-08-04 11:49:07 UTC (rev 806) +++ trunk/urakawa/application/Obi/Obi/UserControls/AudioBlock.cs 2006-08-04 12:01:20 UTC (rev 807) @@ -80,12 +80,12 @@ private void AudioBlock_Click(object sender, EventArgs e) { - mManager.SelectedPhrase = mNode; + mManager.SelectedPhraseNode = mNode; } private void AudioBlock_DoubleClick(object sender, EventArgs e) { - mManager.SelectedPhrase = mNode; + mManager.SelectedPhraseNode = mNode; Dialogs.Play dialog = new Dialogs.Play(mNode); dialog.ShowDialog(); } @@ -93,7 +93,7 @@ //mg: for tab navigation et al private void AudioBlock_enter(object sender, EventArgs e) { - mManager.SelectedPhrase = mNode; + mManager.SelectedPhraseNode = mNode; System.Diagnostics.Debug.Print("Audioblock:tabindex:" + this.TabIndex.ToString()); MarkSelected(); } Modified: trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs 2006-08-04 11:49:07 UTC (rev 806) +++ trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs 2006-08-04 12:01:20 UTC (rev 807) @@ -145,8 +145,8 @@ { InitializeComponent(); //mg 20060804: set two convenince attrs on the toc and tree views - mTOCPanel.ParentControl = this; - mStripManagerPanel.ParentControl = this; + mTOCPanel.ProjectPanel = this; + mStripManagerPanel.ProjectPanel = this; //end mg Project = null; } Modified: trunk/urakawa/application/Obi/Obi/UserControls/SectionStrip.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/SectionStrip.Designer.cs 2006-08-04 11:49:07 UTC (rev 806) +++ trunk/urakawa/application/Obi/Obi/UserControls/SectionStrip.Designer.cs 2006-08-04 12:01:20 UTC (rev 807) @@ -38,9 +38,9 @@ | System.Windows.Forms.AnchorStyles.Right))); this.mFlowLayoutPanel.AutoSize = true; this.mFlowLayoutPanel.BackColor = System.Drawing.SystemColors.ControlLight; - this.mFlowLayoutPanel.Location = new System.Drawing.Point(2, 19); + this.mFlowLayoutPanel.Location = new System.Drawing.Point(2, 25); this.mFlowLayoutPanel.Name = "mFlowLayoutPanel"; - this.mFlowLayoutPanel.Size = new System.Drawing.Size(237, 10); + this.mFlowLayoutPanel.Size = new System.Drawing.Size(237, 0); this.mFlowLayoutPanel.TabIndex = 2; this.mFlowLayoutPanel.WrapContents = false; this.mFlowLayoutPanel.Click += new System.EventHandler(this.mFlowLayoutPanel_Click); @@ -71,7 +71,7 @@ this.Controls.Add(this.mFlowLayoutPanel); this.Margin = new System.Windows.Forms.Padding(0, 0, 0, 3); this.Name = "SectionStrip"; - this.Size = new System.Drawing.Size(241, 32); + this.Size = new System.Drawing.Size(241, 28); this.Enter += new System.EventHandler(this.SectionStrip_enter); this.Click += new System.EventHandler(this.SectionStrip_Click); this.Leave += new System.EventHandler(this.SectionStrip_leave); Modified: trunk/urakawa/application/Obi/Obi/UserControls/SectionStrip.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/SectionStrip.cs 2006-08-04 11:49:07 UTC (rev 806) +++ trunk/urakawa/application/Obi/Obi/UserControls/SectionStrip.cs 2006-08-04 12:01:20 UTC (rev 807) @@ -152,7 +152,7 @@ private void SectionStrip_Click(object sender, EventArgs e) { - if (mManager.SelectedSection == mNode) + if (mManager.SelectedSectionNode == mNode) { //mg: changed renaming to not be //default state at focus: @@ -160,7 +160,7 @@ } else { - mManager.SelectedSection = mNode; + mManager.SelectedSectionNode = mNode; } } //mg: for tab navigation et al @@ -174,7 +174,7 @@ private void SectionStrip_enter(object sender, EventArgs e) { //System.Diagnostics.Debug.Print("SectionStrip:tabindex:" + this.TabIndex.ToString()); - mManager.SelectedSection = mNode; + mManager.SelectedSectionNode = mNode; this.MarkSelected(); } @@ -264,8 +264,8 @@ /// </summary> private void mFlowLayoutPanel_Click(object sender, EventArgs e) { - mManager.SelectedSection = mNode; - mManager.SelectedPhrase = null; + mManager.SelectedSectionNode = mNode; + mManager.SelectedPhraseNode = null; } #endregion Modified: trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs 2006-08-04 11:49:07 UTC (rev 806) +++ trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs 2006-08-04 12:01:20 UTC (rev 807) @@ -31,7 +31,8 @@ public event Events.Strip.SelectedHandler SelectedStrip; #region properties - public CoreNode SelectedSection + + public CoreNode SelectedSectionNode { get { @@ -59,7 +60,7 @@ } } - public CoreNode SelectedPhrase + public CoreNode SelectedPhraseNode { get { @@ -71,7 +72,7 @@ mSelectedPhrase = value; if (mSelectedPhrase != null) { - SelectedSection = (CoreNode)mSelectedPhrase.getParent(); + SelectedSectionNode = (CoreNode)mSelectedPhrase.getParent(); mPhraseNodeMap[mSelectedPhrase].MarkSelected(); playAssetToolStripMenuItem.Enabled = true; splitAudioBlockToolStripMenuItem.Enabled = true; @@ -90,7 +91,7 @@ /// Get the SectionStrip that is currently seleced, or null if no current selection exists. /// </summary> // mg20060804 - internal SectionStrip ControlOfSelectedSection + internal SectionStrip SelectedSectionStrip { get { @@ -104,7 +105,7 @@ /// Get the control of the Block (phrase) that is currently seleced, or null if no current selection exists. /// </summary> // mg20060804 - internal AbstractBlock ControlOfSelectedBlock + internal AbstractBlock SelectedBlock { get { @@ -130,7 +131,7 @@ /// Get and set the parent ProjectPanel control /// </summary> // mg 20060804 - internal ProjectPanel ParentControl + internal ProjectPanel ProjectPanel { get { @@ -168,8 +169,8 @@ //mg: if (mFlowLayoutPanel.Controls.Count > 0) this.ReflowTabOrder(mFlowLayoutPanel.Controls[0]); - SelectedSection = null; - SelectedPhrase = null; + SelectedSectionNode = null; + SelectedPhraseNode = null; } #region Synchronization visitor @@ -198,7 +199,7 @@ strip.Node = (CoreNode)node; mSectionNodeMap[(CoreNode)node] = strip; mFlowLayoutPanel.Controls.Add(strip); - SelectedSection = strip.Node; + SelectedSectionNode = strip.Node; } else if (Project.GetNodeType((CoreNode)node) == NodeType.Phrase) { @@ -211,7 +212,7 @@ block.Label = annotation.getText(); block.Time = (Math.Round(Project.GetAudioMediaAsset((CoreNode)node).LengthInMilliseconds / 1000)).ToString() + "s"; strip.AppendAudioBlock(block); - SelectedPhrase = block.Node; + SelectedPhraseNode = block.Node; } return true; } @@ -234,7 +235,7 @@ mSectionNodeMap[node] = strip; mFlowLayoutPanel.Controls.Add(strip); mFlowLayoutPanel.Controls.SetChildIndex(strip, position); - SelectedSection = node; + SelectedSectionNode = node; if (rename) strip.StartRenaming(); } @@ -255,11 +256,14 @@ e.Node.acceptDepthFirst(visitor); foreach (CoreNode node in visitor.Nodes) { - SectionStrip strip = mSectionNodeMap[node]; - mFlowLayoutPanel.Controls.Remove(strip); + if (Project.GetNodeType(node) == NodeType.Section) + { + SectionStrip strip = mSectionNodeMap[node]; + mFlowLayoutPanel.Controls.Remove(strip); + } } //mg: - this.ReflowTabOrder(mSectionNodeMap[e.Node]); + //this.ReflowTabOrder(mSectionNodeMap[e.Node]); } } @@ -312,7 +316,7 @@ internal void importAssetToolStripMenuItem_Click(object sender, EventArgs e) { - if (SelectedSection != null) + if (SelectedSectionNode != null) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "WAVE file (*.wav)|*.wav|Any file|*.*"; @@ -370,10 +374,10 @@ { if (mSelectedSection!=null) { - ParentControl.TOCPanel.SetSelectedSection(mSelectedSection); + ProjectPanel.TOCPanel.SetSelectedSection(mSelectedSection); //since the tree can be hidden: - if (ParentControl.TOCPanel.Visible == true) - ParentControl.TOCPanel.Focus(); + if (ProjectPanel.TOCPanel.Visible == true) + ProjectPanel.TOCPanel.Focus(); } } @@ -398,14 +402,14 @@ private void mFlowLayoutPanel_Click(object sender, EventArgs e) { - SelectedSection = null; - SelectedPhrase = null; + SelectedSectionNode = null; + SelectedPhraseNode = null; } private void mFlowLayoutPanel_Leave(object sender, EventArgs e) { - SelectedSection = null; - SelectedPhrase = null; + SelectedSectionNode = null; + SelectedPhraseNode = null; } /// <summary> @@ -517,7 +521,7 @@ return ctrl; } - if (node == node.getPresentation().getRootNode()) return ctrl; + if (ctrl.Controls.Count == 0) return ctrl; CoreNode previous = null; CoreNode cur = null; Modified: trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs 2006-08-04 11:49:07 UTC (rev 806) +++ trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs 2006-08-04 12:01:20 UTC (rev 807) @@ -57,7 +57,7 @@ /// Get and set the parent ProjectPanel control /// </summary> // mg 20060804 - internal ProjectPanel ParentControl + internal ProjectPanel ProjectPanel { get { @@ -259,9 +259,9 @@ //mg 20060804 if (GetSelectedSection() != null) { - ParentControl.StripManager.SelectedSection = GetSelectedSection(); - if (ParentControl.StripManager.SelectedSection != null) - ParentControl.StripManager.ControlOfSelectedSection.Focus(); + ProjectPanel.StripManager.SelectedSectionNode = GetSelectedSection(); + if (ProjectPanel.StripManager.SelectedSectionNode != null) + ProjectPanel.StripManager.SelectedSectionStrip.Focus(); } } Deleted: trunk/urakawa/application/Obi/Obi/Visitors/NodePositionVisitor.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Visitors/NodePositionVisitor.cs 2006-08-04 11:49:07 UTC (rev 806) +++ trunk/urakawa/application/Obi/Obi/Visitors/NodePositionVisitor.cs 2006-08-04 12:01:20 UTC (rev 807) @@ -1,48 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -using urakawa.core; - -namespace Obi.Visitors -{ - /// <summary> - /// Find the position of a node in the TOC tree, as seen in a flat list. - /// </summary> - public class NodePositionVisitor: ICoreNodeVisitor - { - private CoreNode mTarget; - private int mCounter; - private int mPosition; - - public int Position - { - get - { - return mPosition - 1; - } - } - - public NodePositionVisitor(CoreNode target) - { - mTarget = target; - mCounter = 0; - mPosition = 0; - } - - #region ICoreNodeVisitor Members - - public void postVisit(ICoreNode node) - { - } - - public bool preVisit(ICoreNode node) - { - if (node == mTarget) mPosition = mCounter; - ++mCounter; - return true; - } - - #endregion - } -} Copied: trunk/urakawa/application/Obi/Obi/Visitors/SectionNodePosition.cs (from rev 805, trunk/urakawa/application/Obi/Obi/Visitors/NodePositionVisitor.cs) =================================================================== --- trunk/urakawa/application/Obi/Obi/Visitors/SectionNodePosition.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/Visitors/SectionNodePosition.cs 2006-08-04 12:01:20 UTC (rev 807) @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using urakawa.core; + +namespace Obi.Visitors +{ + /// <summary> + /// Find the position of a section node in the TOC tree, as seen in a flat list. + /// </summary> + public class SectionNodePosition: ICoreNodeVisitor + { + private CoreNode mTarget; + private int mCounter; + private int mPosition; + + public int Position + { + get + { + return mPosition; + } + } + + public SectionNodePosition(CoreNode target) + { + mTarget = target; + mCounter = 0; + mPosition = 0; + } + + #region ICoreNodeVisitor Members + + public void postVisit(ICoreNode node) + { + } + + public bool preVisit(ICoreNode node) + { + if (Project.GetNodeType((CoreNode)node) == NodeType.Section) + { + if (node == mTarget) mPosition = mCounter; + ++mCounter; + } + return true; + } + + #endregion + } +} Modified: trunk/urakawa/application/Obi/Obi/Visitors/UndeleteSubtree.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Visitors/UndeleteSubtree.cs 2006-08-04 11:49:07 UTC (rev 806) +++ trunk/urakawa/application/Obi/Obi/Visitors/UndeleteSubtree.cs 2006-08-04 12:01:20 UTC (rev 807) @@ -31,8 +31,11 @@ public bool preVisit(ICoreNode node) { - mProject.AddExistingSection((CoreNode)node, mParent, mIndex, mPosition, null); - mIndex = 0; + if (Project.GetNodeType((CoreNode)node) == NodeType.Section) + { + mProject.AddExistingSection((CoreNode)node, mParent, mIndex, mPosition, null); + mIndex = 0; + } ++mPosition; return true; } Modified: trunk/urakawa/application/Obi/Obi/messages.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/messages.Designer.cs 2006-08-04 11:49:07 UTC (rev 806) +++ trunk/urakawa/application/Obi/Obi/messages.Designer.cs 2006-08-04 12:01:20 UTC (rev 807) @@ -61,6 +61,15 @@ } /// <summary> + /// Looks up a localized string similar to Add audio block. + /// </summary> + internal static string add_phrase_command_label { + get { + return ResourceManager.GetString("add_phrase_command_label", resourceCulture); + } + } + + /// <summary> /// Looks up a localized string similar to add section. /// </summary> internal static string add_section_command_label { Modified: trunk/urakawa/application/Obi/Obi/messages.resx =================================================================== --- trunk/urakawa/application/Obi/Obi/messages.resx 2006-08-04 11:49:07 UTC (rev 806) +++ trunk/urakawa/application/Obi/Obi/messages.resx 2006-08-04 12:01:20 UTC (rev 807) @@ -288,4 +288,7 @@ <value>&Record</value> <comment>RecordButtonLabel</comment> </data> + <data name="add_phrase_command_label" xml:space="preserve"> + <value>Add audio block</value> + </data> </root> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2006-08-04 19:53:52
|
Revision: 811 Author: marisademeglio Date: 2006-08-04 12:53:45 -0700 (Fri, 04 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=811&view=rev Log Message: ----------- Implemented undo-decrease-node-level It still needs to be tested more extensively Removed cut/copy/paste menu items for now: it might be too ambitious for this iteration, i'm not sure yet. Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs trunk/urakawa/application/Obi/Obi/Project.cs trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.Designer.cs trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs Modified: trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs 2006-08-04 14:36:10 UTC (rev 810) +++ trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs 2006-08-04 19:53:45 UTC (rev 811) @@ -13,8 +13,7 @@ public delegate void RequestToDeleteNodeHandler(object sender, NodeEventArgs e); public delegate void RequestToMoveNodeUpHandler(object sender, NodeEventArgs e); public delegate void RequestToMoveNodeDownHandler(object sender, NodeEventArgs e); - public delegate void RequestToUndoMoveNodeHandler(object sender, NodeEventArgs e); - + public delegate void DecreasedNodeLevelHandler(object sender, NodeEventArgs e); public delegate void DeletedNodeHandler(object sender, NodeEventArgs e); public delegate void ShallowDeletedNodeHandler(object sender, NodeEventArgs e); Modified: trunk/urakawa/application/Obi/Obi/Project.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.cs 2006-08-04 14:36:10 UTC (rev 810) +++ trunk/urakawa/application/Obi/Obi/Project.cs 2006-08-04 19:53:45 UTC (rev 811) @@ -534,7 +534,12 @@ } } - //a facade API function could do this for us + /// <summary> + /// move the node up + /// </summary> + /// <param name="node"></param> + /// <returns></returns> + /// <remarks>a facade API function could do this for us</remarks> private bool ExecuteMoveNodeUp(CoreNode node) { CoreNode newParent = null; @@ -621,7 +626,6 @@ (this, node, parent, parent.indexOf(node), visitor.Position); } - //a facade API function could do this for us bool succeeded = ExecuteMoveNodeDown(node); if (succeeded) { @@ -645,6 +649,7 @@ /// </summary> /// <param name="node"></param> /// <returns></returns> + ///<remarks>a facade API function could do this for us</remarks> private bool ExecuteMoveNodeDown(CoreNode node) { CoreNode newParent = null; @@ -689,7 +694,7 @@ public void IncreaseNodeLevel(object origin, CoreNode node) { - Commands.TOC.IncreaseSectionLevel command = null; // the command file is unmissing :) JQ + Commands.TOC.IncreaseSectionLevel command = null; if (origin != this) { @@ -701,7 +706,6 @@ (this, node, parent, parent.indexOf(node), visitor.Position); } - //a facade API function could do this for us bool succeeded = ExecuteIncreaseNodeLevel(node); if (succeeded) { @@ -721,6 +725,12 @@ } + /// <summary> + /// Move the node "in" + /// </summary> + /// <param name="node"></param> + /// <returns></returns> + /// <remarks>a facade API function could do this for us</remarks> private bool ExecuteIncreaseNodeLevel(CoreNode node) { int nodeIndex = ((CoreNode)node.getParent()).indexOf(node); @@ -752,16 +762,40 @@ public void DecreaseNodeLevel(object origin, CoreNode node) { - //a facade API function could do this for us + Commands.TOC.DecreaseSectionLevel command = null; + + if (origin != this) + { + CoreNode parent = (CoreNode)node.getParent(); + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); + getPresentation().getRootNode().acceptDepthFirst(visitor); + //we need to save the state of the node before it is altered + command = new Commands.TOC.DecreaseSectionLevel + (this, node, parent, parent.indexOf(node), visitor.Position, node.getChildCount()); + } + bool succeeded = ExecuteDecreaseNodeLevel(node); if (succeeded) { + CoreNode newParent = (CoreNode)node.getParent(); + + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); + getPresentation().getRootNode().acceptDepthFirst(visitor); + DecreasedNodeLevel(this, new Events.Node.NodeEventArgs(origin, node)); mUnsaved = true; StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + + if (command != null) CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); } } + /// <summary> + /// move the node "out" + /// </summary> + /// <param name="node"></param> + /// <returns></returns> + ///<remarks>a facade API function could do this for us</remarks> private bool ExecuteDecreaseNodeLevel(CoreNode node) { //the only reason we can't decrease the level is if the node is already @@ -830,7 +864,7 @@ ArrayList nonOriginalChildren = new ArrayList(); int totalNumChildren = node.getChildCount(); - for (int i = totalNumChildren - 1; i >=originalChildCount; i++) + for (int i = totalNumChildren - 1; i >=originalChildCount - 1; i--) { CoreNode child = (CoreNode)node.getChild(i); if (child != null) @@ -840,10 +874,29 @@ } } - //move the node itself in one level - ExecuteIncreaseNodeLevel(node); + //insert the node back in its old location + node.detach(); + parent.insert(node, index); + MovedNode(this, new Events.Node.MovedNodeEventArgs(this, node, parent, index, position)); + + Visitors.SectionNodePosition visitor = null; + //reattach the children + for (int i = 0; i < nonOriginalChildren.Count; i++) + { + parent.appendChild((CoreNode)nonOriginalChildren[i]); + //find the position for the first one + if (i == 0) + { + visitor = new Visitors.SectionNodePosition(node); + getPresentation().getRootNode().acceptDepthFirst(visitor); + } + + MovedNode(this, new Events.Node.MovedNodeEventArgs + (this, (CoreNode)nonOriginalChildren[i], parent, + parent.getChildCount() - 1, visitor.Position + i)); + } } /// <summary> Modified: trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.Designer.cs 2006-08-04 14:36:10 UTC (rev 810) +++ trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.Designer.cs 2006-08-04 19:53:45 UTC (rev 811) @@ -36,17 +36,13 @@ this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.deleteSectionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.editLabelToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.showInStripViewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.moveUpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.moveDownToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.increaseLevelToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.decreaseLevelToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); - this.showInStripViewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.cutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.pasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); this.contextMenuStrip1.SuspendLayout(); this.SuspendLayout(); // @@ -54,6 +50,8 @@ // this.tocTree.ContextMenuStrip = this.contextMenuStrip1; this.tocTree.Dock = System.Windows.Forms.DockStyle.Fill; + this.tocTree.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tocTree.ForeColor = System.Drawing.Color.SteelBlue; this.tocTree.LabelEdit = true; this.tocTree.Location = new System.Drawing.Point(0, 0); this.tocTree.Name = "tocTree"; @@ -71,19 +69,11 @@ this.toolStripSeparator1, this.deleteSectionToolStripMenuItem, this.editLabelToolStripMenuItem, - this.toolStripSeparator2, - this.cutToolStripMenuItem, - this.copyToolStripMenuItem, - this.pasteToolStripMenuItem, - this.toolStripSeparator4, - this.moveUpToolStripMenuItem, - this.moveDownToolStripMenuItem, - this.increaseLevelToolStripMenuItem, - this.decreaseLevelToolStripMenuItem, + this.toolStripMenuItem1, this.toolStripSeparator3, this.showInStripViewToolStripMenuItem}); this.contextMenuStrip1.Name = "contextMenuStrip1"; - this.contextMenuStrip1.Size = new System.Drawing.Size(161, 314); + this.contextMenuStrip1.Size = new System.Drawing.Size(161, 170); this.contextMenuStrip1.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip1_Opening); // // addSectionAtSameLevelToolStripMenuItem @@ -119,74 +109,57 @@ this.editLabelToolStripMenuItem.Text = "Rena&me"; this.editLabelToolStripMenuItem.Click += new System.EventHandler(this.editLabelToolStripMenuItem_Click); // - // toolStripSeparator2 + // toolStripSeparator3 // - this.toolStripSeparator2.Name = "toolStripSeparator2"; - this.toolStripSeparator2.Size = new System.Drawing.Size(157, 6); + this.toolStripSeparator3.Name = "toolStripSeparator3"; + this.toolStripSeparator3.Size = new System.Drawing.Size(157, 6); // + // showInStripViewToolStripMenuItem + // + this.showInStripViewToolStripMenuItem.Name = "showInStripViewToolStripMenuItem"; + this.showInStripViewToolStripMenuItem.Size = new System.Drawing.Size(160, 22); + this.showInStripViewToolStripMenuItem.Text = "Show in strip &view"; + this.showInStripViewToolStripMenuItem.Click += new System.EventHandler(this.showInStripViewToolStripMenuItem_Click); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.moveUpToolStripMenuItem, + this.moveDownToolStripMenuItem, + this.increaseLevelToolStripMenuItem, + this.decreaseLevelToolStripMenuItem}); + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(160, 22); + this.toolStripMenuItem1.Text = "Move"; + // // moveUpToolStripMenuItem // this.moveUpToolStripMenuItem.Name = "moveUpToolStripMenuItem"; - this.moveUpToolStripMenuItem.Size = new System.Drawing.Size(160, 22); - this.moveUpToolStripMenuItem.Text = "Move up"; + this.moveUpToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.moveUpToolStripMenuItem.Text = "Up"; this.moveUpToolStripMenuItem.Click += new System.EventHandler(this.moveUpToolStripMenuItem_Click); // // moveDownToolStripMenuItem // this.moveDownToolStripMenuItem.Name = "moveDownToolStripMenuItem"; - this.moveDownToolStripMenuItem.Size = new System.Drawing.Size(160, 22); - this.moveDownToolStripMenuItem.Text = "Move down"; + this.moveDownToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.moveDownToolStripMenuItem.Text = "Down"; this.moveDownToolStripMenuItem.Click += new System.EventHandler(this.moveDownToolStripMenuItem_Click); // // increaseLevelToolStripMenuItem // this.increaseLevelToolStripMenuItem.Name = "increaseLevelToolStripMenuItem"; - this.increaseLevelToolStripMenuItem.Size = new System.Drawing.Size(160, 22); - this.increaseLevelToolStripMenuItem.Text = "Increase level"; + this.increaseLevelToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.increaseLevelToolStripMenuItem.Text = "In"; this.increaseLevelToolStripMenuItem.Click += new System.EventHandler(this.increaseLevelToolStripMenuItem_Click); // // decreaseLevelToolStripMenuItem // this.decreaseLevelToolStripMenuItem.Name = "decreaseLevelToolStripMenuItem"; - this.decreaseLevelToolStripMenuItem.Size = new System.Drawing.Size(160, 22); - this.decreaseLevelToolStripMenuItem.Text = "Decrease level"; + this.decreaseLevelToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.decreaseLevelToolStripMenuItem.Text = "Out"; this.decreaseLevelToolStripMenuItem.Click += new System.EventHandler(this.decreaseLevelToolStripMenuItem_Click); // - // toolStripSeparator3 - // - this.toolStripSeparator3.Name = "toolStripSeparator3"; - this.toolStripSeparator3.Size = new System.Drawing.Size(157, 6); - // - // showInStripViewToolStripMenuItem - // - this.showInStripViewToolStripMenuItem.Name = "showInStripViewToolStripMenuItem"; - this.showInStripViewToolStripMenuItem.Size = new System.Drawing.Size(160, 22); - this.showInStripViewToolStripMenuItem.Text = "Show in strip &view"; - this.showInStripViewToolStripMenuItem.Click += new System.EventHandler(this.showInStripViewToolStripMenuItem_Click); - // - // cutToolStripMenuItem - // - this.cutToolStripMenuItem.Name = "cutToolStripMenuItem"; - this.cutToolStripMenuItem.Size = new System.Drawing.Size(160, 22); - this.cutToolStripMenuItem.Text = "Cut"; - // - // copyToolStripMenuItem - // - this.copyToolStripMenuItem.Name = "copyToolStripMenuItem"; - this.copyToolStripMenuItem.Size = new System.Drawing.Size(160, 22); - this.copyToolStripMenuItem.Text = "Copy"; - // - // pasteToolStripMenuItem - // - this.pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; - this.pasteToolStripMenuItem.Size = new System.Drawing.Size(160, 22); - this.pasteToolStripMenuItem.Text = "Paste"; - // - // toolStripSeparator4 - // - this.toolStripSeparator4.Name = "toolStripSeparator4"; - this.toolStripSeparator4.Size = new System.Drawing.Size(157, 6); - // // TOCPanel // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -205,19 +178,15 @@ private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; private System.Windows.Forms.ToolStripMenuItem addSectionAtSameLevelToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem addSubSectionToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem moveUpToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem moveDownToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem increaseLevelToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem decreaseLevelToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem editLabelToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem deleteSectionToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; private System.Windows.Forms.ToolStripMenuItem showInStripViewToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem cutToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem pasteToolStripMenuItem; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem moveUpToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem moveDownToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem increaseLevelToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem decreaseLevelToolStripMenuItem; } } Modified: trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs 2006-08-04 14:36:10 UTC (rev 810) +++ trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs 2006-08-04 19:53:45 UTC (rev 811) @@ -28,8 +28,7 @@ public event Events.Node.RequestToMoveNodeUpHandler RequestToMoveSectionUp; public event Events.Node.RequestToRenameNodeHandler RequestToRenameSection; public event Events.Node.RequestToDeleteNodeHandler RequestToDeleteSection; - public event Events.Node.RequestToUndoMoveNodeHandler RequestToUndoMoveNode; - + #region properties /// <summary> /// Test whether a node is currently selected or not. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2006-08-08 11:47:06
|
Revision: 828 Author: julienq Date: 2006-08-08 04:46:44 -0700 (Tue, 08 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=828&view=rev Log Message: ----------- Updated Record dialog to work with newer version of asset manager. Added phrase events for recording. Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Assets/AudioMediaAsset.cs trunk/urakawa/application/Obi/Obi/Dialogs/Record.cs trunk/urakawa/application/Obi/Obi/Obi.csproj trunk/urakawa/application/Obi/Obi/messages.Designer.cs trunk/urakawa/application/Obi/Obi/messages.resx Added Paths: ----------- trunk/urakawa/application/Obi/Obi/Events/Audio/Recorder/PhraseEventArgs.cs Modified: trunk/urakawa/application/Obi/Obi/Assets/AudioMediaAsset.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Assets/AudioMediaAsset.cs 2006-08-08 10:48:17 UTC (rev 827) +++ trunk/urakawa/application/Obi/Obi/Assets/AudioMediaAsset.cs 2006-08-08 11:46:44 UTC (rev 828) @@ -93,6 +93,7 @@ m_SamplingRate = sampleRate; m_FrameSize = (m_BitDepth / 8) * m_Channels; mMediaType = MediaType.Audio; + mClips = new List<AudioClip>(); } else throw new Exception("Audio media of this format is not supported"); Modified: trunk/urakawa/application/Obi/Obi/Dialogs/Record.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Dialogs/Record.cs 2006-08-08 10:48:17 UTC (rev 827) +++ trunk/urakawa/application/Obi/Obi/Dialogs/Record.cs 2006-08-08 11:46:44 UTC (rev 828) @@ -27,6 +27,10 @@ private List<Assets.AudioMediaAsset> mAssets; // the list of assets created while recording + public event Events.Audio.Recorder.StartingPhraseHandler StartingPhrase; + public event Events.Audio.Recorder.ContinuingPhraseHandler ContinuingPhrase; + public event Events.Audio.Recorder.FinishingPhraseHandler FinishingPhrase; + /// <summary> /// The list of assets created. /// </summary> @@ -68,38 +72,40 @@ //phrase marker and volume control are incomplete ArrayList arDevices = new ArrayList(); arDevices = Audio.AudioRecorder.Instance.GetInputDevices(); - - Audio.AudioRecorder.Instance.InitDirectSound(1); - mRecordButton.Text = Localizer.Message("&Recorde"); -// mRecordButton.Text = "&Pause"; - ob_VuMeter.ScaleFactor = 2; - ob_VuMeter.SampleTimeLength = 2000; - ob_VuMeter.UpperThreshold = 150; - ob_VuMeter.LowerThreshold = 100; - Audio.AudioRecorder.Instance.VuMeterObject = ob_VuMeter; - ob_VuMeter.ShowForm(); - Assets.AudioMediaAsset mAudioAsset = new Assets.AudioMediaAsset(mChannels, mBitDepth, mSampleRate); - mAssManager.AddAsset(mAudioAsset); + + Audio.AudioRecorder.Instance.InitDirectSound(1); + mRecordButton.Text = Localizer.Message("record"); + // mRecordButton.Text = "&Pause"; + ob_VuMeter.ScaleFactor = 2; + ob_VuMeter.SampleTimeLength = 2000; + ob_VuMeter.UpperThreshold = 150; + ob_VuMeter.LowerThreshold = 100; + Audio.AudioRecorder.Instance.VuMeterObject = ob_VuMeter; + ob_VuMeter.ShowForm(); + // Assets.AudioMediaAsset mAudioAsset = new Assets.AudioMediaAsset(mChannels, mBitDepth, mSampleRate); + // mAssManager.AddAsset(mAudioAsset); + Assets.AudioMediaAsset mAudioAsset = mAssManager.NewAudioMediaAsset(mChannels, mBitDepth, mSampleRate); Audio.AudioRecorder.Instance.StartListening(mAudioAsset); - timer1.Enabled = true; - } + timer1.Enabled = true; + } private void btnRecordAndPause_Click(object sender, EventArgs e) - { + { // AudioRecorder.Instance.InitDirectSound(mIndex); - Assets.AudioMediaAsset mRecordAsset = new Assets.AudioMediaAsset(mChannels, mBitDepth, mSampleRate); - mAssManager.AddAsset(mRecordAsset); + // Assets.AudioMediaAsset mRecordAsset = new Assets.AudioMediaAsset(mChannels, mBitDepth, mSampleRate); + // mAssManager.AddAsset(mRecordAsset); + Assets.AudioMediaAsset mRecordAsset = mAssManager.NewAudioMediaAsset(mChannels, mBitDepth, mSampleRate); Audio.AudioRecorder.Instance.StopRecording(); timer1.Enabled = false; - //mRecordButton.Text = Localizer.Message("&Record"); + mRecordButton.Text = Localizer.Message("record"); if (Audio.AudioRecorder.Instance.State.Equals(Audio.AudioRecorderState.Idle)) { timer1.Enabled = true; - mRecordButton.Text = Localizer.Message("&Pause"); + mRecordButton.Text = Localizer.Message("pause"); Audio.AudioRecorder.Instance.StartRecording(mRecordAsset); - } + } } private void btnStop_Click(object sender, EventArgs e) @@ -114,10 +120,10 @@ this.Close(); } - - + + private void timer1_Tick(object sender, EventArgs e) { double dMiliSeconds = Audio.AudioRecorder.Instance.CurrentTime; @@ -146,8 +152,8 @@ string sDisplayTime = sHours + ":" + sMinutes + ":" + sSeconds; - mTimeTextBox.Text = sDisplayTime; - + mTimeTextBox.Text = sDisplayTime; + } } } \ No newline at end of file Added: trunk/urakawa/application/Obi/Obi/Events/Audio/Recorder/PhraseEventArgs.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Events/Audio/Recorder/PhraseEventArgs.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/Events/Audio/Recorder/PhraseEventArgs.cs 2006-08-08 11:46:44 UTC (rev 828) @@ -0,0 +1,37 @@ +using System; + +namespace Obi.Events.Audio.Recorder +{ + /// <summary> + /// A new phrase is being recorded. Time myst be 0. + /// </summary> + public delegate void StartingPhraseHandler(object sender, PhraseEventArgs e); + + /// <summary> + /// The latest phrase being recorded is updated. Time is the current length of the phrase. + /// </summary> + public delegate void ContinuingPhraseHandler(object sender, PhraseEventArgs e); + + /// <summary> + /// The latest phrase is done. Time is the total length of the phrase. + /// </summary> + public delegate void FinishingPhraseHandler(object sender, PhraseEventArgs e); + + /// <summary> + /// A new phrase to be created. + /// </summary> + class PhraseEventArgs: EventArgs + { + private double mTime; // time of the asset so far + + public double Time + { + get { return mTime; } + } + + public PhraseEventArgs(double time) + { + mTime = time; + } + } +} Modified: trunk/urakawa/application/Obi/Obi/Obi.csproj =================================================================== --- trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-08 10:48:17 UTC (rev 827) +++ trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-08 11:46:44 UTC (rev 828) @@ -147,6 +147,7 @@ <Compile Include="Events\Project\CommandCreatedEventArgs.cs" /> <Compile Include="Events\Project\StateChangedEventArgs.cs" /> <Compile Include="Events\Strip\ImportAssetEventArgs.cs" /> + <Compile Include="Events\Audio\Recorder\PhraseEventArgs.cs" /> <Compile Include="Events\Strip\SelectedEventArgs.cs" /> <Compile Include="Events\Node\AddedSectionNodeEventArgs.cs" /> <Compile Include="IOUtils.cs" /> Modified: trunk/urakawa/application/Obi/Obi/messages.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/messages.Designer.cs 2006-08-08 10:48:17 UTC (rev 827) +++ trunk/urakawa/application/Obi/Obi/messages.Designer.cs 2006-08-08 11:46:44 UTC (rev 828) @@ -455,9 +455,9 @@ /// <summary> /// Looks up a localized string similar to &Record. /// </summary> - internal static string Record { + internal static string record { get { - return ResourceManager.GetString("Record", resourceCulture); + return ResourceManager.GetString("record", resourceCulture); } } Modified: trunk/urakawa/application/Obi/Obi/messages.resx =================================================================== --- trunk/urakawa/application/Obi/Obi/messages.resx 2006-08-08 10:48:17 UTC (rev 827) +++ trunk/urakawa/application/Obi/Obi/messages.resx 2006-08-08 11:46:44 UTC (rev 828) @@ -284,7 +284,7 @@ <value>Could not find path to asset directory.</value> <comment>JQ</comment> </data> - <data name="Record" xml:space="preserve"> + <data name="record" xml:space="preserve"> <value>&Record</value> <comment>RecordButtonLabel</comment> </data> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2006-08-09 10:33:29
|
Revision: 833 Author: julienq Date: 2006-08-09 03:33:18 -0700 (Wed, 09 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=833&view=rev Log Message: ----------- Fixed a bug in the synchronization of the strip view with the tree. Added a visitor for dumping the tree to the console (useful for debugging.) Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/CustomProperties.cs trunk/urakawa/application/Obi/Obi/Obi.csproj trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs trunk/urakawa/application/Obi/Obi/ObiForm.cs trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs Added Paths: ----------- trunk/urakawa/application/Obi/Obi/Visitors/DumpTree.cs Modified: trunk/urakawa/application/Obi/Obi/CustomProperties.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/CustomProperties.cs 2006-08-09 09:32:16 UTC (rev 832) +++ trunk/urakawa/application/Obi/Obi/CustomProperties.cs 2006-08-09 10:33:18 UTC (rev 833) @@ -54,6 +54,8 @@ case "info": case "NodeInformationProperty": return new NodeInformationProperty(); + case "PositionProperty": + return new PositionProperty(); default: throw new Exception(String.Format("Cannot create property named `{0}'", localName)); } @@ -201,4 +203,22 @@ return copy; } } + + public class PositionProperty : ObiProperty + { + public int Position; // position of the node in the strip view (section) or its strip (block) + + internal PositionProperty() + : base() + { + Position = 0; + } + + public override IProperty copy() + { + PositionProperty copy = new PositionProperty(); + copy.Position = this.Position; + return copy; + } + } } \ No newline at end of file Modified: trunk/urakawa/application/Obi/Obi/Obi.csproj =================================================================== --- trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-09 09:32:16 UTC (rev 832) +++ trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-09 10:33:18 UTC (rev 833) @@ -298,6 +298,7 @@ <Compile Include="UserProfile.cs" /> <Compile Include="Visitors\AssetCreator.cs" /> <Compile Include="Visitors\DescendantsVisitor.cs" /> + <Compile Include="Visitors\DumpTree.cs" /> <Compile Include="Visitors\PhraseEnumerator.cs" /> <Compile Include="Visitors\SectionNodePosition.cs" /> <Compile Include="Visitors\UndeleteSubtree.cs" /> Modified: trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs 2006-08-09 09:32:16 UTC (rev 832) +++ trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs 2006-08-09 10:33:18 UTC (rev 833) @@ -82,12 +82,14 @@ this.userSettingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.preferencesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.audioPreferencesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mHelpToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.aboutObiToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); this.mProjectPanel = new Obi.UserControls.ProjectPanel(); - this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.mHelpToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - this.aboutObiToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator(); + this.dumpTreeDEBUGToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.menuStrip1.SuspendLayout(); this.statusStrip1.SuspendLayout(); this.SuspendLayout(); @@ -221,7 +223,7 @@ // this.mUndoToolStripMenuItem.Name = "mUndoToolStripMenuItem"; this.mUndoToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z))); - this.mUndoToolStripMenuItem.Size = new System.Drawing.Size(140, 22); + this.mUndoToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.mUndoToolStripMenuItem.Text = "&Undo"; this.mUndoToolStripMenuItem.Click += new System.EventHandler(this.mUndoToolStripMenuItem_Click); // @@ -229,26 +231,26 @@ // this.mRedoToolStripMenuItem.Name = "mRedoToolStripMenuItem"; this.mRedoToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y))); - this.mRedoToolStripMenuItem.Size = new System.Drawing.Size(140, 22); + this.mRedoToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.mRedoToolStripMenuItem.Text = "&Redo"; this.mRedoToolStripMenuItem.Click += new System.EventHandler(this.mRedoToolStripMenuItem_Click); // // toolStripSeparator4 // this.toolStripSeparator4.Name = "toolStripSeparator4"; - this.toolStripSeparator4.Size = new System.Drawing.Size(137, 6); + this.toolStripSeparator4.Size = new System.Drawing.Size(149, 6); // // metadataToolStripMenuItem // this.metadataToolStripMenuItem.Name = "metadataToolStripMenuItem"; - this.metadataToolStripMenuItem.Size = new System.Drawing.Size(140, 22); + this.metadataToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.metadataToolStripMenuItem.Text = "&Metadata"; this.metadataToolStripMenuItem.Click += new System.EventHandler(this.metadataToolStripMenuItem_Click); // // touchProjectToolStripMenuItem // this.touchProjectToolStripMenuItem.Name = "touchProjectToolStripMenuItem"; - this.touchProjectToolStripMenuItem.Size = new System.Drawing.Size(140, 22); + this.touchProjectToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.touchProjectToolStripMenuItem.Text = "&Touch project"; this.touchProjectToolStripMenuItem.Click += new System.EventHandler(this.touchProjectToolStripMenuItem_Click); // @@ -375,7 +377,7 @@ this.startRecordingToolStripMenuItem}); this.mStripsToolStripMenuItem.Name = "mStripsToolStripMenuItem"; this.mStripsToolStripMenuItem.Size = new System.Drawing.Size(47, 20); - this.mStripsToolStripMenuItem.Text = "Strips"; + this.mStripsToolStripMenuItem.Text = "&Strips"; // // mAddStripToolStripMenuItem // @@ -466,7 +468,9 @@ this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.userSettingsToolStripMenuItem, this.preferencesToolStripMenuItem, - this.audioPreferencesToolStripMenuItem}); + this.audioPreferencesToolStripMenuItem, + this.toolStripSeparator10, + this.dumpTreeDEBUGToolStripMenuItem}); this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem"; this.toolsToolStripMenuItem.Size = new System.Drawing.Size(45, 20); this.toolsToolStripMenuItem.Text = "&Tools"; @@ -474,24 +478,48 @@ // userSettingsToolStripMenuItem // this.userSettingsToolStripMenuItem.Name = "userSettingsToolStripMenuItem"; - this.userSettingsToolStripMenuItem.Size = new System.Drawing.Size(170, 22); + this.userSettingsToolStripMenuItem.Size = new System.Drawing.Size(174, 22); this.userSettingsToolStripMenuItem.Text = "&User profile"; this.userSettingsToolStripMenuItem.Click += new System.EventHandler(this.userSettingsToolStripMenuItem_Click); // // preferencesToolStripMenuItem // this.preferencesToolStripMenuItem.Name = "preferencesToolStripMenuItem"; - this.preferencesToolStripMenuItem.Size = new System.Drawing.Size(170, 22); + this.preferencesToolStripMenuItem.Size = new System.Drawing.Size(174, 22); this.preferencesToolStripMenuItem.Text = "&Project preferences"; this.preferencesToolStripMenuItem.Click += new System.EventHandler(this.preferencesToolStripMenuItem_Click); // // audioPreferencesToolStripMenuItem // this.audioPreferencesToolStripMenuItem.Name = "audioPreferencesToolStripMenuItem"; - this.audioPreferencesToolStripMenuItem.Size = new System.Drawing.Size(170, 22); + this.audioPreferencesToolStripMenuItem.Size = new System.Drawing.Size(174, 22); this.audioPreferencesToolStripMenuItem.Text = "&Audio preferences"; this.audioPreferencesToolStripMenuItem.Click += new System.EventHandler(this.audioPreferencesToolStripMenuItem_Click); // + // helpToolStripMenuItem + // + this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.mHelpToolStripMenuItem1, + this.aboutObiToolStripMenuItem}); + this.helpToolStripMenuItem.Name = "helpToolStripMenuItem"; + this.helpToolStripMenuItem.Size = new System.Drawing.Size(40, 20); + this.helpToolStripMenuItem.Text = "&Help"; + // + // mHelpToolStripMenuItem1 + // + this.mHelpToolStripMenuItem1.Name = "mHelpToolStripMenuItem1"; + this.mHelpToolStripMenuItem1.ShortcutKeys = System.Windows.Forms.Keys.F1; + this.mHelpToolStripMenuItem1.Size = new System.Drawing.Size(121, 22); + this.mHelpToolStripMenuItem1.Text = "&Help"; + this.mHelpToolStripMenuItem1.Click += new System.EventHandler(this.mHelpToolStripMenuItem1_Click); + // + // aboutObiToolStripMenuItem + // + this.aboutObiToolStripMenuItem.Name = "aboutObiToolStripMenuItem"; + this.aboutObiToolStripMenuItem.Size = new System.Drawing.Size(121, 22); + this.aboutObiToolStripMenuItem.Text = "&About Obi"; + this.aboutObiToolStripMenuItem.Click += new System.EventHandler(this.aboutObiToolStripMenuItem_Click); + // // statusStrip1 // this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -521,30 +549,18 @@ this.mProjectPanel.Size = new System.Drawing.Size(767, 450); this.mProjectPanel.TabIndex = 4; // - // helpToolStripMenuItem + // toolStripSeparator10 // - this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.mHelpToolStripMenuItem1, - this.aboutObiToolStripMenuItem}); - this.helpToolStripMenuItem.Name = "helpToolStripMenuItem"; - this.helpToolStripMenuItem.Size = new System.Drawing.Size(40, 20); - this.helpToolStripMenuItem.Text = "&Help"; + this.toolStripSeparator10.Name = "toolStripSeparator10"; + this.toolStripSeparator10.Size = new System.Drawing.Size(171, 6); // - // mHelpToolStripMenuItem1 + // dumpTreeDEBUGToolStripMenuItem // - this.mHelpToolStripMenuItem1.Name = "mHelpToolStripMenuItem1"; - this.mHelpToolStripMenuItem1.ShortcutKeys = System.Windows.Forms.Keys.F1; - this.mHelpToolStripMenuItem1.Size = new System.Drawing.Size(152, 22); - this.mHelpToolStripMenuItem1.Text = "&Help"; - this.mHelpToolStripMenuItem1.Click += new System.EventHandler(this.mHelpToolStripMenuItem1_Click); + this.dumpTreeDEBUGToolStripMenuItem.Name = "dumpTreeDEBUGToolStripMenuItem"; + this.dumpTreeDEBUGToolStripMenuItem.Size = new System.Drawing.Size(174, 22); + this.dumpTreeDEBUGToolStripMenuItem.Text = "&Dump tree (DEBUG)"; + this.dumpTreeDEBUGToolStripMenuItem.Click += new System.EventHandler(this.dumpTreeDEBUGToolStripMenuItem_Click); // - // aboutObiToolStripMenuItem - // - this.aboutObiToolStripMenuItem.Name = "aboutObiToolStripMenuItem"; - this.aboutObiToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.aboutObiToolStripMenuItem.Text = "&About Obi"; - this.aboutObiToolStripMenuItem.Click += new System.EventHandler(this.aboutObiToolStripMenuItem_Click); - // // ObiForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); @@ -630,6 +646,8 @@ private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem mHelpToolStripMenuItem1; private System.Windows.Forms.ToolStripMenuItem aboutObiToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator10; + private System.Windows.Forms.ToolStripMenuItem dumpTreeDEBUGToolStripMenuItem; } Modified: trunk/urakawa/application/Obi/Obi/ObiForm.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/ObiForm.cs 2006-08-09 09:32:16 UTC (rev 832) +++ trunk/urakawa/application/Obi/Obi/ObiForm.cs 2006-08-09 10:33:18 UTC (rev 833) @@ -844,5 +844,10 @@ { mProject.StartRecording(mSettings); } + + private void dumpTreeDEBUGToolStripMenuItem_Click(object sender, EventArgs e) + { + mProject.RootNode.acceptDepthFirst(new Visitors.DumpTree()); + } } } \ No newline at end of file Modified: trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs 2006-08-09 09:32:16 UTC (rev 832) +++ trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs 2006-08-09 10:33:18 UTC (rev 833) @@ -219,12 +219,15 @@ #region Synchronization visitor + private CoreNode parentSection; + /// <summary> - /// Do nothing. + /// Update the parent section to attach phrase nodes to. /// </summary> /// <param name="node">The node to do nothing with.</param> public void postVisit(ICoreNode node) { + parentSection = (CoreNode)node.getParent(); } /// <summary> @@ -235,29 +238,35 @@ /// <returns>True.</returns> public bool preVisit(ICoreNode node) { - if (Project.GetNodeType((CoreNode)node) == NodeType.Section) + SectionStrip strip = null; + switch (Project.GetNodeType((CoreNode)node)) { - SectionStrip strip = new SectionStrip(); - strip.Label = Project.GetTextMedia((CoreNode)node).getText(); - strip.Manager = this; - strip.Node = (CoreNode)node; - mSectionNodeMap[(CoreNode)node] = strip; - mFlowLayoutPanel.Controls.Add(strip); - SelectedSectionNode = strip.Node; + case NodeType.Root: + parentSection = null; + break; + case NodeType.Section: + strip = new SectionStrip(); + strip.Label = Project.GetTextMedia((CoreNode)node).getText(); + strip.Manager = this; + strip.Node = (CoreNode)node; + mSectionNodeMap[(CoreNode)node] = strip; + mFlowLayoutPanel.Controls.Add(strip); + parentSection = ((CoreNode)node); + break; + case NodeType.Phrase: + strip = mSectionNodeMap[parentSection]; + AudioBlock block = new AudioBlock(); + block.Manager = this; + block.Node = (CoreNode)node; + mPhraseNodeMap[(CoreNode)node] = block; + TextMedia annotation = (TextMedia)Project.GetMediaForChannel((CoreNode)node, Project.AnnotationChannel); + block.Label = annotation.getText(); + block.Time = (Math.Round(Project.GetAudioMediaAsset((CoreNode)node).LengthInMilliseconds / 1000)).ToString() + "s"; + strip.AppendAudioBlock(block); + break; + default: + break; } - else if (Project.GetNodeType((CoreNode)node) == NodeType.Phrase) - { - SectionStrip strip = mSectionNodeMap[mSelectedSection]; - AudioBlock block = new AudioBlock(); - block.Manager = this; - block.Node = (CoreNode)node; - mPhraseNodeMap[(CoreNode)node] = block; - TextMedia annotation = (TextMedia)Project.GetMediaForChannel((CoreNode)node, Project.AnnotationChannel); - block.Label = annotation.getText(); - block.Time = (Math.Round(Project.GetAudioMediaAsset((CoreNode)node).LengthInMilliseconds / 1000)).ToString() + "s"; - strip.AppendAudioBlock(block); - SelectedPhraseNode = block.Node; - } return true; } Modified: trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs 2006-08-09 09:32:16 UTC (rev 832) +++ trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs 2006-08-09 10:33:18 UTC (rev 833) @@ -422,7 +422,7 @@ internal void SyncMovedNode(object sender, Events.Node.MovedNodeEventArgs e) { TreeNode selected = FindTreeNodeFromCoreNode(e.Node); - TreeNode parent = FindTreeNodeFromCoreNode(e.Parent); + TreeNode parent = Project.GetNodeType(e.Parent) == NodeType.Section ? FindTreeNodeFromCoreNode(e.Parent) : null; if (selected == null) { Added: trunk/urakawa/application/Obi/Obi/Visitors/DumpTree.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Visitors/DumpTree.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/Visitors/DumpTree.cs 2006-08-09 10:33:18 UTC (rev 833) @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using urakawa.core; +using urakawa.media; + +namespace Obi.Visitors +{ + public class DumpTree: ICoreNodeVisitor + { + private string indent = "+ "; + + public void postVisit(ICoreNode node) + { + indent = indent.Substring(2); + } + + public bool preVisit(ICoreNode node) + { + CoreNode n = (CoreNode)node; + NodeInformationProperty p = (NodeInformationProperty)n.getProperty(typeof(NodeInformationProperty)); + string info = String.Format("{0}{1}[{2}]", indent, p.NodeType, p.Id); + switch (p.NodeType) + { + case NodeType.Section: + info += " " + Project.GetTextMedia(n).getText(); + break; + case NodeType.Phrase: + info += " " + ((TextMedia)Project.GetMediaForChannel(n, Project.AnnotationChannel)).getText(); + break; + default: + break; + } + System.Diagnostics.Debug.Print(info); + indent = " " + indent; + return true; + } + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2006-08-10 08:58:36
|
Revision: 838 Author: julienq Date: 2006-08-10 01:58:12 -0700 (Thu, 10 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=838&view=rev Log Message: ----------- Split and merge (but not undo yet) Merge menu from the form does not work (use context menu.) Bug in exporting sequence media to XUK. Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Assets/AssetManager.cs trunk/urakawa/application/Obi/Obi/Dialogs/Split.Designer.cs trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs trunk/urakawa/application/Obi/Obi/Obi.csproj trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs trunk/urakawa/application/Obi/Obi/Project.cs trunk/urakawa/application/Obi/Obi/UserControls/AudioBlock.cs trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs trunk/urakawa/application/Obi/Obi/Visitors/DumpTree.cs Added Paths: ----------- trunk/urakawa/application/Obi/Obi/Events/Node/MergeNodesEventArgs.cs trunk/urakawa/application/Obi/Obi/Events/Node/SplitNodeEventArgs.cs Modified: trunk/urakawa/application/Obi/Obi/Assets/AssetManager.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Assets/AssetManager.cs 2006-08-10 05:27:45 UTC (rev 837) +++ trunk/urakawa/application/Obi/Obi/Assets/AssetManager.cs 2006-08-10 08:58:12 UTC (rev 838) @@ -339,10 +339,24 @@ return unused; } + /// <summary> + /// Split an audio asset at a given time and add the result to the manager with a correct name. + /// </summary> + /// <returns>The new asset.</returns> public AudioMediaAsset SplitAudioMediaAsset(AudioMediaAsset asset, double time) { - // do something for undo here return (AudioMediaAsset)NameAddAsset(asset.Split(time)); } + + /// <summary> + /// Merge two audio assets. The first one is modified in place. + /// The second one is not managed any more, but its files are still there so there is no change. + /// </summary> + internal void MergeAudioMediaAssets(AudioMediaAsset asset, AudioMediaAsset next) + { + asset.MergeWith(next); + mAssets.Remove(next.Name); + next.Manager = null; + } } } \ No newline at end of file Modified: trunk/urakawa/application/Obi/Obi/Dialogs/Split.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Dialogs/Split.Designer.cs 2006-08-10 05:27:45 UTC (rev 837) +++ trunk/urakawa/application/Obi/Obi/Dialogs/Split.Designer.cs 2006-08-10 08:58:12 UTC (rev 838) @@ -45,9 +45,9 @@ // // btnPreview // - this.btnPreview.Location = new System.Drawing.Point(30, 28); + this.btnPreview.Location = new System.Drawing.Point(30, 26); this.btnPreview.Name = "btnPreview"; - this.btnPreview.Size = new System.Drawing.Size(75, 23); + this.btnPreview.Size = new System.Drawing.Size(75, 21); this.btnPreview.TabIndex = 0; this.btnPreview.Text = "Pre&view"; this.btnPreview.UseVisualStyleBackColor = true; @@ -58,15 +58,15 @@ this.txtDisplayAsset.Location = new System.Drawing.Point(30, 0); this.txtDisplayAsset.Name = "txtDisplayAsset"; this.txtDisplayAsset.ReadOnly = true; - this.txtDisplayAsset.Size = new System.Drawing.Size(100, 20); + this.txtDisplayAsset.Size = new System.Drawing.Size(100, 19); this.txtDisplayAsset.TabIndex = 1; // // txtDisplayTime // - this.txtDisplayTime.Location = new System.Drawing.Point(30, 60); + this.txtDisplayTime.Location = new System.Drawing.Point(30, 55); this.txtDisplayTime.Name = "txtDisplayTime"; this.txtDisplayTime.ReadOnly = true; - this.txtDisplayTime.Size = new System.Drawing.Size(100, 20); + this.txtDisplayTime.Size = new System.Drawing.Size(100, 19); this.txtDisplayTime.TabIndex = 2; // // tmUpdateTimePosition @@ -77,9 +77,9 @@ // // btnFastRewind // - this.btnFastRewind.Location = new System.Drawing.Point(30, 90); + this.btnFastRewind.Location = new System.Drawing.Point(30, 83); this.btnFastRewind.Name = "btnFastRewind"; - this.btnFastRewind.Size = new System.Drawing.Size(75, 23); + this.btnFastRewind.Size = new System.Drawing.Size(75, 21); this.btnFastRewind.TabIndex = 3; this.btnFastRewind.Text = "Fast Rewind"; this.btnFastRewind.UseVisualStyleBackColor = true; @@ -87,9 +87,9 @@ // // btnFastForward // - this.btnFastForward.Location = new System.Drawing.Point(120, 90); + this.btnFastForward.Location = new System.Drawing.Point(120, 83); this.btnFastForward.Name = "btnFastForward"; - this.btnFastForward.Size = new System.Drawing.Size(75, 23); + this.btnFastForward.Size = new System.Drawing.Size(75, 21); this.btnFastForward.TabIndex = 4; this.btnFastForward.Text = "Fast Forward"; this.btnFastForward.UseVisualStyleBackColor = true; @@ -97,9 +97,9 @@ // // btnFineRewind // - this.btnFineRewind.Location = new System.Drawing.Point(30, 150); + this.btnFineRewind.Location = new System.Drawing.Point(30, 138); this.btnFineRewind.Name = "btnFineRewind"; - this.btnFineRewind.Size = new System.Drawing.Size(75, 23); + this.btnFineRewind.Size = new System.Drawing.Size(75, 21); this.btnFineRewind.TabIndex = 5; this.btnFineRewind.Text = "Fine Rewind"; this.btnFineRewind.UseVisualStyleBackColor = true; @@ -107,9 +107,9 @@ // // btnFineForward // - this.btnFineForward.Location = new System.Drawing.Point(120, 150); + this.btnFineForward.Location = new System.Drawing.Point(120, 138); this.btnFineForward.Name = "btnFineForward"; - this.btnFineForward.Size = new System.Drawing.Size(75, 23); + this.btnFineForward.Size = new System.Drawing.Size(75, 21); this.btnFineForward.TabIndex = 6; this.btnFineForward.Text = "Fine Forward"; this.btnFineForward.UseVisualStyleBackColor = true; @@ -117,9 +117,10 @@ // // btnSplit // - this.btnSplit.Location = new System.Drawing.Point(30, 180); + this.btnSplit.DialogResult = System.Windows.Forms.DialogResult.OK; + this.btnSplit.Location = new System.Drawing.Point(30, 166); this.btnSplit.Name = "btnSplit"; - this.btnSplit.Size = new System.Drawing.Size(75, 23); + this.btnSplit.Size = new System.Drawing.Size(75, 21); this.btnSplit.TabIndex = 7; this.btnSplit.Text = "Split"; this.btnSplit.UseVisualStyleBackColor = true; @@ -128,9 +129,9 @@ // btnStop // this.btnStop.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnStop.Location = new System.Drawing.Point(120, 180); + this.btnStop.Location = new System.Drawing.Point(120, 166); this.btnStop.Name = "btnStop"; - this.btnStop.Size = new System.Drawing.Size(75, 23); + this.btnStop.Size = new System.Drawing.Size(75, 21); this.btnStop.TabIndex = 8; this.btnStop.Text = "Stop"; this.btnStop.UseVisualStyleBackColor = true; @@ -138,9 +139,9 @@ // // btnPause // - this.btnPause.Location = new System.Drawing.Point(150, 30); + this.btnPause.Location = new System.Drawing.Point(150, 28); this.btnPause.Name = "btnPause"; - this.btnPause.Size = new System.Drawing.Size(75, 23); + this.btnPause.Size = new System.Drawing.Size(75, 21); this.btnPause.TabIndex = 0; this.btnPause.Text = "Pause"; this.btnPause.UseVisualStyleBackColor = true; @@ -148,18 +149,18 @@ // // txtSplitTime // - this.txtSplitTime.Location = new System.Drawing.Point(200, 250); + this.txtSplitTime.Location = new System.Drawing.Point(200, 231); this.txtSplitTime.Name = "txtSplitTime"; - this.txtSplitTime.Size = new System.Drawing.Size(100, 20); + this.txtSplitTime.Size = new System.Drawing.Size(100, 19); this.txtSplitTime.TabIndex = 9; // // Split // this.AcceptButton = this.btnSplit; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.btnStop; - this.ClientSize = new System.Drawing.Size(292, 273); + this.ClientSize = new System.Drawing.Size(292, 252); this.Controls.Add(this.txtSplitTime); this.Controls.Add(this.btnPause); this.Controls.Add(this.btnStop); Added: trunk/urakawa/application/Obi/Obi/Events/Node/MergeNodesEventArgs.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Events/Node/MergeNodesEventArgs.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/Events/Node/MergeNodesEventArgs.cs 2006-08-10 08:58:12 UTC (rev 838) @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using urakawa.core; + +namespace Obi.Events.Node +{ + public delegate void MergeNodesHandler(object sender, MergeNodesEventArgs e); + + public class MergeNodesEventArgs: NodeEventArgs + { + private CoreNode mNext; + + public CoreNode Next + { + get { return mNext; } + } + + public MergeNodesEventArgs(object origin, CoreNode node, CoreNode next) + : base(origin, node) + { + mNext = next; + } + } +} Modified: trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs 2006-08-10 05:27:45 UTC (rev 837) +++ trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs 2006-08-10 08:58:12 UTC (rev 838) @@ -20,8 +20,10 @@ public delegate void ShallowDeletedNodeHandler(object sender, NodeEventArgs e); public delegate void ImportedAssetHandler(object sender, NodeEventArgs e); - public delegate void DeletedBlock(object sender, NodeEventArgs e); + public delegate void DeletedBlockHandler(object sender, NodeEventArgs e); + public delegate void BlockChangedTimeHandler(object sender, NodeEventArgs e); + public class NodeEventArgs : EventArgs { private CoreNode mNode; // the node on which the operation is performed Added: trunk/urakawa/application/Obi/Obi/Events/Node/SplitNodeEventArgs.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Events/Node/SplitNodeEventArgs.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/Events/Node/SplitNodeEventArgs.cs 2006-08-10 08:58:12 UTC (rev 838) @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using urakawa.core; +using Obi.Assets; + +namespace Obi.Events.Node +{ + public delegate void SplitNodeHandler(object sender, SplitNodeEventArgs e); + + public class SplitNodeEventArgs: NodeEventArgs + { + private AudioMediaAsset mNewAsset; // the new asset created from the split + + public AudioMediaAsset NewAsset + { + get { return mNewAsset; } + } + + public SplitNodeEventArgs(object origin, CoreNode node, AudioMediaAsset newAsset) + : base(origin, node) + { + mNewAsset = newAsset; + } + } +} Modified: trunk/urakawa/application/Obi/Obi/Obi.csproj =================================================================== --- trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-10 05:27:45 UTC (rev 837) +++ trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-10 08:58:12 UTC (rev 838) @@ -154,11 +154,13 @@ <Compile Include="Events\Audio\VuMeter\ResetEventArgs.cs" /> <Compile Include="Events\Audio\VuMeter\UpdateFormsEventArgs.cs" /> <Compile Include="Events\Node\AddedPhraseNodeEventArgs.cs" /> + <Compile Include="Events\Node\MergeNodesEventArgs.cs" /> <Compile Include="Events\Node\NodeEventArgs.cs" /> <Compile Include="Events\Node\RenameNodeEventArgs.cs" /> <Compile Include="Events\Node\MovedNodeEventArgs.cs" /> <Compile Include="Events\Node\SelectedEventArgs.cs" /> <Compile Include="Events\Node\SetMediaEventArgs.cs" /> + <Compile Include="Events\Node\SplitNodeEventArgs.cs" /> <Compile Include="Events\Project\CommandCreatedEventArgs.cs" /> <Compile Include="Events\Project\StateChangedEventArgs.cs" /> <Compile Include="Events\Strip\ImportAssetEventArgs.cs" /> Modified: trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs 2006-08-10 05:27:45 UTC (rev 837) +++ trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs 2006-08-10 08:58:12 UTC (rev 838) @@ -82,14 +82,15 @@ this.userSettingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.preferencesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.audioPreferencesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator(); + this.dumpTreeDEBUGToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mHelpToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.aboutObiToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); this.mProjectPanel = new Obi.UserControls.ProjectPanel(); - this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator(); - this.dumpTreeDEBUGToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mMergeWithNextAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.menuStrip1.SuspendLayout(); this.statusStrip1.SuspendLayout(); this.SuspendLayout(); @@ -223,7 +224,7 @@ // this.mUndoToolStripMenuItem.Name = "mUndoToolStripMenuItem"; this.mUndoToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z))); - this.mUndoToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.mUndoToolStripMenuItem.Size = new System.Drawing.Size(140, 22); this.mUndoToolStripMenuItem.Text = "&Undo"; this.mUndoToolStripMenuItem.Click += new System.EventHandler(this.mUndoToolStripMenuItem_Click); // @@ -231,26 +232,26 @@ // this.mRedoToolStripMenuItem.Name = "mRedoToolStripMenuItem"; this.mRedoToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y))); - this.mRedoToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.mRedoToolStripMenuItem.Size = new System.Drawing.Size(140, 22); this.mRedoToolStripMenuItem.Text = "&Redo"; this.mRedoToolStripMenuItem.Click += new System.EventHandler(this.mRedoToolStripMenuItem_Click); // // toolStripSeparator4 // this.toolStripSeparator4.Name = "toolStripSeparator4"; - this.toolStripSeparator4.Size = new System.Drawing.Size(149, 6); + this.toolStripSeparator4.Size = new System.Drawing.Size(137, 6); // // metadataToolStripMenuItem // this.metadataToolStripMenuItem.Name = "metadataToolStripMenuItem"; - this.metadataToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.metadataToolStripMenuItem.Size = new System.Drawing.Size(140, 22); this.metadataToolStripMenuItem.Text = "&Metadata"; this.metadataToolStripMenuItem.Click += new System.EventHandler(this.metadataToolStripMenuItem_Click); // // touchProjectToolStripMenuItem // this.touchProjectToolStripMenuItem.Name = "touchProjectToolStripMenuItem"; - this.touchProjectToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.touchProjectToolStripMenuItem.Size = new System.Drawing.Size(140, 22); this.touchProjectToolStripMenuItem.Text = "&Touch project"; this.touchProjectToolStripMenuItem.Click += new System.EventHandler(this.touchProjectToolStripMenuItem_Click); // @@ -367,6 +368,7 @@ this.mImportAudioFileToolStripMenuItem, this.mPlayAudioBlockToolStripMenuItem, this.mSplitAudioBlockToolStripMenuItem, + this.mMergeWithNextAudioBlockToolStripMenuItem, this.mDeleteAudioBlockToolStripMenuItem, this.mRenameAudioBlockToolStripMenuItem, this.toolStripSeparator8, @@ -382,85 +384,85 @@ // mAddStripToolStripMenuItem // this.mAddStripToolStripMenuItem.Name = "mAddStripToolStripMenuItem"; - this.mAddStripToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.mAddStripToolStripMenuItem.Size = new System.Drawing.Size(231, 22); this.mAddStripToolStripMenuItem.Text = "&Add strip"; // // mRenameStripToolStripMenuItem // this.mRenameStripToolStripMenuItem.Name = "mRenameStripToolStripMenuItem"; - this.mRenameStripToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.mRenameStripToolStripMenuItem.Size = new System.Drawing.Size(231, 22); this.mRenameStripToolStripMenuItem.Text = "&Rename strip"; // // toolStripSeparator5 // this.toolStripSeparator5.Name = "toolStripSeparator5"; - this.toolStripSeparator5.Size = new System.Drawing.Size(177, 6); + this.toolStripSeparator5.Size = new System.Drawing.Size(228, 6); // // mImportAudioFileToolStripMenuItem // this.mImportAudioFileToolStripMenuItem.Name = "mImportAudioFileToolStripMenuItem"; - this.mImportAudioFileToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.mImportAudioFileToolStripMenuItem.Size = new System.Drawing.Size(231, 22); this.mImportAudioFileToolStripMenuItem.Text = "&Import audio file"; // // mPlayAudioBlockToolStripMenuItem // this.mPlayAudioBlockToolStripMenuItem.Name = "mPlayAudioBlockToolStripMenuItem"; - this.mPlayAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.mPlayAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(231, 22); this.mPlayAudioBlockToolStripMenuItem.Text = "&Play audio block"; // // mSplitAudioBlockToolStripMenuItem // this.mSplitAudioBlockToolStripMenuItem.Name = "mSplitAudioBlockToolStripMenuItem"; - this.mSplitAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.mSplitAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(231, 22); this.mSplitAudioBlockToolStripMenuItem.Text = "&Split audio block"; // // mDeleteAudioBlockToolStripMenuItem // this.mDeleteAudioBlockToolStripMenuItem.Name = "mDeleteAudioBlockToolStripMenuItem"; - this.mDeleteAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.mDeleteAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(231, 22); this.mDeleteAudioBlockToolStripMenuItem.Text = "&Delete audio block"; // // mRenameAudioBlockToolStripMenuItem // this.mRenameAudioBlockToolStripMenuItem.Name = "mRenameAudioBlockToolStripMenuItem"; - this.mRenameAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.mRenameAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(231, 22); this.mRenameAudioBlockToolStripMenuItem.Text = "Re&name audio block"; // // toolStripSeparator8 // this.toolStripSeparator8.Name = "toolStripSeparator8"; - this.toolStripSeparator8.Size = new System.Drawing.Size(177, 6); + this.toolStripSeparator8.Size = new System.Drawing.Size(228, 6); // // mShowInTOCViewToolStripMenuItem // this.mShowInTOCViewToolStripMenuItem.Name = "mShowInTOCViewToolStripMenuItem"; - this.mShowInTOCViewToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.mShowInTOCViewToolStripMenuItem.Size = new System.Drawing.Size(231, 22); this.mShowInTOCViewToolStripMenuItem.Text = "Show in &TOC view"; // // toolStripSeparator9 // this.toolStripSeparator9.Name = "toolStripSeparator9"; - this.toolStripSeparator9.Size = new System.Drawing.Size(177, 6); + this.toolStripSeparator9.Size = new System.Drawing.Size(228, 6); // // playFirstPhraseToolStripMenuItem // this.playFirstPhraseToolStripMenuItem.Name = "playFirstPhraseToolStripMenuItem"; - this.playFirstPhraseToolStripMenuItem.Size = new System.Drawing.Size(180, 22); - this.playFirstPhraseToolStripMenuItem.Text = "&Play first audio block"; + this.playFirstPhraseToolStripMenuItem.Size = new System.Drawing.Size(231, 22); + this.playFirstPhraseToolStripMenuItem.Text = "P&lay first audio block (DEBUG)"; this.playFirstPhraseToolStripMenuItem.Click += new System.EventHandler(this.playFirstPhraseToolStripMenuItem_Click); // // splitFirstAudioBlockToolStripMenuItem // this.splitFirstAudioBlockToolStripMenuItem.Name = "splitFirstAudioBlockToolStripMenuItem"; - this.splitFirstAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(180, 22); - this.splitFirstAudioBlockToolStripMenuItem.Text = "&Split first audio block"; + this.splitFirstAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(231, 22); + this.splitFirstAudioBlockToolStripMenuItem.Text = "Split &first audio block (DEBUG)"; this.splitFirstAudioBlockToolStripMenuItem.Click += new System.EventHandler(this.splitFirstAudioBlockToolStripMenuItem_Click); // // startRecordingToolStripMenuItem // this.startRecordingToolStripMenuItem.Name = "startRecordingToolStripMenuItem"; - this.startRecordingToolStripMenuItem.Size = new System.Drawing.Size(180, 22); - this.startRecordingToolStripMenuItem.Text = "S&tart recording"; + this.startRecordingToolStripMenuItem.Size = new System.Drawing.Size(231, 22); + this.startRecordingToolStripMenuItem.Text = "S&tart recording (DEBUG)"; this.startRecordingToolStripMenuItem.Click += new System.EventHandler(this.startRecordingToolStripMenuItem_Click); // // toolsToolStripMenuItem @@ -496,6 +498,18 @@ this.audioPreferencesToolStripMenuItem.Text = "&Audio preferences"; this.audioPreferencesToolStripMenuItem.Click += new System.EventHandler(this.audioPreferencesToolStripMenuItem_Click); // + // toolStripSeparator10 + // + this.toolStripSeparator10.Name = "toolStripSeparator10"; + this.toolStripSeparator10.Size = new System.Drawing.Size(171, 6); + // + // dumpTreeDEBUGToolStripMenuItem + // + this.dumpTreeDEBUGToolStripMenuItem.Name = "dumpTreeDEBUGToolStripMenuItem"; + this.dumpTreeDEBUGToolStripMenuItem.Size = new System.Drawing.Size(174, 22); + this.dumpTreeDEBUGToolStripMenuItem.Text = "&Dump tree (DEBUG)"; + this.dumpTreeDEBUGToolStripMenuItem.Click += new System.EventHandler(this.dumpTreeDEBUGToolStripMenuItem_Click); + // // helpToolStripMenuItem // this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -549,18 +563,12 @@ this.mProjectPanel.Size = new System.Drawing.Size(767, 450); this.mProjectPanel.TabIndex = 4; // - // toolStripSeparator10 + // mMergeWithNextAudioBlockToolStripMenuItem // - this.toolStripSeparator10.Name = "toolStripSeparator10"; - this.toolStripSeparator10.Size = new System.Drawing.Size(171, 6); + this.mMergeWithNextAudioBlockToolStripMenuItem.Name = "mMergeWithNextAudioBlockToolStripMenuItem"; + this.mMergeWithNextAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(231, 22); + this.mMergeWithNextAudioBlockToolStripMenuItem.Text = "&Merge with next audio block"; // - // dumpTreeDEBUGToolStripMenuItem - // - this.dumpTreeDEBUGToolStripMenuItem.Name = "dumpTreeDEBUGToolStripMenuItem"; - this.dumpTreeDEBUGToolStripMenuItem.Size = new System.Drawing.Size(174, 22); - this.dumpTreeDEBUGToolStripMenuItem.Text = "&Dump tree (DEBUG)"; - this.dumpTreeDEBUGToolStripMenuItem.Click += new System.EventHandler(this.dumpTreeDEBUGToolStripMenuItem_Click); - // // ObiForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); @@ -648,6 +656,7 @@ private System.Windows.Forms.ToolStripMenuItem aboutObiToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator10; private System.Windows.Forms.ToolStripMenuItem dumpTreeDEBUGToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem mMergeWithNextAudioBlockToolStripMenuItem; } Modified: trunk/urakawa/application/Obi/Obi/Project.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.cs 2006-08-10 05:27:45 UTC (rev 837) +++ trunk/urakawa/application/Obi/Obi/Project.cs 2006-08-10 08:58:12 UTC (rev 838) @@ -57,7 +57,8 @@ public event Events.Node.MovedNodeHandler UndidMoveNode; // a node was restored to its previous location public event Events.Node.MediaSetHandler MediaSet; // a media object was set on a node public event Events.Node.DeletedNodeHandler DeletedPhraseNode; // deleted a phrase node - + public event Events.Node.BlockChangedTimeHandler BlockChangedTime; // a block's time has changed + /// <summary> /// This flag is set to true if the project contains modifications that have not been saved. /// </summary> @@ -1038,6 +1039,41 @@ StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); } + /// <summary> + /// Handle a request to split an asset. The event contains the original node that was split and the new asset + /// created from the split. A new sibling to the original node is to be added. + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + public void SplitAssetRequested(object sender, Events.Node.SplitNodeEventArgs e) + { + CoreNode newNode = CreatePhraseNode(e.NewAsset); + CoreNode parent = (CoreNode)e.Node.getParent(); + int index = parent.indexOf(e.Node) + 1; + parent.insert(newNode, index); + UpdateSeq(e.Node); + BlockChangedTime(this, new Events.Node.NodeEventArgs(e.Origin, e.Node)); + AddedPhraseNode(this, new Events.Node.AddedPhraseNodeEventArgs(e.Origin, newNode, index)); + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + } + + /// <summary> + /// Merge two nodes. + /// </summary> + public void MergeNodesRequested(object sender, Events.Node.MergeNodesEventArgs e) + { + Assets.AudioMediaAsset asset = GetAudioMediaAsset(e.Node); + Assets.AudioMediaAsset next = GetAudioMediaAsset(e.Next); + mAssManager.MergeAudioMediaAssets(asset, next); + UpdateSeq(e.Node); + BlockChangedTime(this, new Events.Node.NodeEventArgs(e.Origin, e.Node)); + DeletedPhraseNode(this, new Events.Node.NodeEventArgs(e.Origin, e.Next)); + e.Next.detach(); + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + } + #endregion #region Strip event handlers @@ -1139,6 +1175,28 @@ TextMedia annotation = (TextMedia)getPresentation().getMediaFactory().createMedia(urakawa.media.MediaType.TEXT); annotation.setText(asset.Name); prop.setMedia(mAnnotationChannel, annotation); + AssetProperty assProp = (AssetProperty)getPresentation().getPropertyFactory().createProperty("AssetProperty", + ObiPropertyFactory.ObiNS); + assProp.Asset = asset; + node.setProperty(assProp); + NodeInformationProperty typeProp = + (NodeInformationProperty)getPresentation().getPropertyFactory().createProperty("NodeInformationProperty", + ObiPropertyFactory.ObiNS); + typeProp.NodeType = NodeType.Phrase; + typeProp.NodeStatus = NodeStatus.Used; + node.setProperty(typeProp); + UpdateSeq(node); + return node; + } + + /// <summary> + /// Make a new sequence media object for the asset of this node. + /// The sequence media object is simply a translation of the list of clips. + /// </summary> + private void UpdateSeq(CoreNode node) + { + Assets.AudioMediaAsset asset = GetAudioMediaAsset(node); + ChannelsProperty prop = (ChannelsProperty)node.getProperty(typeof(ChannelsProperty)); SequenceMedia seq = (SequenceMedia)getPresentation().getMediaFactory().createMedia(urakawa.media.MediaType.EMPTY_SEQUENCE); AudioMedia audio = (AudioMedia)getPresentation().getMediaFactory().createMedia(urakawa.media.MediaType.AUDIO); @@ -1154,17 +1212,6 @@ seq.appendItem(audio); } prop.setMedia(mAudioChannel, seq); - AssetProperty assProp = (AssetProperty)getPresentation().getPropertyFactory().createProperty("AssetProperty", - ObiPropertyFactory.ObiNS); - assProp.Asset = asset; - node.setProperty(assProp); - NodeInformationProperty typeProp = - (NodeInformationProperty)getPresentation().getPropertyFactory().createProperty("NodeInformationProperty", - ObiPropertyFactory.ObiNS); - typeProp.NodeType = NodeType.Phrase; - typeProp.NodeStatus = NodeStatus.Used; - node.setProperty(typeProp); - return node; } /// <summary> Modified: trunk/urakawa/application/Obi/Obi/UserControls/AudioBlock.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/AudioBlock.cs 2006-08-10 05:27:45 UTC (rev 837) +++ trunk/urakawa/application/Obi/Obi/UserControls/AudioBlock.cs 2006-08-10 08:58:12 UTC (rev 838) @@ -167,7 +167,5 @@ } #endregion - - } } Modified: trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs 2006-08-10 05:27:45 UTC (rev 837) +++ trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs 2006-08-10 08:58:12 UTC (rev 838) @@ -67,6 +67,10 @@ mStripManagerPanel.SetMedia -= new Events.Node.SetMediaHandler(mProject.SetMediaRequested); mProject.MediaSet -= new Events.Node.MediaSetHandler(mStripManagerPanel.SyncMediaSet); + mStripManagerPanel.SplitNode -= new Events.Node.SplitNodeHandler(mProject.SplitAssetRequested); + mStripManagerPanel.MergeNodes -= new Events.Node.MergeNodesHandler(mProject.MergeNodesRequested); + mProject.BlockChangedTime -= new Events.Node.BlockChangedTimeHandler(mStripManagerPanel.SyncBlockChangedTime); + mStripManagerPanel.DeleteBlock -= new Events.Node.RequestToDeleteBlockHandler(mProject.DeletePhraseNodeRequested); mProject.DeletedPhraseNode -= new Events.Node.DeletedNodeHandler(mStripManagerPanel.SyncDeletedPhraseNode); @@ -114,6 +118,10 @@ mStripManagerPanel.SetMedia += new Events.Node.SetMediaHandler(value.SetMediaRequested); value.MediaSet += new Events.Node.MediaSetHandler(mStripManagerPanel.SyncMediaSet); + mStripManagerPanel.SplitNode += new Events.Node.SplitNodeHandler(value.SplitAssetRequested); + mStripManagerPanel.MergeNodes += new Events.Node.MergeNodesHandler(value.MergeNodesRequested); + value.BlockChangedTime += new Events.Node.BlockChangedTimeHandler(mStripManagerPanel.SyncBlockChangedTime); + mStripManagerPanel.DeleteBlock += new Events.Node.RequestToDeleteBlockHandler(value.DeletePhraseNodeRequested); value.DeletedPhraseNode += new Events.Node.DeletedNodeHandler(mStripManagerPanel.SyncDeletedPhraseNode); } Modified: trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs 2006-08-10 05:27:45 UTC (rev 837) +++ trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs 2006-08-10 08:58:12 UTC (rev 838) @@ -38,10 +38,11 @@ this.mImportAudioFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mPlayAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mSplitAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mMergeWithNextAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mDeleteAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mRenameAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); this.mShowInTOCViewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.mDeleteAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.contextMenuStrip1.SuspendLayout(); this.SuspendLayout(); // @@ -79,80 +80,88 @@ this.mImportAudioFileToolStripMenuItem, this.mPlayAudioBlockToolStripMenuItem, this.mSplitAudioBlockToolStripMenuItem, + this.mMergeWithNextAudioBlockToolStripMenuItem, this.mDeleteAudioBlockToolStripMenuItem, this.mRenameAudioBlockToolStripMenuItem, this.toolStripSeparator2, this.mShowInTOCViewToolStripMenuItem}); this.contextMenuStrip1.Name = "contextMenuStrip1"; this.contextMenuStrip1.ShowImageMargin = false; - this.contextMenuStrip1.Size = new System.Drawing.Size(149, 214); + this.contextMenuStrip1.Size = new System.Drawing.Size(190, 236); // // mAddStripToolStripMenuItem // this.mAddStripToolStripMenuItem.Name = "mAddStripToolStripMenuItem"; - this.mAddStripToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.mAddStripToolStripMenuItem.Size = new System.Drawing.Size(189, 22); this.mAddStripToolStripMenuItem.Text = "&Add strip"; this.mAddStripToolStripMenuItem.Click += new System.EventHandler(this.mAddStripToolStripMenuItem_Click); // // mRenameStripToolStripMenuItem // this.mRenameStripToolStripMenuItem.Name = "mRenameStripToolStripMenuItem"; - this.mRenameStripToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.mRenameStripToolStripMenuItem.Size = new System.Drawing.Size(189, 22); this.mRenameStripToolStripMenuItem.Text = "&Rename strip"; this.mRenameStripToolStripMenuItem.Click += new System.EventHandler(this.mRenameStripToolStripMenuItem_Click); // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(145, 6); + this.toolStripSeparator1.Size = new System.Drawing.Size(186, 6); // // mImportAudioFileToolStripMenuItem // this.mImportAudioFileToolStripMenuItem.Name = "mImportAudioFileToolStripMenuItem"; - this.mImportAudioFileToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.mImportAudioFileToolStripMenuItem.Size = new System.Drawing.Size(189, 22); this.mImportAudioFileToolStripMenuItem.Text = "&Import audio file"; this.mImportAudioFileToolStripMenuItem.Click += new System.EventHandler(this.mImportAssetToolStripMenuItem_Click); // // mPlayAudioBlockToolStripMenuItem // this.mPlayAudioBlockToolStripMenuItem.Name = "mPlayAudioBlockToolStripMenuItem"; - this.mPlayAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.mPlayAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(189, 22); this.mPlayAudioBlockToolStripMenuItem.Text = "&Play audio block"; this.mPlayAudioBlockToolStripMenuItem.Click += new System.EventHandler(this.mPlayAudioBlockToolStripMenuItem_Click); // // mSplitAudioBlockToolStripMenuItem // this.mSplitAudioBlockToolStripMenuItem.Name = "mSplitAudioBlockToolStripMenuItem"; - this.mSplitAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.mSplitAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(189, 22); this.mSplitAudioBlockToolStripMenuItem.Text = "&Split audio block"; this.mSplitAudioBlockToolStripMenuItem.Click += new System.EventHandler(this.mSplitAudioBlockToolStripMenuItem_Click); // + // mMergeWithNextAudioBlockToolStripMenuItem + // + this.mMergeWithNextAudioBlockToolStripMenuItem.Name = "mMergeWithNextAudioBlockToolStripMenuItem"; + this.mMergeWithNextAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(189, 22); + this.mMergeWithNextAudioBlockToolStripMenuItem.Text = "&Merge with next audio block"; + this.mMergeWithNextAudioBlockToolStripMenuItem.Click += new System.EventHandler(this.mMergeWithNextAudioBlockToolStripMenuItem_Click); + // + // mDeleteAudioBlockToolStripMenuItem + // + this.mDeleteAudioBlockToolStripMenuItem.Name = "mDeleteAudioBlockToolStripMenuItem"; + this.mDeleteAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(189, 22); + this.mDeleteAudioBlockToolStripMenuItem.Text = "&Delete audio block"; + this.mDeleteAudioBlockToolStripMenuItem.Click += new System.EventHandler(this.mDeleteAudioBlockToolStripMenuItem_Click); + // // mRenameAudioBlockToolStripMenuItem // this.mRenameAudioBlockToolStripMenuItem.Name = "mRenameAudioBlockToolStripMenuItem"; - this.mRenameAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.mRenameAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(189, 22); this.mRenameAudioBlockToolStripMenuItem.Text = "Re&name audio block"; this.mRenameAudioBlockToolStripMenuItem.Click += new System.EventHandler(this.mRenameAudioBlockToolStripMenuItem_Click); // // toolStripSeparator2 // this.toolStripSeparator2.Name = "toolStripSeparator2"; - this.toolStripSeparator2.Size = new System.Drawing.Size(145, 6); + this.toolStripSeparator2.Size = new System.Drawing.Size(186, 6); // // mShowInTOCViewToolStripMenuItem // this.mShowInTOCViewToolStripMenuItem.Name = "mShowInTOCViewToolStripMenuItem"; - this.mShowInTOCViewToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.mShowInTOCViewToolStripMenuItem.Size = new System.Drawing.Size(189, 22); this.mShowInTOCViewToolStripMenuItem.Text = "Show in &TOC view"; this.mShowInTOCViewToolStripMenuItem.Click += new System.EventHandler(this.mShowInTOCViewToolStripMenuItem_Click); // - // mDeleteAudioBlockToolStripMenuItem - // - this.mDeleteAudioBlockToolStripMenuItem.Name = "mDeleteAudioBlockToolStripMenuItem"; - this.mDeleteAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(148, 22); - this.mDeleteAudioBlockToolStripMenuItem.Text = "&Delete audio block"; - this.mDeleteAudioBlockToolStripMenuItem.Click += new System.EventHandler(this.mDeleteAudioBlockToolStripMenuItem_Click); - // // StripManagerPanel // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); @@ -182,5 +191,6 @@ private System.Windows.Forms.ToolStripMenuItem mShowInTOCViewToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; private System.Windows.Forms.ToolStripMenuItem mDeleteAudioBlockToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem mMergeWithNextAudioBlockToolStripMenuItem; } } Modified: trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs 2006-08-10 05:27:45 UTC (rev 837) +++ trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs 2006-08-10 08:58:12 UTC (rev 838) @@ -28,6 +28,8 @@ public event Events.Node.RequestToRenameNodeHandler RenameSection; public event Events.Node.SetMediaHandler SetMedia; public event Events.Node.RequestToDeleteBlockHandler DeleteBlock; + public event Events.Node.SplitNodeHandler SplitNode; + public event Events.Node.MergeNodesHandler MergeNodes; public event Events.Strip.RequestToImportAssetHandler ImportPhrase; public event Events.Strip.SelectedHandler SelectedStrip; public event Events.Strip.SelectedHandler SelectedAudioBlock; @@ -381,6 +383,12 @@ strip.RenameAudioBlock(mPhraseNodeMap[e.Node], ((TextMedia)e.Media).getText()); } + internal void SyncBlockChangedTime(object sender, Events.Node.NodeEventArgs e) + { + AudioBlock block = mPhraseNodeMap[e.Node]; + block.Time = (Math.Round(Project.GetAudioMediaAsset(e.Node).LengthInMilliseconds / 1000)).ToString() + "s"; + } + #endregion #region Menu items @@ -441,11 +449,33 @@ if (mSelectedPhrase != null) { Dialogs.Split dialog = new Dialogs.Split(mSelectedPhrase, 0.0); - dialog.ShowDialog(); + if (dialog.ShowDialog() == DialogResult.OK) + { + SplitNode(this, new Events.Node.SplitNodeEventArgs(this, mSelectedPhrase, dialog.ResultAsset)); + } } } /// <summary> + /// Merge the currently selected block with the following one (if there is such a block.) + /// </summary> + private void mMergeWithNextAudioBlockToolStripMenuItem_Click(object sender, EventArgs e) + { + if (mSelectedPhrase != null) + { + CoreNode parent = (CoreNode)mSelectedPhrase.getParent(); + for (int i = parent.indexOf(mSelectedPhrase) + 1; i < parent.getChildCount(); ++i) + { + if (Project.GetNodeType(parent.getChild(i)) == NodeType.Phrase) + { + MergeNodes(this, new Events.Node.MergeNodesEventArgs(this, mSelectedPhrase, parent.getChild(i))); + break; + } + } + } + } + + /// <summary> /// Rename the currently selected audio block (JQ) /// </summary> internal void mRenameAudioBlockToolStripMenuItem_Click(object sender, EventArgs e) Modified: trunk/urakawa/application/Obi/Obi/Visitors/DumpTree.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Visitors/DumpTree.cs 2006-08-10 05:27:45 UTC (rev 837) +++ trunk/urakawa/application/Obi/Obi/Visitors/DumpTree.cs 2006-08-10 08:58:12 UTC (rev 838) @@ -28,6 +28,11 @@ break; case NodeType.Phrase: info += " " + ((TextMedia)Project.GetMediaForChannel(n, Project.AnnotationChannel)).getText(); + Assets.AudioMediaAsset asset = Project.GetAudioMediaAsset(n); + foreach (Assets.AudioClip clip in asset.Clips) + { + info += String.Format("\n {0}{1} {2}-{3}", indent, clip.Path, clip.BeginTime, clip.EndTime); + } break; default: break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2006-08-11 05:08:14
|
Revision: 841 Author: marisademeglio Date: 2006-08-10 22:07:59 -0700 (Thu, 10 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=841&view=rev Log Message: ----------- First pass at TOC clipboard features Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Events/Node/AddedSectionNodeEventArgs.cs trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs trunk/urakawa/application/Obi/Obi/Obi.csproj trunk/urakawa/application/Obi/Obi/Project.cs trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.Designer.cs trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs Added Paths: ----------- trunk/urakawa/application/Obi/Obi/Commands/TOC/CopySection.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/CutSection.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/PasteSection.cs Added: trunk/urakawa/application/Obi/Obi/Commands/TOC/CopySection.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/CopySection.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/CopySection.cs 2006-08-11 05:07:59 UTC (rev 841) @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using urakawa.core; + +namespace Obi.Commands.TOC +{ + class CopySection : Command + { + private Project mProject; + private CoreNode mNode; + + public override string Label + { + get + { + return Localizer.Message("copy_section_command_label"); + } + } + + public CopySection(Project project, CoreNode node) + { + mProject = project; + mNode = node; + } + + /// <summary> + /// ReDo: uncut the node + /// </summary> + public override void Do() + { + mProject.CopyTOCNode(mProject, mNode); + } + + /// <summary> + /// Undo: restore the node and its descendants. + /// </summary> + public override void Undo() + { + mProject.UndoCopyTOCNode(mNode); + } + } +} Added: trunk/urakawa/application/Obi/Obi/Commands/TOC/CutSection.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/CutSection.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/CutSection.cs 2006-08-11 05:07:59 UTC (rev 841) @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using urakawa.core; + +namespace Obi.Commands.TOC +{ + class CutSection : Command + { + private Project mProject; + private CoreNode mNode; + private CoreNode mParent; + private int mIndex; + private int mPosition; + + public override string Label + { + get + { + return Localizer.Message("cut_section_command_label"); + } + } + + public CutSection(Project project, CoreNode node, CoreNode parent, int index, int position) + { + mProject = project; + mNode = node; + mParent = parent; + mIndex = index; + mPosition = position; + } + + /// <summary> + /// ReDo: uncut the node + /// </summary> + public override void Do() + { + mProject.DoCutTOCNode(mProject, mNode); + } + + /// <summary> + /// Undo: restore the node and its descendants. + /// </summary> + public override void Undo() + { + mProject.UndoCutNode(mNode, mParent, mIndex, mPosition); + } + } +} Added: trunk/urakawa/application/Obi/Obi/Commands/TOC/PasteSection.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/PasteSection.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/PasteSection.cs 2006-08-11 05:07:59 UTC (rev 841) @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using urakawa.core; + +namespace Obi.Commands.TOC +{ + class PasteSection : Command + { + private Project mProject; + private CoreNode mParent; + private CoreNode mNode; + + public override string Label + { + get + { + return Localizer.Message("paste_section_command_label"); + } + } + + public PasteSection(Project project, CoreNode node, CoreNode parent) + { + mProject = project; + mParent = parent; + mNode = node; + } + + + public override void Do() + { + mProject.PasteTOCNode(mProject, mParent); + } + + public override void Undo() + { + mProject.RemoveNode(mProject, mNode); + } + } +} Modified: trunk/urakawa/application/Obi/Obi/Events/Node/AddedSectionNodeEventArgs.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Events/Node/AddedSectionNodeEventArgs.cs 2006-08-10 21:56:10 UTC (rev 840) +++ trunk/urakawa/application/Obi/Obi/Events/Node/AddedSectionNodeEventArgs.cs 2006-08-11 05:07:59 UTC (rev 841) @@ -7,6 +7,8 @@ namespace Obi.Events.Node { public delegate void AddedSectionNodeHandler(object sender, AddedSectionNodeEventArgs e); + public delegate void PastedSectionNodeHandler(object sender, AddedSectionNodeEventArgs e); + /// <summary> /// A section node was added. Modified: trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs 2006-08-10 21:56:10 UTC (rev 840) +++ trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs 2006-08-11 05:07:59 UTC (rev 841) @@ -14,10 +14,16 @@ public delegate void RequestToMoveNodeUpHandler(object sender, NodeEventArgs e); public delegate void RequestToMoveNodeDownHandler(object sender, NodeEventArgs e); public delegate void RequestToDeleteBlockHandler(object sender, NodeEventArgs e); + public delegate void RequestToCutNodeHandler(object sender, NodeEventArgs e); + public delegate void RequestToCopyNodeHandler(object sender, NodeEventArgs e); + public delegate void RequestToPasteNodeHandler(object sender, NodeEventArgs e); public delegate void DecreasedNodeLevelHandler(object sender, NodeEventArgs e); public delegate void DeletedNodeHandler(object sender, NodeEventArgs e); public delegate void ShallowDeletedNodeHandler(object sender, NodeEventArgs e); + public delegate void CutNodeHandler(object sender, NodeEventArgs e); + public delegate void CopiedNodeHandler(object sender, NodeEventArgs e); + public delegate void UndidPasteNodeHandler(object sender, NodeEventArgs e); public delegate void ImportedAssetHandler(object sender, NodeEventArgs e); public delegate void DeletedBlockHandler(object sender, NodeEventArgs e); Modified: trunk/urakawa/application/Obi/Obi/Obi.csproj =================================================================== --- trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-10 21:56:10 UTC (rev 840) +++ trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-11 05:07:59 UTC (rev 841) @@ -83,11 +83,14 @@ <Compile Include="Commands\Strips\DeletePhrase.cs" /> <Compile Include="Commands\Strips\RenamePhrase.cs" /> <Compile Include="Commands\TOC\AddSection.cs" /> + <Compile Include="Commands\TOC\CopySection.cs" /> + <Compile Include="Commands\TOC\CutSection.cs" /> <Compile Include="Commands\TOC\DecreaseSectionLevel.cs" /> <Compile Include="Commands\TOC\DeleteSection.cs" /> <Compile Include="Commands\TOC\IncreaseSectionLevel.cs" /> <Compile Include="Commands\TOC\MoveSectionDown.cs" /> <Compile Include="Commands\TOC\MoveSectionUp.cs" /> + <Compile Include="Commands\TOC\PasteSection.cs" /> <Compile Include="Commands\TOC\Rename.cs" /> <Compile Include="CustomProperties.cs" /> <Compile Include="Dialogs\About.cs"> Modified: trunk/urakawa/application/Obi/Obi/Project.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.cs 2006-08-10 21:56:10 UTC (rev 840) +++ trunk/urakawa/application/Obi/Obi/Project.cs 2006-08-11 05:07:59 UTC (rev 841) @@ -39,6 +39,8 @@ private string mLastPath; // last path to which the project was saved (see save as) private SimpleMetadata mMetadata; // metadata for this project + private CoreNode mClipboard; //clipboard for cut-copy-paste + public static readonly string XUKVersion = "obi-xuk-001"; // version of the Obi/XUK file public static readonly string AudioChannel = "obi.audio"; // canonical name of the audio channel public static readonly string TextChannel = "obi.text"; // canonical name of the text channel @@ -59,6 +61,15 @@ public event Events.Node.DeletedNodeHandler DeletedPhraseNode; // deleted a phrase node public event Events.Node.BlockChangedTimeHandler BlockChangedTime; // a block's time has changed + //md: toc clipboard stuff + public event Events.Node.CutNodeHandler CutTOCNode; + public event Events.Node.MovedNodeHandler UndidCutTOCNode; + public event Events.Node.CopiedNodeHandler CopiedTOCNode; + public event Events.Node.CopiedNodeHandler UndidCopyTOCNode; + public event Events.Node.PastedSectionNodeHandler PastedTOCNode; + public event Events.Node.UndidPasteNodeHandler UndidPasteTOCNode; + + /// <summary> /// This flag is set to true if the project contains modifications that have not been saved. /// </summary> @@ -127,6 +138,10 @@ mAssManager = null; mUnsaved = false; mXUKPath = null; + + //md: + mClipboard = null; + // Use our own property factory so that we can create custom properties getPresentation().setPropertyFactory(new ObiPropertyFactory(getPresentation())); } @@ -984,6 +999,140 @@ RenameNode(sender, e.Node, e.Label); } + //md 20060810 + public void CutTOCNodeRequested(object sender, Events.Node.NodeEventArgs e) + { + DoCutTOCNode(sender, e.Node); + } + + //md 20060810 + public void DoCutTOCNode(object origin, CoreNode node) + { + if (node == null) return; + + CoreNode parent = (CoreNode)node.getParent(); + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); + getPresentation().getRootNode().acceptDepthFirst(visitor); + //we need to save the state of the node before it is altered + Commands.TOC.CutSection command = null; + + if (origin != this) + { + command = new Commands.TOC.CutSection + (this, node, parent, parent.indexOf(node), visitor.Position); + } + + mClipboard = node; + node.detach(); + + CutTOCNode(this, new Events.Node.NodeEventArgs(origin, node)); + + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + if (command != null) CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); + } + + //md 20060810 + public void UndoCutNode(CoreNode node, CoreNode parent, int index, int position) + { + if (node.getParent() != null) node.detach(); + parent.insert(node, index); + + UndidCutTOCNode(this, new Events.Node.MovedNodeEventArgs(this, node, parent, index, position)); + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + } + + //md 20060810 + public void CopyTOCNodeRequested(object sender, Events.Node.NodeEventArgs e) + { + CopyTOCNode(sender, e.Node); + } + + //md 20060810 + public void CopyTOCNode(object origin, CoreNode node) + { + if (node == null) return; + + Commands.TOC.CopySection command = null; + + if (origin != this) + { + command = new Commands.TOC.CopySection(this, node); + } + + //the actual copy operation + mClipboard = node.copy(true); + + CopiedTOCNode(this, new Events.Node.NodeEventArgs(origin, node)); + + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + if (command != null) CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); + } + + //md 20060810 + public void UndoCopyTOCNode(CoreNode node) + { + mClipboard = null; + + UndidCopyTOCNode(this, new Events.Node.NodeEventArgs(this, node)); + + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + } + + //md 20060810 + public void PasteTOCNodeRequested(object sender, Events.Node.NodeEventArgs e) + { + PasteTOCNode(sender, e.Node); + } + + //md 20060810 + //"paste" will paste the clipboard contents as the first child of the given node + public void PasteTOCNode(object origin, CoreNode parent) + { + if (parent == null) return; + + Commands.TOC.PasteSection command = null; + + CoreNode pastedSection = mClipboard; + + //don't clear the clipboard, we can use it again + + if (origin != this) + { + command = new Commands.TOC.PasteSection(this, pastedSection, parent); + } + + //the actual paste operation + parent.insert(pastedSection, 0); + + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(pastedSection); + getPresentation().getRootNode().acceptDepthFirst(visitor); + + PastedTOCNode(this, new Events.Node.AddedSectionNodeEventArgs + (origin, pastedSection, parent.indexOf(pastedSection), visitor.Position)); + + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + if (command != null) CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); + } + + //md 20060810 + public void UndoPasteTOCNode(CoreNode node) + { + mClipboard = node.copy(true); + + node.detach(); + + UndidPasteTOCNode(this, new Events.Node.NodeEventArgs(this, mClipboard)); + + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + + } + // Find the channel and set the media object. // As this may fail, return true if the change was really made or false otherwise. // Throw an exception if the channel could not be found (JQ) Modified: trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs 2006-08-10 21:56:10 UTC (rev 840) +++ trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs 2006-08-11 05:07:59 UTC (rev 841) @@ -74,6 +74,19 @@ mStripManagerPanel.DeleteBlock -= new Events.Node.RequestToDeleteBlockHandler(mProject.DeletePhraseNodeRequested); mProject.DeletedPhraseNode -= new Events.Node.DeletedNodeHandler(mStripManagerPanel.SyncDeletedPhraseNode); + + //md: toc clipboard features + mTOCPanel.RequestToCutNode -= new Events.Node.RequestToCutNodeHandler(mProject.CutTOCNodeRequested); + mProject.CutTOCNode -= new Events.Node.CutNodeHandler(mTOCPanel.SyncCutNode); + mProject.UndidCutTOCNode -= new Events.Node.MovedNodeHandler(mTOCPanel.SyncUndidCutNode); + + mTOCPanel.RequestToCopyNode -= new Events.Node.RequestToCopyNodeHandler(mProject.CopyTOCNodeRequested); + mProject.CopiedTOCNode -= new Events.Node.CopiedNodeHandler(mTOCPanel.SyncCopiedNode); + mProject.UndidCopyTOCNode -= new Events.Node.CopiedNodeHandler(mTOCPanel.SyncUndidCopyNode); + + mTOCPanel.RequestToPasteNode -= new Events.Node.RequestToPasteNodeHandler(mProject.PasteTOCNodeRequested); + mProject.PastedTOCNode -= new Events.Node.PastedSectionNodeHandler(mTOCPanel.SyncPastedNode); + mProject.UndidPasteTOCNode -= new Events.Node.UndidPasteNodeHandler(mTOCPanel.SyncUndidPasteNode); } // Set up the handlers for the new project if (value != null) @@ -124,6 +137,20 @@ mStripManagerPanel.DeleteBlock += new Events.Node.RequestToDeleteBlockHandler(value.DeletePhraseNodeRequested); value.DeletedPhraseNode += new Events.Node.DeletedNodeHandler(mStripManagerPanel.SyncDeletedPhraseNode); + + //md: clipboard in the TOC + mTOCPanel.RequestToCutNode += new Events.Node.RequestToCutNodeHandler(value.CutTOCNodeRequested); + value.CutTOCNode += new Events.Node.CutNodeHandler(mTOCPanel.SyncCutNode); + value.UndidCutTOCNode += new Events.Node.MovedNodeHandler(mTOCPanel.SyncUndidCutNode); + + mTOCPanel.RequestToCopyNode += new Events.Node.RequestToCopyNodeHandler(value.CopyTOCNodeRequested); + value.CopiedTOCNode += new Events.Node.CopiedNodeHandler(mTOCPanel.SyncCopiedNode); + value.UndidCopyTOCNode += new Events.Node.CopiedNodeHandler(mTOCPanel.SyncUndidCopyNode); + + mTOCPanel.RequestToPasteNode += new Events.Node.RequestToPasteNodeHandler(value.PasteTOCNodeRequested); + value.PastedTOCNode += new Events.Node.PastedSectionNodeHandler(mTOCPanel.SyncPastedNode); + value.UndidPasteTOCNode += new Events.Node.UndidPasteNodeHandler(mTOCPanel.SyncUndidPasteNode); + } mProject = value; mSplitContainer.Visible = mProject != null; Modified: trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.Designer.cs 2006-08-10 21:56:10 UTC (rev 840) +++ trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.Designer.cs 2006-08-11 05:07:59 UTC (rev 841) @@ -34,6 +34,10 @@ this.mAddSectionAtSameLevelToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mAddSubSectionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.mCutSectionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mCopySectionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mPasteSectionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); this.mDeleteSectionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mEditLabelToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mMoveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -43,6 +47,8 @@ this.mMoveOutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); this.mShowInStripViewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); + this.tESTShallowDeleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.contextMenuStrip1.SuspendLayout(); this.SuspendLayout(); // @@ -71,45 +77,77 @@ this.mAddSectionAtSameLevelToolStripMenuItem, this.mAddSubSectionToolStripMenuItem, this.toolStripSeparator1, + this.mCutSectionToolStripMenuItem, + this.mCopySectionToolStripMenuItem, + this.mPasteSectionToolStripMenuItem, + this.toolStripSeparator2, this.mDeleteSectionToolStripMenuItem, this.mEditLabelToolStripMenuItem, this.mMoveToolStripMenuItem, this.toolStripSeparator3, - this.mShowInStripViewToolStripMenuItem}); + this.mShowInStripViewToolStripMenuItem, + this.toolStripSeparator4, + this.tESTShallowDeleteToolStripMenuItem}); this.contextMenuStrip1.Name = "contextMenuStrip1"; - this.contextMenuStrip1.Size = new System.Drawing.Size(161, 170); + this.contextMenuStrip1.Size = new System.Drawing.Size(170, 270); // // mAddSectionAtSameLevelToolStripMenuItem // this.mAddSectionAtSameLevelToolStripMenuItem.Name = "mAddSectionAtSameLevelToolStripMenuItem"; - this.mAddSectionAtSameLevelToolStripMenuItem.Size = new System.Drawing.Size(160, 22); + this.mAddSectionAtSameLevelToolStripMenuItem.Size = new System.Drawing.Size(169, 22); this.mAddSectionAtSameLevelToolStripMenuItem.Text = "&Add section"; this.mAddSectionAtSameLevelToolStripMenuItem.Click += new System.EventHandler(this.mAddSectionToolStripMenuItem_Click); // // mAddSubSectionToolStripMenuItem // this.mAddSubSectionToolStripMenuItem.Name = "mAddSubSectionToolStripMenuItem"; - this.mAddSubSectionToolStripMenuItem.Size = new System.Drawing.Size(160, 22); + this.mAddSubSectionToolStripMenuItem.Size = new System.Drawing.Size(169, 22); this.mAddSubSectionToolStripMenuItem.Text = "Add &sub-section"; this.mAddSubSectionToolStripMenuItem.Click += new System.EventHandler(this.mAddSubSectionToolStripMenuItem_Click); // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(157, 6); + this.toolStripSeparator1.Size = new System.Drawing.Size(166, 6); // + // mCutSectionToolStripMenuItem + // + this.mCutSectionToolStripMenuItem.Name = "mCutSectionToolStripMenuItem"; + this.mCutSectionToolStripMenuItem.Size = new System.Drawing.Size(169, 22); + this.mCutSectionToolStripMenuItem.Text = "Cu&t section"; + this.mCutSectionToolStripMenuItem.Click += new System.EventHandler(this.cutSectionToolStripMenuItem_Click); + // + // mCopySectionToolStripMenuItem + // + this.mCopySectionToolStripMenuItem.Name = "mCopySectionToolStripMenuItem"; + this.mCopySectionToolStripMenuItem.Size = new System.Drawing.Size(169, 22); + this.mCopySectionToolStripMenuItem.Text = "&Copy section"; + this.mCopySectionToolStripMenuItem.Click += new System.EventHandler(this.copySectionToolStripMenuItem_Click); + // + // mPasteSectionToolStripMenuItem + // + this.mPasteSectionToolStripMenuItem.Name = "mPasteSectionToolStripMenuItem"; + this.mPasteSectionToolStripMenuItem.Size = new System.Drawing.Size(169, 22); + this.mPasteSectionToolStripMenuItem.Text = "&Paste section"; + this.mPasteSectionToolStripMenuItem.Click += new System.EventHandler(this.mPasteSectionToolStripMenuItem_Click); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(166, 6); + // // mDeleteSectionToolStripMenuItem // this.mDeleteSectionToolStripMenuItem.Name = "mDeleteSectionToolStripMenuItem"; - this.mDeleteSectionToolStripMenuItem.Size = new System.Drawing.Size(160, 22); + this.mDeleteSectionToolStripMenuItem.Size = new System.Drawing.Size(169, 22); this.mDeleteSectionToolStripMenuItem.Text = "&Delete section"; this.mDeleteSectionToolStripMenuItem.Click += new System.EventHandler(this.mDeleteSectionToolStripMenuItem_Click); // // mEditLabelToolStripMenuItem // this.mEditLabelToolStripMenuItem.Name = "mEditLabelToolStripMenuItem"; - this.mEditLabelToolStripMenuItem.Size = new System.Drawing.Size(160, 22); - this.mEditLabelToolStripMenuItem.Text = "Re&name"; + this.mEditLabelToolStripMenuItem.Size = new System.Drawing.Size(169, 22); + this.mEditLabelToolStripMenuItem.Text = "Re&name section"; this.mEditLabelToolStripMenuItem.Click += new System.EventHandler(this.mRenameToolStripMenuItem_Click); // // mMoveToolStripMenuItem @@ -120,49 +158,61 @@ this.mMoveInToolStripMenuItem, this.mMoveOutToolStripMenuItem}); this.mMoveToolStripMenuItem.Name = "mMoveToolStripMenuItem"; - this.mMoveToolStripMenuItem.Size = new System.Drawing.Size(160, 22); + this.mMoveToolStripMenuItem.Size = new System.Drawing.Size(169, 22); this.mMoveToolStripMenuItem.Text = "&Move section..."; // // mMoveUpToolStripMenuItem // this.mMoveUpToolStripMenuItem.Name = "mMoveUpToolStripMenuItem"; - this.mMoveUpToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.mMoveUpToolStripMenuItem.Size = new System.Drawing.Size(101, 22); this.mMoveUpToolStripMenuItem.Text = "&Up"; this.mMoveUpToolStripMenuItem.Click += new System.EventHandler(this.mMoveUpToolStripMenuItem_Click); // // mMoveDownToolStripMenuItem // this.mMoveDownToolStripMenuItem.Name = "mMoveDownToolStripMenuItem"; - this.mMoveDownToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.mMoveDownToolStripMenuItem.Size = new System.Drawing.Size(101, 22); this.mMoveDownToolStripMenuItem.Text = "&Down"; this.mMoveDownToolStripMenuItem.Click += new System.EventHandler(this.mMoveDownToolStripMenuItem_Click); // // mMoveInToolStripMenuItem // this.mMoveInToolStripMenuItem.Name = "mMoveInToolStripMenuItem"; - this.mMoveInToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.mMoveInToolStripMenuItem.Size = new System.Drawing.Size(101, 22); this.mMoveInToolStripMenuItem.Text = "&In"; this.mMoveInToolStripMenuItem.Click += new System.EventHandler(this.increaseLevelToolStripMenuItem_Click); // // mMoveOutToolStripMenuItem // this.mMoveOutToolStripMenuItem.Name = "mMoveOutToolStripMenuItem"; - this.mMoveOutToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.mMoveOutToolStripMenuItem.Size = new System.Drawing.Size(101, 22); this.mMoveOutToolStripMenuItem.Text = "&Out"; this.mMoveOutToolStripMenuItem.Click += new System.EventHandler(this.decreaseLevelToolStripMenuItem_Click); // // toolStripSeparator3 // this.toolStripSeparator3.Name = "toolStripSeparator3"; - this.toolStripSeparator3.Size = new System.Drawing.Size(157, 6); + this.toolStripSeparator3.Size = new System.Drawing.Size(166, 6); // // mShowInStripViewToolStripMenuItem // this.mShowInStripViewToolStripMenuItem.Name = "mShowInStripViewToolStripMenuItem"; - this.mShowInStripViewToolStripMenuItem.Size = new System.Drawing.Size(160, 22); + this.mShowInStripViewToolStripMenuItem.Size = new System.Drawing.Size(169, 22); this.mShowInStripViewToolStripMenuItem.Text = "Show in strip &view"; this.mShowInStripViewToolStripMenuItem.Click += new System.EventHandler(this.mShowInStripViewToolStripMenuItem_Click); // + // toolStripSeparator4 + // + this.toolStripSeparator4.Name = "toolStripSeparator4"; + this.toolStripSeparator4.Size = new System.Drawing.Size(166, 6); + // + // tESTShallowDeleteToolStripMenuItem + // + this.tESTShallowDeleteToolStripMenuItem.Name = "tESTShallowDeleteToolStripMenuItem"; + this.tESTShallowDeleteToolStripMenuItem.Size = new System.Drawing.Size(169, 22); + this.tESTShallowDeleteToolStripMenuItem.Text = "TEST shallow delete"; + this.tESTShallowDeleteToolStripMenuItem.Click += new System.EventHandler(this.tESTShallowDeleteToolStripMenuItem_Click_1); + // // TOCPanel // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -191,5 +241,11 @@ private System.Windows.Forms.ToolStripMenuItem mMoveDownToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem mMoveInToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem mMoveOutToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem mCutSectionToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem mCopySectionToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem mPasteSectionToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; + private System.Windows.Forms.ToolStripMenuItem tESTShallowDeleteToolStripMenuItem; } } Modified: trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs 2006-08-10 21:56:10 UTC (rev 840) +++ trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs 2006-08-11 05:07:59 UTC (rev 841) @@ -19,6 +19,7 @@ public partial class TOCPanel : UserControl, urakawa.core.ICoreNodeVisitor { private ProjectPanel mProjectPanel; //the parent of this control + private TreeNode mClipboard; //md: the clipboard itself public event Events.Node.RequestToAddSiblingNodeHandler RequestToAddSiblingSection; public event Events.Node.RequestToAddChildNodeHandler RequestToAddChildSection; @@ -30,6 +31,11 @@ public event Events.Node.RequestToDeleteNodeHandler RequestToDeleteSection; public event Events.Node.SelectedHandler SelectedTreeNode; // raised when selection changes (JQ) + //md: clipboard events + public event Events.Node.RequestToCutNodeHandler RequestToCutNode; + public event Events.Node.RequestToCopyNodeHandler RequestToCopyNode; + public event Events.Node.RequestToPasteNodeHandler RequestToPasteNode; + #region properties /// <summary> /// Test whether a node is currently selected or not. @@ -126,6 +132,7 @@ + //md: do we still want this function? public void LimitViewToDepthOfCurrentSection() { } @@ -133,6 +140,7 @@ /// <summary> /// Show all the sections in the tree view. /// </summary> + //md: there is no end-user command which exposes this feature public void ExpandViewToShowAllSections() { mTocTree.ExpandAll(); @@ -239,11 +247,12 @@ new Events.Node.NodeEventArgs(this, GetSelectedSection())); } - private void testShallowDeleteToolStripMenuItem_Click(object sender, EventArgs e) + private void tESTShallowDeleteToolStripMenuItem_Click_1(object sender, EventArgs e) { - SyncShallowDeletedNode(this, - new Events.Node.NodeEventArgs(this, GetSelectedSection())); + SyncShallowDeletedNode(this, + new Events.Node.NodeEventArgs(this, GetSelectedSection())); } + /// <summary> /// If a node is selected, set focus on that node in the Strip view. @@ -260,8 +269,28 @@ } } + //md 20060810 + internal void cutSectionToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToCutNode(this, new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + //md 20060810 + internal void copySectionToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToCopyNode(this, new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + internal void mPasteSectionToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToPasteNode(this, new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + + #endregion + #region toc tree event handlers /// <summary> /// Using this event to assure that a node is selected. /// </summary> @@ -315,6 +344,69 @@ } } + /// <summary> + /// select a node upon receiving a mouse-click (including right-clicks) + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + private void tocTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) + { + mTocTree.SelectedNode = e.Node; + + } + + /// <summary> + /// synchronize the highlight with the strip view on double-click + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + /// <remarks>todo: this should override the default behavior (expand/collapse), + /// and, it's a bit weird to have the strip node rename-able upon select</remarks> + //marisa added this 4 aug 06 + private void tocTree_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) + { + this.mShowInStripViewToolStripMenuItem_Click(this, null); + } + + /// <summary> + /// synchronize the highlight with the strip view upon pressing enter + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + //marisa added this 4 aug 06 + private void tocTree_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + if (mTocTree.SelectedNode != null) + { + this.mShowInStripViewToolStripMenuItem_Click(this, null); + } + } + + } + + /// <summary> + /// A new selection is made so the context menu is updated. + /// </summary> + private void mTocTree_AfterSelect(object sender, TreeViewEventArgs e) + { + Events.Node.SelectedEventArgs _event = new Events.Node.SelectedEventArgs(true); + // should set CanMoveUp, etc. here + SelectedTreeNode(this, _event); + } + + /// <summary> + /// When leaving the TOC tree, there is no selection anymore. + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + private void mTocTree_Leave(object sender, EventArgs e) + { + SelectedTreeNode(this, new Events.Node.SelectedEventArgs(false)); + } + +#endregion #region Sync event handlers @@ -425,12 +517,8 @@ TreeNode parent = Project.GetNodeType(e.Parent) == NodeType.Section ? FindTreeNodeFromCoreNode(e.Parent) : null; - - if (selected == null) - { - return; - } - + if (selected == null) return; + TreeNode clone = (TreeNode)selected.Clone(); selected.Remove(); @@ -518,6 +606,100 @@ mTocTree.SelectedNode = clone; } + //md 20060810 + internal void SyncCutNode(object sender, Events.Node.NodeEventArgs e) + { + TreeNode selected = FindTreeNodeFromCoreNode(e.Node); + if (selected != null) + { + mClipboard = (TreeNode)selected.Clone(); + selected.Remove(); + } + } + + //md 20060810 + internal void SyncUndidCutNode(object sender, Events.Node.MovedNodeEventArgs e) + { + if (mClipboard == null) return; + + TreeNode parent = Project.GetNodeType(e.Parent) == NodeType.Section ? FindTreeNodeFromCoreNode(e.Parent) : null; + + TreeNodeCollection siblings = null; + if (parent == null) + { + siblings = mTocTree.Nodes; + } + else + { + siblings = parent.Nodes; + } + + TreeNode uncutNode = mClipboard; + + siblings.Insert(e.Index, uncutNode); + uncutNode.ExpandAll(); + uncutNode.EnsureVisible(); + mTocTree.SelectedNode = uncutNode; + + mClipboard = null; + } + + //md 20060810 + internal void SyncCopiedNode(object sender, Events.Node.NodeEventArgs e) + { + TreeNode selected = FindTreeNodeFromCoreNode(e.Node); + + if (selected != null) + { + mClipboard = (TreeNode)selected.Clone(); + } + } + + //md 20060810 + internal void SyncUndidCopyNode(object sender, Events.Node.NodeEventArgs e) + { + mClipboard = null; + } + + //md 20060810 + //e.Node is what was just pasted in + internal void SyncPastedNode(object sender, Events.Node.AddedSectionNodeEventArgs e) + { + if (mClipboard == null) return; + + urakawa.core.CoreNode nodeParent = (urakawa.core.CoreNode)e.Node.getParent(); + + TreeNode parent = Project.GetNodeType(nodeParent) == NodeType.Section ? FindTreeNodeFromCoreNode(nodeParent) : null; + string label = Project.GetTextMedia(e.Node).getText(); + + TreeNodeCollection siblings = null; + if (parent == null) + { + siblings = mTocTree.Nodes; + } + else + { + siblings = parent.Nodes; + } + + siblings.Insert(e.Index, mClipboard); + + //don't clear the clipboard, we can use it again + } + + internal void SyncUndidPasteNode(object sender, Events.Node.NodeEventArgs e) + { + TreeNode pastedNode = FindTreeNodeFromCoreNode(e.Node); + + if (pastedNode != null) + { + //put it back on the clipboard + mClipboard = (TreeNode)pastedNode.Clone(); + pastedNode.Remove(); + } + + } + #endregion #region helper functions @@ -619,74 +801,19 @@ mAddSubSectionToolStripMenuItem.Enabled = e.Selected; mDeleteSectionToolStripMenuItem.Enabled = e.Selected; mEditLabelToolStripMenuItem.Enabled = e.Selected; + + //md: logic for these "canMove's" needs to come from Obi.Project mMoveToolStripMenuItem.Enabled = e.CanMoveUp || e.CanMoveDown || e.CanMoveIn || e.CanMoveOut; mMoveUpToolStripMenuItem.Enabled = e.CanMoveUp; mMoveDownToolStripMenuItem.Enabled = e.CanMoveDown; mMoveInToolStripMenuItem.Enabled = e.CanMoveIn; mMoveOutToolStripMenuItem.Enabled = e.CanMoveOut; + mShowInStripViewToolStripMenuItem.Enabled = e.Selected; + mCutSectionToolStripMenuItem.Enabled = e.Selected; + mCopySectionToolStripMenuItem.Enabled = e.Selected; + mPasteSectionToolStripMenuItem.Enabled = e.Selected && (mClipboard != null); } - /// <summary> - /// select a node upon receiving a mouse-click (including right-clicks) - /// </summary> - /// <param name="sender"></param> - /// <param name="e"></param> - private void tocTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) - { - mTocTree.SelectedNode = e.Node; - - } - - /// <summary> - /// synchronize the highlight with the strip view on double-click - /// </summary> - /// <param name="sender"></param> - /// <param name="e"></param> - /// <remarks>todo: this should override the default behavior (expand/collapse), - /// and, it's a bit weird to have the strip node rename-able upon select</remarks> - //marisa added this 4 aug 06 - private void tocTree_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) - { - this.mShowInStripViewToolStripMenuItem_Click(this, null); - } - - /// <summary> - /// synchronize the highlight with the strip view upon pressing enter - /// </summary> - /// <param name="sender"></param> - /// <param name="e"></param> - //marisa added this 4 aug 06 - private void tocTree_KeyDown(object sender, KeyEventArgs e) - { - if (e.KeyCode == Keys.Enter) - { - if (mTocTree.SelectedNode != null) - { - this.mShowInStripViewToolStripMenuItem_Click(this, null); - } - } - - } - - /// <summary> - /// A new selection is made so the context menu is updated. - /// </summary> - private void mTocTree_AfterSelect(object sender, TreeViewEventArgs e) - { - Events.Node.SelectedEventArgs _event = new Events.Node.SelectedEventArgs(true); - // should set CanMoveUp, etc. here - SelectedTreeNode(this, _event); - } - - /// <summary> - /// When leaving the TOC tree, there is no selection anymore. - /// </summary> - /// <param name="sender"></param> - /// <param name="e"></param> - private void mTocTree_Leave(object sender, EventArgs e) - { - SelectedTreeNode(this, new Events.Node.SelectedEventArgs(false)); - } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2006-08-11 09:04:27
|
Revision: 843 Author: julienq Date: 2006-08-11 02:04:05 -0700 (Fri, 11 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=843&view=rev Log Message: ----------- Move blocks forward/backward. Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Commands/Strips/AddPhrase.cs trunk/urakawa/application/Obi/Obi/Commands/Strips/DeletePhrase.cs trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs trunk/urakawa/application/Obi/Obi/Obi.csproj trunk/urakawa/application/Obi/Obi/Project.Blocks.cs trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs trunk/urakawa/application/Obi/Obi/messages.Designer.cs trunk/urakawa/application/Obi/Obi/messages.resx Added Paths: ----------- trunk/urakawa/application/Obi/Obi/Commands/Strips/MovePhrase.cs Modified: trunk/urakawa/application/Obi/Obi/Commands/Strips/AddPhrase.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/Strips/AddPhrase.cs 2006-08-11 07:37:45 UTC (rev 842) +++ trunk/urakawa/application/Obi/Obi/Commands/Strips/AddPhrase.cs 2006-08-11 09:04:05 UTC (rev 843) @@ -42,7 +42,7 @@ /// </summary> public override void Undo() { - mProject.DeletePhraseNode(mNode); + mProject.DeletePhraseNodeAndAsset(mNode); } } } Modified: trunk/urakawa/application/Obi/Obi/Commands/Strips/DeletePhrase.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/Strips/DeletePhrase.cs 2006-08-11 07:37:45 UTC (rev 842) +++ trunk/urakawa/application/Obi/Obi/Commands/Strips/DeletePhrase.cs 2006-08-11 09:04:05 UTC (rev 843) @@ -28,7 +28,7 @@ public override void Do() { - mProject.DeletePhraseNode(mNode); + mProject.DeletePhraseNodeAndAsset(mNode); } public override void Undo() Added: trunk/urakawa/application/Obi/Obi/Commands/Strips/MovePhrase.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/Strips/MovePhrase.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/Commands/Strips/MovePhrase.cs 2006-08-11 09:04:05 UTC (rev 843) @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using urakawa.core; + +namespace Obi.Commands.Strips +{ + class MovePhrase: Command + { + private Project mProject; + private CoreNode mNode; + private Project.Direction mDirection; + private Project.Direction mOtherDirection; + + public override string Label + { + get { return Localizer.Message("move_phrase_command_label"); } + } + + public MovePhrase(Project project, CoreNode node, Project.Direction direction) + { + mProject = project; + mNode = node; + mDirection = direction; + mOtherDirection = direction == Project.Direction.Backward ? Project.Direction.Forward : Project.Direction.Backward; + } + + public override void Do() + { + mProject.MovePhraseNode(mNode, mDirection); + } + + public override void Undo() + { + mProject.MovePhraseNode(mNode, mOtherDirection); + } + } +} Modified: trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs 2006-08-11 07:37:45 UTC (rev 842) +++ trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs 2006-08-11 09:04:05 UTC (rev 843) @@ -14,6 +14,7 @@ public delegate void RequestToMoveNodeUpHandler(object sender, NodeEventArgs e); public delegate void RequestToMoveNodeDownHandler(object sender, NodeEventArgs e); public delegate void RequestToDeleteBlockHandler(object sender, NodeEventArgs e); + public delegate void RequestToMoveBlockHandler(object sender, NodeEventArgs e); public delegate void RequestToCutNodeHandler(object sender, NodeEventArgs e); public delegate void RequestToCopyNodeHandler(object sender, NodeEventArgs e); public delegate void RequestToPasteNodeHandler(object sender, NodeEventArgs e); Modified: trunk/urakawa/application/Obi/Obi/Obi.csproj =================================================================== --- trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-11 07:37:45 UTC (rev 842) +++ trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-11 09:04:05 UTC (rev 843) @@ -82,6 +82,7 @@ <Compile Include="Commands\Strips\AddPhrase.cs" /> <Compile Include="Commands\Strips\MergePhrases.cs" /> <Compile Include="Commands\Strips\DeletePhrase.cs" /> + <Compile Include="Commands\Strips\MovePhrase.cs" /> <Compile Include="Commands\Strips\RenamePhrase.cs" /> <Compile Include="Commands\Strips\SplitPhrase.cs" /> <Compile Include="Commands\TOC\AddSection.cs" /> Modified: trunk/urakawa/application/Obi/Obi/Project.Blocks.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.Blocks.cs 2006-08-11 07:37:45 UTC (rev 842) +++ trunk/urakawa/application/Obi/Obi/Project.Blocks.cs 2006-08-11 09:04:05 UTC (rev 843) @@ -20,7 +20,7 @@ int index = parent.indexOf(e.Node); Commands.Strips.DeletePhrase command = new Commands.Strips.DeletePhrase(this, e.Node, parent, index); CommandCreated(this, new Obi.Events.Project.CommandCreatedEventArgs(command)); - DeletePhraseNode(e.Node); + DeletePhraseNodeAndAsset(e.Node); } /// <summary> @@ -37,6 +37,36 @@ CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); } + public enum Direction { Forward, Backward }; + + /// <summary> + /// Move a phrase node in either direction. May not succeed if there is nowhere to move in that direction. + /// </summary> + private void MovePhraseNodeRequested(object sender, Events.Node.NodeEventArgs e, Direction dir) + { + if (CanMovePhraseNode(e.Node, dir)) + { + MovePhraseNode(e.Node, dir); + Commands.Strips.MovePhrase command = new Commands.Strips.MovePhrase(this, e.Node, dir); + CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); + } + } + /// <summary> + /// Move a phrase node forward. May not succeed if the node is last of its kind. + /// </summary> + public void MovePhraseNodeForwardRequested(object sender, Events.Node.NodeEventArgs e) + { + MovePhraseNodeRequested(sender, e, Direction.Forward); + } + + /// <summary> + /// Move a phrase node forward. + /// </summary> + public void MovePhraseNodeBackwardRequested(object sender, Events.Node.NodeEventArgs e) + { + MovePhraseNodeRequested(sender, e, Direction.Backward); + } + #endregion #region backend functions @@ -63,12 +93,20 @@ } /// <summary> - /// Delete a phrase node from the tree and remove its asset from the asset manager. + /// Determine whether a node can be moved forward or backward in the list of phrase nodes. /// </summary> + private bool CanMovePhraseNode(CoreNode node, Direction dir) + { + return dir == Direction.Forward ? + GetPhraseIndex(node) < GetPhrasesCount((CoreNode)node.getParent()) - 1 : + GetPhraseIndex(node) > 0; + } + + /// <summary> + /// Delete a phrase node from the tree. + /// </summary> public void DeletePhraseNode(CoreNode node) { - Assets.AudioMediaAsset asset = GetAudioMediaAsset(node); - mAssManager.RemoveAsset(asset); DeletedPhraseNode(this, new Events.Node.NodeEventArgs(this, node)); node.detach(); mUnsaved = true; @@ -76,6 +114,16 @@ } /// <summary> + /// Delete a phrase node from the tree and remove its asset from the asset manager. + /// </summary> + public void DeletePhraseNodeAndAsset(CoreNode node) + { + Assets.AudioMediaAsset asset = GetAudioMediaAsset(node); + mAssManager.RemoveAsset(asset); + DeletePhraseNode(node); + } + + /// <summary> /// Get the position of the phrase in the list of phrases for the section, i.e. not counting the other section nodes. /// </summary> // should be part of NodeInformationProperty @@ -108,6 +156,17 @@ return count; } + /// <summary> + /// Move a phrase node in the given direction. + /// </summary> + public void MovePhraseNode(CoreNode node, Direction dir) + { + int index = GetPhraseIndex(node); + CoreNode parent = (CoreNode)node.getParent(); + DeletePhraseNode(node); + AddPhraseNode(node, parent, dir == Direction.Forward ? index + 1 : index - 1); + } + #endregion } } \ No newline at end of file Modified: trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs 2006-08-11 07:37:45 UTC (rev 842) +++ trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs 2006-08-11 09:04:05 UTC (rev 843) @@ -130,6 +130,10 @@ new Events.Strip.RequestToImportAssetHandler(value.ImportAssetRequested); mStripManagerPanel.DeleteBlockRequested += new Events.Node.RequestToDeleteBlockHandler(value.DeletePhraseNodeRequested); + mStripManagerPanel.MoveAudioBlockForwardRequested += + new Events.Node.RequestToMoveBlockHandler(value.MovePhraseNodeForwardRequested); + mStripManagerPanel.MoveAudioBlockBackwardRequested += + new Events.Node.RequestToMoveBlockHandler(value.MovePhraseNodeBackwardRequested); value.ImportedAsset += new Events.Node.ImportedAssetHandler(mStripManagerPanel.SyncCreateNewAudioBlock); Modified: trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs 2006-08-11 07:37:45 UTC (rev 842) +++ trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs 2006-08-11 09:04:05 UTC (rev 843) @@ -44,6 +44,9 @@ this.mRenameAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); this.mShowInTOCViewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.moveAudioBlockforwardToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.moveAudioBlockbackwardToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); this.contextMenuStrip1.SuspendLayout(); this.SuspendLayout(); // @@ -80,6 +83,9 @@ this.toolStripSeparator1, this.mImportAudioFileToolStripMenuItem, this.mDeleteAudioBlockToolStripMenuItem, + this.moveAudioBlockforwardToolStripMenuItem, + this.moveAudioBlockbackwardToolStripMenuItem, + this.toolStripSeparator3, this.recordAudioToolStripMenuItem, this.mPlayAudioBlockToolStripMenuItem, this.mSplitAudioBlockToolStripMenuItem, @@ -89,8 +95,7 @@ this.mShowInTOCViewToolStripMenuItem}); this.contextMenuStrip1.Name = "contextMenuStrip1"; this.contextMenuStrip1.ShowImageMargin = false; - this.contextMenuStrip1.Size = new System.Drawing.Size(190, 258); - this.contextMenuStrip1.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip1_Opening); + this.contextMenuStrip1.Size = new System.Drawing.Size(190, 308); // // mAddStripToolStripMenuItem // @@ -171,6 +176,25 @@ this.mShowInTOCViewToolStripMenuItem.Text = "Show in &TOC view"; this.mShowInTOCViewToolStripMenuItem.Click += new System.EventHandler(this.mShowInTOCViewToolStripMenuItem_Click); // + // moveAudioBlockforwardToolStripMenuItem + // + this.moveAudioBlockforwardToolStripMenuItem.Name = "moveAudioBlockforwardToolStripMenuItem"; + this.moveAudioBlockforwardToolStripMenuItem.Size = new System.Drawing.Size(189, 22); + this.moveAudioBlockforwardToolStripMenuItem.Text = "Move audio block &forward"; + this.moveAudioBlockforwardToolStripMenuItem.Click += new System.EventHandler(this.mMoveAudioBlockforwardToolStripMenuItem_Click); + // + // moveAudioBlockbackwardToolStripMenuItem + // + this.moveAudioBlockbackwardToolStripMenuItem.Name = "moveAudioBlockbackwardToolStripMenuItem"; + this.moveAudioBlockbackwardToolStripMenuItem.Size = new System.Drawing.Size(189, 22); + this.moveAudioBlockbackwardToolStripMenuItem.Text = "Move audio block &backward"; + this.moveAudioBlockbackwardToolStripMenuItem.Click += new System.EventHandler(this.mMoveAudioBlockbackwardToolStripMenuItem_Click); + // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + this.toolStripSeparator3.Size = new System.Drawing.Size(186, 6); + // // StripManagerPanel // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); @@ -202,5 +226,8 @@ private System.Windows.Forms.ToolStripMenuItem mDeleteAudioBlockToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem mMergeWithNextAudioBlockToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem recordAudioToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem moveAudioBlockforwardToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem moveAudioBlockbackwardToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; } } Modified: trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs 2006-08-11 07:37:45 UTC (rev 842) +++ trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs 2006-08-11 09:04:05 UTC (rev 843) @@ -28,10 +28,12 @@ public event Events.Node.RequestToAddSiblingNodeHandler AddSiblingSection; public event Events.Node.RequestToRenameNodeHandler RenameSection; public event Events.Node.SetMediaHandler SetMedia; + public event Events.Strip.RequestToImportAssetHandler ImportAudioAssetRequested; public event Events.Node.RequestToDeleteBlockHandler DeleteBlockRequested; + public event Events.Node.RequestToMoveBlockHandler MoveAudioBlockForwardRequested; + public event Events.Node.RequestToMoveBlockHandler MoveAudioBlockBackwardRequested; public event Events.Node.SplitNodeHandler SplitNode; public event Events.Node.MergeNodesHandler MergeNodes; - public event Events.Strip.RequestToImportAssetHandler ImportAudioAssetRequested; public event Events.Strip.SelectedHandler SelectedStrip; public event Events.Strip.SelectedHandler SelectedAudioBlock; @@ -101,7 +103,7 @@ } } } - + /// <summary> /// Get the SectionStrip that is currently seleced, or null if no current selection exists. /// </summary> @@ -110,7 +112,7 @@ { get { - if(mSelectedSection!=null) + if (mSelectedSection != null) return mSectionNodeMap[mSelectedSection]; return null; } @@ -148,7 +150,7 @@ // mg 20060804 internal ProjectPanel ProjectPanel { - get + get { return mProjectPanel; } @@ -360,8 +362,8 @@ //otherwise the operation doesn't work correctly because strips //get swapped, and a sequence of moves will not preserve //every move that has happened in that sequence - - for (int i = stripsToMove.Count - 1; i >= 0; i-- ) + + for (int i = stripsToMove.Count - 1; i >= 0; i--) { mFlowLayoutPanel.Controls.SetChildIndex ((SectionStrip)stripsToMove[i], e.Position + i); @@ -376,7 +378,7 @@ ((SectionStrip)stripsToMove[i], e.Position + i); } } - + //mg: this.ReflowTabOrder(parentNodeStrip); } @@ -526,6 +528,30 @@ } /// <summary> + /// Move a block forward one spot in the strip, if it is not the last one. + /// </summary> + private void mMoveAudioBlockforwardToolStripMenuItem_Click(object sender, EventArgs e) + { + if (mSelectedPhrase != null) + { + MoveAudioBlockForwardRequested(this, new Events.Node.NodeEventArgs(this, mSelectedPhrase)); + } + } + + /// <summary> + /// Move a block backward one spot in the strip, if it is not the first one. + /// </summary> + private void mMoveAudioBlockbackwardToolStripMenuItem_Click(object sender, EventArgs e) + { + if (mSelectedPhrase != null) + { + MoveAudioBlockBackwardRequested(this, new Events.Node.NodeEventArgs(this, mSelectedPhrase)); + } + } + + + + /// <summary> /// If a node is selected, set focus on that node in the TreeView. /// If the selected node is not a section node, move back to the /// section before commiting the select Modified: trunk/urakawa/application/Obi/Obi/messages.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/messages.Designer.cs 2006-08-11 07:37:45 UTC (rev 842) +++ trunk/urakawa/application/Obi/Obi/messages.Designer.cs 2006-08-11 09:04:05 UTC (rev 843) @@ -308,6 +308,15 @@ } /// <summary> + /// Looks up a localized string similar to move audio block. + /// </summary> + internal static string move_phrase_command_label { + get { + return ResourceManager.GetString("move_phrase_command_label", resourceCulture); + } + } + + /// <summary> /// Looks up a localized string similar to Name already exists. /// </summary> internal static string name_already_exists_caption { Modified: trunk/urakawa/application/Obi/Obi/messages.resx =================================================================== --- trunk/urakawa/application/Obi/Obi/messages.resx 2006-08-11 07:37:45 UTC (rev 842) +++ trunk/urakawa/application/Obi/Obi/messages.resx 2006-08-11 09:04:05 UTC (rev 843) @@ -336,4 +336,7 @@ <value>WAVE file (*.wav)|*.wav|Any file|*.*</value> <comment>Filter for opening audio files</comment> </data> + <data name="move_phrase_command_label" xml:space="preserve"> + <value>move audio block</value> + </data> </root> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2006-08-11 16:04:43
|
Revision: 846 Author: marisademeglio Date: 2006-08-11 09:04:03 -0700 (Fri, 11 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=846&view=rev Log Message: ----------- Renaming to label things clearly as "SectionNode" operations Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Commands/TOC/AddSection.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/DeleteSection.cs trunk/urakawa/application/Obi/Obi/Events/Node/MovedNodeEventArgs.cs trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs trunk/urakawa/application/Obi/Obi/Obi.csproj trunk/urakawa/application/Obi/Obi/Project.cs trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs Added Paths: ----------- trunk/urakawa/application/Obi/Obi/Commands/TOC/ChangeSectionNodeLevel.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionNode.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/SectionNodeClipboard.cs trunk/urakawa/application/Obi/Obi/Project.TOC.cs Removed Paths: ------------- trunk/urakawa/application/Obi/Obi/Commands/TOC/CopySection.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/CutSection.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/DecreaseSectionLevel.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/IncreaseSectionLevel.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionDown.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionUp.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/PasteSection.cs Modified: trunk/urakawa/application/Obi/Obi/Commands/TOC/AddSection.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/AddSection.cs 2006-08-11 15:25:11 UTC (rev 845) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/AddSection.cs 2006-08-11 16:04:03 UTC (rev 846) @@ -6,7 +6,7 @@ namespace Obi.Commands.TOC { - class AddSection: Command + class AddSectionNode: Command { private Project mProject; private CoreNode mNode; @@ -23,7 +23,7 @@ } } - public AddSection(Project project, CoreNode node, CoreNode parent, int index, int position) + public AddSectionNode(Project project, CoreNode node, CoreNode parent, int index, int position) { mProject = project; mNode = node; Added: trunk/urakawa/application/Obi/Obi/Commands/TOC/ChangeSectionNodeLevel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/ChangeSectionNodeLevel.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/ChangeSectionNodeLevel.cs 2006-08-11 16:04:03 UTC (rev 846) @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using urakawa.core; + +namespace Obi.Commands.TOC +{ + class DecreaseSectionNodeLevel : Command + { + private Project mProject; + private CoreNode mNode; + private CoreNode mParent; + private int mIndex; + private int mPosition; + private int mChildCount; + + public override string Label + { + get + { + return Localizer.Message("decrease_section_level_command_label"); + } + } + + public DecreaseSectionNodeLevel(Project project, CoreNode node, CoreNode parent, int index, int position, int numChildren) + { + mProject = project; + mNode = node; + mParent = parent; + mIndex = index; + mPosition = position; + mChildCount = numChildren; + } + + /// <summary> + /// ReDo: move the node + /// </summary> + public override void Do() + { + mProject.DecreaseNodeLevel(mProject, mNode); + } + + /// <summary> + /// Undo: restore the node and its descendants. + /// </summary> + public override void Undo() + { + mProject.UndoDecreaseSectionLevel(mNode, mParent, mIndex, mPosition, mChildCount); + } + } + + class IncreaseSectionNodeLevel : Command + { + private Project mProject; + private CoreNode mNode; + private CoreNode mParent; + private int mIndex; + private int mPosition; + + public override string Label + { + get + { + return Localizer.Message("increase_section_level_command_label"); + } + } + + public IncreaseSectionNodeLevel(Project project, CoreNode node, CoreNode parent, int index, int position) + { + mProject = project; + mNode = node; + mParent = parent; + mIndex = index; + mPosition = position; + } + + /// <summary> + /// ReDo: move the node + /// </summary> + public override void Do() + { + mProject.IncreaseNodeLevel(mProject, mNode); + } + + /// <summary> + /// Undo: restore the node and its descendants. + /// </summary> + public override void Undo() + { + mProject.UndoIncreaseNodeLevel(mNode, mParent, mIndex, mPosition); + } + } +} Deleted: trunk/urakawa/application/Obi/Obi/Commands/TOC/CopySection.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/CopySection.cs 2006-08-11 15:25:11 UTC (rev 845) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/CopySection.cs 2006-08-11 16:04:03 UTC (rev 846) @@ -1,44 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -using urakawa.core; - -namespace Obi.Commands.TOC -{ - class CopySection : Command - { - private Project mProject; - private CoreNode mNode; - - public override string Label - { - get - { - return Localizer.Message("copy_section_command_label"); - } - } - - public CopySection(Project project, CoreNode node) - { - mProject = project; - mNode = node; - } - - /// <summary> - /// ReDo: uncut the node - /// </summary> - public override void Do() - { - mProject.CopyTOCNode(mProject, mNode); - } - - /// <summary> - /// Undo: restore the node and its descendants. - /// </summary> - public override void Undo() - { - mProject.UndoCopyTOCNode(mNode); - } - } -} Deleted: trunk/urakawa/application/Obi/Obi/Commands/TOC/CutSection.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/CutSection.cs 2006-08-11 15:25:11 UTC (rev 845) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/CutSection.cs 2006-08-11 16:04:03 UTC (rev 846) @@ -1,50 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -using urakawa.core; - -namespace Obi.Commands.TOC -{ - class CutSection : Command - { - private Project mProject; - private CoreNode mNode; - private CoreNode mParent; - private int mIndex; - private int mPosition; - - public override string Label - { - get - { - return Localizer.Message("cut_section_command_label"); - } - } - - public CutSection(Project project, CoreNode node, CoreNode parent, int index, int position) - { - mProject = project; - mNode = node; - mParent = parent; - mIndex = index; - mPosition = position; - } - - /// <summary> - /// ReDo: uncut the node - /// </summary> - public override void Do() - { - mProject.DoCutTOCNode(mProject, mNode); - } - - /// <summary> - /// Undo: restore the node and its descendants. - /// </summary> - public override void Undo() - { - mProject.UndoCutNode(mNode, mParent, mIndex, mPosition); - } - } -} Deleted: trunk/urakawa/application/Obi/Obi/Commands/TOC/DecreaseSectionLevel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/DecreaseSectionLevel.cs 2006-08-11 15:25:11 UTC (rev 845) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/DecreaseSectionLevel.cs 2006-08-11 16:04:03 UTC (rev 846) @@ -1,52 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -using urakawa.core; - -namespace Obi.Commands.TOC -{ - class DecreaseSectionLevel : Command - { - private Project mProject; - private CoreNode mNode; - private CoreNode mParent; - private int mIndex; - private int mPosition; - private int mChildCount; - - public override string Label - { - get - { - return Localizer.Message("decrease_section_level_command_label"); - } - } - - public DecreaseSectionLevel(Project project, CoreNode node, CoreNode parent, int index, int position, int numChildren) - { - mProject = project; - mNode = node; - mParent = parent; - mIndex = index; - mPosition = position; - mChildCount = numChildren; - } - - /// <summary> - /// ReDo: move the node - /// </summary> - public override void Do() - { - mProject.DecreaseNodeLevel(mProject, mNode); - } - - /// <summary> - /// Undo: restore the node and its descendants. - /// </summary> - public override void Undo() - { - mProject.UndoDecreaseSectionLevel(mNode, mParent, mIndex, mPosition, mChildCount); - } - } -} Modified: trunk/urakawa/application/Obi/Obi/Commands/TOC/DeleteSection.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/DeleteSection.cs 2006-08-11 15:25:11 UTC (rev 845) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/DeleteSection.cs 2006-08-11 16:04:03 UTC (rev 846) @@ -6,7 +6,7 @@ namespace Obi.Commands.TOC { - class DeleteSection : Command + class DeleteSectionNode : Command { private Project mProject; private CoreNode mNode; @@ -22,7 +22,7 @@ } } - public DeleteSection(Project project, CoreNode node, CoreNode parent, int index, int position) + public DeleteSectionNode(Project project, CoreNode node, CoreNode parent, int index, int position) { mProject = project; mNode = node; Deleted: trunk/urakawa/application/Obi/Obi/Commands/TOC/IncreaseSectionLevel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/IncreaseSectionLevel.cs 2006-08-11 15:25:11 UTC (rev 845) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/IncreaseSectionLevel.cs 2006-08-11 16:04:03 UTC (rev 846) @@ -1,50 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -using urakawa.core; - -namespace Obi.Commands.TOC -{ - class IncreaseSectionLevel : Command - { - private Project mProject; - private CoreNode mNode; - private CoreNode mParent; - private int mIndex; - private int mPosition; - - public override string Label - { - get - { - return Localizer.Message("increase_section_level_command_label"); - } - } - - public IncreaseSectionLevel(Project project, CoreNode node, CoreNode parent, int index, int position) - { - mProject = project; - mNode = node; - mParent = parent; - mIndex = index; - mPosition = position; - } - - /// <summary> - /// ReDo: move the node - /// </summary> - public override void Do() - { - mProject.IncreaseNodeLevel(mProject, mNode); - } - - /// <summary> - /// Undo: restore the node and its descendants. - /// </summary> - public override void Undo() - { - mProject.UndoIncreaseNodeLevel(mNode, mParent, mIndex, mPosition); - } - } -} Deleted: trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionDown.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionDown.cs 2006-08-11 15:25:11 UTC (rev 845) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionDown.cs 2006-08-11 16:04:03 UTC (rev 846) @@ -1,50 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -using urakawa.core; - -namespace Obi.Commands.TOC -{ - class MoveSectionDown : Command - { - private Project mProject; - private CoreNode mNode; - private CoreNode mParent; - private int mIndex; - private int mPosition; - - public override string Label - { - get - { - return Localizer.Message("move_section_down_command_label"); - } - } - - public MoveSectionDown(Project project, CoreNode node, CoreNode parent, int index, int position) - { - mProject = project; - mNode = node; - mParent = parent; - mIndex = index; - mPosition = position; - } - - /// <summary> - /// ReDo: move the node - /// </summary> - public override void Do() - { - mProject.MoveNodeDown(mProject, mNode); - } - - /// <summary> - /// Undo: restore the node and its descendants. - /// </summary> - public override void Undo() - { - mProject.UndoMoveNode(mNode, mParent, mIndex, mPosition); - } - } -} Added: trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionNode.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionNode.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionNode.cs 2006-08-11 16:04:03 UTC (rev 846) @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using urakawa.core; + +namespace Obi.Commands.TOC +{ + class MoveSectionNodeDown : Command + { + private Project mProject; + private CoreNode mNode; + private CoreNode mParent; + private int mIndex; + private int mPosition; + + public override string Label + { + get + { + return Localizer.Message("move_section_down_command_label"); + } + } + + public MoveSectionNodeDown(Project project, CoreNode node, CoreNode parent, int index, int position) + { + mProject = project; + mNode = node; + mParent = parent; + mIndex = index; + mPosition = position; + } + + /// <summary> + /// ReDo: move the node + /// </summary> + public override void Do() + { + mProject.MoveNodeDown(mProject, mNode); + } + + /// <summary> + /// Undo: restore the node and its descendants. + /// </summary> + public override void Undo() + { + mProject.UndoMoveNode(mNode, mParent, mIndex, mPosition); + } + } + + class MoveSectionNodeUp : Command + { + private Project mProject; + private CoreNode mNode; + private CoreNode mParent; + private int mIndex; + private int mPosition; + + public override string Label + { + get + { + return Localizer.Message("move_section_up_command_label"); + } + } + + public MoveSectionNodeUp(Project project, CoreNode node, CoreNode parent, int index, int position) + { + mProject = project; + mNode = node; + mParent = parent; + mIndex = index; + mPosition = position; + } + + /// <summary> + /// ReDo: move the node + /// </summary> + public override void Do() + { + mProject.MoveNodeUp(mProject, mNode); + } + + /// <summary> + /// Undo: restore the node and its descendants. + /// </summary> + public override void Undo() + { + mProject.UndoMoveNode(mNode, mParent, mIndex, mPosition); + } + } +} Deleted: trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionUp.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionUp.cs 2006-08-11 15:25:11 UTC (rev 845) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionUp.cs 2006-08-11 16:04:03 UTC (rev 846) @@ -1,50 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -using urakawa.core; - -namespace Obi.Commands.TOC -{ - class MoveSectionUp : Command - { - private Project mProject; - private CoreNode mNode; - private CoreNode mParent; - private int mIndex; - private int mPosition; - - public override string Label - { - get - { - return Localizer.Message("move_section_up_command_label"); - } - } - - public MoveSectionUp(Project project, CoreNode node, CoreNode parent, int index, int position) - { - mProject = project; - mNode = node; - mParent = parent; - mIndex = index; - mPosition = position; - } - - /// <summary> - /// ReDo: move the node - /// </summary> - public override void Do() - { - mProject.MoveNodeUp(mProject, mNode); - } - - /// <summary> - /// Undo: restore the node and its descendants. - /// </summary> - public override void Undo() - { - mProject.UndoMoveNode(mNode, mParent, mIndex, mPosition); - } - } -} Deleted: trunk/urakawa/application/Obi/Obi/Commands/TOC/PasteSection.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/PasteSection.cs 2006-08-11 15:25:11 UTC (rev 845) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/PasteSection.cs 2006-08-11 16:04:03 UTC (rev 846) @@ -1,41 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -using urakawa.core; - -namespace Obi.Commands.TOC -{ - class PasteSection : Command - { - private Project mProject; - private CoreNode mParent; - private CoreNode mNode; - - public override string Label - { - get - { - return Localizer.Message("paste_section_command_label"); - } - } - - public PasteSection(Project project, CoreNode node, CoreNode parent) - { - mProject = project; - mParent = parent; - mNode = node; - } - - - public override void Do() - { - mProject.PasteTOCNode(mProject, mParent); - } - - public override void Undo() - { - mProject.RemoveNode(mProject, mNode); - } - } -} Added: trunk/urakawa/application/Obi/Obi/Commands/TOC/SectionNodeClipboard.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/SectionNodeClipboard.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/SectionNodeClipboard.cs 2006-08-11 16:04:03 UTC (rev 846) @@ -0,0 +1,118 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using urakawa.core; + +namespace Obi.Commands.TOC +{ + class CutSectionNode : Command + { + private Project mProject; + private CoreNode mNode; + private CoreNode mParent; + private int mIndex; + private int mPosition; + + public override string Label + { + get + { + return Localizer.Message("cut_section_command_label"); + } + } + + public CutSectionNode(Project project, CoreNode node, CoreNode parent, int index, int position) + { + mProject = project; + mNode = node; + mParent = parent; + mIndex = index; + mPosition = position; + } + + /// <summary> + /// ReDo: uncut the node + /// </summary> + public override void Do() + { + mProject.DoCutTOCNode(mProject, mNode); + } + + /// <summary> + /// Undo: restore the node and its descendants. + /// </summary> + public override void Undo() + { + mProject.UndoCutNode(mNode, mParent, mIndex, mPosition); + } + } + + class CopySectionNode : Command + { + private Project mProject; + private CoreNode mNode; + + public override string Label + { + get + { + return Localizer.Message("copy_section_command_label"); + } + } + + public CopySectionNode(Project project, CoreNode node) + { + mProject = project; + mNode = node; + } + + /// <summary> + /// ReDo: uncut the node + /// </summary> + public override void Do() + { + mProject.CopyTOCNode(mProject, mNode); + } + + /// <summary> + /// Undo: restore the node and its descendants. + /// </summary> + public override void Undo() + { + mProject.UndoCopyTOCNode(mNode); + } + } + class PasteSectionNode : Command + { + private Project mProject; + private CoreNode mParent; + private CoreNode mNode; + + public override string Label + { + get + { + return Localizer.Message("paste_section_command_label"); + } + } + + public PasteSectionNode(Project project, CoreNode node, CoreNode parent) + { + mProject = project; + mParent = parent; + mNode = node; + } + + + public override void Do() + { + mProject.PasteTOCNode(mProject, mParent); + } + + public override void Undo() + { + mProject.RemoveNode(mProject, mNode); + } + } +} Modified: trunk/urakawa/application/Obi/Obi/Events/Node/MovedNodeEventArgs.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Events/Node/MovedNodeEventArgs.cs 2006-08-11 15:25:11 UTC (rev 845) +++ trunk/urakawa/application/Obi/Obi/Events/Node/MovedNodeEventArgs.cs 2006-08-11 16:04:03 UTC (rev 846) @@ -6,6 +6,9 @@ namespace Obi.Events.Node { + //md: + //I don't think this is necessarily specific to SectionNodes (although + //it's definitely used in that case), so I haven't renamed it "xxxSectionNodexxx" public delegate void MovedNodeHandler(object sender, MovedNodeEventArgs e); class MovedNodeEventArgs : AddedSectionNodeEventArgs Modified: trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs 2006-08-11 15:25:11 UTC (rev 845) +++ trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs 2006-08-11 16:04:03 UTC (rev 846) @@ -7,24 +7,24 @@ namespace Obi.Events.Node { public delegate void RequestToAddSiblingNodeHandler(object sender, NodeEventArgs e); - public delegate void RequestToAddChildNodeHandler(object sender, NodeEventArgs e); - public delegate void RequestToIncreaseNodeLevelHandler(object sender, NodeEventArgs e); - public delegate void RequestToDecreaseNodeLevelHandler(object sender, NodeEventArgs e); + public delegate void RequestToAddChildSectionNodeHandler(object sender, NodeEventArgs e); + public delegate void RequestToIncreaseSectionNodeLevelHandler(object sender, NodeEventArgs e); + public delegate void RequestToDecreaseSectionNodeLevelHandler(object sender, NodeEventArgs e); public delegate void RequestToDeleteNodeHandler(object sender, NodeEventArgs e); - public delegate void RequestToMoveNodeUpHandler(object sender, NodeEventArgs e); - public delegate void RequestToMoveNodeDownHandler(object sender, NodeEventArgs e); + public delegate void RequestToMoveSectionNodeUpHandler(object sender, NodeEventArgs e); + public delegate void RequestToMoveSectionNodeDownHandler(object sender, NodeEventArgs e); public delegate void RequestToDeleteBlockHandler(object sender, NodeEventArgs e); public delegate void RequestToMoveBlockHandler(object sender, NodeEventArgs e); - public delegate void RequestToCutNodeHandler(object sender, NodeEventArgs e); - public delegate void RequestToCopyNodeHandler(object sender, NodeEventArgs e); - public delegate void RequestToPasteNodeHandler(object sender, NodeEventArgs e); - - public delegate void DecreasedNodeLevelHandler(object sender, NodeEventArgs e); + public delegate void RequestToCutSectionNodeHandler(object sender, NodeEventArgs e); + public delegate void RequestToCopySectionNodeHandler(object sender, NodeEventArgs e); + public delegate void RequestToPasteSectionNodeHandler(object sender, NodeEventArgs e); + + public delegate void DecreasedSectionNodeLevelHandler(object sender, NodeEventArgs e); public delegate void DeletedNodeHandler(object sender, NodeEventArgs e); public delegate void ShallowDeletedNodeHandler(object sender, NodeEventArgs e); - public delegate void CutNodeHandler(object sender, NodeEventArgs e); - public delegate void CopiedNodeHandler(object sender, NodeEventArgs e); - public delegate void UndidPasteNodeHandler(object sender, NodeEventArgs e); + public delegate void CutSectionNodeHandler(object sender, NodeEventArgs e); + public delegate void CopiedSectionNodeHandler(object sender, NodeEventArgs e); + public delegate void UndidPasteSectionNodeHandler(object sender, NodeEventArgs e); public delegate void ImportedAssetHandler(object sender, NodeEventArgs e); public delegate void DeletedBlockHandler(object sender, NodeEventArgs e); Modified: trunk/urakawa/application/Obi/Obi/Obi.csproj =================================================================== --- trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-11 15:25:11 UTC (rev 845) +++ trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-11 16:04:03 UTC (rev 846) @@ -86,15 +86,11 @@ <Compile Include="Commands\Strips\RenamePhrase.cs" /> <Compile Include="Commands\Strips\SplitPhrase.cs" /> <Compile Include="Commands\TOC\AddSection.cs" /> - <Compile Include="Commands\TOC\CopySection.cs" /> - <Compile Include="Commands\TOC\CutSection.cs" /> - <Compile Include="Commands\TOC\DecreaseSectionLevel.cs" /> + <Compile Include="Commands\TOC\ChangeSectionNodeLevel.cs" /> <Compile Include="Commands\TOC\DeleteSection.cs" /> - <Compile Include="Commands\TOC\IncreaseSectionLevel.cs" /> - <Compile Include="Commands\TOC\MoveSectionDown.cs" /> - <Compile Include="Commands\TOC\MoveSectionUp.cs" /> - <Compile Include="Commands\TOC\PasteSection.cs" /> + <Compile Include="Commands\TOC\MoveSectionNode.cs" /> <Compile Include="Commands\TOC\Rename.cs" /> + <Compile Include="Commands\TOC\SectionNodeClipboard.cs" /> <Compile Include="CustomProperties.cs" /> <Compile Include="Dialogs\About.cs"> <SubType>Form</SubType> @@ -189,6 +185,7 @@ <Compile Include="Program.cs" /> <Compile Include="Project.Blocks.cs" /> <Compile Include="Project.cs" /> + <Compile Include="Project.TOC.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <EmbeddedResource Include="Audio\VuMeterForm.resx"> <DependentUpon>VuMeterForm.cs</DependentUpon> Added: trunk/urakawa/application/Obi/Obi/Project.TOC.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.TOC.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/Project.TOC.cs 2006-08-11 16:04:03 UTC (rev 846) @@ -0,0 +1,727 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +using urakawa.core; +using urakawa.media; + +namespace Obi +{ + public partial class Project + { + public event Events.Node.AddedSectionNodeHandler AddedSectionNode; // a section node was added to the TOC + public event Events.Node.RenamedNodeHandler RenamedNode; // a node was renamed in the presentation + public event Events.Node.MovedNodeHandler MovedNode; // a node was moved in the presentation + public event Events.Node.DecreasedSectionNodeLevelHandler DecreasedNodeLevel; // a node's level was decreased in the presentation + public event Events.Node.MovedNodeHandler UndidMoveNode; // a node was restored to its previous location + public event Events.Node.DeletedNodeHandler DeletedNode; // a node was deleted from the presentation + //md: toc clipboard stuff + public event Events.Node.CutSectionNodeHandler CutTOCNode; + public event Events.Node.MovedNodeHandler UndidCutTOCNode; + public event Events.Node.CopiedSectionNodeHandler CopiedTOCNode; + public event Events.Node.CopiedSectionNodeHandler UndidCopyTOCNode; + public event Events.Node.PastedSectionNodeHandler PastedTOCNode; + public event Events.Node.UndidPasteSectionNodeHandler UndidPasteTOCNode; + + private CoreNode mClipboard; //clipboard for cut-copy-paste + + + /// <summary> + /// Create a new section node with a default text label. The node is not attached to anything. + /// Add a node information custom property as well. + /// </summary> + /// <returns>The created node.</returns> + private CoreNode CreateSectionNode() + { + CoreNode node = getPresentation().getCoreNodeFactory().createNode(); + ChannelsProperty prop = (ChannelsProperty)node.getProperty(typeof(ChannelsProperty)); + TextMedia text = (TextMedia)getPresentation().getMediaFactory().createMedia(urakawa.media.MediaType.TEXT); + text.setText(Localizer.Message("default_section_label")); + prop.setMedia(mTextChannel, text); + NodeInformationProperty typeProp = + (NodeInformationProperty)getPresentation().getPropertyFactory().createProperty("NodeInformationProperty", + ObiPropertyFactory.ObiNS); + typeProp.NodeType = NodeType.Section; + typeProp.NodeStatus = NodeStatus.Used; + node.setProperty(typeProp); + return node; + } + // Here are the event handlers for request sent by the GUI when editing the TOC. + // Every request is passed to a method that uses mostly the same arguments, + // which can also be called directly by a command for undo/redo purposes. + // When we are done, a synchronization event is sent back. + // (As well as a state change event.) + + + /// <summary> + /// Create a sibling section for a given section. + /// The context node may be null if this is the first node that is added, in which case + /// we add a new child to the root (and not a sibling.) + /// </summary> + public void CreateSiblingSection(object origin, CoreNode contextNode) + { + CoreNode parent = (CoreNode)(contextNode == null ? getPresentation().getRootNode() : contextNode.getParent()); + CoreNode sibling = CreateSectionNode(); + if (contextNode == null) + { + parent.appendChild(sibling); + } + else + { + parent.insert(sibling, parent.indexOf(contextNode) + 1); + } + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(sibling); + getPresentation().getRootNode().acceptDepthFirst(visitor); + AddedSectionNode(this, new Events.Node.AddedSectionNodeEventArgs(origin, sibling, parent.indexOf(sibling), + visitor.Position)); + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + Commands.TOC.AddSectionNode command = new Commands.TOC.AddSectionNode(this, sibling, parent, parent.indexOf(sibling), + visitor.Position); + CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); + } + + public void CreateSiblingSectionRequested(object sender, Events.Node.NodeEventArgs e) + { + CreateSiblingSection(sender, e.Node); + } + + /// <summary> + /// Create a new child section for a given section. If the context node is null, add to the root of the tree. + /// </summary> + public void CreateChildSection(object origin, CoreNode parent) + { + CoreNode child = CreateSectionNode(); + if (parent == null) parent = getPresentation().getRootNode(); + parent.appendChild(child); + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(child); + getPresentation().getRootNode().acceptDepthFirst(visitor); + AddedSectionNode(this, new Events.Node.AddedSectionNodeEventArgs(origin, child, parent.indexOf(child), visitor.Position)); + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + Commands.TOC.AddSectionNode command = new Commands.TOC.AddSectionNode(this, child, parent, parent.indexOf(child), + visitor.Position); + CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); + } + + public void CreateChildSectionRequested(object sender, Events.Node.NodeEventArgs e) + { + CreateChildSection(sender, e.Node); + } + + /// <summary> + /// Add a section that had previously been added. + /// </summary> + /// <param name="node"></param> + /// <param name="parent"></param> + /// <param name="index"></param> + /// <param name="position"></param> + /// <param name="originalLabel"></param> + public void AddExistingSection(CoreNode node, CoreNode parent, int index, int position, string originalLabel) + { + if (node.getParent() == null) parent.insert(node, index); + if (originalLabel != null) Project.GetTextMedia(node).setText(originalLabel); + AddedSectionNode(this, new Events.Node.AddedSectionNodeEventArgs(this, node, index, position)); + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + } + + /// <summary> + /// Readd a section node that was previously delete and restore all its contents. + /// </summary> + /// <param name="node"></param> + /// <param name="parent"></param> + /// <param name="index"></param> + /// <param name="position"></param> + public void UndeleteSectionNode(CoreNode node, CoreNode parent, int index, int position) + { + Visitors.UndeleteSubtree visitor = new Visitors.UndeleteSubtree(this, parent, index, position); + node.acceptDepthFirst(visitor); + } + + /// <summary> + /// Remove a node from the core tree. It is detached from the tree and the + /// </summary> + public void RemoveNode(object origin, CoreNode node) + { + if (node != null) + { + Commands.TOC.DeleteSectionNode command = null; + if (origin != this) + { + CoreNode parent = (CoreNode)node.getParent(); + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); + getPresentation().getRootNode().acceptDepthFirst(visitor); + command = new Commands.TOC.DeleteSectionNode(this, node, parent, parent.indexOf(node), visitor.Position); + } + node.detach(); + DeletedNode(this, new Events.Node.NodeEventArgs(origin, node)); + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + if (command != null) CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); + } + } + + public void RemoveNodeRequested(object sender, Events.Node.NodeEventArgs e) + { + RemoveNode(sender, e.Node); + } + + /// <summary> + /// Move a node up in the TOC. + /// </summary> + public void MoveNodeUp(object origin, CoreNode node) + { + Commands.TOC.MoveSectionNodeUp command = null; + + if (origin != this) + { + CoreNode parent = (CoreNode)node.getParent(); + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); + getPresentation().getRootNode().acceptDepthFirst(visitor); + //we need to save the state of the node before it is moved + command = new Commands.TOC.MoveSectionNodeUp + (this, node, parent, parent.indexOf(node), visitor.Position); + } + + bool succeeded = ExecuteMoveNodeUp(node); + + if (succeeded) + { + CoreNode newParent = (CoreNode)node.getParent(); + + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); + getPresentation().getRootNode().acceptDepthFirst(visitor); + + MovedNode(this, new Events.Node.MovedNodeEventArgs + (this, node, newParent, newParent.indexOf(node), visitor.Position)); + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + if (command != null) CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); + } + } + + /// <summary> + /// move the node up + /// </summary> + /// <param name="node"></param> + /// <returns></returns> + /// <remarks>a facade API function could do this for us</remarks> + private bool ExecuteMoveNodeUp(CoreNode node) + { + CoreNode newParent = null; + int newIndex = 0; + + int currentIndex = ((CoreNode)node.getParent()).indexOf(node); + + //if it is the first node in its list + //change its level and move it to be the previous sibling of its parent + if (currentIndex == 0) + { + //it will be a sibling of its parent (soon to be former parent) + if (node.getParent().getParent() != null) + { + newParent = (CoreNode)node.getParent().getParent(); + + newIndex = newParent.indexOf((CoreNode)node.getParent()); + + } + } + else + { + //keep our current parent + newParent = (CoreNode)node.getParent(); + newIndex = currentIndex - 1; + } + + if (newParent != null) + { + CoreNode movedNode = (CoreNode)node.detach(); + newParent.insert(movedNode, newIndex); + return true; + } + else + { + return false; + } + } + + public void MoveNodeUpRequested(object sender, Events.Node.NodeEventArgs e) + { + MoveNodeUp(sender, e.Node); + } + + /// <summary> + /// reposition the node at the index under its given parent + /// </summary> + /// <param name="node"></param> + /// <param name="parent"></param> + /// <param name="index"></param> + /// <param name="position"></param> + public void UndoMoveNode(CoreNode node, CoreNode parent, int index, int position) + { + if (node.getParent() != null) node.detach(); + parent.insert(node, index); + + UndidMoveNode(this, new Events.Node.MovedNodeEventArgs(this, node, parent, index, position)); + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + } + + /// <summary> + /// Undo increase level + /// </summary> + /// <param name="origin"></param> + /// <param name="node"></param> + //added by marisa 01 aug 06 + public void UndoIncreaseNodeLevel(CoreNode node, CoreNode parent, int index, int position) + { + UndoMoveNode(node, parent, index, position); + } + + public void MoveNodeDown(object origin, CoreNode node) + { + Commands.TOC.MoveSectionNodeDown command = null; + + if (origin != this) + { + CoreNode parent = (CoreNode)node.getParent(); + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); + getPresentation().getRootNode().acceptDepthFirst(visitor); + //we need to save the state of the node before it is moved + command = new Commands.TOC.MoveSectionNodeDown + (this, node, parent, parent.indexOf(node), visitor.Position); + } + + bool succeeded = ExecuteMoveNodeDown(node); + if (succeeded) + { + CoreNode newParent = (CoreNode)node.getParent(); + + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); + getPresentation().getRootNode().acceptDepthFirst(visitor); + + MovedNode(this, new Events.Node.MovedNodeEventArgs + (this, node, newParent, newParent.indexOf(node), visitor.Position)); + + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + if (command != null) CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); + } + } + + /// <summary> + /// Move a node down in the presentation. If it has a younger sibling, then they swap + /// places. If not, it changes level and becomes a younger sibling of its parent. + /// </summary> + /// <param name="node"></param> + /// <returns></returns> + ///<remarks>a facade API function could do this for us</remarks> + private bool ExecuteMoveNodeDown(CoreNode node) + { + CoreNode newParent = null; + int newIndex = 0; + + int currentIndex = ((CoreNode)node.getParent()).indexOf(node); + + //if it is the last node in its list + //change its level and move it to be the next sibling of its parent + if (currentIndex == node.getParent().getChildCount() - 1) + { + //it will be a sibling of its parent (soon to be former parent) + if (node.getParent().getParent() != null) + { + newParent = (CoreNode)node.getParent().getParent(); + newIndex = newParent.indexOf((CoreNode)node.getParent()) + 1; + } + } + else + { + //keep our current parent + newParent = (CoreNode)node.getParent(); + newIndex = currentIndex + 1; + } + + if (newParent != null) + { + CoreNode movedNode = (CoreNode)node.detach(); + newParent.insert(movedNode, newIndex); + return true; + } + else + { + return false; + } + } + + public void MoveNodeDownRequested(object sender, Events.Node.NodeEventArgs e) + { + MoveNodeDown(sender, e.Node); + } + + public void IncreaseNodeLevel(object origin, CoreNode node) + { + Commands.TOC.IncreaseSectionNodeLevel command = null; + + if (origin != this) + { + CoreNode parent = (CoreNode)node.getParent(); + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); + getPresentation().getRootNode().acceptDepthFirst(visitor); + //we need to save the state of the node before it is altered + command = new Commands.TOC.IncreaseSectionNodeLevel + (this, node, parent, parent.indexOf(node), visitor.Position); + } + + bool succeeded = ExecuteIncreaseNodeLevel(node); + if (succeeded) + { + CoreNode newParent = (CoreNode)node.getParent(); + + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); + getPresentation().getRootNode().acceptDepthFirst(visitor); + + //IncreasedNodeLevel(this, new Events.Node.NodeEventArgs(origin, node)); + MovedNode(this, new Events.Node.MovedNodeEventArgs + (origin, node, newParent, newParent.indexOf(node), visitor.Position)); + + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + if (command != null) CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); // JQ + } + + } + + /// <summary> + /// Move the node "in" + /// </summary> + /// <param name="node"></param> + /// <returns></returns> + /// <remarks>a facade API function could do this for us</remarks> + private bool ExecuteIncreaseNodeLevel(CoreNode node) + { + int nodeIndex = ((CoreNode)node.getParent()).indexOf(node); + + //the node's level can be increased if it has an older sibling + if (nodeIndex == 0) + { + return false; + } + + CoreNode newParent = ((CoreNode)node.getParent()).getChild(nodeIndex - 1); + + if (newParent != null) + { + CoreNode movedNode = (CoreNode)node.detach(); + newParent.appendChild(movedNode); + return true; + } + else + { + return false; + } + } + + public void IncreaseNodeLevelRequested(object sender, Events.Node.NodeEventArgs e) + { + IncreaseNodeLevel(sender, e.Node); + } + + public void DecreaseNodeLevel(object origin, CoreNode node) + { + Commands.TOC.DecreaseSectionNodeLevel command = null; + + if (origin != this) + { + CoreNode parent = (CoreNode)node.getParent(); + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); + getPresentation().getRootNode().acceptDepthFirst(visitor); + //we need to save the state of the node before it is altered + command = new Commands.TOC.DecreaseSectionNodeLevel + (this, node, parent, parent.indexOf(node), visitor.Position, node.getChildCount()); + } + + bool succeeded = ExecuteDecreaseNodeLevel(node); + if (succeeded) + { + CoreNode newParent = (CoreNode)node.getParent(); + + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); + getPresentation().getRootNode().acceptDepthFirst(visitor); + + DecreasedNodeLevel(this, new Events.Node.NodeEventArgs(origin, node)); + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + + if (command != null) CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); + } + } + + /// <summary> + /// move the node "out" + /// </summary> + /// <param name="node"></param> + /// <returns></returns> + ///<remarks>a facade API function could do this for us</remarks> + private bool ExecuteDecreaseNodeLevel(CoreNode node) + { + //the only reason we can't decrease the level is if the node is already + //at the outermost level + if (node.getParent() == null || + node.getParent().Equals(node.getPresentation().getRootNode())) + { + return false; + } + + ArrayList futureChildren = new ArrayList(); + int nodeIndex = ((CoreNode)node.getParent()).indexOf(node); + + int numChildren = node.getParent().getChildCount(); + + //make copies of our future children, and remove them from the tree + for (int i = numChildren - 1; i > nodeIndex; i--) + { + futureChildren.Add(node.getParent().getChild(i).detach()); + } + //since the list was built in backwards order, rearrange it + futureChildren.Reverse(); + + CoreNode newParent = (CoreNode)node.getParent().getParent(); + int newIndex = newParent.indexOf((CoreNode)node.getParent()) + 1; + + CoreNode clone = (CoreNode)node.detach(); + + newParent.insert(clone, newIndex); + + foreach (object childnode in futureChildren) + { + clone.appendChild((CoreNode)childnode); + } + + return true; + + } + + public void DecreaseNodeLevelRequested(object sender, Events.Node.NodeEventArgs e) + { + DecreaseNodeLevel(sender, e.Node); + } + + /// <summary> + /// undo decrease node level is a bit tricky because we might have to move some of the node's + /// children out a level, but only if they were newly adopted after the decrease level action happened. + /// </summary> + /// <param name="node"></param> + /// <param name="parent"></param> + /// <param name="index"></param> + /// <param name="position"></param> + /// <param name="childCount">number of children this node used to have before the decrease level action happened</param> + //added by marisa + public void UndoDecreaseSectionLevel(CoreNode node, CoreNode parent, int index, int position, int originalChildCount) + { + //error-checking + if (node.getChildCount() < originalChildCount) + { + //this would be a pretty strange thing to have happen. + //todo: throw an exception? + return; + } + + //detach the non-original children (child nodes originalChildCount...n-1) + ArrayList nonOriginalChildren = new ArrayList(); + int totalNumChildren = node.getChildCount(); + + for (int i = totalNumChildren - 1; i >= originalChildCount; i--) + { + CoreNode child = (CoreNode)node.getChild(i); + if (child != null) + { + nonOriginalChildren.Add(child); + child.detach(); + } + } + + //this array was built backwards, so reverse it + nonOriginalChildren.Reverse(); + + //insert the node back in its old location + node.detach(); + parent.insert(node, index); + + MovedNode(this, new Events.Node.MovedNodeEventArgs(this, node, parent, index, position)); + + Visitors.SectionNodePosition visitor = null; + + //reattach the children + for (int i = 0; i < nonOriginalChildren.Count; i++) + { + parent.appendChild((CoreNode)nonOriginalChildren[i]); + //find the position for the first one + if (i == 0) + { + visitor = new Visitors.SectionNodePosition(node); + getPresentation().getRootNode().acceptDepthFirst(visitor); + } + + MovedNode(this, new Events.Node.MovedNodeEventArgs + (this, (CoreNode)nonOriginalChildren[i], parent, + parent.getChildCount() - 1, visitor.Position + i)); + } + } + + /// <summary> + /// Change the text label of a node. + /// </summary> + public void RenameNode(object origin, CoreNode node, string label) + { + TextMedia text = GetTextMedia(node); + Commands.TOC.Rename command = origin == this ? null : new Commands.TOC.Rename(this, node, text.getText(), label); + GetTextMedia(node).setText(label); + RenamedNode(this, new Events.Node.RenameNodeEventArgs(origin, node, label)); + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + if (command != null) CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); + } + + public void RenameNodeRequested(object sender, Events.Node.RenameNodeEventArgs e) + { + RenameNode(sender, e.Node, e.Label); + } + + //md 20060810 + public void CutTOCNodeRequested(object sender, Events.Node.NodeEventArgs e) + { + DoCutTOCNode(sender, e.Node); + } + + //md 20060810 + public void DoCutTOCNode(object origin, CoreNode node) + { + if (node == null) return; + + CoreNode parent = (CoreNode)node.getParent(); + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); + getPresentation().getRootNode().acceptDepthFirst(visitor); + //we need to save the state of the node before it is altered + Commands.TOC.CutSectionNode command = null; + + if (origin != this) + { + command = new Commands.TOC.CutSectionNode + (this, node, parent, parent.indexOf(node), visitor.Position); + } + + mClipboard = node; + node.detach(); + + CutTOCNode(this, new Events.Node.NodeEventArgs(origin, node)); + + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + if (command != null) CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); + } + + //md 20060810 + public void UndoCutNode(CoreNode node, CoreNode parent, int index, int position) + { + if (node.getParent() != null) node.detach(); + parent.insert(node, index); + + UndidCutTOCNode(this, new Events.Node.MovedNodeEventArgs(this, node, parent, index, position)); + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + } + + //md 20060810 + public void CopyTOCNodeRequested(object sender, Events.Node.NodeEventArgs e) + { + CopyTOCNode(sender, e.Node); + } + + //md 20060810 + public void CopyTOCNode(object origin, CoreNode node) + { + if (node == null) return; + + Commands.TOC.CopySectionNode command = null; + + if (origin != this) + { + command = new Commands.TOC.CopySectionNode(this, node); + } + + //the actual copy operation + mClipboard = node.copy(true); + + CopiedTOCNode(this, new Events.Node.NodeEventArgs(origin, node)); + + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + if (command != null) CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); + } + + //md 20060810 + public void UndoCopyTOCNode(CoreNode node) + { + mClipboard = null; + + UndidCopyTOCNode(this, new Events.Node.NodeEventArgs(this, node)); + + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + } + + //md 20060810 + public void PasteTOCNodeRequested(object sender, Events.Node.NodeEventArgs e) + { + PasteTOCNode(sender, e.Node); + } + + //md 20060810 + //"paste" will paste the clipboard contents as the first child of the given node + public void PasteTOCNode(object origin, CoreNode parent) + { + if (parent == null) return; + + Commands.TOC.PasteSectionNode command = null; + + CoreNode pastedSection = mClipboard; + + //don't clear the clipboard, we can use it again + + if (origin != this) + { + command = new Commands.TOC.PasteSectionNode(this, pastedSection, parent); + } + + //the actual paste operation + parent.insert(pastedSection, 0); + + Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(pastedSection); + getPresentation().getRootNode().acceptDepthFirst(visitor); + + PastedTOCNode(this, new Events.Node.AddedSectionNodeEventArgs + (origin, pastedSection, parent.indexOf(pastedSection), visitor.Position)); + + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + if (command != null) CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); + } + + //md 20060810 + public void UndoPasteTOCNode(CoreNode node) + { + mClipboard = node.copy(true); + + node.detach(); + + UndidPasteTOCNode(this, new Events.Node.NodeEventArgs(this, mClipboard)); + + mUnsaved = true; + StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); + + } + + } +} Modified: trunk/urakawa/application/Obi/Obi/Project.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.cs 2006-08-11 15:25:11 UTC (rev 845) +++ trunk/urakawa/application/Obi/Obi/Project.cs 2006-08-11 16:04:03 UTC (rev 846) @@ -39,8 +39,7 @@ private string mLastPath; // last path to which the project was saved (see save as) private SimpleMetadata mMetadata; // metadata for this project - private CoreNode mClipboard; //clipboard for cut-copy-paste - + public static readonly string XUKVersion = "obi-xuk-001"; // version of the Obi/XUK file public static readonly string AudioChannel = "obi.audio"; // canonical name of the audio channel public static readonly string TextChannel = "obi.text"; // canonical name of the text channel @@ -49,24 +48,12 @@ public event Events.Project.StateChangedHandler StateChanged; // the state of the project changed (modified, saved...)... [truncated message content] |
From: <mar...@us...> - 2006-08-11 16:22:53
|
Revision: 847 Author: marisademeglio Date: 2006-08-11 09:22:35 -0700 (Fri, 11 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=847&view=rev Log Message: ----------- Split TOC panel into several files Renamed section node functions as such. Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Commands/TOC/AddSection.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/ChangeSectionNodeLevel.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionNode.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/Rename.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/SectionNodeClipboard.cs trunk/urakawa/application/Obi/Obi/Obi.csproj trunk/urakawa/application/Obi/Obi/Project.TOC.cs trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs trunk/urakawa/application/Obi/Obi/Visitors/UndeleteSubtree.cs Added Paths: ----------- trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.ContextMenu.cs trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.SyncCallbacks.cs Modified: trunk/urakawa/application/Obi/Obi/Commands/TOC/AddSection.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/AddSection.cs 2006-08-11 16:04:03 UTC (rev 846) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/AddSection.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -39,7 +39,7 @@ /// </summary> public override void Do() { - mProject.AddExistingSection(mNode, mParent, mIndex, mPosition, mOriginalLabel); + mProject.AddExistingSectionNode(mNode, mParent, mIndex, mPosition, mOriginalLabel); } /// <summary> Modified: trunk/urakawa/application/Obi/Obi/Commands/TOC/ChangeSectionNodeLevel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/ChangeSectionNodeLevel.cs 2006-08-11 16:04:03 UTC (rev 846) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/ChangeSectionNodeLevel.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -38,7 +38,7 @@ /// </summary> public override void Do() { - mProject.DecreaseNodeLevel(mProject, mNode); + mProject.DecreaseSectionNodeLevel(mProject, mNode); } /// <summary> @@ -46,7 +46,7 @@ /// </summary> public override void Undo() { - mProject.UndoDecreaseSectionLevel(mNode, mParent, mIndex, mPosition, mChildCount); + mProject.UndoDecreaseSectionNodeLevel(mNode, mParent, mIndex, mPosition, mChildCount); } } @@ -80,7 +80,7 @@ /// </summary> public override void Do() { - mProject.IncreaseNodeLevel(mProject, mNode); + mProject.IncreaseSectionNodeLevel(mProject, mNode); } /// <summary> @@ -88,7 +88,7 @@ /// </summary> public override void Undo() { - mProject.UndoIncreaseNodeLevel(mNode, mParent, mIndex, mPosition); + mProject.UndoIncreaseSectionNodeLevel(mNode, mParent, mIndex, mPosition); } } } Modified: trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionNode.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionNode.cs 2006-08-11 16:04:03 UTC (rev 846) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionNode.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -36,7 +36,7 @@ /// </summary> public override void Do() { - mProject.MoveNodeDown(mProject, mNode); + mProject.MoveSectionNodeDown(mProject, mNode); } /// <summary> @@ -44,7 +44,7 @@ /// </summary> public override void Undo() { - mProject.UndoMoveNode(mNode, mParent, mIndex, mPosition); + mProject.UndoMoveSectionNode(mNode, mParent, mIndex, mPosition); } } @@ -78,7 +78,7 @@ /// </summary> public override void Do() { - mProject.MoveNodeUp(mProject, mNode); + mProject.MoveSectionNodeUp(mProject, mNode); } /// <summary> @@ -86,7 +86,7 @@ /// </summary> public override void Undo() { - mProject.UndoMoveNode(mNode, mParent, mIndex, mPosition); + mProject.UndoMoveSectionNode(mNode, mParent, mIndex, mPosition); } } } Modified: trunk/urakawa/application/Obi/Obi/Commands/TOC/Rename.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/Rename.cs 2006-08-11 16:04:03 UTC (rev 846) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/Rename.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -31,12 +31,12 @@ public override void Do() { - mProject.RenameNode(mProject, mNode, mNewName); + mProject.RenameSectionNode(mProject, mNode, mNewName); } public override void Undo() { - mProject.RenameNode(mProject, mNode, mOldName); + mProject.RenameSectionNode(mProject, mNode, mOldName); } } } Modified: trunk/urakawa/application/Obi/Obi/Commands/TOC/SectionNodeClipboard.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/SectionNodeClipboard.cs 2006-08-11 16:04:03 UTC (rev 846) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/SectionNodeClipboard.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -36,7 +36,7 @@ /// </summary> public override void Do() { - mProject.DoCutTOCNode(mProject, mNode); + mProject.DoCutSectionNode(mProject, mNode); } /// <summary> @@ -44,7 +44,7 @@ /// </summary> public override void Undo() { - mProject.UndoCutNode(mNode, mParent, mIndex, mPosition); + mProject.UndoCutSectionNode(mNode, mParent, mIndex, mPosition); } } @@ -72,7 +72,7 @@ /// </summary> public override void Do() { - mProject.CopyTOCNode(mProject, mNode); + mProject.CopySectionNode(mProject, mNode); } /// <summary> @@ -80,7 +80,7 @@ /// </summary> public override void Undo() { - mProject.UndoCopyTOCNode(mNode); + mProject.UndoCopySectionNode(mNode); } } class PasteSectionNode : Command @@ -107,7 +107,7 @@ public override void Do() { - mProject.PasteTOCNode(mProject, mParent); + mProject.PasteSectionNode(mProject, mParent); } public override void Undo() Modified: trunk/urakawa/application/Obi/Obi/Obi.csproj =================================================================== --- trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-11 16:04:03 UTC (rev 846) +++ trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-11 16:22:35 UTC (rev 847) @@ -301,12 +301,18 @@ <Compile Include="UserControls\StripManagerPanel.Designer.cs"> <DependentUpon>StripManagerPanel.cs</DependentUpon> </Compile> + <Compile Include="UserControls\TOCPanel.ContextMenu.cs"> + <SubType>UserControl</SubType> + </Compile> <Compile Include="UserControls\TOCPanel.cs"> <SubType>UserControl</SubType> </Compile> <Compile Include="UserControls\TOCPanel.Designer.cs"> <DependentUpon>TOCPanel.cs</DependentUpon> </Compile> + <Compile Include="UserControls\TOCPanel.SyncCallbacks.cs"> + <SubType>UserControl</SubType> + </Compile> <Compile Include="UserProfile.cs" /> <Compile Include="Visitors\AssetCreator.cs" /> <Compile Include="Visitors\DescendantsVisitor.cs" /> Modified: trunk/urakawa/application/Obi/Obi/Project.TOC.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.TOC.cs 2006-08-11 16:04:03 UTC (rev 846) +++ trunk/urakawa/application/Obi/Obi/Project.TOC.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -13,16 +13,16 @@ public event Events.Node.AddedSectionNodeHandler AddedSectionNode; // a section node was added to the TOC public event Events.Node.RenamedNodeHandler RenamedNode; // a node was renamed in the presentation public event Events.Node.MovedNodeHandler MovedNode; // a node was moved in the presentation - public event Events.Node.DecreasedSectionNodeLevelHandler DecreasedNodeLevel; // a node's level was decreased in the presentation + public event Events.Node.DecreasedSectionNodeLevelHandler DecreasedSectionNodeLevel; // a node's level was decreased in the presentation public event Events.Node.MovedNodeHandler UndidMoveNode; // a node was restored to its previous location public event Events.Node.DeletedNodeHandler DeletedNode; // a node was deleted from the presentation //md: toc clipboard stuff - public event Events.Node.CutSectionNodeHandler CutTOCNode; - public event Events.Node.MovedNodeHandler UndidCutTOCNode; - public event Events.Node.CopiedSectionNodeHandler CopiedTOCNode; - public event Events.Node.CopiedSectionNodeHandler UndidCopyTOCNode; - public event Events.Node.PastedSectionNodeHandler PastedTOCNode; - public event Events.Node.UndidPasteSectionNodeHandler UndidPasteTOCNode; + public event Events.Node.CutSectionNodeHandler CutSectionNode; + public event Events.Node.MovedNodeHandler UndidCutSectionNode; + public event Events.Node.CopiedSectionNodeHandler CopiedSectionNode; + public event Events.Node.CopiedSectionNodeHandler UndidCopySectionNode; + public event Events.Node.PastedSectionNodeHandler PastedSectionNode; + public event Events.Node.UndidPasteSectionNodeHandler UndidPasteSectionNode; private CoreNode mClipboard; //clipboard for cut-copy-paste @@ -59,7 +59,7 @@ /// The context node may be null if this is the first node that is added, in which case /// we add a new child to the root (and not a sibling.) /// </summary> - public void CreateSiblingSection(object origin, CoreNode contextNode) + public void CreateSiblingSectionNode(object origin, CoreNode contextNode) { CoreNode parent = (CoreNode)(contextNode == null ? getPresentation().getRootNode() : contextNode.getParent()); CoreNode sibling = CreateSectionNode(); @@ -82,15 +82,15 @@ CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); } - public void CreateSiblingSectionRequested(object sender, Events.Node.NodeEventArgs e) + public void CreateSiblingSectionNodeRequested(object sender, Events.Node.NodeEventArgs e) { - CreateSiblingSection(sender, e.Node); + CreateSiblingSectionNode(sender, e.Node); } /// <summary> /// Create a new child section for a given section. If the context node is null, add to the root of the tree. /// </summary> - public void CreateChildSection(object origin, CoreNode parent) + public void CreateChildSectionNode(object origin, CoreNode parent) { CoreNode child = CreateSectionNode(); if (parent == null) parent = getPresentation().getRootNode(); @@ -105,9 +105,9 @@ CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); } - public void CreateChildSectionRequested(object sender, Events.Node.NodeEventArgs e) + public void CreateChildSectionNodeRequested(object sender, Events.Node.NodeEventArgs e) { - CreateChildSection(sender, e.Node); + CreateChildSectionNode(sender, e.Node); } /// <summary> @@ -118,7 +118,7 @@ /// <param name="index"></param> /// <param name="position"></param> /// <param name="originalLabel"></param> - public void AddExistingSection(CoreNode node, CoreNode parent, int index, int position, string originalLabel) + public void AddExistingSectionNode(CoreNode node, CoreNode parent, int index, int position, string originalLabel) { if (node.getParent() == null) parent.insert(node, index); if (originalLabel != null) Project.GetTextMedia(node).setText(originalLabel); @@ -171,7 +171,7 @@ /// <summary> /// Move a node up in the TOC. /// </summary> - public void MoveNodeUp(object origin, CoreNode node) + public void MoveSectionNodeUp(object origin, CoreNode node) { Commands.TOC.MoveSectionNodeUp command = null; @@ -185,7 +185,7 @@ (this, node, parent, parent.indexOf(node), visitor.Position); } - bool succeeded = ExecuteMoveNodeUp(node); + bool succeeded = ExecuteMoveSectionNodeUp(node); if (succeeded) { @@ -208,7 +208,7 @@ /// <param name="node"></param> /// <returns></returns> /// <remarks>a facade API function could do this for us</remarks> - private bool ExecuteMoveNodeUp(CoreNode node) + private bool ExecuteMoveSectionNodeUp(CoreNode node) { CoreNode newParent = null; int newIndex = 0; @@ -247,9 +247,9 @@ } } - public void MoveNodeUpRequested(object sender, Events.Node.NodeEventArgs e) + public void MoveSectionNodeUpRequested(object sender, Events.Node.NodeEventArgs e) { - MoveNodeUp(sender, e.Node); + MoveSectionNodeUp(sender, e.Node); } /// <summary> @@ -259,7 +259,7 @@ /// <param name="parent"></param> /// <param name="index"></param> /// <param name="position"></param> - public void UndoMoveNode(CoreNode node, CoreNode parent, int index, int position) + public void UndoMoveSectionNode(CoreNode node, CoreNode parent, int index, int position) { if (node.getParent() != null) node.detach(); parent.insert(node, index); @@ -275,12 +275,12 @@ /// <param name="origin"></param> /// <param name="node"></param> //added by marisa 01 aug 06 - public void UndoIncreaseNodeLevel(CoreNode node, CoreNode parent, int index, int position) + public void UndoIncreaseSectionNodeLevel(CoreNode node, CoreNode parent, int index, int position) { - UndoMoveNode(node, parent, index, position); + UndoMoveSectionNode(node, parent, index, position); } - public void MoveNodeDown(object origin, CoreNode node) + public void MoveSectionNodeDown(object origin, CoreNode node) { Commands.TOC.MoveSectionNodeDown command = null; @@ -294,7 +294,7 @@ (this, node, parent, parent.indexOf(node), visitor.Position); } - bool succeeded = ExecuteMoveNodeDown(node); + bool succeeded = ExecuteMoveSectionNodeDown(node); if (succeeded) { CoreNode newParent = (CoreNode)node.getParent(); @@ -318,7 +318,7 @@ /// <param name="node"></param> /// <returns></returns> ///<remarks>a facade API function could do this for us</remarks> - private bool ExecuteMoveNodeDown(CoreNode node) + private bool ExecuteMoveSectionNodeDown(CoreNode node) { CoreNode newParent = null; int newIndex = 0; @@ -355,12 +355,12 @@ } } - public void MoveNodeDownRequested(object sender, Events.Node.NodeEventArgs e) + public void MoveSectionNodeDownRequested(object sender, Events.Node.NodeEventArgs e) { - MoveNodeDown(sender, e.Node); + MoveSectionNodeDown(sender, e.Node); } - public void IncreaseNodeLevel(object origin, CoreNode node) + public void IncreaseSectionNodeLevel(object origin, CoreNode node) { Commands.TOC.IncreaseSectionNodeLevel command = null; @@ -374,7 +374,7 @@ (this, node, parent, parent.indexOf(node), visitor.Position); } - bool succeeded = ExecuteIncreaseNodeLevel(node); + bool succeeded = ExecuteIncreaseSectionNodeLevel(node); if (succeeded) { CoreNode newParent = (CoreNode)node.getParent(); @@ -399,7 +399,7 @@ /// <param name="node"></param> /// <returns></returns> /// <remarks>a facade API function could do this for us</remarks> - private bool ExecuteIncreaseNodeLevel(CoreNode node) + private bool ExecuteIncreaseSectionNodeLevel(CoreNode node) { int nodeIndex = ((CoreNode)node.getParent()).indexOf(node); @@ -423,12 +423,12 @@ } } - public void IncreaseNodeLevelRequested(object sender, Events.Node.NodeEventArgs e) + public void IncreaseSectionNodeLevelRequested(object sender, Events.Node.NodeEventArgs e) { - IncreaseNodeLevel(sender, e.Node); + IncreaseSectionNodeLevel(sender, e.Node); } - public void DecreaseNodeLevel(object origin, CoreNode node) + public void DecreaseSectionNodeLevel(object origin, CoreNode node) { Commands.TOC.DecreaseSectionNodeLevel command = null; @@ -442,7 +442,7 @@ (this, node, parent, parent.indexOf(node), visitor.Position, node.getChildCount()); } - bool succeeded = ExecuteDecreaseNodeLevel(node); + bool succeeded = ExecuteDecreaseSectionNodeLevel(node); if (succeeded) { CoreNode newParent = (CoreNode)node.getParent(); @@ -450,7 +450,7 @@ Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); getPresentation().getRootNode().acceptDepthFirst(visitor); - DecreasedNodeLevel(this, new Events.Node.NodeEventArgs(origin, node)); + DecreasedSectionNodeLevel(this, new Events.Node.NodeEventArgs(origin, node)); mUnsaved = true; StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); @@ -464,7 +464,7 @@ /// <param name="node"></param> /// <returns></returns> ///<remarks>a facade API function could do this for us</remarks> - private bool ExecuteDecreaseNodeLevel(CoreNode node) + private bool ExecuteDecreaseSectionNodeLevel(CoreNode node) { //the only reason we can't decrease the level is if the node is already //at the outermost level @@ -503,9 +503,9 @@ } - public void DecreaseNodeLevelRequested(object sender, Events.Node.NodeEventArgs e) + public void DecreaseSectionNodeLevelRequested(object sender, Events.Node.NodeEventArgs e) { - DecreaseNodeLevel(sender, e.Node); + DecreaseSectionNodeLevel(sender, e.Node); } /// <summary> @@ -518,7 +518,7 @@ /// <param name="position"></param> /// <param name="childCount">number of children this node used to have before the decrease level action happened</param> //added by marisa - public void UndoDecreaseSectionLevel(CoreNode node, CoreNode parent, int index, int position, int originalChildCount) + public void UndoDecreaseSectionNodeLevel(CoreNode node, CoreNode parent, int index, int position, int originalChildCount) { //error-checking if (node.getChildCount() < originalChildCount) @@ -573,7 +573,7 @@ /// <summary> /// Change the text label of a node. /// </summary> - public void RenameNode(object origin, CoreNode node, string label) + public void RenameSectionNode(object origin, CoreNode node, string label) { TextMedia text = GetTextMedia(node); Commands.TOC.Rename command = origin == this ? null : new Commands.TOC.Rename(this, node, text.getText(), label); @@ -584,19 +584,19 @@ if (command != null) CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); } - public void RenameNodeRequested(object sender, Events.Node.RenameNodeEventArgs e) + public void RenameSectionNodeRequested(object sender, Events.Node.RenameNodeEventArgs e) { - RenameNode(sender, e.Node, e.Label); + RenameSectionNode(sender, e.Node, e.Label); } //md 20060810 - public void CutTOCNodeRequested(object sender, Events.Node.NodeEventArgs e) + public void CutSectionNodeRequested(object sender, Events.Node.NodeEventArgs e) { - DoCutTOCNode(sender, e.Node); + DoCutSectionNode(sender, e.Node); } //md 20060810 - public void DoCutTOCNode(object origin, CoreNode node) + public void DoCutSectionNode(object origin, CoreNode node) { if (node == null) return; @@ -615,7 +615,7 @@ mClipboard = node; node.detach(); - CutTOCNode(this, new Events.Node.NodeEventArgs(origin, node)); + CutSectionNode(this, new Events.Node.NodeEventArgs(origin, node)); mUnsaved = true; StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); @@ -623,24 +623,24 @@ } //md 20060810 - public void UndoCutNode(CoreNode node, CoreNode parent, int index, int position) + public void UndoCutSectionNode(CoreNode node, CoreNode parent, int index, int position) { if (node.getParent() != null) node.detach(); parent.insert(node, index); - UndidCutTOCNode(this, new Events.Node.MovedNodeEventArgs(this, node, parent, index, position)); + UndidCutSectionNode(this, new Events.Node.MovedNodeEventArgs(this, node, parent, index, position)); mUnsaved = true; StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); } //md 20060810 - public void CopyTOCNodeRequested(object sender, Events.Node.NodeEventArgs e) + public void CopySectionNodeRequested(object sender, Events.Node.NodeEventArgs e) { - CopyTOCNode(sender, e.Node); + CopySectionNode(sender, e.Node); } //md 20060810 - public void CopyTOCNode(object origin, CoreNode node) + public void CopySectionNode(object origin, CoreNode node) { if (node == null) return; @@ -654,7 +654,7 @@ //the actual copy operation mClipboard = node.copy(true); - CopiedTOCNode(this, new Events.Node.NodeEventArgs(origin, node)); + CopiedSectionNode(this, new Events.Node.NodeEventArgs(origin, node)); mUnsaved = true; StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); @@ -662,25 +662,25 @@ } //md 20060810 - public void UndoCopyTOCNode(CoreNode node) + public void UndoCopySectionNode(CoreNode node) { mClipboard = null; - UndidCopyTOCNode(this, new Events.Node.NodeEventArgs(this, node)); + UndidCopySectionNode(this, new Events.Node.NodeEventArgs(this, node)); mUnsaved = true; StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); } //md 20060810 - public void PasteTOCNodeRequested(object sender, Events.Node.NodeEventArgs e) + public void PasteSectionNodeRequested(object sender, Events.Node.NodeEventArgs e) { - PasteTOCNode(sender, e.Node); + PasteSectionNode(sender, e.Node); } //md 20060810 //"paste" will paste the clipboard contents as the first child of the given node - public void PasteTOCNode(object origin, CoreNode parent) + public void PasteSectionNode(object origin, CoreNode parent) { if (parent == null) return; @@ -701,7 +701,7 @@ Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(pastedSection); getPresentation().getRootNode().acceptDepthFirst(visitor); - PastedTOCNode(this, new Events.Node.AddedSectionNodeEventArgs + PastedSectionNode(this, new Events.Node.AddedSectionNodeEventArgs (origin, pastedSection, parent.indexOf(pastedSection), visitor.Position)); mUnsaved = true; @@ -710,13 +710,13 @@ } //md 20060810 - public void UndoPasteTOCNode(CoreNode node) + public void UndoPasteSectionNode(CoreNode node) { mClipboard = node.copy(true); node.detach(); - UndidPasteTOCNode(this, new Events.Node.NodeEventArgs(this, mClipboard)); + UndidPasteSectionNode(this, new Events.Node.NodeEventArgs(this, mClipboard)); mUnsaved = true; StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); Modified: trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs 2006-08-11 16:04:03 UTC (rev 846) +++ trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -28,36 +28,36 @@ // Reset the handlers from the previous project if (mProject != null) { - mTOCPanel.RequestToAddSiblingSection -= new Events.Node.RequestToAddSiblingNodeHandler(mProject.CreateSiblingSectionRequested); + mTOCPanel.RequestToAddSiblingSection -= new Events.Node.RequestToAddSiblingNodeHandler(mProject.CreateSiblingSectionNodeRequested); mStripManagerPanel.AddSiblingSection -= - new Events.Node.RequestToAddSiblingNodeHandler(mProject.CreateSiblingSectionRequested); + new Events.Node.RequestToAddSiblingNodeHandler(mProject.CreateSiblingSectionNodeRequested); mProject.AddedSectionNode -= new Events.Node.AddedSectionNodeHandler(mTOCPanel.SyncAddedSectionNode); mProject.AddedSectionNode -= new Events.Node.AddedSectionNodeHandler(mStripManagerPanel.SyncAddedSectionNode); - mTOCPanel.RequestToAddChildSection -= new Events.Node.RequestToAddChildSectionNodeHandler(mProject.CreateChildSectionRequested); + mTOCPanel.RequestToAddChildSectionNode -= new Events.Node.RequestToAddChildSectionNodeHandler(mProject.CreateChildSectionNodeRequested); //these are all events related to moving nodes up and down - mTOCPanel.RequestToMoveSectionUp -= new Events.Node.RequestToMoveSectionNodeUpHandler(mProject.MoveNodeUpRequested); - mTOCPanel.RequestToMoveSectionDown -= new Events.Node.RequestToMoveSectionNodeDownHandler(mProject.MoveNodeDownRequested); - mProject.MovedNode -= new Events.Node.MovedNodeHandler(mTOCPanel.SyncMovedNode); + mTOCPanel.RequestToMoveSectionNodeUp -= new Events.Node.RequestToMoveSectionNodeUpHandler(mProject.MoveSectionNodeUpRequested); + mTOCPanel.RequestToMoveSectionNodeDown -= new Events.Node.RequestToMoveSectionNodeDownHandler(mProject.MoveSectionNodeDownRequested); + mProject.MovedNode -= new Events.Node.MovedNodeHandler(mTOCPanel.SyncMovedSectionNode); mProject.MovedNode -= new Events.Node.MovedNodeHandler(mStripManagerPanel.SyncMovedNode); - mProject.UndidMoveNode -= new Events.Node.MovedNodeHandler(mTOCPanel.SyncMovedNode); + mProject.UndidMoveNode -= new Events.Node.MovedNodeHandler(mTOCPanel.SyncMovedSectionNode); mProject.UndidMoveNode -= new Events.Node.MovedNodeHandler(mStripManagerPanel.SyncMovedNode); - mTOCPanel.RequestToIncreaseSectionLevel -= new Events.Node.RequestToIncreaseSectionNodeLevelHandler(mProject.IncreaseNodeLevelRequested); + mTOCPanel.RequestToIncreaseSectionNodeLevel -= new Events.Node.RequestToIncreaseSectionNodeLevelHandler(mProject.IncreaseSectionNodeLevelRequested); //marisa: the former "mProject.IncreasedSectionLevel" event is now handled by MovedNode - mTOCPanel.RequestToDecreaseSectionLevel -= new Events.Node.RequestToDecreaseSectionNodeLevelHandler(mProject.DecreaseNodeLevelRequested); - mProject.DecreasedNodeLevel -= new Events.Node.DecreasedSectionNodeLevelHandler(mTOCPanel.SyncDecreasedNodeLevel); + mTOCPanel.RequestToDecreaseSectionNodeLevel -= new Events.Node.RequestToDecreaseSectionNodeLevelHandler(mProject.DecreaseSectionNodeLevelRequested); + mProject.DecreasedSectionNodeLevel -= new Events.Node.DecreasedSectionNodeLevelHandler(mTOCPanel.SyncDecreasedSectionNodeLevel); - mTOCPanel.RequestToRenameSection -= new Events.Node.RequestToRenameNodeHandler(mProject.RenameNodeRequested); - mStripManagerPanel.RenameSection -= new Events.Node.RequestToRenameNodeHandler(mProject.RenameNodeRequested); - mProject.RenamedNode -= new Events.Node.RenamedNodeHandler(mTOCPanel.SyncRenamedNode); + mTOCPanel.RequestToRenameSectionNode -= new Events.Node.RequestToRenameNodeHandler(mProject.RenameSectionNodeRequested); + mStripManagerPanel.RenameSection -= new Events.Node.RequestToRenameNodeHandler(mProject.RenameSectionNodeRequested); + mProject.RenamedNode -= new Events.Node.RenamedNodeHandler(mTOCPanel.SyncRenamedSectionNode); mProject.RenamedNode -= new Events.Node.RenamedNodeHandler(mStripManagerPanel.SyncRenamedNode); - mTOCPanel.RequestToDeleteSection -= new Events.Node.RequestToDeleteNodeHandler(mProject.RemoveNodeRequested); - mProject.DeletedNode -= new Events.Node.DeletedNodeHandler(mTOCPanel.SyncDeletedNode); + mTOCPanel.RequestToDeleteSectionNode -= new Events.Node.RequestToDeleteNodeHandler(mProject.RemoveNodeRequested); + mProject.DeletedNode -= new Events.Node.DeletedNodeHandler(mTOCPanel.SyncDeletedSectionNode); mProject.DeletedNode -= new Events.Node.DeletedNodeHandler(mStripManagerPanel.SyncDeletedNode); mStripManagerPanel.ImportAudioAssetRequested -= new Events.Strip.RequestToImportAssetHandler(mProject.ImportAssetRequested); @@ -76,52 +76,52 @@ mProject.DeletedPhraseNode -= new Events.Node.DeletedNodeHandler(mStripManagerPanel.SyncDeleteAudioBlock); //md: toc clipboard features - mTOCPanel.RequestToCutNode -= new Events.Node.RequestToCutSectionNodeHandler(mProject.CutTOCNodeRequested); - mProject.CutTOCNode -= new Events.Node.CutSectionNodeHandler(mTOCPanel.SyncCutNode); - mProject.UndidCutTOCNode -= new Events.Node.MovedNodeHandler(mTOCPanel.SyncUndidCutNode); + mTOCPanel.RequestToCutSectionNode -= new Events.Node.RequestToCutSectionNodeHandler(mProject.CutSectionNodeRequested); + mProject.CutSectionNode -= new Events.Node.CutSectionNodeHandler(mTOCPanel.SyncCutSectionNode); + mProject.UndidCutSectionNode -= new Events.Node.MovedNodeHandler(mTOCPanel.SyncUndidCutSectionNode); - mTOCPanel.RequestToCopyNode -= new Events.Node.RequestToCopySectionNodeHandler(mProject.CopyTOCNodeRequested); - mProject.CopiedTOCNode -= new Events.Node.CopiedSectionNodeHandler(mTOCPanel.SyncCopiedNode); - mProject.UndidCopyTOCNode -= new Events.Node.CopiedSectionNodeHandler(mTOCPanel.SyncUndidCopyNode); + mTOCPanel.RequestToCopySectionNode -= new Events.Node.RequestToCopySectionNodeHandler(mProject.CopySectionNodeRequested); + mProject.CopiedSectionNode -= new Events.Node.CopiedSectionNodeHandler(mTOCPanel.SyncCopiedSectionNode); + mProject.UndidCopySectionNode -= new Events.Node.CopiedSectionNodeHandler(mTOCPanel.SyncUndidCopySectionNode); - mTOCPanel.RequestToPasteNode -= new Events.Node.RequestToPasteSectionNodeHandler(mProject.PasteTOCNodeRequested); - mProject.PastedTOCNode -= new Events.Node.PastedSectionNodeHandler(mTOCPanel.SyncPastedNode); - mProject.UndidPasteTOCNode -= new Events.Node.UndidPasteSectionNodeHandler(mTOCPanel.SyncUndidPasteNode); + mTOCPanel.RequestToPasteSectionNode -= new Events.Node.RequestToPasteSectionNodeHandler(mProject.PasteSectionNodeRequested); + mProject.PastedSectionNode -= new Events.Node.PastedSectionNodeHandler(mTOCPanel.SyncPastedSectionNode); + mProject.UndidPasteSectionNode -= new Events.Node.UndidPasteSectionNodeHandler(mTOCPanel.SyncUndidPasteSectionNode); } // Set up the handlers for the new project if (value != null) { - mTOCPanel.RequestToAddSiblingSection += new Events.Node.RequestToAddSiblingNodeHandler(value.CreateSiblingSectionRequested); + mTOCPanel.RequestToAddSiblingSection += new Events.Node.RequestToAddSiblingNodeHandler(value.CreateSiblingSectionNodeRequested); mStripManagerPanel.AddSiblingSection += - new Events.Node.RequestToAddSiblingNodeHandler(value.CreateSiblingSectionRequested); + new Events.Node.RequestToAddSiblingNodeHandler(value.CreateSiblingSectionNodeRequested); value.AddedSectionNode += new Events.Node.AddedSectionNodeHandler(mTOCPanel.SyncAddedSectionNode); value.AddedSectionNode += new Events.Node.AddedSectionNodeHandler(mStripManagerPanel.SyncAddedSectionNode); - mTOCPanel.RequestToAddChildSection += new Events.Node.RequestToAddChildSectionNodeHandler(value.CreateChildSectionRequested); + mTOCPanel.RequestToAddChildSectionNode += new Events.Node.RequestToAddChildSectionNodeHandler(value.CreateChildSectionNodeRequested); //these all relate to moving nodes up and down - mTOCPanel.RequestToMoveSectionUp += new Events.Node.RequestToMoveSectionNodeUpHandler(value.MoveNodeUpRequested); - mTOCPanel.RequestToMoveSectionDown += new Events.Node.RequestToMoveSectionNodeDownHandler(value.MoveNodeDownRequested); - value.MovedNode += new Events.Node.MovedNodeHandler(mTOCPanel.SyncMovedNode); + mTOCPanel.RequestToMoveSectionNodeUp += new Events.Node.RequestToMoveSectionNodeUpHandler(value.MoveSectionNodeUpRequested); + mTOCPanel.RequestToMoveSectionNodeDown += new Events.Node.RequestToMoveSectionNodeDownHandler(value.MoveSectionNodeDownRequested); + value.MovedNode += new Events.Node.MovedNodeHandler(mTOCPanel.SyncMovedSectionNode); value.MovedNode += new Events.Node.MovedNodeHandler(mStripManagerPanel.SyncMovedNode); - value.UndidMoveNode += new Events.Node.MovedNodeHandler(mTOCPanel.SyncMovedNode); + value.UndidMoveNode += new Events.Node.MovedNodeHandler(mTOCPanel.SyncMovedSectionNode); value.UndidMoveNode += new Events.Node.MovedNodeHandler(mStripManagerPanel.SyncMovedNode); - mTOCPanel.RequestToIncreaseSectionLevel += - new Events.Node.RequestToIncreaseSectionNodeLevelHandler(value.IncreaseNodeLevelRequested); + mTOCPanel.RequestToIncreaseSectionNodeLevel += + new Events.Node.RequestToIncreaseSectionNodeLevelHandler(value.IncreaseSectionNodeLevelRequested); //marisa: the former "mProject.IncreasedSectionLevel" event is now handled by MovedNode - mTOCPanel.RequestToDecreaseSectionLevel += - new Events.Node.RequestToDecreaseSectionNodeLevelHandler(value.DecreaseNodeLevelRequested); - value.DecreasedNodeLevel += new Events.Node.DecreasedSectionNodeLevelHandler(mTOCPanel.SyncDecreasedNodeLevel); + mTOCPanel.RequestToDecreaseSectionNodeLevel += + new Events.Node.RequestToDecreaseSectionNodeLevelHandler(value.DecreaseSectionNodeLevelRequested); + value.DecreasedSectionNodeLevel += new Events.Node.DecreasedSectionNodeLevelHandler(mTOCPanel.SyncDecreasedSectionNodeLevel); - mTOCPanel.RequestToRenameSection += new Events.Node.RequestToRenameNodeHandler(value.RenameNodeRequested); - mStripManagerPanel.RenameSection += new Events.Node.RequestToRenameNodeHandler(value.RenameNodeRequested); - value.RenamedNode += new Events.Node.RenamedNodeHandler(mTOCPanel.SyncRenamedNode); + mTOCPanel.RequestToRenameSectionNode += new Events.Node.RequestToRenameNodeHandler(value.RenameSectionNodeRequested); + mStripManagerPanel.RenameSection += new Events.Node.RequestToRenameNodeHandler(value.RenameSectionNodeRequested); + value.RenamedNode += new Events.Node.RenamedNodeHandler(mTOCPanel.SyncRenamedSectionNode); value.RenamedNode += new Events.Node.RenamedNodeHandler(mStripManagerPanel.SyncRenamedNode); - mTOCPanel.RequestToDeleteSection += new Events.Node.RequestToDeleteNodeHandler(value.RemoveNodeRequested); - value.DeletedNode += new Events.Node.DeletedNodeHandler(mTOCPanel.SyncDeletedNode); + mTOCPanel.RequestToDeleteSectionNode += new Events.Node.RequestToDeleteNodeHandler(value.RemoveNodeRequested); + value.DeletedNode += new Events.Node.DeletedNodeHandler(mTOCPanel.SyncDeletedSectionNode); value.DeletedNode += new Events.Node.DeletedNodeHandler(mStripManagerPanel.SyncDeletedNode); // Block events @@ -152,17 +152,17 @@ //md: clipboard in the TOC - mTOCPanel.RequestToCutNode += new Events.Node.RequestToCutSectionNodeHandler(value.CutTOCNodeRequested); - value.CutTOCNode += new Events.Node.CutSectionNodeHandler(mTOCPanel.SyncCutNode); - value.UndidCutTOCNode += new Events.Node.MovedNodeHandler(mTOCPanel.SyncUndidCutNode); + mTOCPanel.RequestToCutSectionNode += new Events.Node.RequestToCutSectionNodeHandler(value.CutSectionNodeRequested); + value.CutSectionNode += new Events.Node.CutSectionNodeHandler(mTOCPanel.SyncCutSectionNode); + value.UndidCutSectionNode += new Events.Node.MovedNodeHandler(mTOCPanel.SyncUndidCutSectionNode); - mTOCPanel.RequestToCopyNode += new Events.Node.RequestToCopySectionNodeHandler(value.CopyTOCNodeRequested); - value.CopiedTOCNode += new Events.Node.CopiedSectionNodeHandler(mTOCPanel.SyncCopiedNode); - value.UndidCopyTOCNode += new Events.Node.CopiedSectionNodeHandler(mTOCPanel.SyncUndidCopyNode); + mTOCPanel.RequestToCopySectionNode += new Events.Node.RequestToCopySectionNodeHandler(value.CopySectionNodeRequested); + value.CopiedSectionNode += new Events.Node.CopiedSectionNodeHandler(mTOCPanel.SyncCopiedSectionNode); + value.UndidCopySectionNode += new Events.Node.CopiedSectionNodeHandler(mTOCPanel.SyncUndidCopySectionNode); - mTOCPanel.RequestToPasteNode += new Events.Node.RequestToPasteSectionNodeHandler(value.PasteTOCNodeRequested); - value.PastedTOCNode += new Events.Node.PastedSectionNodeHandler(mTOCPanel.SyncPastedNode); - value.UndidPasteTOCNode += new Events.Node.UndidPasteSectionNodeHandler(mTOCPanel.SyncUndidPasteNode); + mTOCPanel.RequestToPasteSectionNode += new Events.Node.RequestToPasteSectionNodeHandler(value.PasteSectionNodeRequested); + value.PastedSectionNode += new Events.Node.PastedSectionNodeHandler(mTOCPanel.SyncPastedSectionNode); + value.UndidPasteSectionNode += new Events.Node.UndidPasteSectionNodeHandler(mTOCPanel.SyncUndidPasteSectionNode); } mProject = value; Added: trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.ContextMenu.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.ContextMenu.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.ContextMenu.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -0,0 +1,136 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Text; +using System.Windows.Forms; +using urakawa.media; +using System.Collections; + + +namespace Obi.UserControls +{ + public partial class TOCPanel + { + public event Events.Node.RequestToAddSiblingNodeHandler RequestToAddSiblingSection; + public event Events.Node.RequestToAddChildSectionNodeHandler RequestToAddChildSectionNode; + public event Events.Node.RequestToDecreaseSectionNodeLevelHandler RequestToDecreaseSectionNodeLevel; + public event Events.Node.RequestToIncreaseSectionNodeLevelHandler RequestToIncreaseSectionNodeLevel; + public event Events.Node.RequestToMoveSectionNodeDownHandler RequestToMoveSectionNodeDown; + public event Events.Node.RequestToMoveSectionNodeUpHandler RequestToMoveSectionNodeUp; + public event Events.Node.RequestToRenameNodeHandler RequestToRenameSectionNode; + public event Events.Node.RequestToDeleteNodeHandler RequestToDeleteSectionNode; + + //md: clipboard events + public event Events.Node.RequestToCutSectionNodeHandler RequestToCutSectionNode; + public event Events.Node.RequestToCopySectionNodeHandler RequestToCopySectionNode; + public event Events.Node.RequestToPasteSectionNodeHandler RequestToPasteSectionNode; + + /* + * *************************************** + * These functions "...ToolStripMenuItem_Click" are triggered + * by the TOC panel's context menu + */ + + // These are internal so that the main menu can also link to them once the project is open. + + /// <summary> + /// Triggered by the "add sibling section" menu item. + /// </summary> + internal void mAddSectionToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToAddSiblingSection(this, + new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + /// <summary> + /// Triggered by the "add sub-section" menu item. + /// </summary> + internal void mAddSubSectionToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToAddChildSectionNode(this, + new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + /// <summary> + /// Triggered by the "move section up" menu item. + /// </summary> + internal void mMoveUpToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToMoveSectionNodeUp(this, + new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + /// <summary> + /// Triggered by the "delete section" menu item. + /// </summary> + internal void mDeleteSectionToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToDeleteSectionNode(this, new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + internal void mRenameToolStripMenuItem_Click(object sender, EventArgs e) + { + TreeNode sel = this.mTocTree.SelectedNode; + sel.BeginEdit(); + } + + internal void mMoveDownToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToMoveSectionNodeDown(this, + new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + internal void increaseLevelToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToIncreaseSectionNodeLevel(this, + new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + internal void decreaseLevelToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToDecreaseSectionNodeLevel(this, + new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + private void tESTShallowDeleteToolStripMenuItem_Click_1(object sender, EventArgs e) + { + SyncShallowDeletedSectionNode(this, + new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + + /// <summary> + /// If a node is selected, set focus on that node in the Strip view. + /// </summary> + // mg20060804 + internal void mShowInStripViewToolStripMenuItem_Click(object sender, EventArgs e) + { + //mg 20060804 + if (GetSelectedSection() != null) + { + ProjectPanel.StripManager.SelectedSectionNode = GetSelectedSection(); + if (ProjectPanel.StripManager.SelectedSectionNode != null) + ProjectPanel.StripManager.SelectedSectionStrip.Focus(); + } + } + + //md 20060810 + internal void cutSectionToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToCutSectionNode(this, new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + //md 20060810 + internal void copySectionToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToCopySectionNode(this, new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + internal void mPasteSectionToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToPasteSectionNode(this, new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + } +} Added: trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.SyncCallbacks.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.SyncCallbacks.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.SyncCallbacks.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -0,0 +1,309 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Text; +using System.Windows.Forms; +using urakawa.media; +using System.Collections; + + +namespace Obi.UserControls +{ + public partial class TOCPanel + { + /// <summary> + /// Change the label of the tree view node. + /// This is in response to external renames (i.e. those not originating from within the tree view itself) + /// </summary> + /// <param name="sender">The sender of this event notification</param> + /// <param name="e"><see cref="e.Node"/> is the tree node being renamed.</param> + internal void SyncRenamedSectionNode(object sender, Events.Node.RenameNodeEventArgs e) + { + if (e.Origin != this) + { + TreeNode treeNode = FindTreeNodeWithoutLabel(e.Node); + treeNode.Text = e.Label; + } + } + + + /// <summary> + /// Add a section to the tree view. If we were the ones to request its addition, + /// also start editing its label right now. + /// + /// The new heading has already been created as a <see cref="CoreNode"/>. + /// It is in its correct place in the core tree. + /// Now we need to add it as a <see cref="TreeNode"/> so + /// it shows up in the tree view. Internally, the new <see cref="TreeNode"/> + /// is given the key of its <see cref="CoreNode"/> object's hash code. + /// This makes it faster to find a <see cref="TreeNode"/> + /// based on a given <see cref="CoreNode"/>. + /// </summary> + /// <param name="sender">The sender of this event notification</param> + /// <param name="e"><see cref="e.Node"/> is the new heading to add to the tree</param> + + internal void SyncAddedSectionNode(object sender, Events.Node.AddedSectionNodeEventArgs e) + { + TreeNode newTreeNode; + string label = Project.GetTextMedia(e.Node).getText(); + if (e.Node.getParent().getParent() != null) + { + TreeNode relTreeNode = FindTreeNodeFromCoreNode((urakawa.core.CoreNode)e.Node.getParent()); + newTreeNode = relTreeNode.Nodes.Insert(e.Index, e.Node.GetHashCode().ToString(), label); + } + else + { + newTreeNode = mTocTree.Nodes.Insert(e.Index, e.Node.GetHashCode().ToString(), label); + } + newTreeNode.Tag = e.Node; + newTreeNode.ExpandAll(); + newTreeNode.EnsureVisible(); + mTocTree.SelectedNode = newTreeNode; + //start editing if the request to add a node happened in the tree view + if (e.Origin.Equals(this)) + { + newTreeNode.BeginEdit(); + } + } + + + + /// <summary> + /// Remove a node from the tree view. + /// This will remove the whole subtree. + /// </summary> + /// <param name="sender">The sender of this event notification</param> + /// <param name="e"><see cref="e.Node"/> is the node to be removed.</param> + internal void SyncDeletedSectionNode(object sender, Events.Node.NodeEventArgs e) + { + if (e.Node != null) + { + TreeNode treeNode = FindTreeNodeFromCoreNode(e.Node); + treeNode.Remove(); + } + } + + /// <summary> + /// This function deletes a node and promotes its children to be one level shallower + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + internal void SyncShallowDeletedSectionNode(object sender, Events.Node.NodeEventArgs e) + { + System.Windows.Forms.TreeNode selected = FindTreeNodeFromCoreNode(e.Node); + TreeNode newSelection = null; + + //save the first child as our new selection (for the end of this function) + if (selected.Nodes.Count > 0) + { + newSelection = selected.Nodes[0]; + } + + foreach (TreeNode childnode in selected.Nodes) + { + ExecuteDecreaseNodeLevel(childnode); + } + + selected.Remove(); + + //make the currently selected node something reasonable + if (newSelection != null) + { + mTocTree.SelectedNode = newSelection; + } + + } + + internal void SyncMovedSectionNode(object sender, Events.Node.MovedNodeEventArgs e) + { + TreeNode selected = FindTreeNodeFromCoreNode(e.Node); + + TreeNode parent = Project.GetNodeType(e.Parent) == NodeType.Section ? FindTreeNodeFromCoreNode(e.Parent) : null; + + if (selected == null) return; + + TreeNode clone = (TreeNode)selected.Clone(); + + selected.Remove(); + + TreeNodeCollection siblings = null; + if (parent == null) + { + siblings = mTocTree.Nodes; + } + else + { + siblings = parent.Nodes; + } + + siblings.Insert(e.Index, clone); + clone.ExpandAll(); + clone.EnsureVisible(); + mTocTree.SelectedNode = clone; + } + + /// <summary> + /// Decrease the node level. + /// When a node becomes shallower, it adopts its former younger siblings. + /// We'll have to get feedback on how users like this behavior. + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + internal void SyncDecreasedSectionNodeLevel(object sender, Events.Node.NodeEventArgs e) + { + TreeNode selected = FindTreeNodeFromCoreNode(e.Node); + ExecuteDecreaseNodeLevel(selected); + } + + //this logic was separated from the SyncXXX function because + //we need to use it separately during a shallow delete + internal void ExecuteDecreaseNodeLevel(TreeNode selectedNode) + { + //the only reason we can't decrease the level is if the node is already + //at the outermost level + if (selectedNode.Parent == null) + { + return; + } + + ArrayList futureChildren = new ArrayList(); + + int idx = 0; + //make copies of our future children, and remove them from the tree + foreach (TreeNode node in selectedNode.Parent.Nodes) + { + if (node.Index > selectedNode.Index) + { + futureChildren.Add(node.Clone()); + node.Remove(); + idx++; + } + } + + TreeNodeCollection siblingCollection = null; + + //move it out a level + if (selectedNode.Parent.Parent != null) + { + siblingCollection = selectedNode.Parent.Parent.Nodes; + } + else + { + siblingCollection = mTocTree.Nodes; + } + + int newIndex = selectedNode.Parent.Index + 1; + + TreeNode clone = (TreeNode)selectedNode.Clone(); + selectedNode.Remove(); + + siblingCollection.Insert(newIndex, clone); + + foreach (object node in futureChildren) + { + clone.Nodes.Add((TreeNode)node); + } + + clone.ExpandAll(); + clone.EnsureVisible(); + mTocTree.SelectedNode = clone; + } + + //md 20060810 + internal void SyncCutSectionNode(object sender, Events.Node.NodeEventArgs e) + { + TreeNode selected = FindTreeNodeFromCoreNode(e.Node); + if (selected != null) + { + mClipboard = (TreeNode)selected.Clone(); + selected.Remove(); + } + } + + //md 20060810 + internal void SyncUndidCutSectionNode(object sender, Events.Node.MovedNodeEventArgs e) + { + if (mClipboard == null) return; + + TreeNode parent = Project.GetNodeType(e.Parent) == NodeType.Section ? FindTreeNodeFromCoreNode(e.Parent) : null; + + TreeNodeCollection siblings = null; + if (parent == null) + { + siblings = mTocTree.Nodes; + } + else + { + siblings = parent.Nodes; + } + + TreeNode uncutNode = mClipboard; + + siblings.Insert(e.Index, uncutNode); + uncutNode.ExpandAll(); + uncutNode.EnsureVisible(); + mTocTree.SelectedNode = uncutNode; + + mClipboard = null; + } + + //md 20060810 + internal void SyncCopiedSectionNode(object sender, Events.Node.NodeEventArgs e) + { + TreeNode selected = FindTreeNodeFromCoreNode(e.Node); + + if (selected != null) + { + mClipboard = (TreeNode)selected.Clone(); + } + } + + //md 20060810 + internal void SyncUndidCopySectionNode(object sender, Events.Node.NodeEventArgs e) + { + mClipboard = null; + } + + //md 20060810 + //e.Node is what was just pasted in + internal void SyncPastedSectionNode(object sender, Events.Node.AddedSectionNodeEventArgs e) + { + if (mClipboard == null) return; + + urakawa.core.CoreNode nodeParent = (urakawa.core.CoreNode)e.Node.getParent(); + + TreeNode parent = Project.GetNodeType(nodeParent) == NodeType.Section ? FindTreeNodeFromCoreNode(nodeParent) : null; + string label = Project.GetTextMedia(e.Node).getText(); + + TreeNodeCollection siblings = null; + if (parent == null) + { + siblings = mTocTree.Nodes; + } + else + { + siblings = parent.Nodes; + } + + siblings.Insert(e.Index, mClipboard); + + //don't clear the clipboard, we can use it again + } + + internal void SyncUndidPasteSectionNode(object sender, Events.Node.NodeEventArgs e) + { + TreeNode pastedNode = FindTreeNodeFromCoreNode(e.Node); + + if (pastedNode != null) + { + //put it back on the clipboard + mClipboard = (TreeNode)pastedNode.Clone(); + pastedNode.Remove(); + } + + } + + } +} Modified: trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs 2006-08-11 16:04:03 UTC (rev 846) +++ trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -21,21 +21,9 @@ private ProjectPanel mProjectPanel; //the parent of this control private TreeNode mClipboard; //md: the clipboard itself - public event Events.Node.RequestToAddSiblingNodeHandler RequestToAddSiblingSection; - public event Events.Node.RequestToAddChildSectionNodeHandler RequestToAddChildSection; - public event Events.Node.RequestToDecreaseSectionNodeLevelHandler RequestToDecreaseSectionLevel; - public event Events.Node.RequestToIncreaseSectionNodeLevelHandler RequestToIncreaseSectionLevel; - public event Events.Node.RequestToMoveSectionNodeDownHandler RequestToMoveSectionDown; - public event Events.Node.RequestToMoveSectionNodeUpHandler RequestToMoveSectionUp; - public event Events.Node.RequestToRenameNodeHandler RequestToRenameSection; - public event Events.Node.RequestToDeleteNodeHandler RequestToDeleteSection; - public event Events.Node.SelectedHandler SelectedTreeNode; // raised when selection changes (JQ) + public event Events.Node.SelectedHandler SelectedTreeNode; // raised when selection changes (JQ) - //md: clipboard events - public event Events.Node.RequestToCutSectionNodeHandler RequestToCutNode; - public event Events.Node.RequestToCopySectionNodeHandler RequestToCopyNode; - public event Events.Node.RequestToPasteSectionNodeHandler RequestToPasteNode; - + #region properties /// <summary> /// Test whether a node is currently selected or not. @@ -179,117 +167,8 @@ } } - #region context menu handlers - /* - * *************************************** - * These functions "...ToolStripMenuItem_Click" are triggered - * by the TOC panel's context menu - */ + - // These are internal so that the main m... [truncated message content] |
From: <ju...@us...> - 2006-08-12 16:13:06
|
Revision: 856 Author: julienq Date: 2006-08-12 09:12:52 -0700 (Sat, 12 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=856&view=rev Log Message: ----------- Added some menu icons Added global cut/copy/paste/delete (does nothing yet) Added call to record dialog (but need to be completed) Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Dialogs/Record.Designer.cs trunk/urakawa/application/Obi/Obi/Dialogs/Record.cs trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs trunk/urakawa/application/Obi/Obi/ObiForm.cs trunk/urakawa/application/Obi/Obi/ObiForm.resx trunk/urakawa/application/Obi/Obi/Project.cs trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.ContextMenu.cs trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs Modified: trunk/urakawa/application/Obi/Obi/Dialogs/Record.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Dialogs/Record.Designer.cs 2006-08-12 15:20:53 UTC (rev 855) +++ trunk/urakawa/application/Obi/Obi/Dialogs/Record.Designer.cs 2006-08-12 16:12:52 UTC (rev 856) @@ -40,9 +40,9 @@ // // mRecordButton // - this.mRecordButton.Location = new System.Drawing.Point(24, 131); + this.mRecordButton.Location = new System.Drawing.Point(24, 121); this.mRecordButton.Name = "mRecordButton"; - this.mRecordButton.Size = new System.Drawing.Size(75, 25); + this.mRecordButton.Size = new System.Drawing.Size(75, 23); this.mRecordButton.TabIndex = 0; this.mRecordButton.Text = "&Record"; this.mRecordButton.UseVisualStyleBackColor = true; @@ -51,25 +51,26 @@ // mDisplayTimeLable // this.mDisplayTimeLable.AutoSize = true; - this.mDisplayTimeLable.Location = new System.Drawing.Point(145, 25); + this.mDisplayTimeLable.Location = new System.Drawing.Point(145, 23); this.mDisplayTimeLable.Name = "mDisplayTimeLable"; - this.mDisplayTimeLable.Size = new System.Drawing.Size(73, 13); + this.mDisplayTimeLable.Size = new System.Drawing.Size(75, 12); this.mDisplayTimeLable.TabIndex = 1; this.mDisplayTimeLable.Text = "Running &Time"; // // mTimeTextBox // - this.mTimeTextBox.Location = new System.Drawing.Point(132, 41); + this.mTimeTextBox.Location = new System.Drawing.Point(132, 38); this.mTimeTextBox.Name = "mTimeTextBox"; this.mTimeTextBox.ReadOnly = true; - this.mTimeTextBox.Size = new System.Drawing.Size(100, 20); + this.mTimeTextBox.Size = new System.Drawing.Size(100, 19); this.mTimeTextBox.TabIndex = 2; // // mStopButton // - this.mStopButton.Location = new System.Drawing.Point(123, 131); + this.mStopButton.DialogResult = System.Windows.Forms.DialogResult.OK; + this.mStopButton.Location = new System.Drawing.Point(123, 121); this.mStopButton.Name = "mStopButton"; - this.mStopButton.Size = new System.Drawing.Size(75, 23); + this.mStopButton.Size = new System.Drawing.Size(75, 21); this.mStopButton.TabIndex = 3; this.mStopButton.Text = "&Stop"; this.mStopButton.UseVisualStyleBackColor = true; @@ -77,9 +78,9 @@ // // mPhraseMarkerButton // - this.mPhraseMarkerButton.Location = new System.Drawing.Point(238, 132); + this.mPhraseMarkerButton.Location = new System.Drawing.Point(238, 122); this.mPhraseMarkerButton.Name = "mPhraseMarkerButton"; - this.mPhraseMarkerButton.Size = new System.Drawing.Size(88, 23); + this.mPhraseMarkerButton.Size = new System.Drawing.Size(88, 21); this.mPhraseMarkerButton.TabIndex = 4; this.mPhraseMarkerButton.Text = "Phrase &Marker"; this.mPhraseMarkerButton.UseVisualStyleBackColor = true; @@ -91,9 +92,10 @@ // // Record // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AcceptButton = this.mStopButton; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(367, 183); + this.ClientSize = new System.Drawing.Size(367, 169); this.Controls.Add(this.mPhraseMarkerButton); this.Controls.Add(this.mStopButton); this.Controls.Add(this.mTimeTextBox); Modified: trunk/urakawa/application/Obi/Obi/Dialogs/Record.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Dialogs/Record.cs 2006-08-12 15:20:53 UTC (rev 855) +++ trunk/urakawa/application/Obi/Obi/Dialogs/Record.cs 2006-08-12 16:12:52 UTC (rev 856) @@ -24,9 +24,6 @@ private int mBitDepth; // required bit depth private Assets.AssetManager mAssManager; // the asset manager (for creating new assets) private Audio.VuMeter ob_VuMeter = new Audio.VuMeter(); - private event Events.Audio.Recorder.StartingPhraseHandler StartPhrase; - private event Events.Audio.Recorder.ContinuingPhraseHandler ContinuePhrase; - private event Events.Audio.Recorder.FinishingPhraseHandler FinishPhrase; double BeginTime = 0; double CurrentTime ;//time while the phrase is recorded double EndTime;//the end time when finish phrase event is triggered @@ -34,9 +31,9 @@ private List<Assets.AudioMediaAsset> mAssets; // the list of assets created while recording - // public event Events.Audio.Recorder.StartingPhraseHandler StartingPhrase; - // public event Events.Audio.Recorder.ContinuingPhraseHandler ContinuingPhrase; - // public event Events.Audio.Recorder.FinishingPhraseHandler FinishingPhrase; + public event Events.Audio.Recorder.StartingPhraseHandler StartingPhrase; + public event Events.Audio.Recorder.ContinuingPhraseHandler ContinuingPhrase; + public event Events.Audio.Recorder.FinishingPhraseHandler FinishingPhrase; /// <summary> /// The list of assets created. @@ -60,9 +57,6 @@ Audio.AudioRecorder.Instance.StateChanged += new Events.Audio.Recorder.StateChangedHandler(AudioRecorder_StateChanged); Audio.AudioRecorder.Instance.UpdateVuMeterFromRecorder += new Events.Audio.Recorder.UpdateVuMeterHandler(AudioRecorder_UpdateVuMeter); - StartPhrase += new Obi.Events.Audio.Recorder.StartingPhraseHandler(Start_Phrase); - ContinuePhrase += new Obi.Events.Audio.Recorder.ContinuingPhraseHandler(Continue_Phrase); - FinishPhrase += new Events.Audio.Recorder.FinishingPhraseHandler(Finish_Phrase); } private void AudioRecorder_StateChanged(object sender, Events.Audio.Recorder.StateChangedEventArgs state) @@ -72,16 +66,6 @@ private void AudioRecorder_UpdateVuMeter(Object sender, Events.Audio.Recorder.UpdateVuMeterEventArgs update) { } - private void Finish_Phrase(object sender, Events.Audio.Recorder.PhraseEventArgs Finish) - { -} - private void Continue_Phrase(object sender, Events.Audio.Recorder.PhraseEventArgs contine) - { -} - - private void Start_Phrase(object sender, Events.Audio.Recorder.PhraseEventArgs start) - { - } private void Record_Load(object sender, EventArgs e) { @@ -176,17 +160,17 @@ Audio.AudioRecorder.Instance.StopRecording(); EndTime = CurrentTime; Obi.Events.Audio.Recorder.PhraseEventArgs mEnd = new Obi.Events.Audio.Recorder.PhraseEventArgs(1); - FinishPhrase(this, mEnd); + FinishingPhrase(this, mEnd); timer1.Enabled = false; } if (Audio.AudioRecorder.Instance.State.Equals(Audio.AudioRecorderState.Idle)) { Obi.Events.Audio.Recorder.PhraseEventArgs mStart = new Obi.Events.Audio.Recorder.PhraseEventArgs(BeginTime); - StartPhrase(this, mStart); + StartingPhrase(this, mStart); Audio.AudioRecorder.Instance.StartRecording(mPhraseMarkerAsset); CurrentTime = Audio.AudioRecorder.Instance.TimeOfAsset; Obi.Events.Audio.Recorder.PhraseEventArgs mContinue = new Obi.Events.Audio.Recorder.PhraseEventArgs(CurrentTime); - ContinuePhrase(this, mContinue); + ContinuingPhrase(this, mContinue); timer1.Enabled = true; mRecordButton.Enabled = false; } Modified: trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs 2006-08-12 15:20:53 UTC (rev 855) +++ trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs 2006-08-12 16:12:52 UTC (rev 856) @@ -28,6 +28,7 @@ /// </summary> private void InitializeComponent() { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ObiForm)); this.menuStrip1 = new System.Windows.Forms.MenuStrip(); this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mNewProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -45,6 +46,11 @@ this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mUndoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mRedoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); + this.mCutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mCopyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mPasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mDeleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); this.metadataToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.touchProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -70,6 +76,7 @@ this.mImportAudioFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mPlayAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mSplitAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mMergeWithNextAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mDeleteAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mRenameAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); @@ -90,7 +97,6 @@ this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); this.mProjectPanel = new Obi.UserControls.ProjectPanel(); - this.mMergeWithNextAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.menuStrip1.SuspendLayout(); this.statusStrip1.SuspendLayout(); this.SuspendLayout(); @@ -129,6 +135,8 @@ // // mNewProjectToolStripMenuItem // + this.mNewProjectToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("mNewProjectToolStripMenuItem.Image"))); + this.mNewProjectToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta; this.mNewProjectToolStripMenuItem.Name = "mNewProjectToolStripMenuItem"; this.mNewProjectToolStripMenuItem.Size = new System.Drawing.Size(171, 22); this.mNewProjectToolStripMenuItem.Text = "&New project"; @@ -136,6 +144,8 @@ // // mOpenProjectToolStripMenuItem // + this.mOpenProjectToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("mOpenProjectToolStripMenuItem.Image"))); + this.mOpenProjectToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta; this.mOpenProjectToolStripMenuItem.Name = "mOpenProjectToolStripMenuItem"; this.mOpenProjectToolStripMenuItem.Size = new System.Drawing.Size(171, 22); this.mOpenProjectToolStripMenuItem.Text = "&Open project"; @@ -169,6 +179,8 @@ // // mSaveProjectToolStripMenuItem // + this.mSaveProjectToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("mSaveProjectToolStripMenuItem.Image"))); + this.mSaveProjectToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta; this.mSaveProjectToolStripMenuItem.Name = "mSaveProjectToolStripMenuItem"; this.mSaveProjectToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S))); this.mSaveProjectToolStripMenuItem.Size = new System.Drawing.Size(171, 22); @@ -213,6 +225,11 @@ this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.mUndoToolStripMenuItem, this.mRedoToolStripMenuItem, + this.toolStripSeparator11, + this.mCutToolStripMenuItem, + this.mCopyToolStripMenuItem, + this.mPasteToolStripMenuItem, + this.mDeleteToolStripMenuItem, this.toolStripSeparator4, this.metadataToolStripMenuItem, this.touchProjectToolStripMenuItem}); @@ -224,7 +241,7 @@ // this.mUndoToolStripMenuItem.Name = "mUndoToolStripMenuItem"; this.mUndoToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z))); - this.mUndoToolStripMenuItem.Size = new System.Drawing.Size(140, 22); + this.mUndoToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.mUndoToolStripMenuItem.Text = "&Undo"; this.mUndoToolStripMenuItem.Click += new System.EventHandler(this.mUndoToolStripMenuItem_Click); // @@ -232,26 +249,65 @@ // this.mRedoToolStripMenuItem.Name = "mRedoToolStripMenuItem"; this.mRedoToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y))); - this.mRedoToolStripMenuItem.Size = new System.Drawing.Size(140, 22); + this.mRedoToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.mRedoToolStripMenuItem.Text = "&Redo"; this.mRedoToolStripMenuItem.Click += new System.EventHandler(this.mRedoToolStripMenuItem_Click); // + // toolStripSeparator11 + // + this.toolStripSeparator11.Name = "toolStripSeparator11"; + this.toolStripSeparator11.Size = new System.Drawing.Size(149, 6); + // + // mCutToolStripMenuItem + // + this.mCutToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("mCutToolStripMenuItem.Image"))); + this.mCutToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta; + this.mCutToolStripMenuItem.Name = "mCutToolStripMenuItem"; + this.mCutToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X))); + this.mCutToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.mCutToolStripMenuItem.Text = "&Cut"; + // + // mCopyToolStripMenuItem + // + this.mCopyToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("mCopyToolStripMenuItem.Image"))); + this.mCopyToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta; + this.mCopyToolStripMenuItem.Name = "mCopyToolStripMenuItem"; + this.mCopyToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C))); + this.mCopyToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.mCopyToolStripMenuItem.Text = "Cop&y"; + // + // mPasteToolStripMenuItem + // + this.mPasteToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("mPasteToolStripMenuItem.Image"))); + this.mPasteToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta; + this.mPasteToolStripMenuItem.Name = "mPasteToolStripMenuItem"; + this.mPasteToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V))); + this.mPasteToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.mPasteToolStripMenuItem.Text = "&Paste"; + // + // mDeleteToolStripMenuItem + // + this.mDeleteToolStripMenuItem.Name = "mDeleteToolStripMenuItem"; + this.mDeleteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Delete; + this.mDeleteToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.mDeleteToolStripMenuItem.Text = "&Delete"; + // // toolStripSeparator4 // this.toolStripSeparator4.Name = "toolStripSeparator4"; - this.toolStripSeparator4.Size = new System.Drawing.Size(137, 6); + this.toolStripSeparator4.Size = new System.Drawing.Size(149, 6); // // metadataToolStripMenuItem // this.metadataToolStripMenuItem.Name = "metadataToolStripMenuItem"; - this.metadataToolStripMenuItem.Size = new System.Drawing.Size(140, 22); + this.metadataToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.metadataToolStripMenuItem.Text = "&Metadata"; this.metadataToolStripMenuItem.Click += new System.EventHandler(this.metadataToolStripMenuItem_Click); // // touchProjectToolStripMenuItem // this.touchProjectToolStripMenuItem.Name = "touchProjectToolStripMenuItem"; - this.touchProjectToolStripMenuItem.Size = new System.Drawing.Size(140, 22); + this.touchProjectToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.touchProjectToolStripMenuItem.Text = "&Touch project"; this.touchProjectToolStripMenuItem.Click += new System.EventHandler(this.touchProjectToolStripMenuItem_Click); // @@ -416,6 +472,12 @@ this.mSplitAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(231, 22); this.mSplitAudioBlockToolStripMenuItem.Text = "&Split audio block"; // + // mMergeWithNextAudioBlockToolStripMenuItem + // + this.mMergeWithNextAudioBlockToolStripMenuItem.Name = "mMergeWithNextAudioBlockToolStripMenuItem"; + this.mMergeWithNextAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(231, 22); + this.mMergeWithNextAudioBlockToolStripMenuItem.Text = "&Merge with next audio block"; + // // mDeleteAudioBlockToolStripMenuItem // this.mDeleteAudioBlockToolStripMenuItem.Name = "mDeleteAudioBlockToolStripMenuItem"; @@ -523,14 +585,14 @@ // this.mHelpToolStripMenuItem1.Name = "mHelpToolStripMenuItem1"; this.mHelpToolStripMenuItem1.ShortcutKeys = System.Windows.Forms.Keys.F1; - this.mHelpToolStripMenuItem1.Size = new System.Drawing.Size(121, 22); - this.mHelpToolStripMenuItem1.Text = "&Help"; + this.mHelpToolStripMenuItem1.Size = new System.Drawing.Size(134, 22); + this.mHelpToolStripMenuItem1.Text = "&Contents"; this.mHelpToolStripMenuItem1.Click += new System.EventHandler(this.mHelpToolStripMenuItem1_Click); // // aboutObiToolStripMenuItem // this.aboutObiToolStripMenuItem.Name = "aboutObiToolStripMenuItem"; - this.aboutObiToolStripMenuItem.Size = new System.Drawing.Size(121, 22); + this.aboutObiToolStripMenuItem.Size = new System.Drawing.Size(134, 22); this.aboutObiToolStripMenuItem.Text = "&About Obi"; this.aboutObiToolStripMenuItem.Click += new System.EventHandler(this.aboutObiToolStripMenuItem_Click); // @@ -563,12 +625,6 @@ this.mProjectPanel.Size = new System.Drawing.Size(767, 450); this.mProjectPanel.TabIndex = 4; // - // mMergeWithNextAudioBlockToolStripMenuItem - // - this.mMergeWithNextAudioBlockToolStripMenuItem.Name = "mMergeWithNextAudioBlockToolStripMenuItem"; - this.mMergeWithNextAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(231, 22); - this.mMergeWithNextAudioBlockToolStripMenuItem.Text = "&Merge with next audio block"; - // // ObiForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); @@ -657,6 +713,11 @@ private System.Windows.Forms.ToolStripSeparator toolStripSeparator10; private System.Windows.Forms.ToolStripMenuItem dumpTreeDEBUGToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem mMergeWithNextAudioBlockToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem mCutToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator11; + private System.Windows.Forms.ToolStripMenuItem mCopyToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem mPasteToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem mDeleteToolStripMenuItem; } Modified: trunk/urakawa/application/Obi/Obi/ObiForm.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/ObiForm.cs 2006-08-12 15:20:53 UTC (rev 855) +++ trunk/urakawa/application/Obi/Obi/ObiForm.cs 2006-08-12 16:12:52 UTC (rev 856) @@ -25,6 +25,11 @@ private Settings mSettings; // application settings private Commands.CommandManager mCommandManager; // the undo stack for this project (should it belong to the project?) + internal Settings Settings + { + get { return mSettings; } + } + /// <summary> /// Initialize a new form. No project is opened at creation time. /// </summary> Modified: trunk/urakawa/application/Obi/Obi/ObiForm.resx =================================================================== --- trunk/urakawa/application/Obi/Obi/ObiForm.resx 2006-08-12 15:20:53 UTC (rev 855) +++ trunk/urakawa/application/Obi/Obi/ObiForm.resx 2006-08-12 16:12:52 UTC (rev 856) @@ -117,10 +117,100 @@ <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> - <metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> + <data name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing"> <value>17, 17</value> - </metadata> - <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + </data> + <data name="mNewProjectToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value> + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAQ9JREFUOE+t09lq + wkAUBmBfyr5DfY32jaReSOmFCyKCgkKLFrVUBZeKiEbshqRuaNw1xiXmLxMJBJ0Zc+GBw9zMfDPnHMZm + u1ZE35s4zXCqjmC8Al+sgHLjD9y7yGFWPIbecOO45yORtMAEHnxxJHL1IyKI9JeEXqtMwOl50Q8bSS0l + 8PzBBPbqAQQxICrgjeapgKZpkJUdBmNZB+y3d/QSnsIZKrDdqZjMFYj9OR9wB1NngHrQsJC36EkrfIkT + PuDyJ84AZbOHNF2j1Z2h9i3xAVKfOUjjZssN2oMFmq0xSkLfOmBu3E97iurnENlKxzpgbpzwO0Kh1kOy + KFoDjHmzVuYYjRmTDZfyWh9Yd/4B2Mz2w1z7EGUAAAAASUVORK5CYII= +</value> + </data> + <data name="mOpenProjectToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value> + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAlpJREFUOE+tk21I + k1EYhif0oyA0sqIQCix/+GcQFFH9CCmiUBTLLEjShJofVBgL2fxoU9Pp5ubUlS5rU9f8rCyjsA+pUCRC + TR1ppmVFUSlmhq78unrnQF1KGHTg/nEOz30993PO+7qJFrmUeiv2n+Mij+XLRLLYULdF2pxlEVIDcw0p + AsyxD5fmI/rQ94pqi26eOlsfuZj+7BgSm01QdA4ih7m73Yx9qGpavwatjPebqCzOprPt8YKQgzFagqL0 + BEjyEFWVaBkdLHMxT34uYNwWR9nVTEoL0zHlp2DMSeaSRk6eKt4VWm5WM/rVPNN5SjDTLQebZEHNA1wr + UvHjk3E6tsNcV62e1r3KLGqtKm6WplNpSsVqVFJsOM8VfSKFWjkGtcyZptSYzvC7XByx3zQoqCnTMvlG + CX1prnornPUmQJcUXsbSVhGK5bIOkcmQyveeTHiv4VZ5Nk33Nc6iuSO8CIfmECYa/bE/8ON1iRipJNh5 + F0V6Bd86lfQ1JlFj1TDVq4COKCegLVIwHmGiKRB7/V6G7+5koHozymgfYRy5E1CgTWKgXcZ1i5qWp0KS + rjgBcAJawph6FszYk/2M1O1isGYLX8p9ab6wgqP+3rMvYciS01GfzA1LFvQkQ6sQ9/khxhoCGHnox1Dt + NvorxXw0b8Km8UQh2cip6GOzgNyMeKqKM7HdjqFZJ5pRk2YJ9aql3EnxoCJxNaZ4Ly6e3UDY3O6OEXRp + 59ApTpIhiyDh9GHORAZyPHQPB/ZtZ/cOMVvFPvh6e7F+3SrWrHRnraf7Xz/xf/rJ/kvxb84I3U1y+9/W + AAAAAElFTkSuQmCC +</value> + </data> + <data name="mSaveProjectToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value> + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAixJREFUOE+tk91L + k3EUx/cvdN9N0EW3NTWGa7EaPOUcyqphWBG9PZEv5dJlmqhYmUYtXyBb4dJJy+kknFT4BqZIjaFMJUsz + V7TEoabYRDD49ju/6Pm1Mi+iH5zLz+c855zvo1L9j/fsaRRUvvZltHmX8Ni9gMaGCO47ZlBb8wn22yHc + KJ9CackECgteIy93FBfOB6H0JrC3B6ipXsVGb2V1Dca0XhxOe8JLEXhbF7mgsuLLX3mCIwsr2G1+DrVa + huWQRwjcj+a5oLTk87qCn/D78CLiTD4UXJ7GAXOTEDjrZ7ngku3dH4Jf4ZHJCLZJXlhzxpGa4hSCurth + LsjOGo0R/A4PBsPYrHdDlgMwmRxCUF31kQvkMwFFsB7c4/+ATYkNOHL0BZKSaoXgZuU0urvATgkcP/kK + lmMDfNu0MJqZPps6/4D7cNDSCUmyC8HVskl0+MAyADS5vrG7f0X59Tm+VFoYzZyZEVTg5NR2GAwVQnCl + cByeZuChc40FJwpjek5MmU/YkH6uiHdOTmHwfg/0+jIhsOWNMRiouhPlnUnAQoI4rYSht7MYm5qDnHsN + e41tHNbucUGnKxICiqXjHpTPJgHBZ/Nv4U1oHqGZJVwstiNe72JwI+J3PYA2MV8IMjOG2dzLfOatBg+2 + 7JDQ0tEPX9cguvv8GHg5hH0mC9S6eiQweLumDhqNVQgo06dP9fN4UsIoJHRnOhVtmxZGM1NXKoJ3JmTH + Cv71r/4OTrQ4xWMwWlcAAAAASUVORK5CYII= +</value> + </data> + <data name="mCutToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value> + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAYdJREFUOE+t001L + QlEQBuB+TdCmRVEJRRIWtRAUlKsQhFmkpZQtIiWyAlMwP5KkXS0shLqGFkgoFqWQmaRR2qIvU7FMwWhd + 8JZXkFx0uVGzOcNh5jkDw6mr+++4SN7B6fbju/uQecYm6a25+/Hdl2IJptWNmmJyL4DwWZwZUJbtayT8 + RxGqIV8oQaaaRfrxkTmw4z2G+WuKbC6PYDgOkUSJp6ccc+AgdI4luwPbHh/UCxb0S0aZN5fHTmefMTVv + wfDEHIiBMegMpt8BZUShNoGQTIKQGxA8TTIHMoUPGF1vEOvTWHTcgqeJQahNwLqVQiRRpIdS+XcM2l4h + 1t2DI3WAP7oGoSYE3kwSPQofljcqm/kxjK4SCH0OXSMetItsUC26wZuOVptYhI0eEOuz1YI2gZnKBdpr + 6iR9V2jkKOkBQpeiCryhFFr4eioft16iU7qNho4h1Dc00QOqlRuwpSSa+UawuZXdByIZsPoUaOmWwrUf + owcOozlwZeto7ZXDuXvCfHV/+dGfqqrf44qgu28AAAAASUVORK5CYII= +</value> + </data> + <data name="mCopyToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value> + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAeJJREFUOE+lk9FP + klEYxv1TSsecde0f0FpZrTbbal7URVvZuuJCr7pq2WzLNWy0iSHNwtIB9qG0ltLSYRJpBomUgZPMGSyU + 8SmJIOiv7zssCdrAzXd77s77e5/nnPdUVR20HBPfUCWNB4QsI176HB8IL/9iX2y1ubTMwx6utz0nuLhc + GWIfCxT153Z26ep/g9Md4FJLZ2WIZdQnAM4QSJ/BH5Z5aH6NNCljm0hgdSV4MppAPxQXCq5kil31OTx7 + DjLbOeSNNJFYUgBKq31glfpmN76F9QLEZHOJc73ubXQjMreln7Q+DdP/du0/QIsxhmNK5mjTMJ/m43mI + Qcmr5t5MZVlNpFiKrPM1vIbpVVQAOqSckF+ZekUX5UjTS+ouDFLb+CwPUPNupbN7k7WmEDcMX3hgXSpy + IP/OsrCyhXtuA6M0g+bc4wJATqaZ/x7DF4zg8f9g/OMibb355701kERriHL5fojzd2aFjNI0mjPdBUD9 + 6auUqlU/KwBZJV4skWUuvMmYV8b+Ls6jQQ81DfryO3KtfUoA/p3810G37T3VJ3TlARdvukhldjANeemx + z2B8MS0mq80GyySHj98rD2jQOpXbtgrVNprRnO2h5lQX1Sc7leYODh27W3nN9/WZDnroDx0A5wwhdtmt + AAAAAElFTkSuQmCC +</value> + </data> + <data name="mPasteToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value> + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAlBJREFUOE+1k1lI + lGEUhn/owm6KFuqqq4LoJooIqouMwixMM4zEjKyJGJUSlcnSITU1RSe3SdPGyGVQc6tEUSkSIXFo13CM + FonUyGmy5p9xz+Lp/z8ZbGjzpgMv5+a8z1n4Pkn6H9HZnEH7zVQayxKYF7+hMg+3ynKO4LBVMWa7xmBf + Nme1vuSl67hi0GNMj/sVqBon5XqmnXVMOqoxF+sYH6kgJyWKF13xnD/tT7xmM7bOY4y0riY6bL8nRAWo + 5mlnDUUZR+m2ZCO/L2C4T89bywmaSgIJD/WmKnEVT/MkIg/v8wTUVeTMAuQbGBLDSNaFoI8K5lxkEDpt + IDEafyJCfciPXiMAIX7enoDqUgNTci1TdhPjQ5nYn0dhrVgu1Fu+jO7iRTwyegmzKp9tGz0BZlMGE/Yy + JgbSGH95irFnB5GbF5Nb3kqmqZELl2uJN5iJSS0hPMFIWGyWJ6C0MJXRQSNjfVpGH/vjur+Jj7dXCLM7 + pme+4XBOMjDsIDgihYDj+jlISW4S8qs0XA99cXWsx9m2ksFySXRWo/RWp5Cppp3efpsw3+2ysidIMwsp + zErgc88ZnO3rkFuWYq/3ov+6JMb+OvOdLy6l8wcHvW9sWHre4Rcag69i3rX3AN7bdyDlX4zD/iBCMS/h + U8NChioXYC2SiFZ2Vsd2T3BVmaDA3EZTh1VkVVs3rEW6lBwrHoj7yu6sVQ72c+d7ltfCXH+nm5rWJ3MA + dY3cpJPKCwtEE7SbgJ1bBFm9trqzu9vvspjgT3FIubZa8C/N67P9regHTvjvLQ3rR38AAAAASUVORK5C + YII= +</value> + </data> + <data name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing"> <value>127, 17</value> - </metadata> + </data> </root> \ No newline at end of file Modified: trunk/urakawa/application/Obi/Obi/Project.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.cs 2006-08-12 15:20:53 UTC (rev 855) +++ trunk/urakawa/application/Obi/Obi/Project.cs 2006-08-12 16:12:52 UTC (rev 856) @@ -111,6 +111,11 @@ } } + internal Assets.AssetManager AssetManager + { + get { return mAssManager; } + } + /// <summary> /// Create an empty project. And I mean empty. /// </summary> Modified: trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.ContextMenu.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.ContextMenu.cs 2006-08-12 15:20:53 UTC (rev 855) +++ trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.ContextMenu.cs 2006-08-12 16:12:52 UTC (rev 856) @@ -61,6 +61,44 @@ } /// <summary> + /// Bring up the record dialog. + /// </summary> + private void mRecordAudioToolStripMenuItem_Click(object sender, EventArgs e) + { + if (mSelectedSection != null) + { + Settings settings = ((ObiForm)ParentForm).Settings; + Dialogs.Record dialog = new Dialogs.Record(settings.AudioChannels, settings.SampleRate, settings.BitDepth, + mProjectPanel.Project.AssetManager); + dialog.StartingPhrase += new Events.Audio.Recorder.StartingPhraseHandler(Record_StartingPhrase); + dialog.ContinuingPhrase += new Events.Audio.Recorder.ContinuingPhraseHandler(Record_ContinuingPhrase); + dialog.FinishingPhrase += new Events.Audio.Recorder.FinishingPhraseHandler(Record_FinishingPhrase); + if (dialog.ShowDialog() == DialogResult.OK) + { + int index = mSelectedPhrase == null ? + Project.GetPhrasesCount(mSelectedSection) : mSelectedSection.indexOf(mSelectedPhrase) + 1; + foreach (Assets.AudioMediaAsset asset in dialog.Assets) + { + + ++index; + } + } + } + } + + private void Record_StartingPhrase(object sender, Events.Audio.Recorder.PhraseEventArgs e) + { + } + + private void Record_ContinuingPhrase(object sender, Events.Audio.Recorder.PhraseEventArgs e) + { + } + + private void Record_FinishingPhrase(object sender, Events.Audio.Recorder.PhraseEventArgs e) + { + } + + /// <summary> /// Play the currently selected audio block. /// </summary> /// <remarks>JQ</remarks> Modified: trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs 2006-08-12 15:20:53 UTC (rev 855) +++ trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs 2006-08-12 16:12:52 UTC (rev 856) @@ -35,14 +35,14 @@ this.mAddStripToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mRenameStripToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.mPlayAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.recordAudioToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mImportAudioFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mDeleteAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.moveAudioBlockforwardToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.moveAudioBlockbackwardToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mEditAudioBlockLabelToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mSplitAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.recordAudioToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.mPlayAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mMergeWithNextAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); this.mShowInTOCViewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -93,7 +93,7 @@ this.mShowInTOCViewToolStripMenuItem}); this.contextMenuStrip1.Name = "contextMenuStrip1"; this.contextMenuStrip1.ShowImageMargin = false; - this.contextMenuStrip1.Size = new System.Drawing.Size(190, 280); + this.contextMenuStrip1.Size = new System.Drawing.Size(190, 302); // // mAddStripToolStripMenuItem // @@ -114,6 +114,20 @@ this.toolStripSeparator1.Name = "toolStripSeparator1"; this.toolStripSeparator1.Size = new System.Drawing.Size(186, 6); // + // mPlayAudioBlockToolStripMenuItem + // + this.mPlayAudioBlockToolStripMenuItem.Name = "mPlayAudioBlockToolStripMenuItem"; + this.mPlayAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(189, 22); + this.mPlayAudioBlockToolStripMenuItem.Text = "&Play audio block"; + this.mPlayAudioBlockToolStripMenuItem.Click += new System.EventHandler(this.mPlayAudioBlockToolStripMenuItem_Click); + // + // recordAudioToolStripMenuItem + // + this.recordAudioToolStripMenuItem.Name = "recordAudioToolStripMenuItem"; + this.recordAudioToolStripMenuItem.Size = new System.Drawing.Size(189, 22); + this.recordAudioToolStripMenuItem.Text = "Re&cord audio"; + this.recordAudioToolStripMenuItem.Click += new System.EventHandler(this.mRecordAudioToolStripMenuItem_Click); + // // mImportAudioFileToolStripMenuItem // this.mImportAudioFileToolStripMenuItem.Name = "mImportAudioFileToolStripMenuItem"; @@ -156,19 +170,6 @@ this.mSplitAudioBlockToolStripMenuItem.Text = "&Split audio block"; this.mSplitAudioBlockToolStripMenuItem.Click += new System.EventHandler(this.mSplitAudioBlockToolStripMenuItem_Click); // - // recordAudioToolStripMenuItem - // - this.recordAudioToolStripMenuItem.Name = "recordAudioToolStripMenuItem"; - this.recordAudioToolStripMenuItem.Size = new System.Drawing.Size(189, 22); - this.recordAudioToolStripMenuItem.Text = "Re&cord audio"; - // - // mPlayAudioBlockToolStripMenuItem - // - this.mPlayAudioBlockToolStripMenuItem.Name = "mPlayAudioBlockToolStripMenuItem"; - this.mPlayAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(189, 22); - this.mPlayAudioBlockToolStripMenuItem.Text = "&Play audio block"; - this.mPlayAudioBlockToolStripMenuItem.Click += new System.EventHandler(this.mPlayAudioBlockToolStripMenuItem_Click); - // // mMergeWithNextAudioBlockToolStripMenuItem // this.mMergeWithNextAudioBlockToolStripMenuItem.Name = "mMergeWithNextAudioBlockToolStripMenuItem"; Modified: trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs 2006-08-12 15:20:53 UTC (rev 855) +++ trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs 2006-08-12 16:12:52 UTC (rev 856) @@ -29,6 +29,7 @@ public event Events.Node.RequestToRenameNodeHandler RenameSection; public event Events.Node.SetMediaHandler SetMediaRequested; public event Events.Strip.RequestToImportAssetHandler ImportAudioAssetRequested; + // public event Events.Strip.RequestToAddAssetHandler AddAudioAssetRequested; public event Events.Node.RequestToDeleteBlockHandler DeleteBlockRequested; public event Events.Node.RequestToMoveBlockHandler MoveAudioBlockForwardRequested; public event Events.Node.RequestToMoveBlockHandler MoveAudioBlockBackwardRequested; @@ -466,10 +467,5 @@ } } - - private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) - { - - } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2006-08-12 17:05:25
|
Revision: 857 Author: marisademeglio Date: 2006-08-12 10:05:15 -0700 (Sat, 12 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=857&view=rev Log Message: ----------- Fixed Undo-decrease-level bug Cleaned up old trace statements Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Project.TOC.cs trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.SyncCallbacks.cs trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs trunk/urakawa/application/Obi/Obi/Visitors/DumpTree.cs Modified: trunk/urakawa/application/Obi/Obi/Project.TOC.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.TOC.cs 2006-08-12 16:12:52 UTC (rev 856) +++ trunk/urakawa/application/Obi/Obi/Project.TOC.cs 2006-08-12 17:05:15 UTC (rev 857) @@ -557,7 +557,7 @@ parent.insert(node, index); MovedNode(this, new Events.Node.MovedNodeEventArgs(this, node, parent, index, position)); - + Visitors.SectionNodePosition visitor = null; //reattach the children @@ -567,7 +567,7 @@ //find the position for the first one if (i == 0) { - visitor = new Visitors.SectionNodePosition(node); + visitor = new Visitors.SectionNodePosition((CoreNode)nonOriginalChildren[i]); getPresentation().getRootNode().acceptDepthFirst(visitor); } @@ -582,9 +582,7 @@ /// </summary> public void RenameSectionNode(object origin, CoreNode node, string label) { - System.Diagnostics.Trace.WriteLine( - string.Format("TOCPanel.RenameSectionNode for {0}", node.GetHashCode())); - + TextMedia text = GetTextMedia(node); Commands.TOC.Rename command = origin == this ? null : new Commands.TOC.Rename(this, node, text.getText(), label); GetTextMedia(node).setText(label); @@ -596,9 +594,6 @@ public void RenameSectionNodeRequested(object sender, Events.Node.RenameNodeEventArgs e) { - System.Diagnostics.Trace.WriteLine( - string.Format("Project.RenameSectionNodeRequested for {0}", e.Node.GetHashCode())); - RenameSectionNode(sender, e.Node, e.Label); } Modified: trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.SyncCallbacks.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.SyncCallbacks.cs 2006-08-12 16:12:52 UTC (rev 856) +++ trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.SyncCallbacks.cs 2006-08-12 17:05:15 UTC (rev 857) @@ -21,9 +21,6 @@ /// <param name="e"><see cref="e.Node"/> is the tree node being renamed.</param> internal void SyncRenamedSectionNode(object sender, Events.Node.RenameNodeEventArgs e) { - System.Diagnostics.Trace.WriteLine( - string.Format("TOCPanel.SyncRenamedSectionNode for {0}", e.Node.GetHashCode())); - if (e.Origin != this) { TreeNode treeNode = FindTreeNodeWithoutLabel(e.Node); Modified: trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs 2006-08-12 16:12:52 UTC (rev 856) +++ trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs 2006-08-12 17:05:15 UTC (rev 857) @@ -183,9 +183,6 @@ /// </summary> private void tocTree_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) { - System.Diagnostics.Trace.WriteLine( - string.Format("TOCPanel.AfterLabelEdit for {0}", e.Node.Tag.GetHashCode())); - if (e.Label != null) { if (e.Label == "") Modified: trunk/urakawa/application/Obi/Obi/Visitors/DumpTree.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Visitors/DumpTree.cs 2006-08-12 16:12:52 UTC (rev 856) +++ trunk/urakawa/application/Obi/Obi/Visitors/DumpTree.cs 2006-08-12 17:05:15 UTC (rev 857) @@ -20,7 +20,7 @@ { CoreNode n = (CoreNode)node; NodeInformationProperty p = (NodeInformationProperty)n.getProperty(typeof(NodeInformationProperty)); - string info = String.Format("{0}{1}[{2}] {3}", indent, p.NodeType, p.Id, n.GetHashCode()); + string info = String.Format("{0}{1}[{2}]", indent, p.NodeType, p.Id); switch (p.NodeType) { case NodeType.Section: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2006-08-12 17:25:14
|
Revision: 858 Author: marisademeglio Date: 2006-08-12 10:25:09 -0700 (Sat, 12 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=858&view=rev Log Message: ----------- Fixed TOC display bug in decrease section level Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Project.TOC.cs trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.SyncCallbacks.cs Modified: trunk/urakawa/application/Obi/Obi/Project.TOC.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.TOC.cs 2006-08-12 17:05:15 UTC (rev 857) +++ trunk/urakawa/application/Obi/Obi/Project.TOC.cs 2006-08-12 17:25:09 UTC (rev 858) @@ -564,16 +564,13 @@ for (int i = 0; i < nonOriginalChildren.Count; i++) { parent.appendChild((CoreNode)nonOriginalChildren[i]); - //find the position for the first one - if (i == 0) - { - visitor = new Visitors.SectionNodePosition((CoreNode)nonOriginalChildren[i]); - getPresentation().getRootNode().acceptDepthFirst(visitor); - } - + + visitor = new Visitors.SectionNodePosition((CoreNode)nonOriginalChildren[i]); + getPresentation().getRootNode().acceptDepthFirst(visitor); + MovedNode(this, new Events.Node.MovedNodeEventArgs (this, (CoreNode)nonOriginalChildren[i], parent, - parent.getChildCount() - 1, visitor.Position + i)); + parent.getChildCount() - 1, visitor.Position)); } } Modified: trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.SyncCallbacks.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.SyncCallbacks.cs 2006-08-12 17:05:15 UTC (rev 857) +++ trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.SyncCallbacks.cs 2006-08-12 17:25:09 UTC (rev 858) @@ -189,18 +189,18 @@ ArrayList futureChildren = new ArrayList(); - int idx = 0; - //make copies of our future children, and remove them from the tree - foreach (TreeNode node in selectedNode.Parent.Nodes) + //make copies of our future children, and remove them from the tree + for (int i = selectedNode.Parent.Nodes.Count - 1; i > selectedNode.Index; i--) { - if (node.Index > selectedNode.Index) - { - futureChildren.Add(node.Clone()); - node.Remove(); - idx++; - } + TreeNode node = selectedNode.Parent.Nodes[i]; + futureChildren.Add(node.Clone()); + MessageBox.Show(String.Format("About to remove {0}", node.Text)); + node.Remove(); } + //we collected the nodes in reverse-order, so switch them around + futureChildren.Reverse(); + TreeNodeCollection siblingCollection = null; //move it out a level This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2006-08-13 03:54:09
|
Revision: 861 Author: marisademeglio Date: 2006-08-12 20:53:58 -0700 (Sat, 12 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=861&view=rev Log Message: ----------- Added more skeleton for strip move up/down Removed annoying debug message box from cmd manager (that I had added) Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Commands/CommandManager.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionNode.cs trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs trunk/urakawa/application/Obi/Obi/Project.Blocks.cs trunk/urakawa/application/Obi/Obi/Project.TOC.cs trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.ContextMenu.cs trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs Modified: trunk/urakawa/application/Obi/Obi/Commands/CommandManager.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/CommandManager.cs 2006-08-13 03:09:15 UTC (rev 860) +++ trunk/urakawa/application/Obi/Obi/Commands/CommandManager.cs 2006-08-13 03:53:58 UTC (rev 861) @@ -80,8 +80,7 @@ { mUndo.Push(command); mRedo.Clear(); - System.Windows.Forms.MessageBox.Show(string.Format("added {0}", command.ToString())); - } + } /// <summary> /// Undo the last command and push it on the redo stack. There is no effect if the undo stack is empty. Modified: trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionNode.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionNode.cs 2006-08-13 03:09:15 UTC (rev 860) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionNode.cs 2006-08-13 03:53:58 UTC (rev 861) @@ -40,7 +40,7 @@ } /// <summary> - /// Undo: restore the node and its descendants. + /// Undo: restore the node /// </summary> public override void Undo() { @@ -82,11 +82,95 @@ } /// <summary> - /// Undo: restore the node and its descendants. + /// Undo: restore the node /// </summary> public override void Undo() { mProject.UndoMoveSectionNode(mNode, mParent, mIndex, mPosition); } } + + class MoveSectionNodeDownLinear : Command + { + private Project mProject; + private CoreNode mNode; + private CoreNode mParent; + private int mIndex; + private int mPosition; + + public override string Label + { + get + { + return Localizer.Message("move_section_down_linear_command_label"); + } + } + + public MoveSectionNodeDownLinear(Project project, CoreNode node, CoreNode parent, int index, int position) + { + mProject = project; + mNode = node; + mParent = parent; + mIndex = index; + mPosition = position; + } + + /// <summary> + /// ReDo: move the node + /// </summary> + public override void Do() + { + mProject.MoveSectionNodeDownLinear(mProject, mNode); + } + + /// <summary> + /// Undo: restore the node + /// </summary> + public override void Undo() + { + mProject.UndoMoveSectionNode(mNode, mParent, mIndex, mPosition); + } + } + + class MoveSectionNodeUpLinear : Command + { + private Project mProject; + private CoreNode mNode; + private CoreNode mParent; + private int mIndex; + private int mPosition; + + public override string Label + { + get + { + return Localizer.Message("move_section_up_linear_command_label"); + } + } + + public MoveSectionNodeUpLinear(Project project, CoreNode node, CoreNode parent, int index, int position) + { + mProject = project; + mNode = node; + mParent = parent; + mIndex = index; + mPosition = position; + } + + /// <summary> + /// ReDo: move the node + /// </summary> + public override void Do() + { + mProject.MoveSectionNodeUpLinear(mProject, mNode); + } + + /// <summary> + /// Undo: restore the node + /// </summary> + public override void Undo() + { + mProject.UndoMoveSectionNode(mNode, mParent, mIndex, mPosition); + } + } } Modified: trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs 2006-08-13 03:09:15 UTC (rev 860) +++ trunk/urakawa/application/Obi/Obi/Events/Node/NodeEventArgs.cs 2006-08-13 03:53:58 UTC (rev 861) @@ -6,20 +6,30 @@ namespace Obi.Events.Node { + //requests for adding and deleting section nodes public delegate void RequestToAddSiblingNodeHandler(object sender, NodeEventArgs e); public delegate void RequestToAddChildSectionNodeHandler(object sender, NodeEventArgs e); + public delegate void RequestToDeleteNodeHandler(object sender, NodeEventArgs e); + public delegate void RequestToShallowDeleteSectionNodeHandler(object sender, NodeEventArgs e); + + //requests for moving section nodes public delegate void RequestToIncreaseSectionNodeLevelHandler(object sender, NodeEventArgs e); public delegate void RequestToDecreaseSectionNodeLevelHandler(object sender, NodeEventArgs e); - public delegate void RequestToDeleteNodeHandler(object sender, NodeEventArgs e); - public delegate void RequestToShallowDeleteSectionNodeHandler(object sender, NodeEventArgs e); public delegate void RequestToMoveSectionNodeUpHandler(object sender, NodeEventArgs e); public delegate void RequestToMoveSectionNodeDownHandler(object sender, NodeEventArgs e); - public delegate void RequestToDeleteBlockHandler(object sender, NodeEventArgs e); - public delegate void RequestToMoveBlockHandler(object sender, NodeEventArgs e); + public delegate void RequestToMoveSectionNodeUpLinearHandler(object sender, NodeEventArgs e); + public delegate void RequestToMoveSectionNodeDownLinearHandler(object sender, NodeEventArgs e); + + //section node clipboard requests public delegate void RequestToCutSectionNodeHandler(object sender, NodeEventArgs e); public delegate void RequestToCopySectionNodeHandler(object sender, NodeEventArgs e); public delegate void RequestToPasteSectionNodeHandler(object sender, NodeEventArgs e); + public delegate void RequestToDeleteBlockHandler(object sender, NodeEventArgs e); + public delegate void RequestToMoveBlockHandler(object sender, NodeEventArgs e); + + //section node handlers which communicate that requested actions have been done + //most likely so that the views may update themselves accordingly public delegate void DecreasedSectionNodeLevelHandler(object sender, NodeEventArgs e); public delegate void DeletedNodeHandler(object sender, NodeEventArgs e); public delegate void ShallowDeletedSectionNodeHandler(object sender, NodeEventArgs e); @@ -32,6 +42,7 @@ public delegate void TouchedNodeHandler(object sender, NodeEventArgs e); + public class NodeEventArgs : EventArgs { private CoreNode mNode; // the node on which the operation is performed Modified: trunk/urakawa/application/Obi/Obi/Project.Blocks.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.Blocks.cs 2006-08-13 03:09:15 UTC (rev 860) +++ trunk/urakawa/application/Obi/Obi/Project.Blocks.cs 2006-08-13 03:53:58 UTC (rev 861) @@ -356,6 +356,7 @@ #endregion - + + } } \ No newline at end of file Modified: trunk/urakawa/application/Obi/Obi/Project.TOC.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.TOC.cs 2006-08-13 03:09:15 UTC (rev 860) +++ trunk/urakawa/application/Obi/Obi/Project.TOC.cs 2006-08-13 03:53:58 UTC (rev 861) @@ -744,13 +744,15 @@ } //md 20060812 - internal void ShallowDeleteSectionNodeRequested(object sender, Events.Node.NodeEventArgs e) + public void ShallowDeleteSectionNodeRequested(object sender, Events.Node.NodeEventArgs e) { ShallowDeleteSectionNode(sender, e.Node); } //md 20060812 - internal void ShallowDeleteSectionNode(object origin, CoreNode node) + //shallow delete a section node + //see Commands.TOC.ShallowDeleteSectionNode if you're wondering how the "undo" works + public void ShallowDeleteSectionNode(object origin, CoreNode node) { Commands.TOC.ShallowDeleteSectionNode command = null; @@ -780,6 +782,29 @@ if (command != null) CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); } + //md 20060812 + public void MoveSectionNodeDownLinearRequested(object sender, Events.Node.NodeEventArgs e) + { + MoveSectionNodeDownLinear(sender, e.Node); + } + + //md 20060812 + public void MoveSectionNodeDownLinear(object origin, CoreNode node) + { + //TODO + } + + //md 20060812 + public void MoveSectionNodeUpLinearRequested(object sender, Events.Node.NodeEventArgs e) + { + MoveSectionNodeUpLinear(sender, e.Node); + } + + //md 20060812 + public void MoveSectionNodeUpLinear(object origin, CoreNode node) + { + //TODO + } } Modified: trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.ContextMenu.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.ContextMenu.cs 2006-08-13 03:09:15 UTC (rev 860) +++ trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.ContextMenu.cs 2006-08-13 03:53:58 UTC (rev 861) @@ -16,6 +16,8 @@ { //md public event Events.Node.RequestToShallowDeleteSectionNodeHandler RequestToShallowDeleteSectionNode; + public event Events.Node.RequestToMoveSectionNodeDownLinearHandler RequestToMoveSectionNodeDownLinear; + public event Events.Node.RequestToMoveSectionNodeUpLinearHandler RequestToMoveSectionNodeUpLinear; /// <summary> /// TODO: @@ -211,5 +213,19 @@ { RequestToShallowDeleteSectionNode(this, new Events.Node.NodeEventArgs(this, this.mSelectedSection)); } + + //md 20060812 + private void upToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToMoveSectionNodeUpLinear(this, new Events.Node.NodeEventArgs(this, this.mSelectedSection)); + } + + //md 20060812 + private void downToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToMoveSectionNodeDownLinear(this, new Events.Node.NodeEventArgs(this, this.mSelectedSection)); + } + + } } Modified: trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs 2006-08-13 03:09:15 UTC (rev 860) +++ trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Designer.cs 2006-08-13 03:53:58 UTC (rev 861) @@ -33,7 +33,11 @@ this.mFlowLayoutPanel = new System.Windows.Forms.FlowLayoutPanel(); this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); this.mAddStripToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.moveStripToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.upToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.downToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mRenameStripToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.deleteStripToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.mPlayAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.recordAudioToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -46,10 +50,6 @@ this.mMergeWithNextAudioBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); this.mShowInTOCViewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.moveStripToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.upToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.downToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.deleteStripToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.contextMenuStrip1.SuspendLayout(); this.SuspendLayout(); // @@ -108,6 +108,29 @@ this.mAddStripToolStripMenuItem.Text = "&Add strip"; this.mAddStripToolStripMenuItem.Click += new System.EventHandler(this.mAddStripToolStripMenuItem_Click); // + // moveStripToolStripMenuItem + // + this.moveStripToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.upToolStripMenuItem, + this.downToolStripMenuItem}); + this.moveStripToolStripMenuItem.Name = "moveStripToolStripMenuItem"; + this.moveStripToolStripMenuItem.Size = new System.Drawing.Size(183, 22); + this.moveStripToolStripMenuItem.Text = "&Move strip..."; + // + // upToolStripMenuItem + // + this.upToolStripMenuItem.Name = "upToolStripMenuItem"; + this.upToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.upToolStripMenuItem.Text = "&Up"; + this.upToolStripMenuItem.Click += new System.EventHandler(this.upToolStripMenuItem_Click); + // + // downToolStripMenuItem + // + this.downToolStripMenuItem.Name = "downToolStripMenuItem"; + this.downToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.downToolStripMenuItem.Text = "&Down"; + this.downToolStripMenuItem.Click += new System.EventHandler(this.downToolStripMenuItem_Click); + // // mRenameStripToolStripMenuItem // this.mRenameStripToolStripMenuItem.Name = "mRenameStripToolStripMenuItem"; @@ -115,6 +138,13 @@ this.mRenameStripToolStripMenuItem.Text = "&Rename strip"; this.mRenameStripToolStripMenuItem.Click += new System.EventHandler(this.mRenameStripToolStripMenuItem_Click); // + // deleteStripToolStripMenuItem + // + this.deleteStripToolStripMenuItem.Name = "deleteStripToolStripMenuItem"; + this.deleteStripToolStripMenuItem.Size = new System.Drawing.Size(183, 22); + this.deleteStripToolStripMenuItem.Text = "Delete strip"; + this.deleteStripToolStripMenuItem.Click += new System.EventHandler(this.deleteStripToolStripMenuItem_Click); + // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; @@ -195,34 +225,6 @@ this.mShowInTOCViewToolStripMenuItem.Text = "Show in &TOC view"; this.mShowInTOCViewToolStripMenuItem.Click += new System.EventHandler(this.mShowInTOCViewToolStripMenuItem_Click); // - // moveStripToolStripMenuItem - // - this.moveStripToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.upToolStripMenuItem, - this.downToolStripMenuItem}); - this.moveStripToolStripMenuItem.Name = "moveStripToolStripMenuItem"; - this.moveStripToolStripMenuItem.Size = new System.Drawing.Size(183, 22); - this.moveStripToolStripMenuItem.Text = "&Move strip..."; - // - // upToolStripMenuItem - // - this.upToolStripMenuItem.Name = "upToolStripMenuItem"; - this.upToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.upToolStripMenuItem.Text = "&Up"; - // - // downToolStripMenuItem - // - this.downToolStripMenuItem.Name = "downToolStripMenuItem"; - this.downToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.downToolStripMenuItem.Text = "&Down"; - // - // deleteStripToolStripMenuItem - // - this.deleteStripToolStripMenuItem.Name = "deleteStripToolStripMenuItem"; - this.deleteStripToolStripMenuItem.Size = new System.Drawing.Size(183, 22); - this.deleteStripToolStripMenuItem.Text = "Delete strip"; - this.deleteStripToolStripMenuItem.Click += new System.EventHandler(this.deleteStripToolStripMenuItem_Click); - // // StripManagerPanel // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); Modified: trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs 2006-08-13 03:09:15 UTC (rev 860) +++ trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.cs 2006-08-13 03:53:58 UTC (rev 861) @@ -467,7 +467,5 @@ } } - - } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2006-08-13 04:39:42
|
Revision: 862 Author: marisademeglio Date: 2006-08-12 21:39:37 -0700 (Sat, 12 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=862&view=rev Log Message: ----------- Fixed a bug in shallow delete; now the phrase nodes are considered. However, undo-shallow-delete has a big bug (or unfinished part?) because the phrase nodes aren't restored Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Project.TOC.cs trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.SectionNodeSyncCallbacks.cs Modified: trunk/urakawa/application/Obi/Obi/Project.TOC.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.TOC.cs 2006-08-13 03:53:58 UTC (rev 861) +++ trunk/urakawa/application/Obi/Obi/Project.TOC.cs 2006-08-13 04:39:37 UTC (rev 862) @@ -68,6 +68,15 @@ /// </summary> public void CreateSiblingSectionNode(object origin, CoreNode contextNode) { + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(contextNode); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + CoreNode parent = (CoreNode)(contextNode == null ? getPresentation().getRootNode() : contextNode.getParent()); CoreNode sibling = CreateSectionNode(); if (contextNode == null) @@ -99,6 +108,15 @@ /// </summary> public void CreateChildSectionNode(object origin, CoreNode parent) { + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(parent); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + CoreNode child = CreateSectionNode(); if (parent == null) parent = getPresentation().getRootNode(); parent.appendChild(child); @@ -127,6 +145,15 @@ /// <param name="originalLabel"></param> public void AddExistingSectionNode(CoreNode node, CoreNode parent, int index, int position, string originalLabel) { + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(node); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + if (node.getParent() == null) parent.insert(node, index); if (originalLabel != null) Project.GetTextMedia(node).setText(originalLabel); AddedSectionNode(this, new Events.Node.AddedSectionNodeEventArgs(this, node, index, position)); @@ -143,6 +170,15 @@ /// <param name="position"></param> public void UndeleteSectionNode(CoreNode node, CoreNode parent, int index, int position) { + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(node); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + Visitors.UndeleteSubtree visitor = new Visitors.UndeleteSubtree(this, parent, index, position); node.acceptDepthFirst(visitor); } @@ -154,6 +190,15 @@ //the command value is returned so it can be used in UndoShallowDelete's undo list public Commands.Command RemoveNode(object origin, CoreNode node) { + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(node); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + Commands.TOC.DeleteSectionNode command = null; if (node != null) { @@ -188,6 +233,15 @@ /// </summary> public void MoveSectionNodeUp(object origin, CoreNode node) { + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(node); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + Commands.TOC.MoveSectionNodeUp command = null; if (origin != this) @@ -276,6 +330,16 @@ /// <param name="position"></param> public void UndoMoveSectionNode(CoreNode node, CoreNode parent, int index, int position) { + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(node); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + + if (node.getParent() != null) node.detach(); parent.insert(node, index); @@ -297,6 +361,15 @@ public void MoveSectionNodeDown(object origin, CoreNode node) { + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(node); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + Commands.TOC.MoveSectionNodeDown command = null; if (origin != this) @@ -377,6 +450,15 @@ public void IncreaseSectionNodeLevel(object origin, CoreNode node) { + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(node); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + Commands.TOC.IncreaseSectionNodeLevel command = null; if (origin != this) @@ -447,6 +529,15 @@ //the command value is returned so it can be used in UndoShallowDelete's undo list public Commands.Command DecreaseSectionNodeLevel(object origin, CoreNode node) { + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(node); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + Commands.TOC.DecreaseSectionNodeLevel command = null; //md: need this particular command to be created even if origin = this @@ -542,6 +633,15 @@ //added by marisa public void UndoDecreaseSectionNodeLevel(CoreNode node, CoreNode parent, int index, int position, int originalChildCount) { + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(node); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + //error-checking if (node.getChildCount() < originalChildCount) { @@ -594,7 +694,15 @@ /// </summary> public void RenameSectionNode(object origin, CoreNode node, string label) { - + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(node); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + TextMedia text = GetTextMedia(node); Commands.TOC.Rename command = origin == this ? null : new Commands.TOC.Rename(this, node, text.getText(), label); GetTextMedia(node).setText(label); @@ -618,6 +726,15 @@ //md 20060810 public void DoCutSectionNode(object origin, CoreNode node) { + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(node); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + if (node == null) return; CoreNode parent = (CoreNode)node.getParent(); @@ -645,6 +762,15 @@ //md 20060810 public void UndoCutSectionNode(CoreNode node, CoreNode parent, int index, int position) { + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(node); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + if (node.getParent() != null) node.detach(); parent.insert(node, index); @@ -664,6 +790,15 @@ //md 20060810 public void CopySectionNode(object origin, CoreNode node) { + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(node); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + if (node == null) return; Commands.TOC.CopySectionNode command = null; @@ -686,6 +821,15 @@ //md 20060810 public void UndoCopySectionNode(CoreNode node) { + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(node); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + mClipboard = null; UndidCopySectionNode(this, new Events.Node.NodeEventArgs(this, node)); @@ -704,6 +848,15 @@ //"paste" will paste the clipboard contents as the first child of the given node public void PasteSectionNode(object origin, CoreNode parent) { + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(parent); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + if (parent == null) return; Commands.TOC.PasteSectionNode command = null; @@ -734,6 +887,15 @@ //md 20060810 public void UndoPasteSectionNode(CoreNode node) { + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(node); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + node.detach(); UndidPasteSectionNode(this, new Events.Node.NodeEventArgs(this, node)); @@ -754,6 +916,15 @@ //see Commands.TOC.ShallowDeleteSectionNode if you're wondering how the "undo" works public void ShallowDeleteSectionNode(object origin, CoreNode node) { + //mdXXX + NodeType nodeType; + nodeType = Project.GetNodeType(node); + if (nodeType != NodeType.Section) + { + throw new Exception(string.Format("Expected a SectionNode; got a {0}", nodeType.ToString())); + } + //end mdXXX + Commands.TOC.ShallowDeleteSectionNode command = null; if (origin != this) @@ -770,8 +941,11 @@ for (int i = numChildren - 1; i >= 0; i-- ) { - Commands.Command cmdDecrease = this.DecreaseSectionNodeLevel(this, node.getChild(i)); - if (command != null) command.addSubCommand(cmdDecrease); + if (Project.GetNodeType(node.getChild(i)) == NodeType.Section) + { + Commands.Command cmdDecrease = this.DecreaseSectionNodeLevel(this, node.getChild(i)); + if (command != null) command.addSubCommand(cmdDecrease); + } } Commands.Command cmdRemove = this.RemoveNode(this, node); Modified: trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.SectionNodeSyncCallbacks.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.SectionNodeSyncCallbacks.cs 2006-08-13 03:53:58 UTC (rev 861) +++ trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.SectionNodeSyncCallbacks.cs 2006-08-13 04:39:37 UTC (rev 862) @@ -157,9 +157,13 @@ //md: recursive function to enumerate the strips under a node (including the strip for the node itself) private void MakeFlatListOfStrips(CoreNode node, ArrayList strips) { - SectionStrip strip = mSectionNodeMap[node]; - strips.Add(strip); + if (Project.GetNodeType(node) == NodeType.Section) + { + SectionStrip strip = mSectionNodeMap[node]; + strips.Add(strip); + } + for (int i = 0; i < node.getChildCount(); i++) { MakeFlatListOfStrips(node.getChild(i), strips); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2006-08-13 08:46:45
|
Revision: 863 Author: markusgy Date: 2006-08-13 01:46:33 -0700 (Sun, 13 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=863&view=rev Log Message: ----------- First draft of hotkeys in main window. Only changes in .designer sofar (menuStrip). Summary table available in help_en.html. Layout follows these simple guidelines: 1) Project modification invocations by default use the CTRL modkey 2) ...unless there is a preferred Windows standard heritage key, for example F2 = rename, DEL = delete). 3)View modifications (that change the GUI but not the project itself) by default use the ALT modkey. The hotkey layout is going to need a major rework once play and record dialogs are dissolved etcetera, so we are not married to the current set. They will and should change during coming iterations. Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs trunk/urakawa/application/Obi/Obi/help_en.html Modified: trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs 2006-08-13 04:39:37 UTC (rev 862) +++ trunk/urakawa/application/Obi/Obi/ObiForm.Designer.cs 2006-08-13 08:46:33 UTC (rev 863) @@ -130,7 +130,7 @@ this.toolStripSeparator3, this.exitToolStripMenuItem}); this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - this.fileToolStripMenuItem.Size = new System.Drawing.Size(36, 20); + this.fileToolStripMenuItem.Size = new System.Drawing.Size(35, 20); this.fileToolStripMenuItem.Text = "&File"; // // mNewProjectToolStripMenuItem @@ -138,7 +138,8 @@ this.mNewProjectToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("mNewProjectToolStripMenuItem.Image"))); this.mNewProjectToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta; this.mNewProjectToolStripMenuItem.Name = "mNewProjectToolStripMenuItem"; - this.mNewProjectToolStripMenuItem.Size = new System.Drawing.Size(171, 22); + this.mNewProjectToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N))); + this.mNewProjectToolStripMenuItem.Size = new System.Drawing.Size(228, 22); this.mNewProjectToolStripMenuItem.Text = "&New project"; this.mNewProjectToolStripMenuItem.Click += new System.EventHandler(this.mNewProjectToolStripMenuItem_Click); // @@ -147,7 +148,8 @@ this.mOpenProjectToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("mOpenProjectToolStripMenuItem.Image"))); this.mOpenProjectToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta; this.mOpenProjectToolStripMenuItem.Name = "mOpenProjectToolStripMenuItem"; - this.mOpenProjectToolStripMenuItem.Size = new System.Drawing.Size(171, 22); + this.mOpenProjectToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O))); + this.mOpenProjectToolStripMenuItem.Size = new System.Drawing.Size(228, 22); this.mOpenProjectToolStripMenuItem.Text = "&Open project"; this.mOpenProjectToolStripMenuItem.Click += new System.EventHandler(this.mOpenProjectToolStripMenuItem_Click); // @@ -157,25 +159,25 @@ this.openrecentSeparator, this.mClearListToolStripMenuItem}); this.mOpenRecentProjectToolStripMenuItem.Name = "mOpenRecentProjectToolStripMenuItem"; - this.mOpenRecentProjectToolStripMenuItem.Size = new System.Drawing.Size(171, 22); + this.mOpenRecentProjectToolStripMenuItem.Size = new System.Drawing.Size(228, 22); this.mOpenRecentProjectToolStripMenuItem.Text = "Open &recent project"; // // openrecentSeparator // this.openrecentSeparator.Name = "openrecentSeparator"; - this.openrecentSeparator.Size = new System.Drawing.Size(114, 6); + this.openrecentSeparator.Size = new System.Drawing.Size(123, 6); // // mClearListToolStripMenuItem // this.mClearListToolStripMenuItem.Name = "mClearListToolStripMenuItem"; - this.mClearListToolStripMenuItem.Size = new System.Drawing.Size(117, 22); + this.mClearListToolStripMenuItem.Size = new System.Drawing.Size(126, 22); this.mClearListToolStripMenuItem.Text = "&Clear list"; this.mClearListToolStripMenuItem.Click += new System.EventHandler(this.mClearListToolStripMenuItem_Click); // // toolStripSeparator2 // this.toolStripSeparator2.Name = "toolStripSeparator2"; - this.toolStripSeparator2.Size = new System.Drawing.Size(168, 6); + this.toolStripSeparator2.Size = new System.Drawing.Size(225, 6); // // mSaveProjectToolStripMenuItem // @@ -183,40 +185,44 @@ this.mSaveProjectToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta; this.mSaveProjectToolStripMenuItem.Name = "mSaveProjectToolStripMenuItem"; this.mSaveProjectToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S))); - this.mSaveProjectToolStripMenuItem.Size = new System.Drawing.Size(171, 22); + this.mSaveProjectToolStripMenuItem.Size = new System.Drawing.Size(228, 22); this.mSaveProjectToolStripMenuItem.Text = "&Save project"; this.mSaveProjectToolStripMenuItem.Click += new System.EventHandler(this.mSaveProjectToolStripMenuItem_Click); // // mSaveProjectasToolStripMenuItem // this.mSaveProjectasToolStripMenuItem.Name = "mSaveProjectasToolStripMenuItem"; - this.mSaveProjectasToolStripMenuItem.Size = new System.Drawing.Size(171, 22); + this.mSaveProjectasToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) + | System.Windows.Forms.Keys.S))); + this.mSaveProjectasToolStripMenuItem.Size = new System.Drawing.Size(228, 22); this.mSaveProjectasToolStripMenuItem.Text = "Save project &as"; this.mSaveProjectasToolStripMenuItem.Click += new System.EventHandler(this.mSaveProjectasToolStripMenuItem_Click); // // mDiscardChangesToolStripMenuItem // this.mDiscardChangesToolStripMenuItem.Name = "mDiscardChangesToolStripMenuItem"; - this.mDiscardChangesToolStripMenuItem.Size = new System.Drawing.Size(171, 22); + this.mDiscardChangesToolStripMenuItem.Size = new System.Drawing.Size(228, 22); this.mDiscardChangesToolStripMenuItem.Text = "&Discard changes"; this.mDiscardChangesToolStripMenuItem.Click += new System.EventHandler(this.mDiscardChangesToolStripMenuItem_Click); // // mCloseProjectToolStripMenuItem // this.mCloseProjectToolStripMenuItem.Name = "mCloseProjectToolStripMenuItem"; - this.mCloseProjectToolStripMenuItem.Size = new System.Drawing.Size(171, 22); + this.mCloseProjectToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.W))); + this.mCloseProjectToolStripMenuItem.Size = new System.Drawing.Size(228, 22); this.mCloseProjectToolStripMenuItem.Text = "&Close project"; this.mCloseProjectToolStripMenuItem.Click += new System.EventHandler(this.mCloseProjectToolStripMenuItem_Click); // // toolStripSeparator3 // this.toolStripSeparator3.Name = "toolStripSeparator3"; - this.toolStripSeparator3.Size = new System.Drawing.Size(168, 6); + this.toolStripSeparator3.Size = new System.Drawing.Size(225, 6); // // exitToolStripMenuItem // this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; - this.exitToolStripMenuItem.Size = new System.Drawing.Size(171, 22); + this.exitToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.F4))); + this.exitToolStripMenuItem.Size = new System.Drawing.Size(228, 22); this.exitToolStripMenuItem.Text = "E&xit"; this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); // @@ -241,7 +247,7 @@ // this.mUndoToolStripMenuItem.Name = "mUndoToolStripMenuItem"; this.mUndoToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z))); - this.mUndoToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.mUndoToolStripMenuItem.Size = new System.Drawing.Size(167, 22); this.mUndoToolStripMenuItem.Text = "&Undo"; this.mUndoToolStripMenuItem.Click += new System.EventHandler(this.mUndoToolStripMenuItem_Click); // @@ -249,14 +255,14 @@ // this.mRedoToolStripMenuItem.Name = "mRedoToolStripMenuItem"; this.mRedoToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y))); - this.mRedoToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.mRedoToolStripMenuItem.Size = new System.Drawing.Size(167, 22); this.mRedoToolStripMenuItem.Text = "&Redo"; this.mRedoToolStripMenuItem.Click += new System.EventHandler(this.mRedoToolStripMenuItem_Click); // // toolStripSeparator11 // this.toolStripSeparator11.Name = "toolStripSeparator11"; - this.toolStripSeparator11.Size = new System.Drawing.Size(149, 6); + this.toolStripSeparator11.Size = new System.Drawing.Size(164, 6); // // mCutToolStripMenuItem // @@ -264,7 +270,7 @@ this.mCutToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta; this.mCutToolStripMenuItem.Name = "mCutToolStripMenuItem"; this.mCutToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X))); - this.mCutToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.mCutToolStripMenuItem.Size = new System.Drawing.Size(167, 22); this.mCutToolStripMenuItem.Text = "&Cut"; // // mCopyToolStripMenuItem @@ -273,7 +279,7 @@ this.mCopyToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta; this.mCopyToolStripMenuItem.Name = "mCopyToolStripMenuItem"; this.mCopyToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C))); - this.mCopyToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.mCopyToolStripMenuItem.Size = new System.Drawing.Size(167, 22); this.mCopyToolStripMenuItem.Text = "Cop&y"; // // mPasteToolStripMenuItem @@ -282,32 +288,33 @@ this.mPasteToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta; this.mPasteToolStripMenuItem.Name = "mPasteToolStripMenuItem"; this.mPasteToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V))); - this.mPasteToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.mPasteToolStripMenuItem.Size = new System.Drawing.Size(167, 22); this.mPasteToolStripMenuItem.Text = "&Paste"; // // mDeleteToolStripMenuItem // this.mDeleteToolStripMenuItem.Name = "mDeleteToolStripMenuItem"; this.mDeleteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Delete; - this.mDeleteToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.mDeleteToolStripMenuItem.Size = new System.Drawing.Size(167, 22); this.mDeleteToolStripMenuItem.Text = "&Delete"; // // toolStripSeparator4 // this.toolStripSeparator4.Name = "toolStripSeparator4"; - this.toolStripSeparator4.Size = new System.Drawing.Size(149, 6); + this.toolStripSeparator4.Size = new System.Drawing.Size(164, 6); // // metadataToolStripMenuItem // this.metadataToolStripMenuItem.Name = "metadataToolStripMenuItem"; - this.metadataToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.metadataToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.M))); + this.metadataToolStripMenuItem.Size = new System.Drawing.Size(167, 22); this.metadataToolStripMenuItem.Text = "&Metadata"; this.metadataToolStripMenuItem.Click += new System.EventHandler(this.metadataToolStripMenuItem_Click); // // touchProjectToolStripMenuItem // this.touchProjectToolStripMenuItem.Name = "touchProjectToolStripMenuItem"; - this.touchProjectToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.touchProjectToolStripMenuItem.Size = new System.Drawing.Size(167, 22); this.touchProjectToolStripMenuItem.Text = "&Touch project"; this.touchProjectToolStripMenuItem.Click += new System.EventHandler(this.touchProjectToolStripMenuItem_Click); // @@ -331,42 +338,47 @@ // mShowhideTableOfCOntentsToolStripMenuItem // this.mShowhideTableOfCOntentsToolStripMenuItem.Name = "mShowhideTableOfCOntentsToolStripMenuItem"; - this.mShowhideTableOfCOntentsToolStripMenuItem.Size = new System.Drawing.Size(192, 22); + this.mShowhideTableOfCOntentsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.T))); + this.mShowhideTableOfCOntentsToolStripMenuItem.Size = new System.Drawing.Size(233, 22); this.mShowhideTableOfCOntentsToolStripMenuItem.Text = "Show &table of contents "; this.mShowhideTableOfCOntentsToolStripMenuItem.Click += new System.EventHandler(this.mShowhideTableOfContentsToolStripMenuItem_Click); // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(189, 6); + this.toolStripSeparator1.Size = new System.Drawing.Size(230, 6); // // mAddSectionToolStripMenuItem // this.mAddSectionToolStripMenuItem.Name = "mAddSectionToolStripMenuItem"; - this.mAddSectionToolStripMenuItem.Size = new System.Drawing.Size(192, 22); + this.mAddSectionToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A))); + this.mAddSectionToolStripMenuItem.Size = new System.Drawing.Size(233, 22); this.mAddSectionToolStripMenuItem.Text = "&Add section"; // // mAddSubSectionToolStripMenuItem // this.mAddSubSectionToolStripMenuItem.Name = "mAddSubSectionToolStripMenuItem"; - this.mAddSubSectionToolStripMenuItem.Size = new System.Drawing.Size(192, 22); + this.mAddSubSectionToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.B))); + this.mAddSubSectionToolStripMenuItem.Size = new System.Drawing.Size(233, 22); this.mAddSubSectionToolStripMenuItem.Text = "Add &sub-section"; // // toolStripSeparator7 // this.toolStripSeparator7.Name = "toolStripSeparator7"; - this.toolStripSeparator7.Size = new System.Drawing.Size(189, 6); + this.toolStripSeparator7.Size = new System.Drawing.Size(230, 6); // // mDeleteSectionToolStripMenuItem // this.mDeleteSectionToolStripMenuItem.Name = "mDeleteSectionToolStripMenuItem"; - this.mDeleteSectionToolStripMenuItem.Size = new System.Drawing.Size(192, 22); + this.mDeleteSectionToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Delete; + this.mDeleteSectionToolStripMenuItem.Size = new System.Drawing.Size(233, 22); this.mDeleteSectionToolStripMenuItem.Text = "&Delete section"; // // mRenameSectionToolStripMenuItem // this.mRenameSectionToolStripMenuItem.Name = "mRenameSectionToolStripMenuItem"; - this.mRenameSectionToolStripMenuItem.Size = new System.Drawing.Size(192, 22); + this.mRenameSectionToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F2; + this.mRenameSectionToolStripMenuItem.Size = new System.Drawing.Size(233, 22); this.mRenameSectionToolStripMenuItem.Text = "Re&name section"; // // mMoveSectionToolStripMenuItem @@ -377,42 +389,47 @@ this.mMoveInToolStripMenuItem, this.mMoveOutToolStripMenuItem}); this.mMoveSectionToolStripMenuItem.Name = "mMoveSectionToolStripMenuItem"; - this.mMoveSectionToolStripMenuItem.Size = new System.Drawing.Size(192, 22); + this.mMoveSectionToolStripMenuItem.Size = new System.Drawing.Size(233, 22); this.mMoveSectionToolStripMenuItem.Text = "&Move section..."; // // mMoveUpToolStripMenuItem // this.mMoveUpToolStripMenuItem.Name = "mMoveUpToolStripMenuItem"; - this.mMoveUpToolStripMenuItem.Size = new System.Drawing.Size(98, 22); + this.mMoveUpToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Up))); + this.mMoveUpToolStripMenuItem.Size = new System.Drawing.Size(171, 22); this.mMoveUpToolStripMenuItem.Text = "&Up"; // // mMoveDownToolStripMenuItem // this.mMoveDownToolStripMenuItem.Name = "mMoveDownToolStripMenuItem"; - this.mMoveDownToolStripMenuItem.Size = new System.Drawing.Size(98, 22); + this.mMoveDownToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Down))); + this.mMoveDownToolStripMenuItem.Size = new System.Drawing.Size(171, 22); this.mMoveDownToolStripMenuItem.Text = "&Down"; // // mMoveInToolStripMenuItem // this.mMoveInToolStripMenuItem.Name = "mMoveInToolStripMenuItem"; - this.mMoveInToolStripMenuItem.Size = new System.Drawing.Size(98, 22); + this.mMoveInToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Right))); + this.mMoveInToolStripMenuItem.Size = new System.Drawing.Size(171, 22); this.mMoveInToolStripMenuItem.Text = "&In"; // // mMoveOutToolStripMenuItem // this.mMoveOutToolStripMenuItem.Name = "mMoveOutToolStripMenuItem"; - this.mMoveOutToolStripMenuItem.Size = new System.Drawing.Size(98, 22); + this.mMoveOutToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Left))); + this.mMoveOutToolStripMenuItem.Size = new System.Drawing.Size(171, 22); this.mMoveOutToolStripMenuItem.Text = "&Out"; // // toolStripSeparator6 // this.toolStripSeparator6.Name = "toolStripSeparator6"; - this.toolStripSeparator6.Size = new System.Drawing.Size(189, 6); + this.toolStripSeparator6.Size = new System.Drawing.Size(230, 6); // // mShowInStripviewToolStripMenuItem // this.mShowInStripviewToolStripMenuItem.Name = "mShowInStripviewToolStripMenuItem"; - this.mShowInStripviewToolStripMenuItem.Size = new System.Drawing.Size(192, 22); + this.mShowInStripviewToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.V))); + this.mShowInStripviewToolStripMenuItem.Size = new System.Drawing.Size(233, 22); this.mShowInStripviewToolStripMenuItem.Text = "Show in strip &view"; // // mStripsToolStripMenuItem @@ -434,96 +451,105 @@ this.splitFirstAudioBlockToolStripMenuItem, this.startRecordingToolStripMenuItem}); this.mStripsToolStripMenuItem.Name = "mStripsToolStripMenuItem"; - this.mStripsToolStripMenuItem.Size = new System.Drawing.Size(47, 20); + this.mStripsToolStripMenuItem.Size = new System.Drawing.Size(46, 20); this.mStripsToolStripMenuItem.Text = "&Strips"; // // mAddStripToolStripMenuItem // this.mAddStripToolStripMenuItem.Name = "mAddStripToolStripMenuItem"; - this.mAddStripToolStripMenuItem.Size = new System.Drawing.Size(231, 22); + this.mAddStripToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A))); + this.mAddStripToolStripMenuItem.Size = new System.Drawing.Size(259, 22); this.mAddStripToolStripMenuItem.Text = "&Add strip"; // // mRenameStripToolStripMenuItem // this.mRenameStripToolStripMenuItem.Name = "mRenameStripToolStripMenuItem"; - this.mRenameStripToolStripMenuItem.Size = new System.Drawing.Size(231, 22); + this.mRenameStripToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Shift | System.Windows.Forms.Keys.F2))); + this.mRenameStripToolStripMenuItem.Size = new System.Drawing.Size(259, 22); this.mRenameStripToolStripMenuItem.Text = "&Rename strip"; // // toolStripSeparator5 // this.toolStripSeparator5.Name = "toolStripSeparator5"; - this.toolStripSeparator5.Size = new System.Drawing.Size(228, 6); + this.toolStripSeparator5.Size = new System.Drawing.Size(256, 6); // // mImportAudioFileToolStripMenuItem // this.mImportAudioFileToolStripMenuItem.Name = "mImportAudioFileToolStripMenuItem"; - this.mImportAudioFileToolStripMenuItem.Size = new System.Drawing.Size(231, 22); + this.mImportAudioFileToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.I))); + this.mImportAudioFileToolStripMenuItem.Size = new System.Drawing.Size(259, 22); this.mImportAudioFileToolStripMenuItem.Text = "&Import audio file"; // // mPlayAudioBlockToolStripMenuItem // this.mPlayAudioBlockToolStripMenuItem.Name = "mPlayAudioBlockToolStripMenuItem"; - this.mPlayAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(231, 22); + this.mPlayAudioBlockToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.Space))); + this.mPlayAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(259, 22); this.mPlayAudioBlockToolStripMenuItem.Text = "&Play audio block"; // // mSplitAudioBlockToolStripMenuItem // this.mSplitAudioBlockToolStripMenuItem.Name = "mSplitAudioBlockToolStripMenuItem"; - this.mSplitAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(231, 22); + this.mSplitAudioBlockToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.P))); + this.mSplitAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(259, 22); this.mSplitAudioBlockToolStripMenuItem.Text = "&Split audio block"; // // mMergeWithNextAudioBlockToolStripMenuItem // this.mMergeWithNextAudioBlockToolStripMenuItem.Name = "mMergeWithNextAudioBlockToolStripMenuItem"; - this.mMergeWithNextAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(231, 22); + this.mMergeWithNextAudioBlockToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.M))); + this.mMergeWithNextAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(259, 22); this.mMergeWithNextAudioBlockToolStripMenuItem.Text = "&Merge with next audio block"; // // mDeleteAudioBlockToolStripMenuItem // this.mDeleteAudioBlockToolStripMenuItem.Name = "mDeleteAudioBlockToolStripMenuItem"; - this.mDeleteAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(231, 22); + this.mDeleteAudioBlockToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Delete; + this.mDeleteAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(259, 22); this.mDeleteAudioBlockToolStripMenuItem.Text = "&Delete audio block"; // // mRenameAudioBlockToolStripMenuItem // this.mRenameAudioBlockToolStripMenuItem.Name = "mRenameAudioBlockToolStripMenuItem"; - this.mRenameAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(231, 22); + this.mRenameAudioBlockToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F2; + this.mRenameAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(259, 22); this.mRenameAudioBlockToolStripMenuItem.Text = "Re&name audio block"; // // toolStripSeparator8 // this.toolStripSeparator8.Name = "toolStripSeparator8"; - this.toolStripSeparator8.Size = new System.Drawing.Size(228, 6); + this.toolStripSeparator8.Size = new System.Drawing.Size(256, 6); // // mShowInTOCViewToolStripMenuItem // this.mShowInTOCViewToolStripMenuItem.Name = "mShowInTOCViewToolStripMenuItem"; - this.mShowInTOCViewToolStripMenuItem.Size = new System.Drawing.Size(231, 22); + this.mShowInTOCViewToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.V))); + this.mShowInTOCViewToolStripMenuItem.Size = new System.Drawing.Size(259, 22); this.mShowInTOCViewToolStripMenuItem.Text = "Show in &TOC view"; // // toolStripSeparator9 // this.toolStripSeparator9.Name = "toolStripSeparator9"; - this.toolStripSeparator9.Size = new System.Drawing.Size(228, 6); + this.toolStripSeparator9.Size = new System.Drawing.Size(256, 6); // // playFirstPhraseToolStripMenuItem // this.playFirstPhraseToolStripMenuItem.Name = "playFirstPhraseToolStripMenuItem"; - this.playFirstPhraseToolStripMenuItem.Size = new System.Drawing.Size(231, 22); + this.playFirstPhraseToolStripMenuItem.Size = new System.Drawing.Size(259, 22); this.playFirstPhraseToolStripMenuItem.Text = "P&lay first audio block (DEBUG)"; this.playFirstPhraseToolStripMenuItem.Click += new System.EventHandler(this.playFirstPhraseToolStripMenuItem_Click); // // splitFirstAudioBlockToolStripMenuItem // this.splitFirstAudioBlockToolStripMenuItem.Name = "splitFirstAudioBlockToolStripMenuItem"; - this.splitFirstAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(231, 22); + this.splitFirstAudioBlockToolStripMenuItem.Size = new System.Drawing.Size(259, 22); this.splitFirstAudioBlockToolStripMenuItem.Text = "Split &first audio block (DEBUG)"; this.splitFirstAudioBlockToolStripMenuItem.Click += new System.EventHandler(this.splitFirstAudioBlockToolStripMenuItem_Click); // // startRecordingToolStripMenuItem // this.startRecordingToolStripMenuItem.Name = "startRecordingToolStripMenuItem"; - this.startRecordingToolStripMenuItem.Size = new System.Drawing.Size(231, 22); + this.startRecordingToolStripMenuItem.Size = new System.Drawing.Size(259, 22); this.startRecordingToolStripMenuItem.Text = "S&tart recording (DEBUG)"; this.startRecordingToolStripMenuItem.Click += new System.EventHandler(this.startRecordingToolStripMenuItem_Click); // @@ -536,39 +562,42 @@ this.toolStripSeparator10, this.dumpTreeDEBUGToolStripMenuItem}); this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem"; - this.toolsToolStripMenuItem.Size = new System.Drawing.Size(45, 20); + this.toolsToolStripMenuItem.Size = new System.Drawing.Size(44, 20); this.toolsToolStripMenuItem.Text = "&Tools"; // // userSettingsToolStripMenuItem // this.userSettingsToolStripMenuItem.Name = "userSettingsToolStripMenuItem"; - this.userSettingsToolStripMenuItem.Size = new System.Drawing.Size(174, 22); + this.userSettingsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.U))); + this.userSettingsToolStripMenuItem.Size = new System.Drawing.Size(214, 22); this.userSettingsToolStripMenuItem.Text = "&User profile"; this.userSettingsToolStripMenuItem.Click += new System.EventHandler(this.userSettingsToolStripMenuItem_Click); // // preferencesToolStripMenuItem // this.preferencesToolStripMenuItem.Name = "preferencesToolStripMenuItem"; - this.preferencesToolStripMenuItem.Size = new System.Drawing.Size(174, 22); + this.preferencesToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.P))); + this.preferencesToolStripMenuItem.Size = new System.Drawing.Size(214, 22); this.preferencesToolStripMenuItem.Text = "&Project preferences"; this.preferencesToolStripMenuItem.Click += new System.EventHandler(this.preferencesToolStripMenuItem_Click); // // audioPreferencesToolStripMenuItem // this.audioPreferencesToolStripMenuItem.Name = "audioPreferencesToolStripMenuItem"; - this.audioPreferencesToolStripMenuItem.Size = new System.Drawing.Size(174, 22); + this.audioPreferencesToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.A))); + this.audioPreferencesToolStripMenuItem.Size = new System.Drawing.Size(214, 22); this.audioPreferencesToolStripMenuItem.Text = "&Audio preferences"; this.audioPreferencesToolStripMenuItem.Click += new System.EventHandler(this.audioPreferencesToolStripMenuItem_Click); // // toolStripSeparator10 // this.toolStripSeparator10.Name = "toolStripSeparator10"; - this.toolStripSeparator10.Size = new System.Drawing.Size(171, 6); + this.toolStripSeparator10.Size = new System.Drawing.Size(211, 6); // // dumpTreeDEBUGToolStripMenuItem // this.dumpTreeDEBUGToolStripMenuItem.Name = "dumpTreeDEBUGToolStripMenuItem"; - this.dumpTreeDEBUGToolStripMenuItem.Size = new System.Drawing.Size(174, 22); + this.dumpTreeDEBUGToolStripMenuItem.Size = new System.Drawing.Size(214, 22); this.dumpTreeDEBUGToolStripMenuItem.Text = "&Dump tree (DEBUG)"; this.dumpTreeDEBUGToolStripMenuItem.Click += new System.EventHandler(this.dumpTreeDEBUGToolStripMenuItem_Click); // @@ -580,19 +609,20 @@ this.helpToolStripMenuItem.Name = "helpToolStripMenuItem"; this.helpToolStripMenuItem.Size = new System.Drawing.Size(40, 20); this.helpToolStripMenuItem.Text = "&Help"; + this.helpToolStripMenuItem.Click += new System.EventHandler(this.helpToolStripMenuItem_Click); // // mHelpToolStripMenuItem1 // this.mHelpToolStripMenuItem1.Name = "mHelpToolStripMenuItem1"; this.mHelpToolStripMenuItem1.ShortcutKeys = System.Windows.Forms.Keys.F1; - this.mHelpToolStripMenuItem1.Size = new System.Drawing.Size(134, 22); + this.mHelpToolStripMenuItem1.Size = new System.Drawing.Size(148, 22); this.mHelpToolStripMenuItem1.Text = "&Contents"; this.mHelpToolStripMenuItem1.Click += new System.EventHandler(this.mHelpToolStripMenuItem1_Click); // // aboutObiToolStripMenuItem // this.aboutObiToolStripMenuItem.Name = "aboutObiToolStripMenuItem"; - this.aboutObiToolStripMenuItem.Size = new System.Drawing.Size(134, 22); + this.aboutObiToolStripMenuItem.Size = new System.Drawing.Size(148, 22); this.aboutObiToolStripMenuItem.Text = "&About Obi"; this.aboutObiToolStripMenuItem.Click += new System.EventHandler(this.aboutObiToolStripMenuItem_Click); // @@ -600,7 +630,7 @@ // this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.toolStripStatusLabel1}); - this.statusStrip1.Location = new System.Drawing.Point(0, 480); + this.statusStrip1.Location = new System.Drawing.Point(0, 522); this.statusStrip1.Name = "statusStrip1"; this.statusStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.ManagerRenderMode; this.statusStrip1.Size = new System.Drawing.Size(775, 22); @@ -619,18 +649,18 @@ | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.mProjectPanel.BackColor = System.Drawing.Color.White; - this.mProjectPanel.Location = new System.Drawing.Point(4, 27); + this.mProjectPanel.Location = new System.Drawing.Point(4, 29); this.mProjectPanel.Name = "mProjectPanel"; this.mProjectPanel.Project = null; - this.mProjectPanel.Size = new System.Drawing.Size(767, 450); + this.mProjectPanel.Size = new System.Drawing.Size(767, 488); this.mProjectPanel.TabIndex = 4; // // ObiForm // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.Color.White; - this.ClientSize = new System.Drawing.Size(775, 502); + this.ClientSize = new System.Drawing.Size(775, 544); this.Controls.Add(this.mProjectPanel); this.Controls.Add(this.statusStrip1); this.Controls.Add(this.menuStrip1); Modified: trunk/urakawa/application/Obi/Obi/help_en.html =================================================================== --- trunk/urakawa/application/Obi/Obi/help_en.html 2006-08-13 04:39:37 UTC (rev 862) +++ trunk/urakawa/application/Obi/Obi/help_en.html 2006-08-13 08:46:33 UTC (rev 863) @@ -1,11 +1,114 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"> - <head> - <title>Help</title> - </head> - <body> - <h1>Help</h1> - <p>Help goes here.</p> - </body> +<head> +<title>Obi Manual</title> +<style type="text/css"> + +</style> +</head> + +<body> +<h1>Obi Manual</h1> + +<h2 id="toc">Table of Contents</h2> + +<h2 id="intro">Obi - DAISY/NISO DTB Production Tool</h2> + <h3>What is Obi?</h3> + <h3>Obi Online - Community Help and Support</h3> + +<h2>Getting Started</h2> + <h3>Main Window Overview</h3> + <h4>The TOC View</h4> + <h4>The Strip View</h4> + <h3>Setting Preferences</h3> + <h3>Create a New Project</h3> + <h3>Record and Edit the Project</h3> + <h3>Save the Project</h3> + <h3>Please enjoy the DAISY/NIDO DTB</h3> + +<h2>Obi Windows - details</h2> + <h3>Main Window</h3> + <h4>TOC View</h4> + <h4>Strip View</h4> + <h4>Record Dialog</h4> + <h4>Play Dialog</h4> + <h4>Split Dialog</h4> + + <h3>Metadata Dialog</h3> + + <h3>Preferences Dialog</h3> + + <h3>User Profile Dialog</h3> + +<h2 id="gloss">Glossary of Terms</h2> +<dl> + Block + Phrase + Section + Strip + XUK File Format +</dl> + +<h2 id="kbd">Keyboard Shortcut Table</h2> +<!-- +Project modification invocations by default use the CTRL modkey +(unless there is a preferred Windows standard heritage key, for example F2 = rename, DEL = delete). +View modifications (that change the GUI but not the project itself) by default use the ALT modkey +--> +<table> + New Project CTRL+N + Open Project CTRL+O + Save Project CTRL+S + Save Project as CTRL+SHIFT+S + Close Project CTRL+W + Exit ALT+F4 + + Undo CTRL+Z + Redo CTRL+Y + Cut CTRL+X + Copy CTRL+C + Paste CTRL+V + Delete Del + + Hide TOC View ALT+T + Show TOC View ALT+T + + Add section CTRL+A + Add subsection CTRL+B + Delete section DEL + Rename section F2 + Move Section Up CTRL+UP + Move Section Down CTRL+DOWN + Move Section In CTRL+RIGHT + Move Section Out CTRL+LEFT + + Show in Strip View ALT+V + Show in TOC View ALT+V + + Add strip CTRL+A + Rename strip SHIFT+F2 (because of selection ambivalence in strips) + Import audio file CTRL+I + Play audio block ALT+Space (should be space alone) + Split audio block CTRL+P + Merge with next audio block CTRL+M + Delete audio block DEL + Rename audio block F2 + + Open Record Dialog ALT+R + + Open Help F1 + + Open Metadata dialog ALT+M + + Open Audio Preferences ALT+A + + Open Project Preferences ALT+P + + Open User Profile Dialog ALT+U + +</table> + + +</body> </html> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2006-08-13 13:16:46
|
Revision: 867 Author: julienq Date: 2006-08-13 06:16:37 -0700 (Sun, 13 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=867&view=rev Log Message: ----------- Minor changes to recording. Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Audio/AudioRecorder.cs trunk/urakawa/application/Obi/Obi/Dialogs/Record.cs trunk/urakawa/application/Obi/Obi/Project.Blocks.cs trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Blocks.cs trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.ContextMenu.cs Modified: trunk/urakawa/application/Obi/Obi/Audio/AudioRecorder.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Audio/AudioRecorder.cs 2006-08-13 13:04:46 UTC (rev 866) +++ trunk/urakawa/application/Obi/Obi/Audio/AudioRecorder.cs 2006-08-13 13:16:37 UTC (rev 867) @@ -174,8 +174,8 @@ m_Channels = asset.Channels; m_SampleRate = asset.SampleRate; m_bitDepth = asset.BitDepth; - // mAsset = new Assets.AudioMediaAsset(m_Channels, m_bitDepth, m_SampleRate); - // mAsset = asset.Copy() as Assets.AudioMediaAsset; + mAsset = new Assets.AudioMediaAsset(m_Channels, m_bitDepth, m_SampleRate); // why create a new asset here? + mAsset = asset.Copy() as Assets.AudioMediaAsset; // Assets.AssetManager manager = mAsset.Manager as Assets.AssetManager; sProjectDirectory= asset.Manager.AssetsDirectory ; InputFormat = GetInputFormat(); Modified: trunk/urakawa/application/Obi/Obi/Dialogs/Record.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Dialogs/Record.cs 2006-08-13 13:04:46 UTC (rev 866) +++ trunk/urakawa/application/Obi/Obi/Dialogs/Record.cs 2006-08-13 13:16:37 UTC (rev 867) @@ -171,6 +171,7 @@ private void Record_FormClosing(object sender, FormClosingEventArgs e) { + mTimer.Enabled = false; Audio.AudioRecorder.Instance.StopRecording(); // Audio.AudioRecorder.Instance.VuMeterObject.CloseVuMeterForm(); } Modified: trunk/urakawa/application/Obi/Obi/Project.Blocks.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.Blocks.cs 2006-08-13 13:04:46 UTC (rev 866) +++ trunk/urakawa/application/Obi/Obi/Project.Blocks.cs 2006-08-13 13:16:37 UTC (rev 867) @@ -168,6 +168,11 @@ StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); } + internal void FinishRecordingPhrase(object sender, Events.Audio.Recorder.PhraseEventArgs e, CoreNode parent, int index) + { + UpdateSeq(parent.getChild(index)); + } + #endregion #region backend functions Modified: trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Blocks.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Blocks.cs 2006-08-13 13:04:46 UTC (rev 866) +++ trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.Blocks.cs 2006-08-13 13:16:37 UTC (rev 867) @@ -115,15 +115,6 @@ System.Diagnostics.Debug.Print("REC#{0} continuing {1}", index, e.Asset.Name); } - /// <summary> - /// The recorder is finishing to record a phrase at some index. The timinig of the audio block is updated, - /// and the index is incremented. - /// </summary> - private void Record_FinishingPhrase(object sender, Events.Audio.Recorder.PhraseEventArgs e, int index) - { - System.Diagnostics.Debug.Print("REC#{0} finishing {1}", index, e.Asset.Name); - } - #endregion } } \ No newline at end of file Modified: trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.ContextMenu.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.ContextMenu.cs 2006-08-13 13:04:46 UTC (rev 866) +++ trunk/urakawa/application/Obi/Obi/UserControls/StripManagerPanel.ContextMenu.cs 2006-08-13 13:16:37 UTC (rev 867) @@ -90,14 +90,9 @@ dialog.FinishingPhrase += new Events.Audio.Recorder.FinishingPhraseHandler( delegate(object _sender, Events.Audio.Recorder.PhraseEventArgs _e) { - Record_FinishingPhrase(_sender, _e, index); + mProjectPanel.Project.FinishRecordingPhrase(_sender, _e, mSelectedSection, index); }); - if (dialog.ShowDialog() == DialogResult.OK) - { - foreach (Assets.AudioMediaAsset asset in dialog.Assets) - { - } - } + dialog.ShowDialog(); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |