X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fwxwidgets%2Fwxwidgets.cpp;h=5aaba2f0e5ef7292fc0387f6142a006f462227b8;hb=6ee1e193fd896ab9a4729fde14f009d9ce629815;hp=ef9a718619ffc369c2e46140f62b4a8335d6424b;hpb=f84c833c7911744b0ca0005778eec1eaf3b8d395;p=vlc diff --git a/modules/gui/wxwidgets/wxwidgets.cpp b/modules/gui/wxwidgets/wxwidgets.cpp index ef9a718619..5aaba2f0e5 100644 --- a/modules/gui/wxwidgets/wxwidgets.cpp +++ b/modules/gui/wxwidgets/wxwidgets.cpp @@ -18,25 +18,22 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ /***************************************************************************** * Preamble *****************************************************************************/ -#include /* malloc(), free() */ #include /* ENOMEM */ -#include /* strerror() */ -#include #include -#include +#include #ifdef HAVE_LOCALE_H # include #endif -#include "wxwidgets.h" +#include "interface.hpp" /* Temporary hack */ #if defined(WIN32) && defined(_WX_INIT_H_) @@ -86,30 +83,40 @@ private: #define EMBED_TEXT N_("Embed video in interface") #define EMBED_LONGTEXT N_("Embed the video inside the interface instead " \ "of having it in a separate window.") -#define BOOKMARKS_TEXT N_("Show bookmarks dialog") -#define BOOKMARKS_LONGTEXT N_("Show bookmarks dialog when the interface " \ - "starts.") -#define EXTENDED_TEXT N_("Show extended GUI") -#define EXTENDED_LONGTEXT N_("Show extended GUI") -#define TASKBAR_TEXT N_("Show taskbar entry") -#define TASKBAR_LONGTEXT N_("Show taskbar entry") +#define BOOKMARKS_TEXT N_("Bookmarks dialog") +#define BOOKMARKS_LONGTEXT N_("Show bookmarks dialog at startup" ) +#define EXTENDED_TEXT N_("Extended GUI") +#define EXTENDED_LONGTEXT N_("Show extended GUI (equalizer, image adjust, " \ + "video filters...) at startup" ) +#define TASKBAR_TEXT N_("Taskbar") +#define TASKBAR_LONGTEXT N_("Show VLC on the taskbar") #define MINIMAL_TEXT N_("Minimal interface") -#define MINIMAL_LONGTEXT N_("Use minimal interface, no toolbar, few menus") +#define MINIMAL_LONGTEXT N_("Use minimal interface, with no toolbar and " \ + "fewer menus.") #define SIZE_TO_VIDEO_TEXT N_("Size to video") -#define SIZE_TO_VIDEO_LONGTEXT N_("Resize VLC to match the video resolution") -#define SYSTRAY_TEXT N_("Show systray icon") -#define SYSTRAY_LONGTEXT N_("Show systray icon") +#define SIZE_TO_VIDEO_LONGTEXT N_("Resize VLC to match the video resolution.") +#define SYSTRAY_TEXT N_("Systray icon") +#define SYSTRAY_LONGTEXT N_("Show a systray icon for VLC") +#define LABEL_TEXT N_("Show labels in toolbar") +#define LABEL_LONGTEXT N_("Show labels below the icons in the toolbar.") + +#define PLAYLIST_TEXT N_("Playlist view" ) +#define PLAYLIST_LONGTEXT N_("There are two possible playlist views in the " \ + "interface : the normal playlist (separate window), or an " \ + "embedded playlist (within the main interface, but with " \ + "less features). You can select which one will be available " \ + "on the toolbar (or both)." ) + +static int pi_playlist_views[] = { 0,1,2 }; +static const char *psz_playlist_views[] = { N_("Normal" ), N_("Embedded" ) , + N_("Both") }; vlc_module_begin(); -#ifdef WIN32 int i_score = 150; -#else - int i_score = getenv( "DISPLAY" ) == NULL ? 15 : 150; -#endif set_shortname( (char*) "wxWidgets" ); set_description( (char *) _("wxWidgets interface module") ); set_category( CAT_INTERFACE ); - set_subcategory( SUBCAT_INTERFACE_GENERAL ); + set_subcategory( SUBCAT_INTERFACE_MAIN ); set_capability( "interface", i_score ); set_callbacks( Open, Close ); add_shortcut( "wxwindows" ); @@ -120,30 +127,38 @@ vlc_module_begin(); add_bool( "wx-embed", 1, NULL, EMBED_TEXT, EMBED_LONGTEXT, VLC_FALSE ); - add_deprecated( "wxwin-enbed", VLC_FALSE); /*Deprecated since 0.8.4*/ + add_deprecated_alias( "wxwin-enbed" ); /*Deprecated since 0.8.4*/ add_bool( "wx-bookmarks", 0, NULL, BOOKMARKS_TEXT, BOOKMARKS_LONGTEXT, VLC_FALSE ); - add_deprecated( "wxwin-bookmarks", VLC_FALSE); /*Deprecated since 0.8.4*/ + add_deprecated_alias( "wxwin-bookmarks" ); /*Deprecated since 0.8.4*/ add_bool( "wx-taskbar", 1, NULL, TASKBAR_TEXT, TASKBAR_LONGTEXT, VLC_FALSE ); - add_deprecated( "wxwin-taskbar", VLC_FALSE); /*Deprecated since 0.8.4*/ + add_deprecated_alias( "wxwin-taskbar" ); /*Deprecated since 0.8.4*/ add_bool( "wx-extended", 0, NULL, EXTENDED_TEXT, EXTENDED_LONGTEXT, VLC_FALSE ); add_bool( "wx-minimal", 0, NULL, MINIMAL_TEXT, MINIMAL_LONGTEXT, VLC_TRUE ); - add_deprecated( "wxwin-minimal", VLC_FALSE); /*Deprecated since 0.8.4*/ + add_deprecated_alias( "wxwin-minimal" ); /*Deprecated since 0.8.4*/ add_bool( "wx-autosize", 1, NULL, SIZE_TO_VIDEO_TEXT, SIZE_TO_VIDEO_LONGTEXT, VLC_TRUE ); - add_deprecated( "wxwin-autosize", VLC_FALSE); /*Deprecated since 0.8.4*/ + add_deprecated_alias( "wxwin-autosize" ); /*Deprecated since 0.8.4*/ + add_integer( "wx-playlist-view", 0, NULL, PLAYLIST_TEXT, PLAYLIST_LONGTEXT, + VLC_FALSE ); + change_integer_list( pi_playlist_views, psz_playlist_views, 0 ); +/* wxCocoa pretends to support this, but at least 2.6.x doesn't */ +#ifndef __APPLE__ #ifdef wxHAS_TASK_BAR_ICON add_bool( "wx-systray", 0, NULL, SYSTRAY_TEXT, SYSTRAY_LONGTEXT, VLC_FALSE ); - add_deprecated( "wxwin-systray", VLC_FALSE); /*Deprecated since 0.8.4*/ + add_deprecated_alias( "wxwin-systray" ); /*Deprecated since 0.8.4*/ +#endif #endif + add_bool( "wx-labels", 0, NULL, LABEL_TEXT, LABEL_LONGTEXT, VLC_TRUE); add_string( "wx-config-last", NULL, NULL, - "last config", "last config", VLC_TRUE ); + N_("last config"), N_("last config"), VLC_TRUE ); change_autosave(); - add_deprecated( "wxwin-config-last", VLC_FALSE); /*Deprecated since 0.8.4*/ + change_internal(); + add_deprecated_alias( "wxwin-config-last" ); /*Deprecated since 0.8.4*/ add_submodule(); set_description( _("wxWidgets dialogs provider") ); @@ -161,7 +176,14 @@ vlc_module_end(); static int Open( vlc_object_t *p_this ) { intf_thread_t *p_intf = (intf_thread_t *)p_this; - + /* Test in we have an X*/ +#if defined HAVE_GETENV && (defined __WXGTK__ || defined __WXX11) + if( !getenv( "DISPLAY" ) ) + { + msg_Err( p_intf, "no X server"); + return VLC_EGENERIC; + } +#endif /* Allocate instance and initialize some members */ p_intf->p_sys = (intf_sys_t *)malloc( sizeof( intf_sys_t ) ); if( p_intf->p_sys == NULL ) @@ -173,15 +195,13 @@ static int Open( vlc_object_t *p_this ) p_intf->pf_run = Run; - p_intf->p_sys->p_sub = msg_Subscribe( p_intf ); + p_intf->p_sys->p_sub = msg_Subscribe( p_intf, MSG_QUEUE_NORMAL ); /* Initialize wxWidgets thread */ p_intf->p_sys->b_playing = 0; p_intf->p_sys->p_input = NULL; p_intf->p_sys->i_playing = -1; - p_intf->p_sys->b_slider_free = 1; - p_intf->p_sys->i_slider_pos = p_intf->p_sys->i_slider_oldpos = 0; p_intf->p_sys->p_popup_menu = NULL; p_intf->p_sys->p_video_window = NULL; @@ -303,7 +323,6 @@ static void Init( intf_thread_t *p_intf ) #else wxEntry( i_args, p_args ); #endif - setlocale( LC_NUMERIC, "C" ); } /* following functions are local */ @@ -335,7 +354,6 @@ bool Instance::OnInit() * Usefull for things we don't have any control over, like wxWidgets * provided facilities (eg. open file dialog) */ locale.Init( wxLANGUAGE_DEFAULT, wxLOCALE_LOAD_DEFAULT ); - setlocale( LC_NUMERIC, "C" ); /* Load saved window settings */ p_intf->p_sys->p_window_settings = new WindowSettings( p_intf ); @@ -380,7 +398,7 @@ bool Instance::OnInit() FIND_ANYWHERE ); if( p_playlist ) { - playlist_LockControl( p_playlist, PLAYLIST_AUTOPLAY ); + playlist_Control( p_playlist, PLAYLIST_AUTOPLAY, VLC_FALSE ); vlc_object_release( p_playlist ); } } @@ -474,7 +492,9 @@ WindowSettings::WindowSettings( intf_thread_t *_p_intf ) id = strtol( psz, &psz, 0 ); if( *psz != ',' ) /* broken cfg */ + { goto invalid; + } psz++; for( i = 0; i < 4; i++ ) @@ -484,13 +504,17 @@ WindowSettings::WindowSettings( intf_thread_t *_p_intf ) if( i < 3 ) { if( *psz != ',' ) + { goto invalid; + } psz++; } else { if( *psz != ')' ) + { goto invalid; + } } } if( id == ID_SCREEN ) @@ -515,16 +539,22 @@ WindowSettings::WindowSettings( intf_thread_t *_p_intf ) } if( i_screen_w <= 0 || i_screen_h <= 0 ) + { goto invalid; + } for( i = 0; i < ID_MAX; i++ ) { if( !b_valid[i] ) continue; if( position[i].x < 0 || position[i].y < 0 ) + { goto invalid; - if( size[i].x <= 0 || size[i].y <= 0 ) + } + if( i != ID_SMALL_PLAYLIST && (size[i].x <= 0 || size[i].y <= 0) ) + { goto invalid; + } } if( psz_org ) free( psz_org ); @@ -562,7 +592,7 @@ WindowSettings::~WindowSettings( ) size[i].x, size[i].y ); } - config_PutPsz( p_intf, "wx-config-last", sCfg.mb_str() ); + config_PutPsz( p_intf, "wx-config-last", sCfg.mb_str(wxConvUTF8) ); } void WindowSettings::SetScreen( int i_screen_w, int i_screen_h )