]> git.sesse.net Git - vlc/blobdiff - modules/gui/wxwindows/menus.cpp
* modules/gui/wxwindows/*: The wxwindows interface is now a "dialogs provider" module...
[vlc] / modules / gui / wxwindows / menus.cpp
index 68d62bcad65a8c67257c385a4d74bd805b080f88..4eab7558446e002cfb422bf71cff969487032047 100644 (file)
@@ -2,7 +2,7 @@
  * menus.cpp : wxWindows plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000-2001 VideoLAN
- * $Id: menus.cpp,v 1.15 2003/06/05 21:22:28 gbazin Exp $
+ * $Id: menus.cpp,v 1.16 2003/07/17 17:30:40 gbazin Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *
@@ -79,23 +79,39 @@ private:
 enum
 {
     /* menu items */
-    FirstAutoGenerated_Event = wxID_HIGHEST + 1000,
-    MenuDummy_Event,
-    AudioMenu_Events,
-    VideoMenu_Events = wxID_HIGHEST + 1100,
-    NavigMenu_Events = wxID_HIGHEST + 1200,
-    PopupMenu_Events = wxID_HIGHEST + 1300,
+    MenuDummy_Event = wxID_HIGHEST + 1000,
+    OpenFileSimple_Event,
+    OpenFile_Event,
+    OpenDisc_Event,
+    OpenNet_Event,
+    FirstAutoGenerated_Event = wxID_HIGHEST + 1999,
+    AudioMenu_Events = wxID_HIGHEST + 2000,
+    VideoMenu_Events = wxID_HIGHEST + 3000,
+    NavigMenu_Events = wxID_HIGHEST + 4000,
+    PopupMenu_Events = wxID_HIGHEST + 5000
 };
 
 BEGIN_EVENT_TABLE(Menu, wxMenu)
-    /* Menu events */
-    EVT_MENU(MenuDummy_Event, Menu::OnEntrySelected)
 END_EVENT_TABLE()
 
 BEGIN_EVENT_TABLE(MenuEvtHandler, wxEvtHandler)
+    EVT_MENU(OpenFileSimple_Event, MenuEvtHandler::OnShowDialog)
+    EVT_MENU(OpenFile_Event, MenuEvtHandler::OnShowDialog)
+    EVT_MENU(OpenDisc_Event, MenuEvtHandler::OnShowDialog)
+    EVT_MENU(OpenNet_Event, MenuEvtHandler::OnShowDialog)
     EVT_MENU(-1, MenuEvtHandler::OnMenuEvent)
 END_EVENT_TABLE()
 
+wxMenu *OpenStreamMenu( intf_thread_t *p_intf )
+{
+    wxMenu *menu = new wxMenu;
+    menu->Append( OpenFileSimple_Event, wxU(_("Simple &Open ...")) );
+    menu->Append( OpenFile_Event, wxU(_("Open &File...")) );
+    menu->Append( OpenDisc_Event, wxU(_("Open &Disc...")) );
+    menu->Append( OpenNet_Event, wxU(_("Open &Network Stream...")) );
+    return menu;
+}
+
 void PopupMenu( intf_thread_t *p_intf, wxWindow *p_parent,
                 const wxPoint& pos )
 {
@@ -168,14 +184,19 @@ void PopupMenu( intf_thread_t *p_intf, wxWindow *p_parent,
         vlc_object_release( p_object );
     }
 
-    /* Misc stuff */
-    ppsz_varnames[i++] = NULL; /* Separator */
-    ppsz_varnames[i++] = _("Close Menu");
-
     /* Build menu */
     Menu popupmenu( p_intf, p_parent, i,
                      ppsz_varnames, pi_objects, PopupMenu_Events );
 
+#if 1
+    /* Add static entries */
+    popupmenu.AppendSeparator();
+    popupmenu.Append( MenuDummy_Event, wxU("Open"),
+                      OpenStreamMenu( p_intf ), wxT("") );
+    popupmenu.AppendSeparator();
+    popupmenu.Append( MenuDummy_Event, wxU(_("Close Menu")) );
+#endif
+
     p_intf->p_sys->p_popup_menu = &popupmenu;
     p_parent->PopupMenu( &popupmenu, pos.x, pos.y );
     p_intf->p_sys->p_popup_menu = NULL;
@@ -346,10 +367,6 @@ Menu::~Menu()
 /*****************************************************************************
  * Private methods.
  *****************************************************************************/
-void Menu::OnEntrySelected( wxCommandEvent& WXUNUSED(event) )
-{
-}
-
 void Menu::CreateMenuItem( wxMenu *menu, char *psz_var,
                            vlc_object_t *p_object )
 {
@@ -516,7 +533,8 @@ wxMenu *Menu::CreateChoicesMenu( char *psz_var, vlc_object_t *p_object )
           menuitem =
               new wxMenuItemExt( menu, ++i_item_id,
                                  text_list.p_list->p_values[i].psz_string ?
-                                 wxU(text_list.p_list->p_values[i].psz_string):
+                                 (wxString)wxU(
+                                   text_list.p_list->p_values[i].psz_string) :
                                  wxString::Format(wxT("%d"),
                                  val_list.p_list->p_values[i].i_int),
                                  wxT(""), wxITEM_RADIO, strdup(psz_var),
@@ -541,6 +559,36 @@ wxMenu *Menu::CreateChoicesMenu( char *psz_var, vlc_object_t *p_object )
     return menu;
 }
 
+void Menu::OnShowDialog( wxCommandEvent& event )
+{
+    if( p_intf->p_sys->pf_show_dialog )
+    {
+        int i_id;
+
+        switch( event.GetId() )
+        {
+        case OpenFileSimple_Event:
+            i_id = INTF_DIALOG_FILE_SIMPLE;
+            break;
+        case OpenFile_Event:
+            i_id = INTF_DIALOG_FILE;
+            break;
+        case OpenDisc_Event:
+            i_id = INTF_DIALOG_DISC;
+            break;
+        case OpenNet_Event:
+            i_id = INTF_DIALOG_NET;
+            break;
+        default:
+            i_id = INTF_DIALOG_FILE;
+            break;
+
+        }
+
+        p_intf->p_sys->pf_show_dialog( p_intf, i_id, 1 );
+    }
+}
+
 /*****************************************************************************
  * A small helper class which intercepts all popup menu events
  *****************************************************************************/
@@ -556,6 +604,36 @@ MenuEvtHandler::~MenuEvtHandler()
 {
 }
 
+void MenuEvtHandler::OnShowDialog( wxCommandEvent& event )
+{
+    if( p_intf->p_sys->pf_show_dialog )
+    {
+        int i_id;
+
+        switch( event.GetId() )
+        {
+        case OpenFileSimple_Event:
+            i_id = INTF_DIALOG_FILE_SIMPLE;
+            break;
+        case OpenFile_Event:
+            i_id = INTF_DIALOG_FILE;
+            break;
+        case OpenDisc_Event:
+            i_id = INTF_DIALOG_DISC;
+            break;
+        case OpenNet_Event:
+            i_id = INTF_DIALOG_NET;
+            break;
+        default:
+            i_id = INTF_DIALOG_FILE;
+            break;
+
+        }
+
+        p_intf->p_sys->pf_show_dialog( p_intf, i_id, 1 );
+    }
+}
+
 void MenuEvtHandler::OnMenuEvent( wxCommandEvent& event )
 {
     wxMenuItem *p_menuitem = NULL;