[audacity] [TrackPanel] New Patch for popupmenu

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[audacity] [TrackPanel] New Patch for popupmenu

Bquentin

Hello,

knowing that I is not got an answer I allow to you rewrite.

I'm Quentin, i'm student in computer science and i have made a context menu. I fixed my bug (problem with the closure : the program in the terminal don't stop) and I have attached a  patch.

however sometimes the menu opens and the other not, although I'm in my code. And the call of PopupMenu doesn't run forever. 

can you help me or have you an idea ? 

Thanks per advance,

Quentin.

Index: src/TrackPanel.h
===================================================================
--- src/TrackPanel.h (révision 11653)
+++ src/TrackPanel.h (copie de travail)
@@ -312,6 +312,23 @@
    virtual void Stretch(int mouseXCoordinate, int trackLeftEdge, Track *pTrack);
 #endif
 
+    // As : call functions for popipmenu
+    void OnPopupOpen(wxCommandEvent &evt);
+    void OnPopupCopy(wxCommandEvent &evt);
+    void OnPopupCut(wxCommandEvent &evt);
+    void OnPopupPaste(wxCommandEvent &evt);
+
+    void OnPopupDelete(wxCommandEvent &evt);
+
+    void OnPopupRedo(wxCommandEvent &evt);
+    void OnPopupUndo(wxCommandEvent &evt);
+
+    void OnPopupPlay(wxCommandEvent &evt);
+    void OnPopupPause(wxCommandEvent &evt);
+    void OnPopupStop(wxCommandEvent &evt);
+
+    void OnContext(wxMouseEvent & event);   
+
    // AS: Selection handling
    virtual void HandleSelect(wxMouseEvent & event);
    virtual void SelectionHandleDrag(wxMouseEvent &event, Track *pTrack);
@@ -676,6 +693,7 @@
    wxMenu *mRateMenu;
    wxMenu *mFormatMenu;
    wxMenu *mLabelTrackInfoMenu;
+   wxMenu *mPopUpMenu;
 
    Track *mPopupMenuTarget;
 
Index: src/TrackPanel.cpp
===================================================================
--- src/TrackPanel.cpp (révision 11653)
+++ src/TrackPanel.cpp (copie de travail)
@@ -313,6 +313,18 @@
    OnCutSelectedTextID,
    OnCopySelectedTextID,
    OnPasteSelectedTextID,
+
+   ID_OPEN,// <---------
+   ID_COPY,//           /
+   ID_CUT,//            /
+   ID_PASTE,//          / 
+   ID_DELETE,//         / For popupmenu
+   ID_REDO,//           /
+   ID_UNDO,//           /
+   ID_PLAY,//           /
+   ID_PAUSE, //         /
+   ID_STOP,//           /
+   ID_LOOPPLAY,// <-----
 };
 
 BEGIN_EVENT_TABLE(TrackPanel, wxWindow)
@@ -346,6 +358,17 @@
     EVT_MENU(OnCutSelectedTextID, TrackPanel::OnCutSelectedText)
     EVT_MENU(OnCopySelectedTextID, TrackPanel::OnCopySelectedText)
     EVT_MENU(OnPasteSelectedTextID, TrackPanel::OnPasteSelectedText)
+
+    EVT_MENU (ID_OPEN,TrackPanel::OnPopupOpen)
+    EVT_MENU (ID_COPY,TrackPanel::OnPopupCopy)
+    EVT_MENU (ID_CUT,TrackPanel::OnPopupCut)
+    EVT_MENU (ID_PASTE,TrackPanel::OnPopupPaste)
+    EVT_MENU (ID_DELETE,TrackPanel::OnPopupDelete)
+    EVT_MENU (ID_REDO,TrackPanel::OnPopupRedo)
+    EVT_MENU (ID_UNDO,TrackPanel::OnPopupUndo)
+    EVT_MENU (ID_PLAY,TrackPanel::OnPopupPlay)
+    EVT_MENU (ID_PAUSE,TrackPanel::OnPopupPause)
+    EVT_MENU (ID_STOP,TrackPanel::OnPopupStop)
 END_EVENT_TABLE()
 
 /// Makes a cursor from an XPM, uses CursorId as a fallback.
@@ -502,6 +525,7 @@
    mLabelTrackMenu = NULL;
    mLabelTrackInfoMenu = NULL;
    mTimeTrackMenu = NULL;
+   mPopUpMenu = NULL;
 
    BuildMenus();
 
@@ -680,6 +704,22 @@
    mLabelTrackInfoMenu->Append(OnCutSelectedTextID, _("Cut"));
    mLabelTrackInfoMenu->Append(OnCopySelectedTextID, _("Copy"));
    mLabelTrackInfoMenu->Append(OnPasteSelectedTextID, _("Paste"));
+
+   mPopUpMenu = new wxMenu();
+   mPopUpMenu->Append(ID_OPEN, wxString(_("Open        Ctrl+O ")));
+   mPopUpMenu->AppendSeparator();
+   mPopUpMenu->Append(ID_COPY, wxString(_("Copy        Ctrl+C ")));
+   mPopUpMenu->Append(ID_CUT, wxString(_("Cut            Ctrl+X ")));
+   mPopUpMenu->Append(ID_PASTE, wxString(_("Paste       Ctrl+V ")));
+   mPopUpMenu->AppendSeparator();
+   mPopUpMenu->Append(ID_DELETE, wxString(_("Delete      Ctrl+K ")));
+   mPopUpMenu->AppendSeparator();
+   mPopUpMenu->Append(ID_UNDO, wxString(_("Undo        Ctrl+Z ")));
+   mPopUpMenu->Append(ID_REDO, wxString(_("Redo        Maj+Ctrl+Z ")));
+   mPopUpMenu->AppendSeparator();
+   mPopUpMenu->Append(ID_PLAY, wxString(_("Play")));
+   mPopUpMenu->Append(ID_PAUSE, wxString(_("Pause       P")));
+   mPopUpMenu->Append(ID_STOP, wxString(_("Stop")));
 }
 
 void TrackPanel::DeleteMenus(void)
@@ -710,6 +750,11 @@
       delete mTimeTrackMenu;
       mTimeTrackMenu = NULL;
    }
+
+   if (mPopUpMenu) {
+      delete mPopUpMenu;
+      mPopUpMenu = NULL;
+   }
 }
 
 void TrackPanel::UpdatePrefs()
@@ -1827,6 +1872,11 @@
       SetCapturedTrack( NULL );
       MakeParentModifyState();
    } 
+
+   if (event.RightDown()) {   
+      PopupMenu(mPopUpMenu, event.GetX(), event.GetY() );
+   }
+
  done:
    SelectionHandleDrag(event, t);
 
@@ -1840,6 +1890,64 @@
    }
 }
 
+
+
+
+// Call functions for popupmenu
+void TrackPanel::OnPopupOpen(wxCommandEvent &evt){
+AudacityProject* mProject= GetActiveProject() ;
+mProject->OnOpen();
+
+}
+
+void TrackPanel::OnPopupCopy(wxCommandEvent &evt){
+AudacityProject* mProject= GetActiveProject() ;
+mProject->OnCopy();
+
+}
+
+void TrackPanel::OnPopupCut(wxCommandEvent &evt){
+AudacityProject *mProject = GetActiveProject();
+mProject->OnCut();
+}
+
+void TrackPanel::OnPopupPaste(wxCommandEvent &evt){
+AudacityProject *mProject = GetActiveProject();
+mProject->OnPaste();
+
+}
+
+void TrackPanel::OnPopupDelete(wxCommandEvent &evt){
+AudacityProject *mProject = GetActiveProject();
+mProject->OnDelete();
+}
+
+void TrackPanel::OnPopupRedo(wxCommandEvent &evt){
+AudacityProject *mProject = GetActiveProject();
+mProject->OnRedo();
+}
+
+void TrackPanel::OnPopupUndo(wxCommandEvent &evt){
+AudacityProject *mProject = GetActiveProject();
+mProject->OnUndo();
+}
+
+void TrackPanel::OnPopupPlay(wxCommandEvent &evt){
+AudacityProject *mProject = GetActiveProject();
+mProject->OnPlayStop();
+}
+
+void TrackPanel::OnPopupPause(wxCommandEvent &evt){
+AudacityProject *mProject = GetActiveProject();
+mProject->OnPause();
+}
+
+void TrackPanel::OnPopupStop(wxCommandEvent &evt){
+AudacityProject *mProject = GetActiveProject();
+mProject->OnStop();
+}
+
+
 /// This method gets called when we're handling selection
 /// and the mouse was just clicked.
 void TrackPanel::SelectionHandleClick(wxMouseEvent & event,

------------------------------------------------------------------------------
Better than sec? Nothing is better than sec when it comes to
monitoring Big Data applications. Try Boundary one-second
resolution app monitoring today. Free.
http://p.sf.net/sfu/Boundary-dev2dev
_______________________________________________
audacity-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel