X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fwxwindows%2Fwxwindows.h;h=3d1472489c03276d7f68c22979677b57bff16f6e;hb=ae65b15b7b26ece5daa69e3721225d7bd5c8cc98;hp=d0caa70c89767d32c22b4f632a2a14dfcc8a2bd2;hpb=41409dfce07aed92ff59cdb976387fb0c3ea1346;p=vlc diff --git a/modules/gui/wxwindows/wxwindows.h b/modules/gui/wxwindows/wxwindows.h index d0caa70c89..3d1472489c 100644 --- a/modules/gui/wxwindows/wxwindows.h +++ b/modules/gui/wxwindows/wxwindows.h @@ -2,7 +2,7 @@ * wxwindows.h: private wxWindows interface description ***************************************************************************** * Copyright (C) 1999, 2000 VideoLAN - * $Id: wxwindows.h,v 1.21 2003/05/07 15:54:49 gbazin Exp $ + * $Id: wxwindows.h,v 1.47 2003/07/20 10:38:49 gbazin Exp $ * * Authors: Gildas Bazin * @@ -27,13 +27,45 @@ #include #include #include +#include +DECLARE_LOCAL_EVENT_TYPE( wxEVT_DIALOG, 0 ); + +enum +{ + FILE_ACCESS, + DISC_ACCESS, + NET_ACCESS, + SAT_ACCESS, + FILE_SIMPLE_ACCESS +}; + +class OpenDialog; class Playlist; class Messages; class FileInfo; #define SLIDER_MAX_POS 10000 +/* wxU is used to convert ansi/utf8 strings to unicode strings (wchar_t) */ +#if defined( ENABLE_NLS ) && defined( HAVE_GETTEXT ) && \ + defined( WIN32 ) && !defined( HAVE_INCLUDED_GETTEXT ) +#if wxUSE_UNICODE +# define wxU(utf8) wxString(utf8, wxConvUTF8) +#else +# define wxU(utf8) wxString(wxConvUTF8.cMB2WC(utf8), *wxConvCurrent) +#endif + +#else // ENABLE_NLS && HAVE_GETTEXT && WIN32 && !HAVE_INCLUDED_GETTEXT +#if wxUSE_UNICODE +# define wxU(ansi) wxString(ansi, *wxConvCurrent) +#else +# define wxU(ansi) ansi +#endif + +#endif + +#if !defined(MODULE_NAME_IS_skins) /***************************************************************************** * intf_sys_t: description and status of wxwindows interface *****************************************************************************/ @@ -43,28 +75,8 @@ struct intf_sys_t wxWindow *p_wxwindow; wxIcon *p_icon; - /* secondary windows */ - Playlist *p_playlist_window; - Messages *p_messages_window; - FileInfo *p_fileinfo_window; - /* special actions */ vlc_bool_t b_playing; - vlc_bool_t b_popup_changed; /* display menu ? */ - vlc_bool_t b_window_changed; /* window display toggled ? */ - vlc_bool_t b_playlist_changed; /* playlist display toggled ? */ - vlc_bool_t b_slider_free; /* slider status */ - - /* menus handlers */ - vlc_bool_t b_program_update; /* do we need to update programs - menu */ - vlc_bool_t b_title_update; /* do we need to update title menus */ - vlc_bool_t b_chapter_update; /* do we need to update - chapter menus */ - vlc_bool_t b_audio_update; /* do we need to update audio menus */ - vlc_bool_t b_spu_update; /* do we need to update spu menus */ - - /* windows and widgets */ /* The input thread */ input_thread_t * p_input; @@ -72,6 +84,7 @@ struct intf_sys_t /* The slider */ int i_slider_pos; /* slider position */ int i_slider_oldpos; /* previous position */ + vlc_bool_t b_slider_free; /* slider status */ /* The messages window */ msg_subscription_t* p_sub; /* message bank subscription */ @@ -79,9 +92,15 @@ struct intf_sys_t /* Playlist management */ int i_playing; /* playlist selected item */ - /* The window labels for DVD mode */ - unsigned int i_part; /* current chapter */ + /* Send an event to show a dialog */ + void (*pf_show_dialog) ( intf_thread_t *p_intf, int i_dialog, int i_arg, + intf_dialog_args_t *p_arg ); + + /* Popup menu */ + wxMenu *p_popup_menu; + }; +#endif /* !defined(MODULE_NAME_IS_skins) */ /***************************************************************************** * Prototypes @@ -106,6 +125,7 @@ private: intf_thread_t *p_intf; Interface *p_main_interface; int i_old_playing_status; + int i_old_rate; }; /* Main Interface */ @@ -124,9 +144,7 @@ public: wxWindow *slider_frame; wxStaticBox *slider_box; - wxMenu *p_popup_menu; - - wxArrayString mrl_history; + wxGauge *volctrl; private: void CreateOurMenuBar(); @@ -137,38 +155,30 @@ private: /* Event handlers (these functions should _not_ be virtual) */ void OnExit( wxCommandEvent& event ); void OnAbout( wxCommandEvent& event ); - void OnMessages( wxCommandEvent& event ); - void OnPlaylist( wxCommandEvent& event ); - void OnLogs( wxCommandEvent& event ); - void OnFileInfo( wxCommandEvent& event ); - void OnPreferences( wxCommandEvent& event ); - void OnOpenFile( wxCommandEvent& event ); - void OnOpenDisc( wxCommandEvent& event ); - void OnOpenNet( wxCommandEvent& event ); - void OnOpenSat( wxCommandEvent& event ); + void OnShowDialog( wxCommandEvent& event ); void OnPlayStream( wxCommandEvent& event ); void OnStopStream( wxCommandEvent& event ); void OnSliderUpdate( wxScrollEvent& event ); void OnPrevStream( wxCommandEvent& event ); void OnNextStream( wxCommandEvent& event ); + void OnSlowStream( wxCommandEvent& event ); + void OnFastStream( wxCommandEvent& event ); void OnMenuOpen( wxMenuEvent& event ); #if defined( __WXMSW__ ) || defined( __WXMAC__ ) - void OnContextMenu(wxContextMenuEvent& event); -#else - void OnContextMenu(wxMouseEvent& event); + void OnContextMenu2(wxContextMenuEvent& event); #endif + void OnContextMenu(wxMouseEvent& event); DECLARE_EVENT_TABLE(); Timer *timer; intf_thread_t *p_intf; - wxFrame *p_prefs_dialog; - +private: int i_old_playing_status; /* For auto-generated menus */ @@ -176,20 +186,71 @@ private: vlc_bool_t b_audio_menu; wxMenu *p_video_menu; vlc_bool_t b_video_menu; + wxMenu *p_navig_menu; + vlc_bool_t b_navig_menu; +}; + +/* Dialogs Provider */ +class DialogsProvider: public wxFrame +{ +public: + /* Constructor */ + DialogsProvider( intf_thread_t *p_intf, wxWindow *p_parent ); + virtual ~DialogsProvider(); + +private: + void Open( int i_access_method, int i_arg ); + + /* Event handlers (these functions should _not_ be virtual) */ + void OnExit( wxCommandEvent& event ); + void OnPlaylist( wxCommandEvent& event ); + void OnMessages( wxCommandEvent& event ); + void OnFileInfo( wxCommandEvent& event ); + void OnPreferences( wxCommandEvent& event ); + + void OnOpenFileGeneric( wxCommandEvent& event ); + void OnOpenFileSimple( wxCommandEvent& event ); + void OnOpenFile( wxCommandEvent& event ); + void OnOpenDisc( wxCommandEvent& event ); + void OnOpenNet( wxCommandEvent& event ); + void OnOpenSat( wxCommandEvent& event ); + + void OnPopupMenu( wxCommandEvent& event ); + + void OnIdle( wxIdleEvent& event ); + + void OnExitThread( wxCommandEvent& event ); + + DECLARE_EVENT_TABLE(); + + intf_thread_t *p_intf; + +public: + /* Secondary windows */ + OpenDialog *p_open_dialog; + wxFileDialog *p_file_dialog; + Playlist *p_playlist_dialog; + Messages *p_messages_dialog; + FileInfo *p_fileinfo_dialog; + wxFrame *p_prefs_dialog; + wxFileDialog *p_file_generic_dialog; }; /* Open Dialog */ -class OpenDialog: public wxDialog +class SoutDialog; +class SubsFileDialog; +class OpenDialog: public wxFrame { public: /* Constructor */ - OpenDialog( intf_thread_t *p_intf, Interface *p_main_interface, - int i_access_method ); + OpenDialog( intf_thread_t *p_intf, wxWindow *p_parent, + int i_access_method, int i_arg = 0 ); virtual ~OpenDialog(); - void Rebuild(); - void Manage(); - wxString mrl; + int Show(); + int Show( int i_access_method, int i_arg = 0 ); + + wxArrayString mrl; private: wxPanel *FilePanel( wxWindow* parent ); @@ -198,6 +259,7 @@ private: wxPanel *SatPanel( wxWindow* parent ); void UpdateMRL( int i_access_method ); + wxArrayString SeparateEntries( wxString ); /* Event handlers (these functions should _not_ be virtual) */ void OnOk( wxCommandEvent& event ); @@ -218,6 +280,10 @@ private: void OnNetPanelChange( wxCommandEvent& event ); void OnNetTypeChange( wxCommandEvent& event ); + /* Event handlers for the stream output */ + void OnSubsFileEnable( wxCommandEvent& event ); + void OnSubsFileSettings( wxCommandEvent& WXUNUSED(event) ); + /* Event handlers for the stream output */ void OnSoutEnable( wxCommandEvent& event ); void OnSoutSettings( wxCommandEvent& WXUNUSED(event) ); @@ -230,13 +296,15 @@ private: DECLARE_EVENT_TABLE(); intf_thread_t *p_intf; - Interface *p_main_interface; + wxWindow *p_parent; int i_current_access_method; wxComboBox *mrl_combo; + wxNotebook *notebook; /* Controls for the file panel */ wxComboBox *file_combo; + wxFileDialog *file_dialog; /* Controls for the disc panel */ wxRadioBox *disc_type; @@ -252,22 +320,21 @@ private: wxSpinCtrl *net_ports[4]; wxTextCtrl *net_addrs[4]; + /* Controls for the subtitles file */ + wxButton *subsfile_button; + wxCheckBox *subsfile_checkbox; + SubsFileDialog *subsfile_dialog; + /* Controls for the stream output */ wxButton *sout_button; wxCheckBox *sout_checkbox; + SoutDialog *sout_dialog; /* Controls for the demux dump */ wxTextCtrl *demuxdump_textctrl; wxButton *demuxdump_button; wxCheckBox *demuxdump_checkbox; -}; - -enum -{ - FILE_ACCESS = 0, - DISC_ACCESS, - NET_ACCESS, - SAT_ACCESS + wxFileDialog *demuxdump_dialog; }; /* Stream output Dialog */ @@ -275,7 +342,7 @@ class SoutDialog: public wxDialog { public: /* Constructor */ - SoutDialog( intf_thread_t *p_intf, Interface *p_main_interface ); + SoutDialog( intf_thread_t *p_intf, wxWindow *p_parent ); virtual ~SoutDialog(); wxString mrl; @@ -283,7 +350,9 @@ public: private: void UpdateMRL(); wxPanel *AccessPanel( wxWindow* parent ); + wxPanel *MiscPanel( wxWindow* parent ); wxPanel *EncapsulationPanel( wxWindow* parent ); + wxPanel *TranscodingPanel( wxWindow* parent ); void ParseMRL(); /* Event handlers (these functions should _not_ be virtual) */ @@ -299,32 +368,77 @@ private: /* Event handlers for the net access output */ void OnNetChange( wxCommandEvent& event ); + /* Event specific to the sap address */ + void OnSAPAddrChange( wxCommandEvent& event ); + /* Event handlers for the encapsulation panel */ void OnEncapsulationChange( wxCommandEvent& event ); + /* Event handlers for the transcoding panel */ + void OnTranscodingEnable( wxCommandEvent& event ); + void OnTranscodingChange( wxCommandEvent& event ); + + /* Event handlers for the misc panel */ + void OnSAPMiscChange( wxCommandEvent& event ); + DECLARE_EVENT_TABLE(); intf_thread_t *p_intf; - Interface *p_main_interface; + wxWindow *p_parent; wxComboBox *mrl_combo; - wxPanel *access_panel; - wxPanel *encapsulation_panel; /* Controls for the access outputs */ - wxPanel *access_subpanels[4]; - wxRadioButton *access_radios[4]; + wxPanel *access_subpanels[5]; + wxCheckBox *access_checkboxes[5]; int i_access_type; wxComboBox *file_combo; - wxSpinCtrl *net_port; - wxTextCtrl *net_addr; - + wxSpinCtrl *net_ports[5]; + wxTextCtrl *net_addrs[5]; + + /* Controls for the SAP announces */ + wxPanel *misc_subpanels[1]; + wxCheckBox *sap_checkbox; + wxTextCtrl *sap_addr; + /* Controls for the encapsulation */ - wxRadioButton *encapsulation_radios[4]; + wxRadioButton *encapsulation_radios[5]; int i_encapsulation_type; + /* Controls for transcoding */ + wxCheckBox *video_transc_checkbox; + wxComboBox *video_codec_combo; + wxComboBox *audio_codec_combo; + wxCheckBox *audio_transc_checkbox; + wxComboBox *video_bitrate_combo; + wxComboBox *audio_bitrate_combo; + wxComboBox *audio_channels_combo; +}; + +/* Subtitles File Dialog */ +class SubsFileDialog: public wxDialog +{ +public: + /* Constructor */ + SubsFileDialog( intf_thread_t *p_intf, wxWindow *p_parent ); + virtual ~SubsFileDialog(); + + wxComboBox *file_combo; + wxSpinCtrl *delay_spinctrl; + wxSpinCtrl *fps_spinctrl; + +private: + /* Event handlers (these functions should _not_ be virtual) */ + void OnOk( wxCommandEvent& event ); + void OnCancel( wxCommandEvent& event ); + void OnFileBrowse( wxCommandEvent& event ); + + DECLARE_EVENT_TABLE(); + + intf_thread_t *p_intf; + wxWindow *p_parent; }; /* Preferences Dialog */ @@ -333,7 +447,7 @@ class PrefsDialog: public wxFrame { public: /* Constructor */ - PrefsDialog( intf_thread_t *p_intf, Interface *p_main_interface ); + PrefsDialog( intf_thread_t *p_intf, wxWindow *p_parent ); virtual ~PrefsDialog(); private: @@ -343,11 +457,11 @@ private: void OnOk( wxCommandEvent& event ); void OnCancel( wxCommandEvent& event ); void OnSave( wxCommandEvent& event ); + void OnResetAll( wxCommandEvent& event ); DECLARE_EVENT_TABLE(); intf_thread_t *p_intf; - Interface *p_main_interface; PrefsTreeCtrl *prefs_tree; }; @@ -357,7 +471,7 @@ class Messages: public wxFrame { public: /* Constructor */ - Messages( intf_thread_t *p_intf, Interface *_p_main_interface ); + Messages( intf_thread_t *p_intf, wxWindow *p_parent ); virtual ~Messages(); void UpdateLog(); @@ -365,17 +479,20 @@ private: /* Event handlers (these functions should _not_ be virtual) */ void OnClose( wxCommandEvent& event ); void OnVerbose( wxCommandEvent& event ); + void OnClear( wxCommandEvent& event ); + void OnSaveLog( wxCommandEvent& event ); DECLARE_EVENT_TABLE(); intf_thread_t *p_intf; - Interface *p_main_interface; wxTextCtrl *textctrl; wxTextAttr *info_attr; wxTextAttr *err_attr; wxTextAttr *warn_attr; wxTextAttr *dbg_attr; + wxFileDialog *save_log_dialog; + vlc_bool_t b_verbose; }; @@ -384,30 +501,36 @@ class Playlist: public wxFrame { public: /* Constructor */ - Playlist( intf_thread_t *p_intf, Interface *p_main_interface ); + Playlist( intf_thread_t *p_intf, wxWindow *p_parent ); virtual ~Playlist(); - void Rebuild(); - void Manage(); + + void UpdatePlaylist(); + void ShowPlaylist( bool show ); + + bool b_need_update; + vlc_mutex_t lock; private: void DeleteItem( int item ); /* Event handlers (these functions should _not_ be virtual) */ - void OnAddUrl( wxCommandEvent& event ); - void OnAddDirectory( wxCommandEvent& event ); + void OnAddFile( wxCommandEvent& event ); + void OnAddMRL( wxCommandEvent& event ); void OnClose( wxCommandEvent& event ); + void OnOpen( wxCommandEvent& event ); + void OnSave( wxCommandEvent& event ); void OnInvertSelection( wxCommandEvent& event ); void OnDeleteSelection( wxCommandEvent& event ); void OnSelectAll( wxCommandEvent& event ); void OnActivateItem( wxListEvent& event ); void OnKeyDown( wxListEvent& event ); + void Rebuild(); DECLARE_EVENT_TABLE(); intf_thread_t *p_intf; - Interface *p_main_interface; wxListView *listview; - wxButton *ok_button; + int i_update_counter; }; /* File Info */ @@ -415,7 +538,7 @@ class FileInfo: public wxFrame { public: /* Constructor */ - FileInfo( intf_thread_t *p_intf, Interface *p_main_interface ); + FileInfo( intf_thread_t *p_intf, wxWindow *p_parent ); virtual ~FileInfo(); void UpdateFileInfo(); @@ -447,10 +570,11 @@ private: #endif /* Menus */ -void PopupMenu( intf_thread_t *_p_intf, Interface *_p_main_interface, +void PopupMenu( intf_thread_t *_p_intf, wxWindow *p_parent, const wxPoint& pos ); -wxMenu *AudioMenu( intf_thread_t *_p_intf, Interface *_p_main_interface ); -wxMenu *VideoMenu( intf_thread_t *_p_intf, Interface *_p_main_interface ); +wxMenu *AudioMenu( intf_thread_t *_p_intf, wxWindow *p_parent ); +wxMenu *VideoMenu( intf_thread_t *_p_intf, wxWindow *p_parent ); +wxMenu *NavigMenu( intf_thread_t *_p_intf, wxWindow *p_parent ); class MenuEvtHandler : public wxEvtHandler { @@ -458,7 +582,8 @@ public: MenuEvtHandler( intf_thread_t *p_intf, Interface *p_main_interface ); virtual ~MenuEvtHandler(); - void MenuEvtHandler::OnMenuEvent( wxCommandEvent& event ); + void OnMenuEvent( wxCommandEvent& event ); + void OnShowDialog( wxCommandEvent& event ); private: @@ -472,13 +597,14 @@ class Menu: public wxMenu { public: /* Constructor */ - Menu( intf_thread_t *p_intf, Interface *p_main_interface, int i_count, + Menu( intf_thread_t *p_intf, wxWindow *p_parent, int i_count, char **ppsz_names, int *pi_objects, int i_start_id ); virtual ~Menu(); private: /* Event handlers (these functions should _not_ be virtual) */ void OnClose( wxCommandEvent& event ); + void OnShowDialog( wxCommandEvent& event ); void OnEntrySelected( wxCommandEvent& event ); wxMenu *Menu::CreateDummyMenu(); @@ -488,7 +614,6 @@ private: DECLARE_EVENT_TABLE(); intf_thread_t *p_intf; - Interface *p_main_interface; int i_item_id; };