Commit a53e5d1d authored by Gildas Bazin's avatar Gildas Bazin

* modules/gui/wxwindows/menus.cpp: re-organized right-click menu +...

* modules/gui/wxwindows/menus.cpp: re-organized right-click menu + play/pause/stop/next/previous entries.
parent aba6d6b0
...@@ -94,6 +94,11 @@ enum ...@@ -94,6 +94,11 @@ enum
MediaInfo_Event, MediaInfo_Event,
Messages_Event, Messages_Event,
Preferences_Event, Preferences_Event,
Play_Event,
Pause_Event,
Previous_Event,
Next_Event,
Stop_Event,
FirstAutoGenerated_Event = wxID_HIGHEST + 1999, FirstAutoGenerated_Event = wxID_HIGHEST + 1999,
SettingsMenu_Events = wxID_HIGHEST + 5000, SettingsMenu_Events = wxID_HIGHEST + 5000,
AudioMenu_Events = wxID_HIGHEST + 2000, AudioMenu_Events = wxID_HIGHEST + 2000,
...@@ -143,37 +148,45 @@ void PopupMenu( intf_thread_t *p_intf, wxWindow *p_parent, ...@@ -143,37 +148,45 @@ void PopupMenu( intf_thread_t *p_intf, wxWindow *p_parent,
{ {
#define MAX_POPUP_ITEMS 45 #define MAX_POPUP_ITEMS 45
vlc_object_t *p_object; vlc_object_t *p_object, *p_input;
char *ppsz_varnames[MAX_POPUP_ITEMS]; char *ppsz_varnames[MAX_POPUP_ITEMS];
int pi_objects[MAX_POPUP_ITEMS]; int pi_objects[MAX_POPUP_ITEMS];
int i = 0; int i = 0, i_last_separator = 0;
/* Initializations */ /* Initializations */
memset( pi_objects, 0, MAX_POPUP_ITEMS * sizeof(int) ); memset( pi_objects, 0, MAX_POPUP_ITEMS * sizeof(int) );
/* Audio menu */ /* Input menu */
ppsz_varnames[i++] = _("Audio menu"); p_object = (vlc_object_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT,
ppsz_varnames[i++] = NULL; /* Separator */
p_object = (vlc_object_t *)vlc_object_find( p_intf, VLC_OBJECT_AOUT,
FIND_ANYWHERE ); FIND_ANYWHERE );
if( p_object != NULL ) if( p_object != NULL )
{ {
ppsz_varnames[i] = "audio-device"; ppsz_varnames[i] = "bookmark";
pi_objects[i++] = p_object->i_object_id; pi_objects[i++] = p_object->i_object_id;
ppsz_varnames[i] = "audio-channels"; ppsz_varnames[i] = "title";
pi_objects[i++] = p_object->i_object_id; pi_objects[i++] = p_object->i_object_id;
ppsz_varnames[i] = "visual"; ppsz_varnames[i] = "chapter";
pi_objects[i++] = p_object->i_object_id; pi_objects[i++] = p_object->i_object_id;
ppsz_varnames[i] = "equalizer"; ppsz_varnames[i] = "program";
pi_objects[i++] = p_object->i_object_id;
ppsz_varnames[i] = "navigation";
pi_objects[i++] = p_object->i_object_id;
ppsz_varnames[i] = "dvd_menus";
pi_objects[i++] = p_object->i_object_id;
ppsz_varnames[i] = "video-es";
pi_objects[i++] = p_object->i_object_id;
ppsz_varnames[i] = "audio-es";
pi_objects[i++] = p_object->i_object_id;
ppsz_varnames[i] = "spu-es";
pi_objects[i++] = p_object->i_object_id; pi_objects[i++] = p_object->i_object_id;
vlc_object_release( p_object );
} }
p_input = p_object;
if( !p_input ) goto interfacemenu;
/* Video menu */ /* Video menu */
ppsz_varnames[i++] = NULL; /* Separator */ if( i != i_last_separator ) ppsz_varnames[i++] = NULL; /* Separator */
ppsz_varnames[i++] = _("Video menu"); i_last_separator = i;
ppsz_varnames[i++] = NULL; /* Separator */
p_object = (vlc_object_t *)vlc_object_find( p_intf, VLC_OBJECT_VOUT, p_object = (vlc_object_t *)vlc_object_find( p_intf, VLC_OBJECT_VOUT,
FIND_ANYWHERE ); FIND_ANYWHERE );
...@@ -209,42 +222,29 @@ void PopupMenu( intf_thread_t *p_intf, wxWindow *p_parent, ...@@ -209,42 +222,29 @@ void PopupMenu( intf_thread_t *p_intf, wxWindow *p_parent,
vlc_object_release( p_object ); vlc_object_release( p_object );
} }
/* Input menu */ /* Audio menu */
ppsz_varnames[i++] = NULL; /* Separator */ if( i != i_last_separator ) ppsz_varnames[i++] = NULL; /* Separator */
ppsz_varnames[i++] = _("Input menu"); i_last_separator = i;
ppsz_varnames[i++] = NULL; /* Separator */
p_object = (vlc_object_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT, p_object = (vlc_object_t *)vlc_object_find( p_intf, VLC_OBJECT_AOUT,
FIND_ANYWHERE ); FIND_ANYWHERE );
if( p_object != NULL ) if( p_object != NULL )
{ {
ppsz_varnames[i] = "bookmark"; ppsz_varnames[i] = "audio-device";
pi_objects[i++] = p_object->i_object_id;
ppsz_varnames[i] = "title";
pi_objects[i++] = p_object->i_object_id;
ppsz_varnames[i] = "chapter";
pi_objects[i++] = p_object->i_object_id;
ppsz_varnames[i] = "program";
pi_objects[i++] = p_object->i_object_id;
ppsz_varnames[i] = "navigation";
pi_objects[i++] = p_object->i_object_id;
ppsz_varnames[i] = "dvd_menus";
pi_objects[i++] = p_object->i_object_id; pi_objects[i++] = p_object->i_object_id;
ppsz_varnames[i] = "audio-channels";
ppsz_varnames[i] = "video-es";
pi_objects[i++] = p_object->i_object_id; pi_objects[i++] = p_object->i_object_id;
ppsz_varnames[i] = "audio-es"; ppsz_varnames[i] = "visual";
pi_objects[i++] = p_object->i_object_id; pi_objects[i++] = p_object->i_object_id;
ppsz_varnames[i] = "spu-es"; ppsz_varnames[i] = "equalizer";
pi_objects[i++] = p_object->i_object_id; pi_objects[i++] = p_object->i_object_id;
vlc_object_release( p_object ); vlc_object_release( p_object );
} }
interfacemenu:
/* Interface menu */ /* Interface menu */
ppsz_varnames[i++] = NULL; /* Separator */ if( i != i_last_separator ) ppsz_varnames[i++] = NULL; /* Separator */
ppsz_varnames[i++] = _("Interface menu"); i_last_separator = i;
ppsz_varnames[i++] = NULL; /* Separator */
/* vlc_object_find is needed because of the dialogs provider case */ /* vlc_object_find is needed because of the dialogs provider case */
p_object = (vlc_object_t *)vlc_object_find( p_intf, VLC_OBJECT_INTF, p_object = (vlc_object_t *)vlc_object_find( p_intf, VLC_OBJECT_INTF,
...@@ -266,11 +266,39 @@ void PopupMenu( intf_thread_t *p_intf, wxWindow *p_parent, ...@@ -266,11 +266,39 @@ void PopupMenu( intf_thread_t *p_intf, wxWindow *p_parent,
popupmenu.Populate( i, ppsz_varnames, pi_objects ); popupmenu.Populate( i, ppsz_varnames, pi_objects );
/* Add static entries */ /* Add static entries */
popupmenu.AppendSeparator(); if( p_input != NULL )
popupmenu.Append( MenuDummy_Event, wxU(_("Open")), {
OpenStreamMenu( p_intf ), wxT("") ); vlc_value_t val;
popupmenu.InsertSeparator( 0 );
popupmenu.Insert( 0, Stop_Event, wxU(_("Stop")) );
popupmenu.Insert( 0, Previous_Event, wxU(_("Previous")) );
popupmenu.Insert( 0, Next_Event, wxU(_("Next")) );
var_Get( p_input, "state", &val );
if( val.i_int == PAUSE_S )
popupmenu.Insert( 0, Play_Event, wxU(_("Play")) );
else
popupmenu.Insert( 0, Pause_Event, wxU(_("Pause")) );
vlc_object_release( p_input );
}
else
{
playlist_t * p_playlist =
(playlist_t *)vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
FIND_ANYWHERE );
if( p_playlist && p_playlist->i_size )
{
popupmenu.InsertSeparator( 0 );
popupmenu.Insert( 0, Play_Event, wxU(_("Play")) );
}
if( p_playlist ) vlc_object_release( p_playlist );
}
popupmenu.Append( MenuDummy_Event, wxU(_("Miscellaneous")), popupmenu.Append( MenuDummy_Event, wxU(_("Miscellaneous")),
MiscMenu( p_intf ), wxT("") ); MiscMenu( p_intf ), wxT("") );
popupmenu.Append( MenuDummy_Event, wxU(_("Open")),
OpenStreamMenu( p_intf ), wxT("") );
p_intf->p_sys->p_popup_menu = &popupmenu; p_intf->p_sys->p_popup_menu = &popupmenu;
p_parent->PopupMenu( &popupmenu, pos.x, pos.y ); p_parent->PopupMenu( &popupmenu, pos.x, pos.y );
...@@ -881,6 +909,47 @@ void MenuEvtHandler::OnMenuEvent( wxCommandEvent& event ) ...@@ -881,6 +909,47 @@ void MenuEvtHandler::OnMenuEvent( wxCommandEvent& event )
int i_hotkey_event = p_intf->p_sys->i_first_hotkey_event; int i_hotkey_event = p_intf->p_sys->i_first_hotkey_event;
int i_hotkeys = p_intf->p_sys->i_hotkeys; int i_hotkeys = p_intf->p_sys->i_hotkeys;
if( event.GetId() >= Play_Event && event.GetId() <= Stop_Event )
{
input_thread_t *p_input;
playlist_t * p_playlist =
(playlist_t *)vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
FIND_ANYWHERE );
if( !p_playlist ) return;
switch( event.GetId() )
{
case Play_Event:
case Pause_Event:
p_input =
(input_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT,
FIND_ANYWHERE );
if( !p_input ) playlist_Play( p_playlist );
else
{
vlc_value_t val;
var_Get( p_input, "state", &val );
if( val.i_int != PAUSE_S ) val.i_int = PAUSE_S;
else val.i_int = PLAYING_S;
var_Set( p_input, "state", val );
vlc_object_release( p_input );
}
break;
case Stop_Event:
playlist_Stop( p_playlist );
break;
case Previous_Event:
playlist_Prev( p_playlist );
break;
case Next_Event:
playlist_Next( p_playlist );
break;
}
vlc_object_release( p_playlist );
return;
}
/* Check if this is an auto generated menu item */ /* Check if this is an auto generated menu item */
if( event.GetId() < FirstAutoGenerated_Event ) if( event.GetId() < FirstAutoGenerated_Event )
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment