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

多媒体

开发平台:

MultiPlatform

  1. /*****************************************************************************
  2.  * preferences_widgets.h : wxWindows plugin for vlc
  3.  *****************************************************************************
  4.  * Copyright (C) 2000-2003 VideoLAN
  5.  * $Id: preferences_widgets.h 9088 2004-10-31 13:19:28Z gbazin $
  6.  *
  7.  * Authors: Sigmund Augdal <sigmunau@idi.ntnu.no>
  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. class ConfigControl: public wxPanel
  24. {
  25. public:
  26.     ConfigControl( vlc_object_t *, module_config_t *, wxWindow * );
  27.     ~ConfigControl();
  28.     wxSizer *Sizer();
  29.     virtual int GetIntValue() {return 0;}
  30.     virtual float GetFloatValue() {return 0;}
  31.     virtual wxString GetPszValue() {return wxString();}
  32.     wxString GetName();
  33.     int GetType();
  34.     vlc_bool_t IsAdvanced();
  35.     void SetUpdateCallback( void (*)( void * ), void * );
  36. protected:
  37.     wxBoxSizer *sizer;
  38.     wxStaticText *label;
  39.     vlc_object_t *p_this;
  40.     void (*pf_update_callback)( void * );
  41.     void *p_update_data;
  42.     void OnUpdate( wxCommandEvent& );
  43. private:
  44.     wxString name;
  45.     int i_type;
  46.     vlc_bool_t b_advanced;
  47. };
  48. ConfigControl *CreateConfigControl( vlc_object_t *,
  49.                                     module_config_t *, wxWindow * );
  50. class KeyConfigControl: public ConfigControl
  51. {
  52. public:
  53.     KeyConfigControl( vlc_object_t *, module_config_t *, wxWindow * );
  54.     ~KeyConfigControl();
  55.     virtual int GetIntValue();
  56. private:
  57.     wxCheckBox *alt;
  58.     wxCheckBox *ctrl;
  59.     wxCheckBox *shift;
  60.     wxComboBox *combo;
  61.     // Array of key descriptions, for the ComboBox
  62.     static wxString *m_keysList;
  63. };
  64. class ModuleConfigControl: public ConfigControl
  65. {
  66. public:
  67.     ModuleConfigControl( vlc_object_t *, module_config_t *, wxWindow * );
  68.     ~ModuleConfigControl();
  69.     virtual wxString GetPszValue();
  70. private:
  71.     wxComboBox *combo;
  72. };
  73. class StringConfigControl: public ConfigControl
  74. {
  75. public:
  76.     StringConfigControl( vlc_object_t *, module_config_t *, wxWindow * );
  77.     ~StringConfigControl();
  78.     virtual wxString GetPszValue();
  79. private:
  80.     wxTextCtrl *textctrl;
  81.     DECLARE_EVENT_TABLE()
  82. };
  83. class StringListConfigControl: public ConfigControl
  84. {
  85. public:
  86.     StringListConfigControl( vlc_object_t *, module_config_t *, wxWindow * );
  87.     ~StringListConfigControl();
  88.     virtual wxString GetPszValue();
  89. private:
  90.     wxComboBox *combo;
  91.     char *psz_default_value;
  92.     void UpdateCombo( module_config_t *p_item );
  93.     void OnAction( wxCommandEvent& );
  94.     DECLARE_EVENT_TABLE()
  95. };
  96. class FileConfigControl: public ConfigControl
  97. {
  98. public:
  99.     FileConfigControl( vlc_object_t *, module_config_t *, wxWindow * );
  100.     ~FileConfigControl();
  101.     void OnBrowse( wxCommandEvent& );
  102.     virtual wxString GetPszValue();
  103. private:
  104.     wxTextCtrl *textctrl;
  105.     wxButton *browse;
  106.     bool directory;
  107.     DECLARE_EVENT_TABLE()
  108. };
  109. class IntegerConfigControl: public ConfigControl
  110. {
  111. public:
  112.     IntegerConfigControl( vlc_object_t *, module_config_t *, wxWindow * );
  113.     ~IntegerConfigControl();
  114.     virtual int GetIntValue();
  115. private:
  116.     wxSpinCtrl *spin;
  117.     int i_value;
  118.     void OnUpdate( wxCommandEvent& );
  119.     DECLARE_EVENT_TABLE()
  120. };
  121. class IntegerListConfigControl: public ConfigControl
  122. {
  123. public:
  124.     IntegerListConfigControl( vlc_object_t *, module_config_t *, wxWindow * );
  125.     ~IntegerListConfigControl();
  126.     virtual int GetIntValue();
  127. private:
  128.     wxComboBox *combo;
  129.     void UpdateCombo( module_config_t *p_item );
  130.     void OnAction( wxCommandEvent& );
  131.     DECLARE_EVENT_TABLE()
  132. };
  133. class RangedIntConfigControl: public ConfigControl
  134. {
  135. public:
  136.     RangedIntConfigControl( vlc_object_t *, module_config_t *, wxWindow * );
  137.     ~RangedIntConfigControl();
  138.     virtual int GetIntValue();
  139. private:
  140.     wxSlider *slider;
  141.     DECLARE_EVENT_TABLE()
  142. };
  143. class FloatConfigControl: public ConfigControl
  144. {
  145. public:
  146.     FloatConfigControl( vlc_object_t *, module_config_t *, wxWindow * );
  147.     ~FloatConfigControl();
  148.     virtual float GetFloatValue();
  149. private:
  150.     wxTextCtrl *textctrl;
  151.     DECLARE_EVENT_TABLE()
  152. };
  153. class BoolConfigControl: public ConfigControl
  154. {
  155. public:
  156.     BoolConfigControl( vlc_object_t *, module_config_t *, wxWindow * );
  157.     ~BoolConfigControl();
  158.     virtual int GetIntValue();
  159. private:
  160.     wxCheckBox *checkbox;
  161.     DECLARE_EVENT_TABLE()
  162. };