* 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>
*
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 )
{
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;
/*****************************************************************************
* Private methods.
*****************************************************************************/
-void Menu::OnEntrySelected( wxCommandEvent& WXUNUSED(event) )
-{
-}
-
void Menu::CreateMenuItem( wxMenu *menu, 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),
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
*****************************************************************************/
{
}
+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;