X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fwxwidgets%2Fdialogs.cpp;h=3b58e794ebda64f37a2dd5a24a210871e949b589;hb=b4b0a1b6f82807f4e7b0a1f96b62dcf109018549;hp=e765dd9838dbc87465447af67469d9e2ed8985da;hpb=688c81b7ef9f2cbe18cf78bb3bdb3539d858304e;p=vlc diff --git a/modules/gui/wxwidgets/dialogs.cpp b/modules/gui/wxwidgets/dialogs.cpp index e765dd9838..3b58e794eb 100644 --- a/modules/gui/wxwidgets/dialogs.cpp +++ b/modules/gui/wxwidgets/dialogs.cpp @@ -18,24 +18,25 @@ * * 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 + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif #include -#include -#include +#include +#include -#include "charset.h" +#include "vlc_charset.h" -#include "dialogs/vlm/vlm_panel.hpp" +//#include "dialogs/vlm/vlm_panel.hpp" #include "dialogs/bookmarks.hpp" #include "dialogs/wizard.hpp" #include "dialogs/playlist.hpp" @@ -51,7 +52,10 @@ /* include the icon graphic */ #include "../../../share/vlc32x32.xpm" + /* Dialogs Provider */ +namespace wxvlc +{ class DialogsProvider: public wxFrame { public: @@ -63,8 +67,10 @@ private: void Open( int i_access_method, int i_arg ); /* Event handlers (these functions should _not_ be virtual) */ +#ifdef UPDATE_CHECK void OnUpdateVLC( wxCommandEvent& event ); - void OnVLM( wxCommandEvent& event ); +#endif + //void OnVLM( wxCommandEvent& event ); void OnInteraction( wxCommandEvent& event ); void OnExit( wxCommandEvent& event ); void OnPlaylist( wxCommandEvent& event ); @@ -84,6 +90,9 @@ private: void OnOpenSat( wxCommandEvent& event ); void OnPopupMenu( wxCommandEvent& event ); + void OnAudioPopupMenu( wxCommandEvent& event ); + void OnVideoPopupMenu( wxCommandEvent& event ); + void OnMiscPopupMenu( wxCommandEvent& event ); void OnIdle( wxIdleEvent& event ); @@ -105,9 +114,12 @@ public: wxFrame *p_prefs_dialog; wxFrame *p_bookmarks_dialog; wxFileDialog *p_file_generic_dialog; +#ifdef UPDATE_CHECK UpdateVLC *p_updatevlc_dialog; - VLMFrame *p_vlm_dialog; +#endif + //VLMFrame *p_vlm_dialog; }; +} DEFINE_LOCAL_EVENT_TYPE( wxEVT_DIALOG ); @@ -140,14 +152,26 @@ BEGIN_EVENT_TABLE(DialogsProvider, wxFrame) DialogsProvider::OnFileInfo) EVT_COMMAND(INTF_DIALOG_BOOKMARKS, wxEVT_DIALOG, DialogsProvider::OnBookmarks) + EVT_COMMAND(INTF_DIALOG_POPUPMENU, wxEVT_DIALOG, DialogsProvider::OnPopupMenu) + EVT_COMMAND(INTF_DIALOG_AUDIOPOPUPMENU, wxEVT_DIALOG, + DialogsProvider::OnAudioPopupMenu) + EVT_COMMAND(INTF_DIALOG_VIDEOPOPUPMENU, wxEVT_DIALOG, + DialogsProvider::OnVideoPopupMenu) + EVT_COMMAND(INTF_DIALOG_MISCPOPUPMENU, wxEVT_DIALOG, + DialogsProvider::OnMiscPopupMenu) + EVT_COMMAND(INTF_DIALOG_EXIT, wxEVT_DIALOG, DialogsProvider::OnExitThread) +#ifdef UPDATE_CHECK EVT_COMMAND(INTF_DIALOG_UPDATEVLC, wxEVT_DIALOG, DialogsProvider::OnUpdateVLC) +#endif +#if 0 EVT_COMMAND(INTF_DIALOG_VLM, wxEVT_DIALOG, DialogsProvider::OnVLM) +#endif EVT_COMMAND( INTF_DIALOG_INTERACTION, wxEVT_DIALOG, DialogsProvider::OnInteraction ) END_EVENT_TABLE() @@ -175,11 +199,13 @@ DialogsProvider::DialogsProvider( intf_thread_t *_p_intf, wxWindow *p_parent ) p_wizard_dialog = NULL; p_bookmarks_dialog = NULL; p_dir_dialog = NULL; +#ifdef UPDATE_CHECK p_updatevlc_dialog = NULL; - p_vlm_dialog = NULL; +#endif + //p_vlm_dialog = NULL; /* Give our interface a nice little icon */ - p_intf->p_sys->p_icon = new wxIcon( vlc_xpm ); + p_intf->p_sys->p_icon = new wxIcon( (const char**) vlc_xpm ); /* Create the messages dialog so it can begin storing logs */ p_messages_dialog = new Messages( p_intf, p_parent ? p_parent : this ); @@ -238,20 +264,22 @@ DialogsProvider::~DialogsProvider() PopEventHandler(true); /* Clean up */ - if( p_open_dialog ) delete p_open_dialog; + delete p_open_dialog; if( p_prefs_dialog ) p_prefs_dialog->Destroy(); - if( p_file_dialog ) delete p_file_dialog; - if( p_playlist_dialog ) delete p_playlist_dialog; - if( p_messages_dialog ) delete p_messages_dialog; - if( p_fileinfo_dialog ) delete p_fileinfo_dialog; - if( p_file_generic_dialog ) delete p_file_generic_dialog; - if( p_wizard_dialog ) delete p_wizard_dialog; - if( p_bookmarks_dialog ) delete p_bookmarks_dialog; - if( p_updatevlc_dialog ) delete p_updatevlc_dialog; - if( p_vlm_dialog ) delete p_vlm_dialog; + delete p_file_dialog; + delete p_playlist_dialog; + delete p_messages_dialog; + delete p_fileinfo_dialog; + delete p_file_generic_dialog; + delete p_wizard_dialog; + delete p_bookmarks_dialog; +#ifdef UPDATE_CHECK + delete p_updatevlc_dialog; +#endif + //delete p_vlm_dialog; - if( p_intf->p_sys->p_icon ) delete p_intf->p_sys->p_icon; + delete p_intf->p_sys->p_icon; /* We must set this here because on win32 this destructor will be * automatically called so we must not call it again on wxApp->OnExit(). @@ -272,7 +300,7 @@ void DialogsProvider::OnIdle( wxIdleEvent& WXUNUSED(event) ) /* Update the fileinfo windows */ if( p_fileinfo_dialog ) - p_fileinfo_dialog->UpdateFileInfo(); + p_fileinfo_dialog->Update(); } void DialogsProvider::OnPlaylist( wxCommandEvent& WXUNUSED(event) ) @@ -365,8 +393,8 @@ void DialogsProvider::OnOpenFileGeneric( wxCommandEvent& event ) { p_file_generic_dialog->SetMessage( wxU(p_arg->psz_title) ); p_file_generic_dialog->SetWildcard( wxU(p_arg->psz_extensions) ); - p_file_generic_dialog->SetStyle( (p_arg->b_save ? wxSAVE : wxOPEN) | - (p_arg->b_multiple ? wxMULTIPLE:0) ); + p_file_generic_dialog->SetWindowStyle( (p_arg->b_save ? wxSAVE : wxOPEN) | + (p_arg->b_multiple ? wxMULTIPLE:0) ); } if( p_file_generic_dialog && @@ -381,7 +409,7 @@ void DialogsProvider::OnOpenFileGeneric( wxCommandEvent& event ) sizeof(char *) ); for( size_t i = 0; i < paths.GetCount(); i++ ) { - p_arg->psz_results[i] = strdup( paths[i].mb_str() ); + p_arg->psz_results[i] = strdup( paths[i].mb_str(wxConvUTF8) ); } } @@ -399,8 +427,8 @@ void DialogsProvider::OnOpenFileGeneric( wxCommandEvent& event ) } free( p_arg->psz_results ); } - if( p_arg->psz_title ) free( p_arg->psz_title ); - if( p_arg->psz_extensions ) free( p_arg->psz_extensions ); + free( p_arg->psz_title ); + free( p_arg->psz_extensions ); free( p_arg ); } @@ -419,6 +447,12 @@ void DialogsProvider::OnOpenFileSimple( wxCommandEvent& event ) p_file_dialog = new wxFileDialog( NULL, wxU(_("Open File")), wxT(""), wxT(""), wxT("*"), wxOPEN | wxMULTIPLE ); + p_file_dialog->SetWildcard(wxU(_("All Files (*.*)|*" + "|Sound Files (*.mp3, *.ogg, etc.)|" EXTENSIONS_AUDIO + "|Video Files (*.avi, *.mpg, etc.)|" EXTENSIONS_VIDEO + "|Playlist Files (*.m3u, *.pls, etc.)|" EXTENSIONS_PLAYLIST + "|Subtitle Files (*.srt, *.sub, etc.)|" EXTENSIONS_SUBTITLE))); + if( p_file_dialog && p_file_dialog->ShowModal() == wxID_OK ) { wxArrayString paths; @@ -429,12 +463,13 @@ void DialogsProvider::OnOpenFileSimple( wxCommandEvent& event ) { char *psz_utf8 = wxFromLocale( paths[i] ); if( event.GetInt() ) - playlist_Add( p_playlist, psz_utf8, psz_utf8, - PLAYLIST_APPEND | (i ? 0 : PLAYLIST_GO), - PLAYLIST_END ); + playlist_Add( p_playlist, psz_utf8, NULL, + PLAYLIST_APPEND | (i ? 0 : PLAYLIST_GO) | + (i ? PLAYLIST_PREPARSE : 0 ), + PLAYLIST_END, VLC_TRUE, VLC_FALSE ); else - playlist_Add( p_playlist, psz_utf8, psz_utf8, - PLAYLIST_APPEND, PLAYLIST_END ); + playlist_Add( p_playlist, psz_utf8, NULL, + PLAYLIST_APPEND | PLAYLIST_PREPARSE , PLAYLIST_END , VLC_TRUE, VLC_FALSE ); wxLocaleFree( psz_utf8 ); } } @@ -453,15 +488,15 @@ void DialogsProvider::OnOpenDirectory( wxCommandEvent& event ) } if( p_dir_dialog == NULL ) - p_dir_dialog = new wxDirDialog( NULL ); + p_dir_dialog = new wxDirDialog( NULL, wxU(_("Select a directory")) ); if( p_dir_dialog && p_dir_dialog->ShowModal() == wxID_OK ) { wxString path = p_dir_dialog->GetPath(); char *psz_utf8 = wxFromLocale( path ); - playlist_Add( p_playlist, psz_utf8, psz_utf8, + playlist_Add( p_playlist, psz_utf8, NULL, PLAYLIST_APPEND | (event.GetInt() ? PLAYLIST_GO : 0), - PLAYLIST_END ); + PLAYLIST_END, VLC_TRUE, VLC_FALSE ); wxLocaleFree( psz_utf8 ); } @@ -507,11 +542,28 @@ void DialogsProvider::OnPopupMenu( wxCommandEvent& event ) ::PopupMenu( p_intf, this, mousepos ); } +void DialogsProvider::OnAudioPopupMenu( wxCommandEvent& event ) +{ + wxPoint mousepos = ScreenToClient( wxGetMousePosition() ); + ::AudioPopupMenu( p_intf, this, mousepos ); +} +void DialogsProvider::OnVideoPopupMenu( wxCommandEvent& event ) +{ + wxPoint mousepos = ScreenToClient( wxGetMousePosition() ); + ::VideoPopupMenu( p_intf, this, mousepos ); +} +void DialogsProvider::OnMiscPopupMenu( wxCommandEvent& event ) +{ + wxPoint mousepos = ScreenToClient( wxGetMousePosition() ); + ::MiscPopupMenu( p_intf, this, mousepos ); +} + void DialogsProvider::OnExitThread( wxCommandEvent& WXUNUSED(event) ) { wxTheApp->ExitMainLoop(); } +#ifdef UPDATE_CHECK void DialogsProvider::OnUpdateVLC( wxCommandEvent& WXUNUSED(event) ) { /* Show/hide the file info window */ @@ -523,7 +575,9 @@ void DialogsProvider::OnUpdateVLC( wxCommandEvent& WXUNUSED(event) ) p_updatevlc_dialog->Show( !p_updatevlc_dialog->IsShown() ); } } +#endif +#if 0 void DialogsProvider::OnVLM( wxCommandEvent& WXUNUSED(event) ) { /* Show/hide the file info window */ @@ -535,6 +589,7 @@ void DialogsProvider::OnVLM( wxCommandEvent& WXUNUSED(event) ) p_vlm_dialog->Show( !p_vlm_dialog->IsShown() ); } } +#endif void DialogsProvider::OnInteraction( wxCommandEvent& event ) { @@ -542,6 +597,8 @@ void DialogsProvider::OnInteraction( wxCommandEvent& event ) interaction_dialog_t *p_dialog; InteractionDialog *p_wxdialog; + return; + if( p_arg == NULL ) { msg_Dbg( p_intf, "OnInteraction() called with NULL arg" ); @@ -549,7 +606,6 @@ void DialogsProvider::OnInteraction( wxCommandEvent& event ) } p_dialog = p_arg->p_dialog; - /** \bug We store the interface object for the dialog in the p_private * field of the core dialog object. This is not safe if we change * interface while a dialog is loaded */ @@ -563,11 +619,19 @@ void DialogsProvider::OnInteraction( wxCommandEvent& event ) break; case INTERACT_UPDATE: p_wxdialog = (InteractionDialog*)(p_dialog->p_private); - p_wxdialog->Update(); + if( p_wxdialog) + p_wxdialog->Update(); break; case INTERACT_HIDE: p_wxdialog = (InteractionDialog*)(p_dialog->p_private); - p_wxdialog->Hide(); + if( p_wxdialog ) + p_wxdialog->Hide(); + p_dialog->i_status = HIDDEN_DIALOG; + break; + case INTERACT_DESTROY: + p_wxdialog = (InteractionDialog*)(p_dialog->p_private); + /// \todo + p_dialog->i_status = DESTROYED_DIALOG; break; } }