wxwindows.h
上传用户:riyaled888
上传日期:2009-03-27
资源大小:7338k
文件大小:25k
源码类别:

多媒体

开发平台:

MultiPlatform

  1. /*****************************************************************************
  2.  * wxwindows.h: private wxWindows interface description
  3.  *****************************************************************************
  4.  * Copyright (C) 1999-2004 VideoLAN
  5.  * $Id: wxwindows.h 9033 2004-10-22 12:07:08Z gbazin $
  6.  *
  7.  * Authors: Gildas Bazin <gbazin@videolan.org>
  8.  *
  9.  * This program is free software; you can redistribute it and/or modify
  10.  * it under the terms of the GNU General Public License as published by
  11.  * the Free Software Foundation; either version 2 of the License, or
  12.  * (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  22.  *****************************************************************************/
  23. #ifdef WIN32                                                 /* mingw32 hack */
  24. #undef Yield
  25. #undef CreateDialog
  26. #endif
  27. /* Let vlc take care of the i18n stuff */
  28. #define WXINTL_NO_GETTEXT_MACRO
  29. #include <wx/wxprec.h>
  30. #include <wx/wx.h>
  31. #include <wx/listctrl.h>
  32. #include <wx/textctrl.h>
  33. #include <wx/notebook.h>
  34. #include <wx/spinctrl.h>
  35. #include <wx/dnd.h>
  36. #include <wx/treectrl.h>
  37. #include <wx/gauge.h>
  38. #include <wx/accel.h>
  39. #include <wx/checkbox.h>
  40. #include <wx/wizard.h>
  41. #include "vlc_keys.h"
  42. /* Hmmm, work-around for newest wxWin */
  43. #ifdef wxStaticCastEvent
  44. #   undef wxStaticCastEvent
  45. #   define wxStaticCastEvent(type, val) ((type)(val))
  46. #endif
  47. DECLARE_LOCAL_EVENT_TYPE( wxEVT_DIALOG, 0 );
  48. DECLARE_LOCAL_EVENT_TYPE( wxEVT_INTF, 1 );
  49. #define SLIDER_MAX_POS 10000
  50. /* wxU is used to convert ansi/utf8 strings to unicode strings (wchar_t) */
  51. #if defined( ENABLE_NLS ) && defined( ENABLE_UTF8 )
  52. #if wxUSE_UNICODE
  53. #   define wxU(utf8) wxString(utf8, wxConvUTF8)
  54. #else
  55. #   define wxU(utf8) wxString(wxConvUTF8.cMB2WC(utf8), *wxConvCurrent)
  56. #endif
  57. #define ISUTF8 1
  58. #else // ENABLE_NLS && ENABLE_UTF8
  59. #if wxUSE_UNICODE
  60. #   define wxU(ansi) wxString(ansi, *wxConvCurrent)
  61. #else
  62. #   define wxU(ansi) ansi
  63. #endif
  64. #define ISUTF8 0
  65. #endif
  66. /* wxL2U (locale to unicode) is used to convert ansi strings to unicode
  67.  * strings (wchar_t) */
  68. #if wxUSE_UNICODE
  69. #   define wxL2U(ansi) wxString(ansi, *wxConvCurrent)
  70. #else
  71. #   define wxL2U(ansi) ansi
  72. #endif
  73. #define WRAPCOUNT 80
  74. #define OPEN_NORMAL 0
  75. #define OPEN_STREAM 1
  76. #define MODE_NONE 0
  77. #define MODE_GROUP 1
  78. #define MODE_AUTHOR 2
  79. #define MODE_TITLE 3
  80. class DialogsProvider;
  81. class PrefsTreeCtrl;
  82. class AutoBuiltPanel;
  83. class VideoWindow;
  84. /*****************************************************************************
  85.  * intf_sys_t: description and status of wxwindows interface
  86.  *****************************************************************************/
  87. struct intf_sys_t
  88. {
  89.     /* the wx parent window */
  90.     wxWindow            *p_wxwindow;
  91.     wxIcon              *p_icon;
  92.     /* special actions */
  93.     vlc_bool_t          b_playing;
  94.     vlc_bool_t          b_intf_show;                /* interface to be shown */
  95.     /* The input thread */
  96.     input_thread_t *    p_input;
  97.     /* The slider */
  98.     int                 i_slider_pos;                     /* slider position */
  99.     int                 i_slider_oldpos;                /* previous position */
  100.     vlc_bool_t          b_slider_free;                      /* slider status */
  101.     /* The messages window */
  102.     msg_subscription_t* p_sub;                  /* message bank subscription */
  103.     /* Playlist management */
  104.     int                 i_playing;                 /* playlist selected item */
  105.     /* Send an event to show a dialog */
  106.     void (*pf_show_dialog) ( intf_thread_t *p_intf, int i_dialog, int i_arg,
  107.                              intf_dialog_args_t *p_arg );
  108.     /* Popup menu */
  109.     wxMenu              *p_popup_menu;
  110.     /* Hotkeys */
  111.     int                 i_first_hotkey_event;
  112.     int                 i_hotkeys;
  113.     /* Embedded vout */
  114.     VideoWindow         *p_video_window;
  115.     wxBoxSizer          *p_video_sizer;
  116.     /* Aout */
  117.     aout_instance_t     *p_aout;
  118. };
  119. /*****************************************************************************
  120.  * Prototypes
  121.  *****************************************************************************/
  122. wxArrayString SeparateEntries( wxString );
  123. wxWindow *VideoWindow( intf_thread_t *p_intf, wxWindow *p_parent );
  124. wxWindow *BookmarksDialog( intf_thread_t *p_intf, wxWindow *p_parent );
  125. wxWindow *CreateDialogsProvider( intf_thread_t *p_intf, wxWindow *p_parent );
  126. namespace wxvlc
  127. {
  128. class Interface;
  129. class OpenDialog;
  130. class SoutDialog;
  131. class SubsFileDialog;
  132. class Playlist;
  133. class Messages;
  134. class FileInfo;
  135. class StreamDialog;
  136. class WizardDialog;
  137. class ItemInfoDialog;
  138. class NewGroup;
  139. class ExportPlaylist;
  140. /*****************************************************************************
  141.  * Classes declarations.
  142.  *****************************************************************************/
  143. /* Timer */
  144. class Timer: public wxTimer
  145. {
  146. public:
  147.     /* Constructor */
  148.     Timer( intf_thread_t *p_intf, Interface *p_main_interface );
  149.     virtual ~Timer();
  150.     virtual void Notify();
  151. private:
  152.     intf_thread_t *p_intf;
  153.     Interface *p_main_interface;
  154.     vlc_bool_t b_init;
  155.     int i_old_playing_status;
  156.     int i_old_rate;
  157.     vlc_bool_t b_old_seekable;
  158. };
  159. /* Extended panel */
  160. class ExtraPanel: public wxPanel
  161. {
  162. public:
  163.     /* Constructor */
  164.     ExtraPanel( intf_thread_t *p_intf, wxWindow *p_parent );
  165.     virtual ~ExtraPanel();
  166.     wxStaticBox *adjust_box;
  167.     wxButton *restoredefaults_button;
  168.     wxSlider *brightness_slider;
  169.     wxSlider *contrast_slider;
  170.     wxSlider *saturation_slider;
  171.     wxSlider *hue_slider;
  172.     wxSlider *gamma_slider;
  173.     wxStaticBox *other_box;
  174.     wxComboBox *ratio_combo;
  175.     char *psz_bands;
  176.     float f_preamp;
  177.     vlc_bool_t b_update;
  178. private:
  179.     wxPanel *VideoPanel( wxWindow * );
  180.     wxPanel *EqzPanel( wxWindow * );
  181.     wxPanel *AudioPanel( wxWindow * );
  182.     wxNotebook *notebook;
  183.     wxCheckBox *eq_chkbox;
  184.     wxCheckBox *eq_2p_chkbox;
  185.     wxSlider *smooth_slider;
  186.     wxSlider *preamp_slider;
  187.     wxStaticText * preamp_text;
  188.     int i_smooth;
  189.     wxWindow *p_parent;
  190.     wxSlider *band_sliders[10];
  191.     wxStaticText *band_texts[10];
  192.     int i_values[10];
  193.     void CheckAout();
  194.     /* Event handlers (these functions should _not_ be virtual) */
  195.     void OnEnableAdjust( wxCommandEvent& );
  196.     void OnEnableEqualizer( wxCommandEvent& );
  197.     void OnRestoreDefaults( wxCommandEvent& );
  198.     void OnChangeEqualizer( wxScrollEvent& );
  199.     void OnAdjustUpdate( wxScrollEvent& );
  200.     void OnRatio( wxCommandEvent& );
  201.     void OnFiltersInfo( wxCommandEvent& );
  202.     void OnSelectFilter( wxCommandEvent& );
  203.     void OnEqSmooth( wxScrollEvent& );
  204.     void OnPreamp( wxScrollEvent& );
  205.     void OnEq2Pass( wxCommandEvent& );
  206.     void OnEqRestore( wxCommandEvent& );
  207.     void OnHeadphone( wxCommandEvent& );
  208.     void OnNormvol( wxCommandEvent& );
  209.     void OnNormvolSlider( wxScrollEvent& );
  210.     void OnIdle( wxIdleEvent& );
  211.     DECLARE_EVENT_TABLE();
  212.     intf_thread_t *p_intf;
  213.     vlc_bool_t b_my_update;
  214. };
  215. #if 0
  216. /* Extended Window  */
  217. class ExtraWindow: public wxFrame
  218. {
  219. public:
  220.     /* Constructor */
  221.     ExtraWindow( intf_thread_t *p_intf, wxWindow *p_parent, wxPanel *panel );
  222.     virtual ~ExtraWindow();
  223. private:
  224.     wxPanel *panel;
  225.     DECLARE_EVENT_TABLE();
  226.     intf_thread_t *p_intf;
  227. };
  228. #endif
  229. /* Main Interface */
  230. class Interface: public wxFrame
  231. {
  232. public:
  233.     /* Constructor */
  234.     Interface( intf_thread_t *p_intf );
  235.     virtual ~Interface();
  236.     void Init();
  237.     void TogglePlayButton( int i_playing_status );
  238.     void Update();
  239.     wxBoxSizer  *frame_sizer;
  240.     wxStatusBar *statusbar;
  241.     wxSlider    *slider;
  242.     wxWindow    *slider_frame;
  243.     wxPanel     *extra_frame;
  244.     wxFrame    *extra_window;
  245.     vlc_bool_t b_extra;
  246.     vlc_bool_t b_undock;
  247.     wxGauge     *volctrl;
  248. private:
  249.     void SetupHotkeys();
  250.     void CreateOurMenuBar();
  251.     void CreateOurToolBar();
  252.     void CreateOurExtendedPanel();
  253.     void CreateOurSlider();
  254.     void Open( int i_access_method );
  255.     /* Event handlers (these functions should _not_ be virtual) */
  256.     void OnExit( wxCommandEvent& event );
  257.     void OnAbout( wxCommandEvent& event );
  258.     void OnOpenFileSimple( wxCommandEvent& event );
  259.     void OnOpenFile( wxCommandEvent& event );
  260.     void OnOpenDisc( wxCommandEvent& event );
  261.     void OnOpenNet( wxCommandEvent& event );
  262.     void OnOpenSat( wxCommandEvent& event );
  263.     void OnExtended( wxCommandEvent& event );
  264.     //void OnUndock( wxCommandEvent& event );
  265.     void OnBookmarks( wxCommandEvent& event );
  266.     void OnShowDialog( wxCommandEvent& event );
  267.     void OnPlayStream( wxCommandEvent& event );
  268.     void OnStopStream( wxCommandEvent& event );
  269.     void OnSliderUpdate( wxScrollEvent& event );
  270.     void OnPrevStream( wxCommandEvent& event );
  271.     void OnNextStream( wxCommandEvent& event );
  272.     void OnSlowStream( wxCommandEvent& event );
  273.     void OnFastStream( wxCommandEvent& event );
  274.     void OnMenuOpen( wxMenuEvent& event );
  275. #if defined( __WXMSW__ ) || defined( __WXMAC__ )
  276.     void OnContextMenu2(wxContextMenuEvent& event);
  277. #endif
  278.     void OnContextMenu(wxMouseEvent& event);
  279.     void OnControlEvent( wxCommandEvent& event );
  280.     DECLARE_EVENT_TABLE();
  281.     Timer *timer;
  282.     intf_thread_t *p_intf;
  283. private:
  284.     int i_old_playing_status;
  285.     /* For auto-generated menus */
  286.     wxMenu *p_settings_menu;
  287.     wxMenu *p_audio_menu;
  288.     wxMenu *p_video_menu;
  289.     wxMenu *p_navig_menu;
  290. };
  291. /* Open Dialog */
  292. WX_DEFINE_ARRAY(AutoBuiltPanel *, ArrayOfAutoBuiltPanel);
  293. class OpenDialog: public wxDialog
  294. {
  295. public:
  296.     /* Constructor */
  297.     OpenDialog( intf_thread_t *p_intf, wxWindow *p_parent,
  298.                 int i_access_method, int i_arg = 0  );
  299.     /* Extended Contructor */
  300.     OpenDialog( intf_thread_t *p_intf, wxWindow *p_parent,
  301.                 int i_access_method, int i_arg = 0 , int _i_method = 0 );
  302.     virtual ~OpenDialog();
  303.     int Show();
  304.     int Show( int i_access_method, int i_arg = 0 );
  305.     void UpdateMRL();
  306.     void UpdateMRL( int i_access_method );
  307.     wxArrayString mrl;
  308. private:
  309.     wxPanel *FilePanel( wxWindow* parent );
  310.     wxPanel *DiscPanel( wxWindow* parent );
  311.     wxPanel *NetPanel( wxWindow* parent );
  312.     ArrayOfAutoBuiltPanel input_tab_array;
  313.     /* Event handlers (these functions should _not_ be virtual) */
  314.     void OnOk( wxCommandEvent& event );
  315.     void OnCancel( wxCommandEvent& event );
  316.     void OnPageChange( wxNotebookEvent& event );
  317.     void OnMRLChange( wxCommandEvent& event );
  318.     /* Event handlers for the file page */
  319.     void OnFilePanelChange( wxCommandEvent& event );
  320.     void OnFileBrowse( wxCommandEvent& event );
  321.     /* Event handlers for the disc page */
  322.     void OnDiscPanelChange( wxCommandEvent& event );
  323.     void OnDiscTypeChange( wxCommandEvent& event );
  324.     void OnDiscDeviceChange( wxCommandEvent& event );
  325.     /* Event handlers for the net page */
  326.     void OnNetPanelChange( wxCommandEvent& event );
  327.     void OnNetTypeChange( wxCommandEvent& event );
  328.     /* Event handlers for the stream output */
  329.     void OnSubsFileEnable( wxCommandEvent& event );
  330.     void OnSubsFileSettings( wxCommandEvent& WXUNUSED(event) );
  331.     /* Event handlers for the stream output */
  332.     void OnSoutEnable( wxCommandEvent& event );
  333.     void OnSoutSettings( wxCommandEvent& WXUNUSED(event) );
  334.     /* Event handlers for the caching option */
  335.     void OnCachingEnable( wxCommandEvent& event );
  336.     void OnCachingChange( wxCommandEvent& event );
  337.     DECLARE_EVENT_TABLE();
  338.     intf_thread_t *p_intf;
  339.     wxWindow *p_parent;
  340.     int i_current_access_method;
  341.     int i_disc_type_selection;
  342.     int i_method; /* Normal or for the stream dialog ? */
  343.     int i_open_arg;
  344.     wxComboBox *mrl_combo;
  345.     wxNotebook *notebook;
  346.     /* Controls for the file panel */
  347.     wxComboBox *file_combo;
  348.     wxFileDialog *file_dialog;
  349.     /* Controls for the disc panel */
  350.     wxRadioBox *disc_type;
  351.     wxTextCtrl *disc_device;
  352.     wxSpinCtrl *disc_title; int i_disc_title;
  353.     wxSpinCtrl *disc_chapter; int i_disc_chapter;
  354.     wxSpinCtrl *disc_sub; int i_disc_sub;
  355.     /* The media equivalent name for a DVD names. For example,
  356.      * "Title", is "Track" for a CD-DA */
  357.     wxStaticText *disc_title_label;
  358.     wxStaticText *disc_chapter_label;
  359.     wxStaticText *disc_sub_label;
  360.     
  361.     /* Indicates if the disc device control was modified */
  362.     bool b_disc_device_changed;
  363.     
  364.     /* Controls for the net panel */
  365.     wxRadioBox *net_type;
  366.     int i_net_type;
  367.     wxPanel *net_subpanels[4];
  368.     wxRadioButton *net_radios[4];
  369.     wxSpinCtrl *net_ports[4];
  370.     int        i_net_ports[4];
  371.     wxTextCtrl *net_addrs[4];
  372.     wxCheckBox *net_ipv6;
  373.     /* Controls for the subtitles file */
  374.     wxButton *subsfile_button;
  375.     wxCheckBox *subsfile_checkbox;
  376.     SubsFileDialog *subsfile_dialog;
  377.     wxArrayString subsfile_mrl;
  378.     /* Controls for the stream output */
  379.     wxButton *sout_button;
  380.     wxCheckBox *sout_checkbox;
  381.     SoutDialog *sout_dialog;
  382.     wxArrayString sout_mrl;
  383.     /* Controls for the caching options */
  384.     wxCheckBox *caching_checkbox;
  385.     wxSpinCtrl *caching_value;
  386.     int i_caching;
  387. };
  388. enum
  389. {
  390.     FILE_ACCESS = 0,
  391.     DISC_ACCESS,
  392.     NET_ACCESS,
  393.     /* Auto-built panels */
  394.     CAPTURE_ACCESS
  395. };
  396. #define MAX_ACCESS CAPTURE_ACCESS
  397. /* Stream output Dialog */
  398. enum
  399. {
  400.     PLAY_ACCESS_OUT = 0,
  401.     FILE_ACCESS_OUT,
  402.     HTTP_ACCESS_OUT,
  403.     MMSH_ACCESS_OUT,
  404.     UDP_ACCESS_OUT,
  405.     RTP_ACCESS_OUT,
  406.     ACCESS_OUT_NUM
  407. };
  408. enum
  409. {
  410.     TS_ENCAPSULATION = 0,
  411.     PS_ENCAPSULATION,
  412.     MPEG1_ENCAPSULATION,
  413.     OGG_ENCAPSULATION,
  414.     ASF_ENCAPSULATION,
  415.     MP4_ENCAPSULATION,
  416.     MOV_ENCAPSULATION,
  417.     WAV_ENCAPSULATION,
  418.     RAW_ENCAPSULATION,
  419.     AVI_ENCAPSULATION,
  420.     ENCAPS_NUM
  421. };
  422. enum
  423. {
  424.     ANN_MISC_SOUT = 0,
  425.     MISC_SOUT_NUM
  426. };
  427. class SoutDialog: public wxDialog
  428. {
  429. public:
  430.     /* Constructor */
  431.     SoutDialog( intf_thread_t *p_intf, wxWindow *p_parent );
  432.     virtual ~SoutDialog();
  433.     wxArrayString GetOptions();
  434. private:
  435.     void UpdateMRL();
  436.     wxPanel *AccessPanel( wxWindow* parent );
  437.     wxPanel *MiscPanel( wxWindow* parent );
  438.     wxPanel *EncapsulationPanel( wxWindow* parent );
  439.     wxPanel *TranscodingPanel( wxWindow* parent );
  440.     void    ParseMRL();
  441.     /* Event handlers (these functions should _not_ be virtual) */
  442.     void OnOk( wxCommandEvent& event );
  443.     void OnCancel( wxCommandEvent& event );
  444.     void OnMRLChange( wxCommandEvent& event );
  445.     void OnAccessTypeChange( wxCommandEvent& event );
  446.     /* Event handlers for the file access output */
  447.     void OnFileChange( wxCommandEvent& event );
  448.     void OnFileBrowse( wxCommandEvent& event );
  449.     void OnFileDump( wxCommandEvent& event );
  450.     /* Event handlers for the net access output */
  451.     void OnNetChange( wxCommandEvent& event );
  452.     /* Event specific to the announce address */
  453.     void OnAnnounceAddrChange( wxCommandEvent& event );
  454.     /* Event handlers for the encapsulation panel */
  455.     void OnEncapsulationChange( wxCommandEvent& event );
  456.     /* Event handlers for the transcoding panel */
  457.     void OnTranscodingEnable( wxCommandEvent& event );
  458.     void OnTranscodingChange( wxCommandEvent& event );
  459.     /* Event handlers for the misc panel */
  460.     void OnSAPMiscChange( wxCommandEvent& event );
  461.     void OnSLPMiscChange( wxCommandEvent& event );
  462.     DECLARE_EVENT_TABLE();
  463.     intf_thread_t *p_intf;
  464.     wxWindow *p_parent;
  465.     wxComboBox *mrl_combo;
  466.     /* Controls for the access outputs */
  467.     wxPanel *access_panel;
  468.     wxPanel *access_subpanels[ACCESS_OUT_NUM];
  469.     wxCheckBox *access_checkboxes[ACCESS_OUT_NUM];
  470.     int i_access_type;
  471.     wxComboBox *file_combo;
  472.     wxCheckBox *dump_checkbox;
  473.     wxSpinCtrl *net_ports[ACCESS_OUT_NUM];
  474.     wxTextCtrl *net_addrs[ACCESS_OUT_NUM];
  475.     /* Controls for the SAP announces */
  476.     wxPanel *misc_panel;
  477.     wxPanel *misc_subpanels[MISC_SOUT_NUM];
  478.     wxCheckBox *sap_checkbox;
  479.     wxCheckBox *slp_checkbox;
  480.     wxTextCtrl *announce_addr;
  481.     /* Controls for the encapsulation */
  482.     wxPanel *encapsulation_panel;
  483.     wxRadioButton *encapsulation_radios[ENCAPS_NUM];
  484.     int i_encapsulation_type;
  485.     /* Controls for transcoding */
  486.     wxPanel *transcoding_panel;
  487.     wxCheckBox *video_transc_checkbox;
  488.     wxComboBox *video_codec_combo;
  489.     wxComboBox *audio_codec_combo;
  490.     wxCheckBox *audio_transc_checkbox;
  491.     wxComboBox *video_bitrate_combo;
  492.     wxComboBox *audio_bitrate_combo;
  493.     wxComboBox *audio_channels_combo;
  494.     wxComboBox *video_scale_combo;
  495. };
  496. /* Subtitles File Dialog */
  497. class SubsFileDialog: public wxDialog
  498. {
  499. public:
  500.     /* Constructor */
  501.     SubsFileDialog( intf_thread_t *p_intf, wxWindow *p_parent );
  502.     virtual ~SubsFileDialog();
  503.     wxComboBox *file_combo;
  504.     wxComboBox *encoding_combo;
  505.     wxComboBox *size_combo;
  506.     wxComboBox *align_combo;
  507.     wxSpinCtrl *fps_spinctrl;
  508.     wxSpinCtrl *delay_spinctrl;
  509. private:
  510.     /* Event handlers (these functions should _not_ be virtual) */
  511.     void OnOk( wxCommandEvent& event );
  512.     void OnCancel( wxCommandEvent& event );
  513.     void OnFileBrowse( wxCommandEvent& event );
  514.     DECLARE_EVENT_TABLE();
  515.     intf_thread_t *p_intf;
  516.     wxWindow *p_parent;
  517. };
  518. /* Stream */
  519. class StreamDialog: public wxFrame
  520. {
  521. public:
  522.     /* Constructor */
  523.     StreamDialog( intf_thread_t *p_intf, wxWindow *p_parent );
  524.     virtual ~StreamDialog();
  525. private:
  526.     void OnClose( wxCommandEvent& event );
  527.     void OnOpen( wxCommandEvent& event );
  528.     void OnSout( wxCommandEvent& event );
  529.     void OnStart( wxCommandEvent& event );
  530.     DECLARE_EVENT_TABLE();
  531.     intf_thread_t *p_intf;
  532.     wxStaticText *step2_label;
  533.     wxStaticText *step3_label;
  534.     wxButton *sout_button;
  535.     wxButton *start_button;
  536.     wxArrayString mrl;
  537.     wxArrayString sout_mrl;
  538.     OpenDialog *p_open_dialog;
  539.     SoutDialog *p_sout_dialog;
  540. };
  541. /* Wizard */
  542. class WizardDialog : public wxWizard
  543. {
  544. public:
  545.     /* Constructor */
  546.     WizardDialog( intf_thread_t *p_intf, wxWindow *p_parent,char *, int, int );
  547.     virtual ~WizardDialog();
  548.     void SetTranscode( char *vcodec, int vb, char *acodec,int ab);
  549.     void SetMrl( const char *mrl );
  550.     void SetTTL( int i_ttl );
  551.     void SetPartial( int, int );
  552.     void SetStream( char *method, char *address );
  553.     void SetTranscodeOut( char *address );
  554.     void SetAction( int i_action );
  555.     int  GetAction();
  556.     void SetSAP( bool b_enabled, const char *psz_name );
  557.     void SetMux( char *mux );
  558.     void Run();
  559.     int i_action;
  560.     char *method;
  561. protected:
  562.     int vb,ab;
  563.     int i_from, i_to, i_ttl;
  564.     char *vcodec , *acodec , *address , *mrl , *mux ;
  565.     char *psz_sap_name;
  566.     bool b_sap;
  567.     DECLARE_EVENT_TABLE();
  568.     intf_thread_t *p_intf;
  569. };
  570. /* Preferences Dialog */
  571. class PrefsDialog: public wxFrame
  572. {
  573. public:
  574.     /* Constructor */
  575.     PrefsDialog( intf_thread_t *p_intf, wxWindow *p_parent );
  576.     virtual ~PrefsDialog();
  577. private:
  578.     wxPanel *PrefsPanel( wxWindow* parent );
  579.     /* Event handlers (these functions should _not_ be virtual) */
  580.     void OnOk( wxCommandEvent& event );
  581.     void OnCancel( wxCommandEvent& event );
  582.     void OnSave( wxCommandEvent& event );
  583.     void OnResetAll( wxCommandEvent& event );
  584.     void OnAdvanced( wxCommandEvent& event );
  585.     DECLARE_EVENT_TABLE();
  586.     intf_thread_t *p_intf;
  587.     PrefsTreeCtrl *prefs_tree;
  588. };
  589. /* Messages */
  590. class Messages: public wxFrame
  591. {
  592. public:
  593.     /* Constructor */
  594.     Messages( intf_thread_t *p_intf, wxWindow *p_parent );
  595.     virtual ~Messages();
  596.     bool Show( bool show = TRUE );
  597.     void UpdateLog();
  598. private:
  599.     /* Event handlers (these functions should _not_ be virtual) */
  600.     void OnClose( wxCommandEvent& event );
  601.     void OnClear( wxCommandEvent& event );
  602.     void OnSaveLog( wxCommandEvent& event );
  603.     DECLARE_EVENT_TABLE();
  604.     intf_thread_t *p_intf;
  605.     wxTextCtrl *textctrl;
  606.     wxTextAttr *info_attr;
  607.     wxTextAttr *err_attr;
  608.     wxTextAttr *warn_attr;
  609.     wxTextAttr *dbg_attr;
  610.     wxFileDialog *save_log_dialog;
  611.     vlc_bool_t b_verbose;
  612. };
  613. /* Playlist */
  614. class Playlist: public wxFrame
  615. {
  616. public:
  617.     /* Constructor */
  618.     Playlist( intf_thread_t *p_intf, wxWindow *p_parent );
  619.     virtual ~Playlist();
  620.     void UpdatePlaylist();
  621.     void ShowPlaylist( bool show );
  622.     void UpdateItem( int );
  623.     bool b_need_update;
  624. private:
  625.     void DeleteItem( int item );
  626.     void ShowInfos( int item );
  627.     /* Event handlers (these functions should _not_ be virtual) */
  628.     void OnSize( wxSizeEvent &event );
  629.     void OnAddFile( wxCommandEvent& event );
  630.     void OnAddMRL( wxCommandEvent& event );
  631.     void OnClose( wxCommandEvent& event );
  632.     void OnSearch( wxCommandEvent& event );
  633.     void OnEnDis( wxCommandEvent& event );
  634.     void OnInfos( wxCommandEvent& event );
  635.     void OnSearchTextChange( wxCommandEvent& event );
  636.     void OnOpen( wxCommandEvent& event );
  637.     void OnSave( wxCommandEvent& event );
  638.     void OnSort( wxCommandEvent& event );
  639.     void OnColSelect( wxListEvent& event );
  640.     void OnUp( wxCommandEvent& event);
  641.     void OnDown( wxCommandEvent& event);
  642.     void OnEnableSelection( wxCommandEvent& event );
  643.     void OnDisableSelection( wxCommandEvent& event );
  644.     void OnInvertSelection( wxCommandEvent& event );
  645.     void OnDeleteSelection( wxCommandEvent& event );
  646.     void OnSelectAll( wxCommandEvent& event );
  647.     void OnRandom( wxCommandEvent& event );
  648.     void OnRepeat( wxCommandEvent& event );
  649.     void OnLoop ( wxCommandEvent& event );
  650.     void OnActivateItem( wxListEvent& event );
  651.     void OnKeyDown( wxListEvent& event );
  652.     void OnNewGroup( wxCommandEvent& event );
  653.     /* Popup functions */
  654.     void OnPopup( wxListEvent& event );
  655.     void OnPopupPlay( wxMenuEvent& event );
  656.     void OnPopupDel( wxMenuEvent& event );
  657.     void OnPopupEna( wxMenuEvent& event );
  658.     void OnPopupInfo( wxMenuEvent& event );
  659.     void Rebuild();
  660.     /* Custom events */
  661.     void OnPlaylistEvent( wxCommandEvent& event );
  662.     wxTextCtrl *search_text;
  663.     wxButton *search_button;
  664.     DECLARE_EVENT_TABLE();
  665.     wxMenu *popup_menu;
  666.     ItemInfoDialog *iteminfo_dialog;
  667.     intf_thread_t *p_intf;
  668.     wxListView *listview;
  669.     wxTreeCtrl *treeview;
  670.     int i_update_counter;
  671.     int i_sort_mode;
  672.     int i_popup_item;
  673.     int i_title_sorted;
  674.     int i_author_sorted;
  675.     int i_group_sorted;
  676.     int i_duration_sorted;
  677. };
  678. class NewGroup: public wxDialog
  679. {
  680. public:
  681.     /* Constructor */
  682.     NewGroup( intf_thread_t *p_intf, wxWindow *p_parent );
  683.     virtual ~NewGroup();
  684. private:
  685.     /* Event handlers (these functions should _not_ be virtual) */
  686.     void OnOk( wxCommandEvent& event );
  687.     void OnCancel( wxCommandEvent& event );
  688.     DECLARE_EVENT_TABLE();
  689.     intf_thread_t *p_intf;
  690.     wxTextCtrl *groupname;
  691. protected:
  692.     friend class Playlist;
  693.     friend class ItemInfoDialog;
  694.     char *psz_name;
  695. };
  696. /* ItemInfo Dialog */
  697. class ItemInfoDialog: public wxDialog
  698. {
  699. public:
  700.     /* Constructor */
  701.     ItemInfoDialog( intf_thread_t *p_intf, playlist_item_t *_p_item,
  702.                     wxWindow *p_parent );
  703.     virtual ~ItemInfoDialog();
  704.     wxArrayString GetOptions();
  705. private:
  706.     wxPanel *InfoPanel( wxWindow* parent );
  707.     wxPanel *GroupPanel( wxWindow* parent );
  708.     /* Event handlers (these functions should _not_ be virtual) */
  709.     void OnOk( wxCommandEvent& event );
  710.     void OnCancel( wxCommandEvent& event );
  711.     void OnNewGroup( wxCommandEvent& event );
  712.     void UpdateInfo();
  713.     DECLARE_EVENT_TABLE();
  714.     intf_thread_t *p_intf;
  715.     playlist_item_t *p_item;
  716.     wxWindow *p_parent;
  717.     /* Controls for the iteminfo dialog box */
  718.     wxPanel *info_subpanel;
  719.     wxPanel *info_panel;
  720.     wxPanel *group_subpanel;
  721.     wxPanel *group_panel;
  722.     wxTextCtrl *uri_text;
  723.     wxTextCtrl *name_text;
  724.     wxTextCtrl *author_text;
  725.     wxTreeCtrl *info_tree;
  726.     wxTreeItemId info_root;
  727.     wxCheckBox *enabled_checkbox;
  728.     wxComboBox *group_combo;
  729.     int ids_array[100];
  730. };
  731. /* File Info */
  732. class FileInfo: public wxFrame
  733. {
  734. public:
  735.     /* Constructor */
  736.     FileInfo( intf_thread_t *p_intf, wxWindow *p_parent );
  737.     virtual ~FileInfo();
  738.     void UpdateFileInfo();
  739.     vlc_bool_t b_need_update;
  740. private:
  741.     void OnClose( wxCommandEvent& event );
  742.     DECLARE_EVENT_TABLE();
  743.     intf_thread_t *p_intf;
  744.     wxTreeCtrl *fileinfo_tree;
  745.     wxTreeItemId fileinfo_root;
  746.     wxString fileinfo_root_label;
  747. };
  748. #if wxUSE_DRAG_AND_DROP
  749. /* Drag and Drop class */
  750. class DragAndDrop: public wxFileDropTarget
  751. {
  752. public:
  753.     DragAndDrop( intf_thread_t *_p_intf, vlc_bool_t b_enqueue = VLC_FALSE );
  754.     virtual bool OnDropFiles( wxCoord x, wxCoord y,
  755.                               const wxArrayString& filenames );
  756. private:
  757.     intf_thread_t *p_intf;
  758.     vlc_bool_t b_enqueue;
  759. };
  760. #endif
  761. } // end of wxvlc namespace
  762. /* Menus */
  763. void PopupMenu( intf_thread_t *, wxWindow *, const wxPoint& );
  764. wxMenu *SettingsMenu( intf_thread_t *, wxWindow *, wxMenu * = NULL );
  765. wxMenu *AudioMenu( intf_thread_t *, wxWindow *, wxMenu * = NULL );
  766. wxMenu *VideoMenu( intf_thread_t *, wxWindow *, wxMenu * = NULL );
  767. wxMenu *NavigMenu( intf_thread_t *, wxWindow *, wxMenu * = NULL );
  768. namespace wxvlc
  769. {
  770. class MenuEvtHandler : public wxEvtHandler
  771. {
  772. public:
  773.     MenuEvtHandler( intf_thread_t *p_intf, Interface *p_main_interface );
  774.     virtual ~MenuEvtHandler();
  775.     void OnMenuEvent( wxCommandEvent& event );
  776.     void OnShowDialog( wxCommandEvent& event );
  777. private:
  778.     DECLARE_EVENT_TABLE()
  779.     intf_thread_t *p_intf;
  780.     Interface *p_main_interface;
  781. };
  782. } // end of wxvlc namespace
  783. using namespace wxvlc;