]> git.sesse.net Git - vlc/commitdiff
Implement add_module_cat to add a module by category + use this for intf
authorClément Stenac <zorglub@videolan.org>
Tue, 14 Dec 2004 18:44:04 +0000 (18:44 +0000)
committerClément Stenac <zorglub@videolan.org>
Tue, 14 Dec 2004 18:44:04 +0000 (18:44 +0000)
include/configuration.h
modules/control/http.c
modules/control/rc.c
modules/control/rtci.c
modules/control/telnet.c
modules/gui/wxwindows/preferences_widgets.cpp
modules/gui/wxwindows/preferences_widgets.h
modules/visualization/xosd.c
src/libvlc.h
src/misc/configuration.c

index af4cb17ce424c8a828c553341fdf85bb084e6703..bbdda91e26116b7cc1c87b546c4aae1f4288bf71 100644 (file)
@@ -51,8 +51,9 @@
 #define CONFIG_ITEM_FLOAT                   0x0060  /* Float option */
 #define CONFIG_ITEM_DIRECTORY               0x0070  /* Directory option */
 #define CONFIG_ITEM_KEY                     0x0080  /* Hot key option */
-#define CONFIG_ITEM_MODULE_LIST             0x0090  /* Module option */
-#define CONFIG_ITEM_MODULE_LIST_CAT         0x00A0  /* Module option */
+#define CONFIG_ITEM_MODULE_CAT              0x0090  /* Module option */
+#define CONFIG_ITEM_MODULE_LIST             0x00A0  /* Module option */
+#define CONFIG_ITEM_MODULE_LIST_CAT         0x00B0  /* Module option */
 
 #define CONFIG_ITEM                         0x00F0
 
@@ -276,6 +277,11 @@ int config_CreateDir( vlc_object_t *, char * );
         (i_config+11) * sizeof(module_config_t)); \
     { static module_config_t tmp = { CONFIG_ITEM_MODULE, psz_caps, name, '\0', text, longtext, psz_value }; p_config[ i_config ] = tmp; p_config[ i_config ].pf_callback = p_callback; p_config[i_config].b_advanced = advc; }
 
+#define add_module_cat( name, i_subcategory, psz_value, p_callback, text, longtext, advc ) \
+    i_config++; \
+    if(!(i_config%10)) p_config = (module_config_t* )realloc(p_config, \
+        (i_config+11) * sizeof(module_config_t)); \
+    { static module_config_t tmp = { CONFIG_ITEM_MODULE_CAT, NULL, name, '\0', text, longtext, psz_value, 0, 0.0, i_subcategory }; p_config[ i_config ] = tmp; p_config[ i_config ].pf_callback = p_callback; p_config[i_config].b_advanced = advc; }
 
 #define add_module_list( name, psz_caps, psz_value, p_callback, text, longtext, advc ) \
     i_config++; \
index de1c36c920c77a3bdaabecc1f12aef8c2eb0f973..1aeda59319523d7a78e807b61855c4c237e6b4ff 100644 (file)
@@ -92,7 +92,7 @@ static void Close( vlc_object_t * );
 vlc_module_begin();
     set_description( _("HTTP remote control interface") );
     set_category( CAT_INTERFACE );
-    set_subcategory( SUBCAT_INTERFACE_CONTROL );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
         add_string ( "http-host", NULL, NULL, HOST_TEXT, HOST_LONGTEXT, VLC_TRUE );
         add_string ( "http-src",  NULL, NULL, SRC_TEXT,  SRC_LONGTEXT,  VLC_TRUE );
         add_string ( "http-intf-cert", NULL, NULL, CERT_TEXT, CERT_LONGTEXT, VLC_TRUE );
index 23fdd2c764ce2dd197c7941214b6421313b57d07..9e6d609f2b7815ba9c446fb9c101d4b046b525ed 100644 (file)
@@ -96,7 +96,7 @@ struct intf_sys_t
     int i_socket;
     char *psz_unix_path;
     vlc_bool_t b_extend;
-    
+
 #ifdef WIN32
     HANDLE hConsoleIn;
     vlc_bool_t b_quiet;
@@ -138,7 +138,6 @@ void __msg_rc( intf_thread_t *p_intf, const char *psz_fmt, ... )
             "You can set the address and port the interface will bind to." )
 #define EXTEND_TEXT N_("Extended help")
 #define EXTEND_LONGTEXT N_("List additional commands.")
-            
 
 #ifdef WIN32
 #define QUIET_TEXT N_("Do not open a DOS command box interface")
@@ -151,7 +150,7 @@ void __msg_rc( intf_thread_t *p_intf, const char *psz_fmt, ... )
 
 vlc_module_begin();
     set_category( CAT_INTERFACE );
-    set_subcategory( SUBCAT_INTERFACE_CONTROL );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
     set_description( _("Remote control interface") );
     add_bool( "rc-show-pos", 0, NULL, POS_TEXT, POS_LONGTEXT, VLC_TRUE );
 #ifdef HAVE_ISATTY
index 087f04a07130f04e9ed5b751fa9aabde23dff437..cf3722805a3d2e655a8fd0ca1a07c2fa77c4ecb6 100755 (executable)
@@ -102,7 +102,7 @@ struct intf_sys_t
     int i_socket;
     char *psz_unix_path;
     vlc_bool_t b_extend;
-    
+
 #ifdef WIN32
     HANDLE hConsoleIn;
 #endif
@@ -141,7 +141,6 @@ static void __msg_rtci( intf_thread_t *p_intf, const char *psz_fmt, ... )
             "You can set the address and port the interface will bind to." )
 #define EXTEND_TEXT N_("Extended help")
 #define EXTEND_LONGTEXT N_("List additional commands.")
-            
 
 #ifdef WIN32
 #define QUIET_TEXT N_("Do not open a DOS command box interface")
@@ -153,7 +152,7 @@ static void __msg_rtci( intf_thread_t *p_intf, const char *psz_fmt, ... )
 vlc_module_begin();
     set_description( _("Real time control interface") );
     set_category( CAT_INTERFACE );
-    set_subcategory( SUBCAT_INTERFACE_CONTROL );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
     add_bool( "rtci-show-pos", 0, NULL, POS_TEXT, POS_LONGTEXT, VLC_TRUE );
 #ifdef HAVE_ISATTY
     add_bool( "rtci-fake-tty", 0, NULL, TTY_TEXT, TTY_LONGTEXT, VLC_TRUE );
index 795006a54d57502575c91ba5ba42f28afc9504c7..e7a3cecd1ceea1d2c7c9e9c3dda0bcc435878133 100644 (file)
@@ -82,6 +82,8 @@ static void Close( vlc_object_t * );
 #define TELNETPWD_LONGTEXT N_( "Default to admin" )
 
 vlc_module_begin();
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
     add_integer( "telnet-port", 4212, NULL, TELNETPORT_TEXT,
                  TELNETPORT_LONGTEXT, VLC_TRUE );
     add_string( "telnet-password", "admin", NULL, TELNETPWD_TEXT,
index 5159e4a0436f0348a3c37bccdf9ade423f6b9f58..363e1cb38af3277686e107684a0358850bebce03 100644 (file)
@@ -53,6 +53,9 @@ ConfigControl *CreateConfigControl( vlc_object_t *p_this,
     case CONFIG_ITEM_MODULE:
         p_control = new ModuleConfigControl( p_this, p_item, parent );
         break;
+    case CONFIG_ITEM_MODULE_CAT:
+        p_control = new ModuleCatConfigControl( p_this, p_item, parent );
+        break;
     case CONFIG_ITEM_MODULE_LIST_CAT:
         p_control = new ModuleListCatConfigControl( p_this, p_item, parent );
         break;
@@ -290,6 +293,68 @@ ModuleConfigControl::ModuleConfigControl( vlc_object_t *p_this,
     this->SetSizerAndFit( sizer );
 }
 
+ModuleCatConfigControl::~ModuleCatConfigControl()
+{
+    ;
+}
+
+wxString ModuleCatConfigControl::GetPszValue()
+{
+    return wxU( (char *)combo->GetClientData( combo->GetSelection() ));
+}
+
+/*****************************************************************************
+ * ModuleCatConfigControl implementation
+ *****************************************************************************/
+ModuleCatConfigControl::ModuleCatConfigControl( vlc_object_t *p_this,
+                                                module_config_t *p_item,
+                                                wxWindow *parent )
+  : ConfigControl( p_this, p_item, parent )
+{
+    vlc_list_t *p_list;
+    module_t *p_parser;
+
+    label = new wxStaticText(this, -1, wxU(p_item->psz_text));
+    combo = new wxComboBox( this, -1, wxL2U(p_item->psz_value),
+                            wxDefaultPosition, wxDefaultSize,
+                            0, NULL, wxCB_READONLY | wxCB_SORT );
+
+    combo->Append( wxU(_("Default")), (void *)NULL );
+    combo->SetSelection( 0 );
+
+    /* build a list of available modules */
+    p_list = vlc_list_find( p_this, VLC_OBJECT_MODULE, FIND_ANYWHERE );
+    for(  int i_index = 0; i_index < p_list->i_count; i_index++ )
+    {
+        p_parser = (module_t *)p_list->p_values[i_index].p_object ;
+
+        if( !strcmp( p_parser->psz_object_name, "main" ) )
+              continue;
+
+        module_config_t *p_config = p_parser->p_config;
+        if( p_config ) do
+        {
+            /* Hack: required subcategory is stored in i_min */
+            if( p_config->i_type == CONFIG_SUBCATEGORY &&
+                p_config->i_value == p_item->i_min )
+            {
+                combo->Append( wxU(p_parser->psz_longname),
+                                   p_parser->psz_object_name );
+                if( p_item->psz_value && !strcmp(p_item->psz_value,
+                                        p_parser->psz_object_name) )
+                combo->SetValue( wxU(p_parser->psz_longname) );
+            }
+        } while( p_config->i_type != CONFIG_HINT_END && p_config++ );
+    }
+    vlc_list_release( p_list );
+
+    combo->SetToolTip( wxU(p_item->psz_longtext) );
+    sizer->Add( label, 1, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
+    sizer->Add( combo, 1, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
+    sizer->Layout();
+    this->SetSizerAndFit( sizer );
+}
+
 ModuleConfigControl::~ModuleConfigControl()
 {
     ;
@@ -300,6 +365,7 @@ wxString ModuleConfigControl::GetPszValue()
     return wxU( (char *)combo->GetClientData( combo->GetSelection() ));
 }
 
+
 /*****************************************************************************
  * ModuleListCatonfigControl implementation
  *****************************************************************************/
index 88bd1ba7fb7bc2e6a3a9f97166c3ae0d4db45c9b..6765df7dca0f6644d0801a5892849fcf30b8c259 100644 (file)
@@ -89,6 +89,17 @@ struct moduleCheckBox {
     char *psz_module;
 };
 
+class ModuleCatConfigControl: public ConfigControl
+{
+public:
+    ModuleCatConfigControl( vlc_object_t *, module_config_t *, wxWindow * );
+    ~ModuleCatConfigControl();
+    virtual wxString GetPszValue();
+private:
+    wxComboBox *combo;
+};
+
+
 class ModuleListCatConfigControl: public ConfigControl
 {
 public:
@@ -99,7 +110,7 @@ private:
     std::vector<moduleCheckBox *> pp_checkboxes;
 
     void OnUpdate( wxCommandEvent& );
-    
+
     wxTextCtrl *text;
     DECLARE_EVENT_TABLE()
 };
index b72b6e2cb85214c0cfc66a853c727b95558ca49d..e3a2bf3fce2e5f08d8a0c4bb623e83900170f8b0 100644 (file)
@@ -77,6 +77,8 @@ static int PlaylistNext( vlc_object_t *p_this, const char *psz_variable,
 #define COLOUR_LONGTEXT ("Colour used to display text in the xosd output")
 
 vlc_module_begin();
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_CONTROL );
     set_description( _("XOSD interface") );
     add_bool( "xosd-position", 1, NULL, POSITION_TEXT, POSITION_LONGTEXT, VLC_TRUE );
     add_integer( "xosd-text-offset", 30, NULL, TXT_OFS_TEXT, TXT_OFS_LONGTEXT, VLC_TRUE );
index d3f0a23f44ec2ef8e40354fbe563cc639f019bde..7bf1f489fb06c4f51f15868c4a371d6767002ae9 100644 (file)
@@ -1126,7 +1126,7 @@ vlc_module_begin();
     set_subcategory( SUBCAT_INTERFACE_GENERAL );
 
     set_section ( N_("Interface module" ), NULL );
-    add_module( "intf", "interface", NULL, NULL, INTF_TEXT,
+    add_module_cat( "intf", SUBCAT_INTERFACE_GENERAL, NULL, NULL, INTF_TEXT,
                 INTF_LONGTEXT, VLC_FALSE );
         change_short('I');
 
index 1d1f7771065008e1d354974d8ca1621434afe6bd..3c4787454aa384d116d1f5e24240edeb211dec7e 100644 (file)
@@ -205,6 +205,7 @@ char * __config_GetPsz( vlc_object_t *p_this, const char *psz_name )
         (p_config->i_type!=CONFIG_ITEM_DIRECTORY) &&
         (p_config->i_type!=CONFIG_ITEM_MODULE_LIST) &&
         (p_config->i_type!=CONFIG_ITEM_MODULE_LIST_CAT) &&
+        (p_config->i_type!=CONFIG_ITEM_MODULE_CAT) &&
         (p_config->i_type!=CONFIG_ITEM_MODULE) )
     {
         msg_Err( p_this, "option %s does not refer to a string", psz_name );