From: <ju...@us...> - 2008-05-16 10:30:50
|
Revision: 3074 http://urakawa.svn.sourceforge.net/urakawa/?rev=3074&view=rev Author: julienq Date: 2008-05-16 03:30:48 -0700 (Fri, 16 May 2008) Log Message: ----------- Navigate to next selection. Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/ObiForm.cs trunk/urakawa/application/Obi/Obi/Playlist.cs trunk/urakawa/application/Obi/Obi/ProjectView/ProjectView.cs trunk/urakawa/application/Obi/Obi/ProjectView/StripsView.cs trunk/urakawa/application/Obi/Obi/ProjectView/TransportBar.Designer.cs trunk/urakawa/application/Obi/Obi/ProjectView/TransportBar.cs Modified: trunk/urakawa/application/Obi/Obi/ObiForm.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/ObiForm.cs 2008-05-16 10:07:36 UTC (rev 3073) +++ trunk/urakawa/application/Obi/Obi/ObiForm.cs 2008-05-16 10:30:48 UTC (rev 3074) @@ -626,6 +626,7 @@ mPreviewFromToolStripMenuItem.Enabled = mProjectView.CanPreview; mPreviewUpToToolStripMenuItem.Enabled = mProjectView.CanPreview; mPreviewSelectedToolStripMenuItem.Enabled = mProjectView.CanPreviewAudioSelection; + mPreviousPhraseToolStripMenuItem.Enabled = mProjectView.CanNavigatePrevPhrase; mNextPhraseToolStripMenuItem.Enabled = mProjectView.CanNavigateNextPhrase; mFastForwardToolStripMenuItem.Enabled = mProjectView.CanFastForward; mRewindToolStripMenuItem.Enabled = mProjectView.CanRewind; @@ -664,6 +665,7 @@ private void PreviewFromtoolStripMenuItem_Click(object sender, EventArgs e) { mProjectView.TransportBar.Preview(true); } private void PreviewUptotoolStripMenuItem_Click(object sender, EventArgs e) { mProjectView.TransportBar.Preview(false); } private void PreviewSelectedAudiotoolStripMenuItem_Click(object sender, EventArgs e) { mProjectView.TransportBar.PreviewAudioSelection(); } + private void previousPhraseToolStripMenuItem_Click(object sender, EventArgs e) { mProjectView.TransportBar.PrevPhrase(); } private void nextPhraseToolStripMenuItem_Click(object sender, EventArgs e) { mProjectView.TransportBar.NextPhrase(); } private void rewindToolStripMenuItem_Click(object sender, EventArgs e) { mProjectView.TransportBar.Rewind(); } @@ -690,10 +692,6 @@ mProjectView.TransportBar.PrevSection(); } - private void previousPhraseToolStripMenuItem_Click(object sender, EventArgs e) - { - mProjectView.TransportBar.PrevPhrase(); - } private void previousPageToolStripMenuItem_Click(object sender, EventArgs e) { Modified: trunk/urakawa/application/Obi/Obi/Playlist.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Playlist.cs 2008-05-16 10:07:36 UTC (rev 3073) +++ trunk/urakawa/application/Obi/Obi/Playlist.cs 2008-05-16 10:30:48 UTC (rev 3074) @@ -95,14 +95,33 @@ /// </summary> public AudioPlayer Audioplayer { get { return mPlayer; } } + public bool CanNavigatePrevPhrase { get { return mCurrentPhraseIndex > 0; } } public bool CanNavigateNextPhrase { get { return mCurrentPhraseIndex < mPhrases.Count - 1; } } + public bool CanNavigateNextSection { get { return NextSectionIndex < mPhrases.Count - 1; } } + public PhraseNode PrevPhrase(PhraseNode node) + { + int index = mPhrases.IndexOf(node) - 1; + return index >= 0 ? mPhrases[index] : null; + } + public PhraseNode NextPhrase(PhraseNode node) { int index = mPhrases.IndexOf(node) + 1; return index < mPhrases.Count ? mPhrases[index] : null; } + public PhraseNode NextSection(PhraseNode node) + { + int index = mPhrases.IndexOf(node); + if (node != null) + { + for (; index < mPhrases.Count && mPhrases[index].AncestorAs<SectionNode>() == node.AncestorAs<SectionNode>(); ++index) { } + } + return index >= 0 && index < mPhrases.Count ? mPhrases[index] : null; + } + + /// <summary> /// Set the currently playing phrase directly. /// If playing, move to the beginning of the phrase. @@ -735,13 +754,6 @@ } /// <summary> - /// Move to the next phrase from a given node. - /// </summary> - public void NavigateToNextPhrase(ObiNode node) - { - } - - /// <summary> /// Move to the first phrase of the next section. Do nothing if we are already in the last section. /// </summary> public void NavigateToNextSection() Modified: trunk/urakawa/application/Obi/Obi/ProjectView/ProjectView.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/ProjectView/ProjectView.cs 2008-05-16 10:07:36 UTC (rev 3073) +++ trunk/urakawa/application/Obi/Obi/ProjectView/ProjectView.cs 2008-05-16 10:30:48 UTC (rev 3074) @@ -205,6 +205,7 @@ public bool CanInsertSection { get { return CanInsertStrip || mTOCView.Selection != null; } } public bool CanInsertStrip { get { return mStripsView.Selection != null; } } public bool CanMergeStripWithNext { get { return mStripsView.CanMergeStripWithNext; } } + public bool CanNavigatePrevPhrase { get { return mTransportBar.CanNavigatePrevPhrase; } } public bool CanNavigateNextPhrase { get { return mTransportBar.CanNavigateNextPhrase; } } public bool CanPaste { get { return mSelection != null && mSelection.CanPaste(mClipboard); } } public bool CanPasteBefore { get { return mTOCView.CanPasteBefore(mClipboard); } } @@ -1372,7 +1373,7 @@ public void SelectPhraseInContentView(PhraseNode node) { - Selection = new NodeSelection(node, mStripsView); + Selection = node == null ? null : new NodeSelection(node, mStripsView); } /// <summary> Modified: trunk/urakawa/application/Obi/Obi/ProjectView/StripsView.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/ProjectView/StripsView.cs 2008-05-16 10:07:36 UTC (rev 3073) +++ trunk/urakawa/application/Obi/Obi/ProjectView/StripsView.cs 2008-05-16 10:30:48 UTC (rev 3074) @@ -621,13 +621,18 @@ { mShortcutKeys = new Dictionary<Keys, HandledShortcutKey>(); + mShortcutKeys[Keys.C] = delegate() { return mView.TransportBar.PreviewAudioSelection(); }; + mShortcutKeys[Keys.H] = delegate() { return mView.TransportBar.NextSection(); }; + mShortcutKeys[Keys.J] = delegate() { return mView.TransportBar.PrevPhrase(); }; + mShortcutKeys[Keys.K] = delegate() { return mView.TransportBar.NextPhrase(); }; + mShortcutKeys[Keys.V] = delegate() { return mView.TransportBar.Preview(true); }; + mShortcutKeys[Keys.X] = delegate() { return mView.TransportBar.Preview(false); }; + + mShortcutKeys[Keys.A] = MarkSelectionWholePhrase; // playback shortcuts. - mShortcutKeys[Keys.J] = NavigatePrevPhrase; - mShortcutKeys[Keys.K] = NavigateNextPhrase; mShortcutKeys[Keys.Shift | Keys.H] = NavigatePrevSection; - mShortcutKeys[Keys.H] = NavigateNextSection; mShortcutKeys[Keys.Shift | Keys.P] = NavigatePrevPage; mShortcutKeys[Keys.P] = NavigateNextPage; @@ -640,9 +645,6 @@ mShortcutKeys[Keys.Shift | Keys.OemOpenBrackets] = MarkSelectionFromCursor; mShortcutKeys[Keys.Shift | Keys.OemCloseBrackets] = MarkSelectionToCursor; - mShortcutKeys[Keys.C] = delegate() { return mView.TransportBar.PreviewAudioSelection(); }; - mShortcutKeys[Keys.V] = delegate() { return mView.TransportBar.Preview(true); }; - mShortcutKeys[Keys.X] = delegate() { return mView.TransportBar.Preview(false); }; // Strips navigation mShortcutKeys[Keys.Left] = SelectPrecedingBlock; @@ -995,30 +997,12 @@ return true; } - private bool NavigateNextPhrase() - { - mView.TransportBar.NextPhrase(); - return true; - } - - private bool NavigateNextSection() - { - mView.TransportBar.NextSection(); - return true; - } - private bool NavigatePrevPage() { mView.TransportBar.PrevPage(); return true; } - private bool NavigatePrevPhrase() - { - mView.TransportBar.PrevPhrase(); - return true; - } - private bool NavigatePrevSection() { mView.TransportBar.PrevSection(); Modified: trunk/urakawa/application/Obi/Obi/ProjectView/TransportBar.Designer.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/ProjectView/TransportBar.Designer.cs 2008-05-16 10:07:36 UTC (rev 3073) +++ trunk/urakawa/application/Obi/Obi/ProjectView/TransportBar.Designer.cs 2008-05-16 10:30:48 UTC (rev 3074) @@ -98,7 +98,7 @@ this.mStopButton.Name = "mStopButton"; this.mStopButton.Size = new System.Drawing.Size(32, 35); this.mStopButton.TabIndex = 6; - this.mTransportBarTooltip.SetToolTip(this.mStopButton, "Stop audio playback or recording."); + this.mTransportBarTooltip.SetToolTip(this.mStopButton, "Stop audio playback or recording. (Ctrl+Space)"); this.mStopButton.UseVisualStyleBackColor = true; this.mStopButton.Click += new System.EventHandler(this.mStopButton_Click); // @@ -115,7 +115,7 @@ this.mNextPhrase.Name = "mNextPhrase"; this.mNextPhrase.Size = new System.Drawing.Size(32, 35); this.mNextPhrase.TabIndex = 9; - this.mTransportBarTooltip.SetToolTip(this.mNextPhrase, "Go to the following phrase."); + this.mTransportBarTooltip.SetToolTip(this.mNextPhrase, "Go to the following phrase. (K)"); this.mNextPhrase.UseVisualStyleBackColor = true; this.mNextPhrase.Click += new System.EventHandler(this.mNextPhrase_Click); // @@ -132,7 +132,7 @@ this.mPrevPhraseButton.Name = "mPrevPhraseButton"; this.mPrevPhraseButton.Size = new System.Drawing.Size(32, 35); this.mPrevPhraseButton.TabIndex = 2; - this.mTransportBarTooltip.SetToolTip(this.mPrevPhraseButton, "Go to the preceding phrase."); + this.mTransportBarTooltip.SetToolTip(this.mPrevPhraseButton, "Go to the preceding phrase. (J)"); this.mPrevPhraseButton.UseVisualStyleBackColor = true; this.mPrevPhraseButton.Click += new System.EventHandler(this.mPrevPhraseButton_Click); // @@ -149,7 +149,7 @@ this.mNextSectionButton.Name = "mNextSectionButton"; this.mNextSectionButton.Size = new System.Drawing.Size(32, 35); this.mNextSectionButton.TabIndex = 11; - this.mTransportBarTooltip.SetToolTip(this.mNextSectionButton, "Go to the following section."); + this.mTransportBarTooltip.SetToolTip(this.mNextSectionButton, "Go to the following section. (H)"); this.mNextSectionButton.UseVisualStyleBackColor = true; this.mNextSectionButton.Click += new System.EventHandler(this.mNextSectionButton_Click); // @@ -184,7 +184,7 @@ this.mRecordButton.Name = "mRecordButton"; this.mRecordButton.Size = new System.Drawing.Size(32, 35); this.mRecordButton.TabIndex = 7; - this.mTransportBarTooltip.SetToolTip(this.mRecordButton, "Start monitoring or recording."); + this.mTransportBarTooltip.SetToolTip(this.mRecordButton, "Start monitoring or recording. (Ctrl+R)"); this.mRecordButton.UseVisualStyleBackColor = true; this.mRecordButton.Click += new System.EventHandler(this.mRecordButton_Click); // Modified: trunk/urakawa/application/Obi/Obi/ProjectView/TransportBar.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/ProjectView/TransportBar.cs 2008-05-16 10:07:36 UTC (rev 3073) +++ trunk/urakawa/application/Obi/Obi/ProjectView/TransportBar.cs 2008-05-16 10:30:48 UTC (rev 3074) @@ -108,9 +108,7 @@ public bool CanFastForward { get { return Enabled && !IsRecorderActive; } } public bool CanMarkCustomClass { get { return Enabled && mView.CanMarkPhrase; } } public bool CanNavigateNextPage { get { return Enabled; } } - public bool CanNavigateNextSection { get { return Enabled; } } public bool CanNavigatePrevPage { get { return Enabled && mRecordingSession == null; } } - public bool CanNavigatePrevPhrase { get { return Enabled && mRecordingSession == null; } } public bool CanNavigatePrevSection { get { return Enabled && mRecordingSession == null; } } public bool CanPause { get { return Enabled && (mState == State.Playing || mState == State.Recording); } } public bool CanPlay { get { return Enabled && mState == State.Stopped; } } @@ -120,17 +118,34 @@ public bool CanRewind { get { return Enabled && !IsRecorderActive; } } public bool CanStop { get { return Enabled && (mState != State.Stopped || mView.Selection != null); } } + public bool CanNavigatePrevPhrase + { + get + { + return (IsPlayerActive && mCurrentPlaylist.CanNavigatePrevPhrase) || CanPlay; + } + } + public bool CanNavigateNextPhrase { get { - return Enabled && - (IsRecorderActive || + return IsRecorderActive || (IsPlayerActive && mCurrentPlaylist.CanNavigateNextPhrase) || - CanPlay); + CanPlay; } } + public bool CanNavigateNextSection + { + get + { + return IsRecorderActive || + (IsPlayerActive && mCurrentPlaylist.CanNavigateNextSection) || + CanPlay; + } + } + public bool CanPreview { get @@ -925,17 +940,6 @@ } /// <summary> - /// Move to or play the previous phrase. - /// </summary> - public void PrevPhrase() - { - if (Enabled && mRecordingSession == null) - { - mCurrentPlaylist.NavigateToPreviousPhrase(); - } - } - - /// <summary> /// Move to the previous section (i.e. first phrase of the previous section.) /// </summary> public void PrevSection() @@ -965,11 +969,40 @@ } /// <summary> + /// Move to or play the previous phrase. + /// </summary> + public bool PrevPhrase() + { + if (CanNavigateNextPhrase) + { + if (mState == State.Stopped) + { + if (mView.ObiForm.Settings.PlayOnNavigate) + { + PlayCurrentPlaylistFromSelection(); + mCurrentPlaylist.NavigateToPreviousPhrase(); + } + else + { + mView.SelectPhraseInContentView(mCurrentPlaylist.PrevPhrase( + FindPlaybackStartNode(mView.Selection == null ? null : mView.Selection.Node))); + } + } + else + { + mCurrentPlaylist.NavigateToPreviousPhrase(); + } + return true; + } + return false; + } + + /// <summary> /// Go to the next phrase. /// If recording, create a new phrase to record in. /// If playing or paused, /// </summary> - public void NextPhrase() + public bool NextPhrase() { if (CanNavigateNextPhrase) { @@ -1001,15 +1034,17 @@ { mCurrentPlaylist.NavigateToNextPhrase(); } + return true; } + return false; } /// <summary> /// Move to the next section (i.e. the first phrase of the next section) /// </summary> - public void NextSection() + public bool NextSection() { - if (Enabled) + if (CanNavigateNextSection) { if (mState == State.Recording) { @@ -1018,11 +1053,26 @@ mView.AddSection(); PrepareForRecording(true, null); } + else if (mState == State.Stopped) + { + if (mView.ObiForm.Settings.PlayOnNavigate) + { + PlayCurrentPlaylistFromSelection(); + mCurrentPlaylist.NavigateToNextSection(); + } + else + { + mView.SelectPhraseInContentView(mCurrentPlaylist.NextSection( + FindPlaybackStartNode(mView.Selection == null ? null : mView.Selection.Node))); + } + } else { mCurrentPlaylist.NavigateToNextSection(); } + return true; } + return false; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |