X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fwxwidgets%2Finterface.cpp;h=83c9325d8213d2e6e824bd8b129c0714885fe0dd;hb=857b51f9c9ace345a6b6a9a45a20829101830abb;hp=fa3591cb0a1fab7e37f94cc1be5c2a757d929d4d;hpb=c3699cc1d630e771a7fe1547b75d660a70ec8ac4;p=vlc diff --git a/modules/gui/wxwidgets/interface.cpp b/modules/gui/wxwidgets/interface.cpp index fa3591cb0a..83c9325d82 100644 --- a/modules/gui/wxwidgets/interface.cpp +++ b/modules/gui/wxwidgets/interface.cpp @@ -364,6 +364,7 @@ Interface::Interface( intf_thread_t *_p_intf, long style ): b_extra = VLC_FALSE; extra_frame = 0; playlist_manager = 0; + i_update_counter = 0; /* Give our interface a nice little icon */ @@ -396,6 +397,8 @@ Interface::Interface( intf_thread_t *_p_intf, long style ): /* Put this in the splitter */ splitter->Initialize( main_panel ); +/* wxCocoa pretends to support this, but at least 2.6.x doesn't */ +#ifndef __APPLE__ #ifdef wxHAS_TASK_BAR_ICON /* Systray integration */ p_systray = NULL; @@ -403,6 +406,7 @@ Interface::Interface( intf_thread_t *_p_intf, long style ): { p_systray = new Systray( this, p_intf ); } +#endif #endif /* Creation of the menu bar */ @@ -424,6 +428,13 @@ Interface::Interface( intf_thread_t *_p_intf, long style ): panel_sizer->Layout(); panel_sizer->Fit( main_panel ); main_sizer->Layout(); main_sizer->Fit( this ); main_min_size = GetSize(); + /* FIXME HACK as far as i understan (i.e. not a lot) the toolbar + * doesn't take the labels into account when it returns its size */ + + if( config_GetInt(p_intf, "wx-labels") ) + { + main_min_size.SetWidth(800); + } splitter->SetSizeHints( -1, -1 ); /* Video window */ @@ -493,8 +504,11 @@ Interface::~Interface() if( video_window ) delete video_window; +/* wxCocoa pretends to support this, but at least 2.6.x doesn't */ +#ifndef __APPLE__ #ifdef wxHAS_TASK_BAR_ICON if( p_systray ) delete p_systray; +#endif #endif p_intf->b_interaction = VLC_FALSE; @@ -516,9 +530,11 @@ void Interface::Init() void Interface::Update() { /* Misc updates */ - ((VLCVolCtrl *)volctrl)->UpdateVolume(); + if( !(i_update_counter % 10) ) ((VLCVolCtrl *)volctrl)->UpdateVolume(); if( playlist_manager ) playlist_manager->Update(); + + i_update_counter++; } void Interface::OnControlEvent( wxCommandEvent& event ) @@ -577,7 +593,7 @@ void Interface::CreateOurMenuBar() } view_menu->Append( Logs_Event, wxU(_("&Messages...\tCtrl-M")) ); view_menu->Append( FileInfo_Event, - wxU(_("Stream and Media &info...\tCtrl-I")) ); + wxU(_("Stream and Media &Info...\tCtrl-I")) ); view_menu->Append( VLM_Event, wxU(_("VLM Control...\tCtrl-V")) ); @@ -589,9 +605,9 @@ void Interface::CreateOurMenuBar() /* Create the "Help" menu */ wxMenu *help_menu = new wxMenu; - help_menu->Append( About_Event, wxU(_("About VLC media player")) ); + help_menu->Append( About_Event, wxU(_("About...")) ); help_menu->AppendSeparator(); - help_menu->Append( UpdateVLC_Event, wxU(_("Check for updates ...")) ); + help_menu->Append( UpdateVLC_Event, wxU(_("Check for Updates...")) ); /* Append the freshly created menus to the menu bar... */ wxMenuBar *menubar = new wxMenuBar(); @@ -661,52 +677,66 @@ void Interface::CreateOurToolBar() #define HELP_PLAY N_("Play") #define HELP_PAUSE N_("Pause") #define HELP_PLO N_("Playlist") -#define HELP_SPLO N_("Small playlist") +#define HELP_SPLO N_("Embedded playlist") #define HELP_PLP N_("Previous playlist item") #define HELP_PLN N_("Next playlist item") #define HELP_SLOW N_("Play slower") #define HELP_FAST N_("Play faster") +#define LABEL_OPEN N_("Open") +#define LABEL_STOP N_("Stop") +#define LABEL_PLAY N_("Play") +#define LABEL_PAUSE N_("Pause") +#define LABEL_PLO N_("Playlist") +#define LABEL_SPLO N_("Embedded playlist") +#define LABEL_PLP N_("Previous") +#define LABEL_PLN N_("Next") +#define LABEL_SLOW N_("Slower") +#define LABEL_FAST N_("Faster") int minimal = config_GetInt( p_intf, "wx-minimal" ); + bool label = config_GetInt( p_intf, "wx-labels" ); wxLogNull LogDummy; /* Hack to suppress annoying log message on the win32 * version because we don't include wx.rc */ wxToolBar *toolbar = - CreateToolBar( wxTB_HORIZONTAL | wxTB_FLAT ); + CreateToolBar( label?wxTB_HORIZONTAL | wxTB_FLAT |wxTB_TEXT: + wxTB_HORIZONTAL | wxTB_FLAT ); toolbar->SetToolBitmapSize( wxSize(TOOLBAR_BMP_WIDTH,TOOLBAR_BMP_HEIGHT) ); if (!minimal) { - toolbar->AddTool( OpenFile_Event, wxT(""), + toolbar->AddTool( OpenFile_Event, wxU(LABEL_OPEN), wxBitmap( eject_xpm ), wxU(_(HELP_OPEN)) ); toolbar->AddSeparator(); } - wxToolBarToolBase *p_tool = toolbar->AddTool( PlayStream_Event, wxT(""), + wxToolBarToolBase *p_tool = toolbar->AddTool( PlayStream_Event, wxU(LABEL_PLAY), wxBitmap( play_xpm ), wxU(_(HELP_PLAY)), wxITEM_CHECK ); p_tool->SetClientData( p_tool ); if (!minimal) { - toolbar->AddTool( StopStream_Event, wxT(""), wxBitmap( stop_xpm ), + toolbar->AddTool( StopStream_Event, wxU(LABEL_STOP), wxBitmap( stop_xpm ), wxU(_(HELP_STOP)) ); toolbar->AddSeparator(); - toolbar->AddTool( PrevStream_Event, wxT(""), + toolbar->AddTool( PrevStream_Event, wxU(LABEL_PLP), wxBitmap( prev_xpm ), wxU(_(HELP_PLP)) ); - toolbar->AddTool( SlowStream_Event, wxT(""), + toolbar->AddTool( SlowStream_Event, wxU(LABEL_SLOW), wxBitmap( slow_xpm ), wxU(_(HELP_SLOW)) ); - toolbar->AddTool( FastStream_Event, wxT(""), + toolbar->AddTool( FastStream_Event, wxU(LABEL_FAST), wxBitmap( fast_xpm ), wxU(_(HELP_FAST)) ); - toolbar->AddTool( NextStream_Event, wxT(""), wxBitmap( next_xpm ), + toolbar->AddTool( NextStream_Event, wxU(LABEL_PLN), wxBitmap( next_xpm ), wxU(_(HELP_PLN)) ); toolbar->AddSeparator(); - toolbar->AddTool( Playlist_Event, wxT(""), wxBitmap( playlist_xpm ), - wxU(_(HELP_PLO)) ); - toolbar->AddTool( PlaylistSmall_Event, wxT(""), - wxBitmap( playlist_small_xpm ), wxU(_(HELP_SPLO)) ); + if( config_GetInt( p_intf, "wx-playlist-view" ) != 1 ) + toolbar->AddTool( Playlist_Event, wxU(LABEL_PLO), + wxBitmap( playlist_xpm ), wxU(_(HELP_PLO)) ); + if( config_GetInt( p_intf, "wx-playlist-view" ) >= 1 ) + toolbar->AddTool( PlaylistSmall_Event, wxU(LABEL_SPLO), + wxBitmap( playlist_small_xpm ), wxU(_(HELP_SPLO)) ); } wxControl *p_dummy_ctrl = @@ -779,7 +809,7 @@ static int ConvertHotkey( int i_hotkey ) void Interface::SetupHotkeys() { - struct vlc_t::hotkey *p_hotkeys = p_intf->p_vlc->p_hotkeys; + struct libvlc_int_t::hotkey *p_hotkeys = p_intf->p_libvlc->p_hotkeys; int i_hotkeys; /* Count number of hoteys */ @@ -911,9 +941,11 @@ void Interface::OnAbout( wxCommandEvent& WXUNUSED(event) ) wxU(_("Compiled by "))+ wxU(VLC_CompileBy())+ wxU("@") + wxU(VLC_CompileHost())+ wxT(".")+ wxU(VLC_CompileDomain())+ wxT(".\n") + wxU(_("Compiler: "))+ wxU(VLC_Compiler())+wxT( ".\n") + +#ifndef HAVE_SHARED_LIBVLC wxU(_("Based on SVN revision: "))+wxU(VLC_Changeset())+wxT(".\n\n") + +#endif #ifdef __WXMSW__ - wxU( vlc_wraptext(LICENSE_MSG,WRAPCOUNT,VLC_TRUE) ) + wxT("\n\n") + + wxU( vlc_wraptext(LICENSE_MSG,WRAPCOUNT) ) + wxT("\n\n") + #else wxU( LICENSE_MSG ) + wxT("\n\n") + #endif @@ -1078,6 +1110,7 @@ void Interface::PlayStream() /* If the playlist is empty, open a file requester instead */ vlc_object_release( p_playlist ); OnShowDialog( dummy ); + GetToolBar()->ToggleTool( PlayStream_Event, false ); } } @@ -1206,15 +1239,9 @@ void Interface::OnInteraction( wxCommandEvent& event ) p_arg->p_dialog = p_dialog; p_arg->p_intf = p_intf; - if( p_dialog->i_type == INTERACT_PROGRESS ) - { - /// \todo Handle progress in the interface - } - else - { - p_intf->p_sys->pf_show_dialog( p_intf, INTF_DIALOG_INTERACTION, + p_intf->p_sys->pf_show_dialog( p_intf, INTF_DIALOG_INTERACTION, 0, p_arg ); - } + } static int InteractCallback( vlc_object_t *p_this, @@ -1253,51 +1280,35 @@ bool DragAndDrop::OnDropFiles( wxCoord, wxCoord, return FALSE; } + /* If we drag & drop a subtitle file, add it on the fly */ + if( filenames.GetCount() == 1 ) + { + char *psz_utf8 = wxDnDFromLocale( filenames[0] ); + input_thread_t *p_input = (input_thread_t *)vlc_object_find( p_intf, + VLC_OBJECT_INPUT, FIND_ANYWHERE ); + if( p_input ) + { + if( input_AddSubtitles( p_input, psz_utf8, VLC_TRUE ) ) + { + vlc_object_release( p_input ); + wxDnDLocaleFree( psz_utf8 ); + vlc_object_release( p_playlist ); + return TRUE; + } + vlc_object_release( p_input ); + } + wxDnDLocaleFree( psz_utf8 ); + } + for( size_t i = 0; i < filenames.GetCount(); i++ ) { -#ifdef wxUSE_UNICODE - /* - * FIXME: this is yet another awful and ugly bug-to-bug work-around - * for the painfully broken and brain-dead wxWidgets character - * encoding internals. Maybe, one day the wxWidgets team will find out - * and we will have to remove (phew) this kludge or autodetect whether - * to trigger it (damn). - * - * In Unicode mode, wxWidgets will encode file names in the locale - * encoding with each **bytes** (rather than characters) represented - * by a 32 bits unsigned integer. If you are lucky enough to be using - * ISO-8859-1 as your local character encoding, that lame encoding - * scheme happens to be identical to UTF-32 with your arch native - * byte-endianess. If you are using anything else, including not only - * UTF-8 but also Windows-1252(!) and ISO-8859-15(!) or any - * non-western encoding, it obviously fails. - */ - unsigned len = 1; - const wxChar *stupid = filenames[i]; - - for (const wxChar *braindead = stupid; *braindead; braindead++) - len++; - char *psz_local = (char *)malloc (len); - do - psz_local[len] = (char)stupid[len]; - while (len--); - - fprintf (stderr, "local = \"%s\"\n", psz_local); - char *psz_utf8 = FromLocale( psz_local ); - fprintf (stderr, "utf8 = \"%s\"\n", psz_utf8); -#else - char *psz_utf8 = wxFromLocale( filenames[i] ); -#endif + char *psz_utf8 = wxDnDFromLocale( filenames[i] ); - playlist_Add( p_playlist, psz_utf8, psz_utf8, + playlist_PlaylistAdd( p_playlist, psz_utf8, psz_utf8, PLAYLIST_APPEND | ((i | b_enqueue) ? 0 : PLAYLIST_GO), PLAYLIST_END ); -#ifdef wxUSE_UNICODE - LocaleFree( psz_utf8 ); - free( psz_local ); -#else - wxLocaleFree( psz_utf8 ); -#endif + + wxDnDLocaleFree( psz_utf8 ); } vlc_object_release( p_playlist ); @@ -1412,6 +1423,8 @@ void VLCVolCtrl::UpdateVolume() * Systray class. *****************************************************************************/ +/* wxCocoa pretends to support this, but at least 2.6.x doesn't */ +#ifndef __APPLE__ #ifdef wxHAS_TASK_BAR_ICON BEGIN_EVENT_TABLE(Systray, wxTaskBarIcon) @@ -1497,7 +1510,7 @@ wxMenu* Systray::CreatePopupMenu() systray_menu->Append( StopStream_Event, wxU(_("Stop")) ); } systray_menu->AppendSeparator(); - systray_menu->Append( Iconize_Event, wxU(_("Show/Hide interface")) ); + systray_menu->Append( Iconize_Event, wxU(_("Show/Hide Interface")) ); return systray_menu; } @@ -1506,3 +1519,4 @@ void Systray::UpdateTooltip( const wxChar* tooltip ) SetIcon( wxIcon( vlc16x16_xpm ), tooltip ); } #endif +#endif