Improvements to preferences
authorClément Stenac <zorglub@videolan.org>
Sat, 11 Dec 2004 14:45:46 +0000 (14:45 +0000)
committerClément Stenac <zorglub@videolan.org>
Sat, 11 Dec 2004 14:45:46 +0000 (14:45 +0000)
* Each module can declare a "human-readable short name" with set_name
* Modules are sorted by category (set_category, set_subcategory).
  Modules configs can be separated by set_section()
* Separated audio-filter and audio-visual
* Separated extraintf and control
* New command and widget : add_module_list() for comma-separated modules
* Vfilters now use "," as separator

212 files changed:
Makefile.am
include/configuration.h
include/modules.h
include/modules_inner.h
include/vlc_common.h
include/vlc_help.h [deleted file]
modules/access/cdda.c
modules/access/cdda/cdda.c
modules/access/directory.c
modules/access/dshow/dshow.cpp
modules/access/dvb/access.c
modules/access/dvdnav.c
modules/access/dvdread.c
modules/access/file.c
modules/access/ftp.c
modules/access/http.c
modules/access/mms/mms.c
modules/access/pvr/pvr.c
modules/access/satellite/satellite.c
modules/access/screen/screen.c
modules/access/tcp.c
modules/access/udp.c
modules/access/v4l/v4l.c
modules/access/vcd/vcd.c
modules/access/vcdx/vcd.c
modules/access_output/dummy.c
modules/access_output/file.c
modules/access_output/http.c
modules/access_output/udp.c
modules/audio_filter/channel_mixer/headphone.c
modules/audio_filter/channel_mixer/simple.c
modules/audio_filter/channel_mixer/trivial.c
modules/audio_filter/converter/a52tofloat32.c
modules/audio_filter/converter/a52tospdif.c
modules/audio_filter/converter/dtstofloat32.c
modules/audio_filter/converter/dtstospdif.c
modules/audio_filter/converter/fixed32tofloat32.c
modules/audio_filter/converter/fixed32tos16.c
modules/audio_filter/converter/float32tos16.c
modules/audio_filter/converter/float32tos8.c
modules/audio_filter/converter/float32tou16.c
modules/audio_filter/converter/float32tou8.c
modules/audio_filter/converter/mpgatofixed32.c
modules/audio_filter/converter/s16tofixed32.c
modules/audio_filter/converter/s16tofloat32.c
modules/audio_filter/converter/s16tofloat32swab.c
modules/audio_filter/converter/s8tofloat32.c
modules/audio_filter/converter/u8tofixed32.c
modules/audio_filter/converter/u8tofloat32.c
modules/audio_filter/equalizer.c
modules/audio_filter/normvol.c
modules/audio_filter/resampler/bandlimited.c
modules/audio_filter/resampler/coreaudio.c
modules/audio_filter/resampler/linear.c
modules/audio_filter/resampler/trivial.c
modules/audio_filter/resampler/ugly.c
modules/audio_mixer/float32.c
modules/audio_mixer/spdif.c
modules/audio_mixer/trivial.c
modules/audio_output/alsa.c
modules/audio_output/arts.c
modules/audio_output/coreaudio.c
modules/audio_output/directx.c
modules/audio_output/esd.c
modules/audio_output/hd1000a.cpp
modules/audio_output/oss.c
modules/audio_output/portaudio.c
modules/audio_output/sdl.c
modules/audio_output/waveout.c
modules/codec/a52.c
modules/codec/adpcm.c
modules/codec/araw.c
modules/codec/cinepak.c
modules/codec/dmo/dmo.c
modules/codec/dts.c
modules/codec/dvbsub.c
modules/codec/faad.c
modules/codec/ffmpeg/ffmpeg.c
modules/codec/flac.c
modules/codec/libmpeg2.c
modules/codec/lpcm.c
modules/codec/mash.cpp
modules/codec/mpeg_audio.c
modules/codec/ogt/cvd.c
modules/codec/quicktime.c
modules/codec/rawvideo.c
modules/codec/speex.c
modules/codec/spudec/spudec.c
modules/codec/subsdec.c
modules/codec/tarkin.c
modules/codec/theora.c
modules/codec/toolame.c
modules/codec/vorbis.c
modules/codec/x264.c
modules/control/corba/corba.c
modules/control/gestures.c
modules/control/http.c
modules/control/joystick.c
modules/control/lirc.c
modules/control/netsync.c
modules/control/ntservice.c
modules/control/rc.c
modules/control/rtci.c
modules/demux/a52.c
modules/demux/aac.c
modules/demux/aiff.c
modules/demux/asf/asf.c
modules/demux/au.c
modules/demux/avi/avi.c
modules/demux/demuxdump.c
modules/demux/dts.c
modules/demux/flac.c
modules/demux/livedotcom.cpp
modules/demux/m3u.c
modules/demux/mjpeg.c
modules/demux/mkv.cpp
modules/demux/mod.c
modules/demux/mp4/mp4.c
modules/demux/mpeg/h264.c
modules/demux/mpeg/m4a.c
modules/demux/mpeg/m4v.c
modules/demux/mpeg/mpga.c
modules/demux/mpeg/mpgv.c
modules/demux/nsv.c
modules/demux/ogg.c
modules/demux/playlist/playlist.c
modules/demux/playlist/playlist.h
modules/demux/ps.c
modules/demux/pva.c
modules/demux/rawdv.c
modules/demux/real.c
modules/demux/sgimb.c
modules/demux/subtitle.c
modules/demux/ts.c
modules/demux/vobsub.c
modules/demux/wav.c
modules/gui/beos/BeOS.cpp
modules/gui/gtk/gnome.c
modules/gui/gtk/gtk.c
modules/gui/gtk2/gnome2.c
modules/gui/gtk2/gtk2.c
modules/gui/kde/kde.cpp
modules/gui/macosx/macosx.m
modules/gui/ncurses.c
modules/gui/pda/pda.c
modules/gui/qnx/qnx.c
modules/gui/qt/qt.cpp
modules/gui/skins2/src/skin_main.cpp
modules/gui/wxwindows/open.cpp
modules/gui/wxwindows/preferences.cpp
modules/gui/wxwindows/preferences_widgets.cpp
modules/gui/wxwindows/preferences_widgets.h
modules/gui/wxwindows/wxwindows.cpp
modules/misc/dummy/dummy.c
modules/misc/freetype.c
modules/misc/gnutls.c
modules/misc/logger.c
modules/misc/memcpy/memcpy.c
modules/misc/memcpy/memcpyaltivec.c
modules/misc/playlist/export.c
modules/misc/rtsp.c
modules/misc/screensaver.c
modules/misc/svg.c
modules/misc/xml/libxml.c
modules/misc/xml/xtag.c
modules/mux/asf.c
modules/mux/avi.c
modules/mux/dummy.c
modules/mux/mp4.c
modules/mux/mpeg/ps.c
modules/mux/mpeg/ts.c
modules/mux/mpjpeg.c
modules/mux/ogg.c
modules/mux/wav.c
modules/packetizer/copy.c
modules/packetizer/h264.c
modules/packetizer/mpeg4audio.c
modules/packetizer/mpeg4video.c
modules/packetizer/mpegvideo.c
modules/services_discovery/hal.c
modules/services_discovery/sap.c
modules/stream_out/display.c
modules/stream_out/duplicate.c
modules/stream_out/es.c
modules/stream_out/gather.c
modules/stream_out/rtp.c
modules/stream_out/standard.c
modules/stream_out/transcode.c
modules/stream_out/transrate/transrate.c
modules/video_filter/adjust.c
modules/video_filter/blend.c
modules/video_filter/clone.c
modules/video_filter/crop.c
modules/video_filter/deinterlace.c
modules/video_filter/distort.c
modules/video_filter/invert.c
modules/video_filter/logo.c
modules/video_filter/marq.c
modules/video_filter/scale.c
modules/video_filter/time.c
modules/video_filter/transform.c
modules/video_filter/wall.c
modules/video_output/aa.c
modules/video_output/caca.c
modules/visualization/galaktos/plugin.c
modules/visualization/goom.c
modules/visualization/visual/visual.c
src/audio_output/input.c
src/libvlc.c
src/libvlc.h
src/misc/configuration.c
src/video_output/video_output.c

index 76cf122..854b536 100644 (file)
@@ -99,7 +99,7 @@ HEADERS_include = \
        include/vlc_es.h \
        include/vlc_es_out.h \
        include/vlc_filter.h \
-       include/vlc_help.h \
+       include/vlc_config_cat.h \
        include/vlc_httpd.h \
        include/vlc_tls.h \
        include/vlc_input.h \
index 66c2bf2..af4cb17 100644 (file)
  *****************************************************************************/
 
 /* Configuration hint types */
+
+
 #define CONFIG_HINT_END                     0x0001  /* End of config */
 #define CONFIG_HINT_CATEGORY                0x0002  /* Start of new category */
 #define CONFIG_HINT_SUBCATEGORY             0x0003  /* Start of sub-category */
 #define CONFIG_HINT_SUBCATEGORY_END         0x0004  /* End of sub-category */
 #define CONFIG_HINT_USAGE                   0x0005  /* Usage information */
 
+#define CONFIG_CATEGORY                     0x0006 /* Set category */
+#define CONFIG_SUBCATEGORY                  0x0007 /* Set subcategory */
+#define CONFIG_SECTION                      0x0008 /* Start of new section */
+
 #define CONFIG_HINT                         0x000F
 
 /* Configuration item types */
 #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                         0x00F0
 
+/*******************************************************************
+ * All predefined categories and subcategories
+ *******************************************************************/
+#define CAT_INTERFACE 1
+   #define SUBCAT_INTERFACE_GENERAL 101
+   #define SUBCAT_INTERFACE_CONTROL 102
+   #define SUBCAT_INTERFACE_HOTKEYS 103
+
+#define CAT_AUDIO 2
+   #define SUBCAT_AUDIO_GENERAL 201
+   #define SUBCAT_AUDIO_AOUT 202
+   #define SUBCAT_AUDIO_AFILTER 203
+   #define SUBCAT_AUDIO_VISUAL 204
+   #define SUBCAT_AUDIO_MISC 205
+
+#define CAT_VIDEO 3
+   #define SUBCAT_VIDEO_GENERAL 301
+   #define SUBCAT_VIDEO_VOUT 302
+   #define SUBCAT_VIDEO_VFILTER 303
+   #define SUBCAT_VIDEO_TEXT 304
+   #define SUBCAT_VIDEO_SUBPIC 305
+
+#define CAT_INPUT 4
+   #define SUBCAT_INPUT_ACCESS 401
+   #define SUBCAT_INPUT_DEMUX 402
+   #define SUBCAT_INPUT_VCODEC 403
+   #define SUBCAT_INPUT_ACODEC 404
+   #define SUBCAT_INPUT_SCODEC 405
+   #define SUBCAT_INPUT_ADVANCED 406
+
+#define CAT_SOUT 5
+   #define SUBCAT_SOUT_GENERAL 501
+   #define SUBCAT_SOUT_STREAM 502
+   #define SUBCAT_SOUT_MUX 503
+   #define SUBCAT_SOUT_ACO 504
+   #define SUBCAT_SOUT_PACKETIZER 505
+   #define SUBCAT_SOUT_SAP 506
+   #define SUBCAT_SOUT_VOD 507
+
+#define CAT_ADVANCED 6
+   #define SUBCAT_ADVANCED_CPU 601
+   #define SUBCAT_ADVANCED_MISC 602
+   #define SUBCAT_ADVANCED_NETWORK 603
+   #define SUBCAT_ADVANCED_XML 604
+
+#define CAT_PLAYLIST 7
+   #define SUBCAT_PLAYLIST_GENERAL 701
+   #define SUBCAT_PLAYLIST_SD 702
+   #define SUBCAT_PLAYLIST_EXPORT 703
+
+struct config_category_t
+{
+    int         i_id;
+    char       *psz_name;
+    char       *psz_help;
+};
+
 struct module_config_t
 {
     int          i_type;                               /* Configuration type */
@@ -146,16 +211,37 @@ int config_CreateDir( vlc_object_t *, char * );
  *   allow for a more user friendly interface.
  *****************************************************************************/
 
-#define add_category_hint( text, longtext, advc ) \
+#define set_category( i_id ) \
     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_HINT_CATEGORY, NULL, NULL, '\0', text, longtext }; p_config[ i_config ] = tmp; p_config[i_config].b_advanced = advc; }
-#define add_subcategory_hint( text, longtext ) \
+    { static module_config_t tmp = { CONFIG_CATEGORY, NULL, NULL , '\0', NULL, NULL, NULL, i_id }; p_config[ i_config ] = tmp;  }
+
+#define set_subcategory( i_id ) \
+    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_SUBCATEGORY, NULL, NULL , '\0', NULL, NULL, NULL, i_id }; p_config[ i_config ] = tmp;  }
+
+#define set_section( text, longtext) \
     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_SECTION, NULL, NULL, '\0', text, longtext }; p_config[ i_config ] = tmp;  }
+
+#define add_category_hint( 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_HINT_CATEGORY, NULL, NULL, '\0', text, longtext }; p_config[ i_config ] = tmp; p_config[i_config].b_advanced = advc; }
+
+#define add_subcategory_hint( text, longtext ) \
+            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_HINT_SUBCATEGORY, NULL, NULL, '\0', text, longtext }; p_config[ i_config ] = tmp; }
+
+
 #define end_subcategory_hint \
     i_config++; \
     if(!(i_config%10)) p_config = (module_config_t* )realloc(p_config, \
@@ -167,6 +253,7 @@ int config_CreateDir( vlc_object_t *, char * );
         (i_config+11) * sizeof(module_config_t)); \
     { static module_config_t tmp = { CONFIG_HINT_USAGE, NULL, NULL, '\0', text }; p_config[ i_config ] = tmp; }
 
+
 #define add_string( name, psz_value, p_callback, text, longtext, advc ) \
     i_config++; \
     if(!(i_config%10)) p_config = (module_config_t* )realloc(p_config, \
@@ -182,36 +269,57 @@ int config_CreateDir( vlc_object_t *, char * );
     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_DIRECTORY, NULL, name, '\0', text, longtext, psz_value, 0, 0 }; p_config[ i_config ] = tmp; p_config[ i_config ].pf_callback = p_callback; p_config[i_config].b_advanced = advc; }
+
 #define add_module( name, psz_caps, 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, 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_list( name, psz_caps, 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_LIST, 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_list_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_LIST_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_integer( name, i_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_INTEGER, NULL, name, '\0', text, longtext, NULL, i_value }; p_config[ i_config ] = tmp; p_config[ i_config ].pf_callback = p_callback; p_config[i_config].b_advanced = advc; }
+
 #define add_key( name, i_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_KEY, NULL, name, '\0', text, longtext, NULL, i_value }; p_config[ i_config ] = tmp; p_config[ i_config ].pf_callback = p_callback; p_config[i_config].b_advanced = advc; }
+
 #define add_integer_with_range( name, i_value, i_min, i_max, 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_INTEGER, NULL, name, '\0', text, longtext, NULL, i_value, 0, i_min, i_max }; p_config[ i_config ] = tmp; p_config[ i_config ].pf_callback = p_callback; p_config[i_config].b_advanced = advc; }
+
 #define add_float( name, f_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_FLOAT, NULL, name, '\0', text, longtext, NULL, 0, f_value }; p_config[ i_config ] = tmp; p_config[ i_config ].pf_callback = p_callback; p_config[i_config].b_advanced = advc; }
+
 #define add_float_with_range( name, f_value, f_min, f_max, 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_FLOAT, NULL, name, '\0', text, longtext, NULL, 0, f_value, 0, 0, f_min, f_max }; p_config[ i_config ] = tmp; p_config[ i_config ].pf_callback = p_callback; p_config[i_config].b_advanced = advc; }
+
 #define add_bool( name, b_value, p_callback, text, longtext, advc ) \
     i_config++; \
     if(!(i_config%10)) p_config = (module_config_t* )realloc(p_config, \
index cc70990..93d084a 100644 (file)
@@ -84,6 +84,7 @@ struct module_t
      * Variables set by the module to identify itself
      */
     char *psz_shortname;                                      /* Module name */
+    char *psz_name;                              /* Human-readable shortname */
     char *psz_longname;                           /* Module descriptive name */
 
     /*
index 9cab60a..3d28479 100644 (file)
         p_module->b_reentrant = VLC_TRUE;                                     \
         p_module->psz_object_name = MODULE_STRING;                            \
         p_module->psz_shortname = MODULE_STRING;                              \
+        p_module->psz_name = NULL;                                            \
         p_module->psz_longname = MODULE_STRING;                               \
         p_module->pp_shortcuts[ 0 ] = MODULE_STRING;                          \
         p_module->i_cpu = 0;                                                  \
 #define set_shortname( desc )                                                 \
     p_submodule->psz_shortname = desc
 
+#define set_name( desc )                                                      \
+    p_submodule->psz_name = desc
+
 #define set_description( desc )                                               \
     p_submodule->psz_longname = desc
 
index 197549b..b2b6984 100644 (file)
@@ -234,6 +234,8 @@ typedef struct module_config_t module_config_t;
 typedef struct module_symbols_t module_symbols_t;
 typedef struct module_cache_t module_cache_t;
 
+typedef struct config_category_t config_category_t;
+
 /* Interface */
 typedef struct intf_thread_t intf_thread_t;
 typedef struct intf_sys_t intf_sys_t;
diff --git a/include/vlc_help.h b/include/vlc_help.h
deleted file mode 100644 (file)
index 5f24ba2..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-/*****************************************************************************
- * vlc_help.h: Help strings
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id$
- *
- * Authors: Clément Stenac <zorglub@videolan.org>
- *          Anil Daoud <anil@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * 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.
- *****************************************************************************/
-
-#ifndef _VLC_HELP_H
-#define _VLC_HELP_H 1
-
-/*
- *  First, we need help strings for the General Settings and for the
- *  Plugins screen
- */
-#define GENERAL_TITLE N_( "VLC preferences" )
-#define GENERAL_HELP N_( \
-    "Configure the global options in General Settings " \
-    "and configure each VLC module in the Modules section.\n" \
-    "Click on \"Advanced Options\" to see all options." )
-
-#define PLUGIN_TITLE N_( "VLC modules preferences" )
-#define PLUGIN_HELP N_( \
-    "In this tree, you can set options for every module used by VLC.\n" \
-    "Modules are sorted by type." )
-
-/*
- *  Then, help for each module capabilities.
- */
-
-#define ACCESS_TITLE N_( "Access modules settings" )
-#define ACCESS_HELP N_( \
-    "Settings related to the various access methods used by VLC.\n" \
-    "Common settings you may want to alter are HTTP proxy or " \
-    "caching settings." )
-
-#define AUDIO_FILTER_TITLE N_("Audio filters settings")
-#define AUDIO_FILTER_HELP N_( \
-    "Audio filters can be set in the Audio section, and configured " \
-    "here.")
-
-#define AUDIO_FILTER2_TITLE N_("Audio filters settings")
-#define AUDIO_FILTER2_HELP N_(" ")
-
-#define AOUT_TITLE N_("Audio output modules settings")
-#define AOUT_HELP N_("These are general settings for audio output modules.")
-
-#define CHROMA_TITLE N_("Chroma modules settings")
-#define CHROMA_HELP N_("These settings affect chroma transformation modules.")
-
-#define DECODER_TITLE  N_("Decoder modules settings" )
-#define DECODER_HELP N_( \
-    "In the Subsdec section you may want to set the text encoding of your " \
-    "preferred subtitles.")
-
-#define PACKETIZER_TITLE  N_("Packetizer modules settings" )
-#define PACKETIZER_HELP N_(" ")
-
-#define ENCODER_TITLE N_("Encoders settings")
-#define ENCODER_HELP N_( \
-    "These are general settings for video/audio/subtitles encoding modules.")
-
-#define DEMUX_TITLE N_("Demuxers settings")
-#define DEMUX_HELP N_( "These settings affect demuxer modules.")
-
-#define INTERFACE_TITLE N_("Interface plugins settings")
-#define INTERFACE_HELP  N_( \
-    "Interface plugins can be enabled in the Interface section and " \
-    "configured here.")
-
-#define DIALOGS_TITLE N_("Dialog providers settings")
-#define DIALOGS_HELP  N_( \
-    "Dialog providers can be configured here.")
-
-#define NETWORK_TITLE N_("Network modules settings")
-#define NETWORK_HELP N_(" ")
-
-#define SOUT_ACCESS_TITLE N_("Stream output access modules settings")
-#define SOUT_ACCESS_HELP N_( \
-    "In this section you can set the caching value for the stream " \
-    "output access modules.")
-
-#define SOUT_MUX_TITLE N_("Stream output muxer modules settings")
-#define SOUT_MUX_HELP N_(" ")
-
-#define SOUT_STREAM_TITLE N_("Stream output modules settings")
-#define SOUT_STREAM_HELP N_(" ")
-
-#define SUBTITLE_DEMUX_TITLE N_("Subtitle demuxer settings")
-#define SUBTITLE_DEMUX_HELP N_( \
-    "In this section you can force the behavior of the subtitle demuxer, " \
-    "for example by setting the subtitles type or file name.")
-
-#define TEXT_TITLE N_("Text renderer settings")
-#define TEXT_HELP N_( \
-    "Use these settings to choose the font you want VLC to use for text " \
-    "rendering (to display subtitles for example).")
-
-#define _VOUT_TITLE N_("Video output modules settings")
-#define VOUT_HELP N_( \
-    "Choose your preferred video output in the Video section, " \
-    "and configure it here." )
-
-#define VIDEO_FILTER_TITLE N_("Video filters settings")
-#define VIDEO_FILTER_HELP N_( \
-    "Video filters can be enabled in the Video section and configured " \
-    "here.\n" \
-    "Configure the \"adjust\" filter to modify contrast/hue/saturation " \
-    "settings.")
-
-#define VIDEO_FILTER2_TITLE N_("Video filters settings")
-#define VIDEO_FILTER2_HELP N_(" ")
-
-/*
- *  A little help for modules with unknown capabilities
- */
-
-#define UNKNOWN_TITLE N_("No help available" )
-#define UNKNOWN_HELP N_("No help is available for these modules")
-
-/*****************************************************************************
- * GetCapabilityHelp: Display the help for one capability.
- *****************************************************************************/
-static inline char * GetCapabilityHelp( char *psz_capability, int i_type)
-{
-    if( psz_capability == NULL) return " ";
-
-    if( !strcasecmp(psz_capability,"access_demux") )
-        return i_type == 1 ? ACCESS_TITLE : ACCESS_HELP;
-    if( !strcasecmp(psz_capability,"access2") )
-        return i_type == 1 ? ACCESS_TITLE : ACCESS_HELP;
-    if( !strcasecmp(psz_capability,"audio filter") )
-        return i_type == 1 ? AUDIO_FILTER_TITLE : AUDIO_FILTER_HELP;
-    if( !strcasecmp(psz_capability,"audio filter2") )
-        return i_type == 1 ? AUDIO_FILTER2_TITLE : AUDIO_FILTER2_HELP;
-    if( !strcasecmp(psz_capability,"audio output") )
-        return i_type == 1 ? AOUT_TITLE : AOUT_HELP;
-    if( !strcasecmp(psz_capability,"chroma") )
-        return i_type == 1 ? CHROMA_TITLE : CHROMA_HELP;
-    if( !strcasecmp(psz_capability,"decoder") )
-        return i_type == 1 ? DECODER_TITLE : DECODER_HELP;
-    if( !strcasecmp(psz_capability,"packetizer") )
-        return i_type == 1 ? PACKETIZER_TITLE : PACKETIZER_HELP;
-    if( !strcasecmp(psz_capability,"encoder") )
-        return i_type == 1 ? ENCODER_TITLE : ENCODER_HELP;
-    if( !strcasecmp(psz_capability,"demux2") )
-        return i_type == 1 ? DEMUX_TITLE : DEMUX_HELP;
-    if( !strcasecmp(psz_capability,"interface") )
-        return i_type == 1 ? INTERFACE_TITLE : INTERFACE_HELP;
-    if( !strcasecmp(psz_capability,"dialogs provider") )
-        return i_type == 1 ? DIALOGS_TITLE : DIALOGS_HELP;
-    if( !strcasecmp(psz_capability,"network") )
-        return i_type == 1 ? NETWORK_TITLE : NETWORK_HELP;
-    if( !strcasecmp(psz_capability,"sout access") )
-        return i_type == 1 ? SOUT_ACCESS_TITLE : SOUT_ACCESS_HELP;
-    if( !strcasecmp(psz_capability,"sout mux") )
-        return i_type == 1 ? SOUT_MUX_TITLE : SOUT_MUX_HELP;
-    if( !strcasecmp(psz_capability,"sout stream") )
-        return i_type == 1 ? SOUT_STREAM_TITLE : SOUT_STREAM_HELP;
-    if( !strcasecmp(psz_capability,"subtitle demux") )
-        return i_type == 1 ? SUBTITLE_DEMUX_TITLE : SUBTITLE_DEMUX_HELP;
-    if( !strcasecmp(psz_capability,"text renderer") )
-        return i_type == 1 ? TEXT_TITLE : TEXT_HELP;
-    if( !strcasecmp(psz_capability,"video output") )
-        return i_type == 1 ? _VOUT_TITLE : VOUT_HELP;
-    if( !strcasecmp(psz_capability,"video filter") )
-        return i_type == 1 ? VIDEO_FILTER_TITLE : VIDEO_FILTER_HELP;
-    if( !strcasecmp(psz_capability,"video filter2") )
-        return i_type == 1 ? VIDEO_FILTER2_TITLE : VIDEO_FILTER2_HELP;
-
-    return " ";
-}
-
-#endif /* VLC_HELP_H */
index db0d4a5..9ecc502 100644 (file)
@@ -47,6 +47,8 @@ static void Close( vlc_object_t * );
 vlc_module_begin();
     set_description( _("Audio CD input") );
     set_capability( "access2", 10 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
     set_callbacks( Open, Close );
 
     add_usage_hint( N_("[cdda:][device][@[track]]") );
index 7d67c16..459be4b 100644 (file)
@@ -99,6 +99,8 @@ vlc_module_begin();
     set_callbacks( E_(CDDAOpen), E_(CDDAClose) );
     add_shortcut( "cddax" );
     add_shortcut( "cd" );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
 
     /* Configuration options */
     add_integer ( MODULE_STRING "-debug", 0, E_(CDDADebugCB),
index 019196d..43674bb 100644 (file)
@@ -75,6 +75,9 @@ static char *psz_recursive_list_text[] = { N_("none"), N_("collapse"),
                                            N_("expand") };
 
 vlc_module_begin();
+    set_category( CAT_INPUT );
+    set_name( _("Directory" ) );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
     set_description( _("Standard filesystem directory input") );
     set_capability( "access2", 55 );
     add_shortcut( "directory" );
index 7e66910..020aea0 100644 (file)
@@ -130,6 +130,8 @@ static void DemuxClose ( vlc_object_t * );
 vlc_module_begin();
     set_shortname( _("DirectShow") );
     set_description( _("DirectShow input") );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
     add_integer( "dshow-caching", (mtime_t)(0.2*CLOCK_FREQ) / 1000, NULL,
                  CACHING_TEXT, CACHING_LONGTEXT, VLC_TRUE );
 
index 558974e..e98e793 100644 (file)
@@ -121,6 +121,8 @@ static void Close( vlc_object_t *p_this );
 vlc_module_begin();
     set_shortname( _("DVB") );
     set_description( N_("DVB input with v4l2 support") );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
 
     add_integer( "dvb-caching", DEFAULT_PTS_DELAY / 1000, NULL, CACHING_TEXT,
                  CACHING_LONGTEXT, VLC_TRUE );
index 439a418..0b983a9 100644 (file)
@@ -69,7 +69,10 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
+    set_name( _("DVD with menus (DVD with menu support)") );
     set_description( _("DVDnav Input") );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
     add_integer( "dvdnav-angle", 1, NULL, ANGLE_TEXT,
         ANGLE_LONGTEXT, VLC_FALSE );
     add_integer( "dvdnav-caching", DEFAULT_PTS_DELAY / 1000, NULL,
index 403331d..dee8934 100644 (file)
@@ -87,7 +87,10 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
-    set_description( _("DVDRead Input") );
+    set_name( _("DVD without menus") );
+    set_description( _("DVDRead Input (DVD without menu support)") );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
     add_integer( "dvdread-angle", 1, NULL, ANGLE_TEXT,
         ANGLE_LONGTEXT, VLC_FALSE );
     add_integer( "dvdread-caching", DEFAULT_PTS_DELAY / 1000, NULL,
index 9ad196c..fc7bd47 100644 (file)
@@ -86,6 +86,9 @@ static void Close( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("Standard filesystem file input") );
+    set_name( _("File") );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
     add_integer( "file-caching", DEFAULT_PTS_DELAY / 1000, NULL, CACHING_TEXT, CACHING_LONGTEXT, VLC_TRUE );
     add_string( "file-cat", NULL, NULL, CAT_TEXT, CAT_LONGTEXT, VLC_TRUE );
     set_capability( "access2", 50 );
index 1aed4d3..d4fa2be 100644 (file)
@@ -52,8 +52,11 @@ static void    Close( vlc_object_t * );
     "used for the connection.")
 
 vlc_module_begin();
+    set_name( "FTP" );
     set_description( _("FTP input") );
     set_capability( "access2", 0 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
     add_integer( "ftp-caching", 2 * DEFAULT_PTS_DELAY / 1000, NULL,
                  CACHING_TEXT, CACHING_LONGTEXT, VLC_TRUE );
     add_string( "ftp-user", "anonymous", NULL, USER_TEXT, USER_LONGTEXT,
index 863367d..686f657 100644 (file)
@@ -74,6 +74,9 @@ static void Close( vlc_object_t * );
 vlc_module_begin();
     set_description( _("HTTP input") );
     set_capability( "access2", 0 );
+    set_name( _( "HTTP/HTTPS" ) );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
 
     add_string( "http-proxy", NULL, NULL, PROXY_TEXT, PROXY_LONGTEXT,
                 VLC_FALSE );
index d6853ac..cec33cd 100644 (file)
@@ -55,8 +55,11 @@ static void Close( vlc_object_t * );
     "Always select the stream with the maximum bitrate." )
 
 vlc_module_begin();
+    set_name( _("MMS") );
     set_description( _("Microsoft Media Server (MMS) input") );
     set_capability( "access2", -1 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
 
     add_integer( "mms-caching", 4 * DEFAULT_PTS_DELAY / 1000, NULL,
                  CACHING_TEXT, CACHING_LONGTEXT, VLC_TRUE );
index 0d6682a..936d6de 100644 (file)
@@ -88,6 +88,8 @@ static char *psz_bitrates_list_text[] = { N_("vbr"), N_("cbr") };
 vlc_module_begin();
     set_shortname( _("PVR") );
     set_description( _("MPEG Encoding cards input (with ivtv drivers)") );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
     set_capability( "access2", 0 );
     add_shortcut( "pvr" );
 
index 8e8d19d..89d5cf0 100644 (file)
@@ -70,6 +70,8 @@ void E_(Close)   ( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("Satellite input") );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
 
     add_integer( "dvb-dmx", 0, NULL, DEMUX_TEXT, DEMUX_LONGTEXT, VLC_FALSE );
     add_integer( "dvb-tuner", 0, NULL, TUNER_TEXT, TUNER_LONGTEXT, VLC_FALSE );
index f2e36ac..8159a0a 100644 (file)
@@ -60,6 +60,8 @@ static void Close( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("Screen Input") );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
 
     add_integer( "screen-caching", DEFAULT_PTS_DELAY / 1000, NULL,
         CACHING_TEXT, CACHING_LONGTEXT, VLC_TRUE );
index e113ef9..2eff261 100644 (file)
@@ -43,7 +43,10 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
+    set_name( _("TCP") );
     set_description( _("TCP input") );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
 
     add_integer( "tcp-caching", DEFAULT_PTS_DELAY / 1000, NULL, CACHING_TEXT,
                  CACHING_LONGTEXT, VLC_TRUE );
index 44426e0..c44d7ff 100644 (file)
@@ -51,7 +51,10 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
+    set_name( _("UDP/RTP" ) );
     set_description( _("UDP/RTP input") );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
 
     add_integer( "udp-caching", DEFAULT_PTS_DELAY / 1000, NULL, CACHING_TEXT,
                  CACHING_LONGTEXT, VLC_TRUE );
index 9aaa840..e0c3166 100644 (file)
@@ -89,6 +89,8 @@ static void Close( vlc_object_t * );
 vlc_module_begin();
     set_shortname( _("Video4Linux") );
     set_description( _("Video4Linux input") );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
 
     add_integer( "v4l-caching", DEFAULT_PTS_DELAY / 1000, NULL,
                  CACHING_TEXT, CACHING_LONGTEXT, VLC_TRUE );
index 2ca299e..c6bdbab 100644 (file)
@@ -46,6 +46,8 @@ vlc_module_begin();
     set_description( _("VCD input") );
     set_capability( "access2", 60 );
     set_callbacks( Open, Close );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
 
     add_usage_hint( N_("[vcd:][device][@[title][,[chapter]]]") );
     add_integer( "vcd-caching", DEFAULT_PTS_DELAY / 1000, NULL, CACHING_TEXT,
index a44471d..52db0a8 100644 (file)
@@ -94,6 +94,8 @@ vlc_module_begin();
     set_callbacks( E_(Open), E_(Close) );
     add_shortcut( "vcd" );
     add_shortcut( "vcdx" );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
 
     /* Configuration options */
     add_integer ( MODULE_STRING "-debug", 0, E_(DebugCallback),
index 34484ee..ca6b404 100644 (file)
@@ -39,6 +39,8 @@ static void Close( vlc_object_t * );
 vlc_module_begin();
     set_description( _("Dummy stream output") );
     set_capability( "sout access", 0 );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_ACO );
     add_shortcut( "dummy" );
     set_callbacks( Open, Close );
 vlc_module_end();
index f828a1b..62a1e6d 100644 (file)
@@ -66,6 +66,8 @@ static void Close( vlc_object_t * );
 vlc_module_begin();
     set_description( _("File stream output") );
     set_capability( "sout access", 50 );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_ACO );
     add_shortcut( "file" );
     add_shortcut( "stream" );
     add_bool( SOUT_CFG_PREFIX "append", 0, NULL, APPEND_TEXT,APPEND_LONGTEXT,
index 1e2cf59..2446e65 100644 (file)
@@ -77,6 +77,8 @@ vlc_module_begin();
     add_shortcut( "http" );
     add_shortcut( "https" );
     add_shortcut( "mmsh" );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_ACO );
     add_string( SOUT_CFG_PREFIX "user", "", NULL,
                 USER_TEXT, USER_LONGTEXT, VLC_TRUE );
     add_string( SOUT_CFG_PREFIX "pwd", "", NULL,
index cc32019..a6d4718 100644 (file)
@@ -87,6 +87,8 @@ static void Close( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("UDP stream output") );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_ACO );
     add_integer( SOUT_CFG_PREFIX "caching", DEFAULT_PTS_DELAY / 1000, NULL, CACHING_TEXT, CACHING_LONGTEXT, VLC_TRUE );
     add_integer( SOUT_CFG_PREFIX "ttl", 0, NULL,TTL_TEXT, TTL_LONGTEXT,
                                  VLC_TRUE );
index 77a9676..f5fe50f 100644 (file)
@@ -59,6 +59,8 @@ static void DoWork    ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
 
 vlc_module_begin();
     set_description( N_("headphone channel mixer with virtual spatialization effect") );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_AFILTER );
 
     add_integer( "headphone-dim", 10, NULL, HEADPHONE_DIM_TEXT,
                  HEADPHONE_DIM_LONGTEXT, VLC_FALSE );
index 1d182df..e31441b 100644 (file)
@@ -45,6 +45,8 @@ static void DoWork    ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
 vlc_module_begin();
     set_description( _("audio filter for simple channel mixing") );
     set_capability( "audio filter", 10 );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_callbacks( Create, NULL );
 vlc_module_end();
 
index 2165bc3..8530387 100644 (file)
@@ -2,7 +2,7 @@
  * trivial.c : trivial channel mixer plug-in (drops unwanted channels)
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: trivial.c,v 1.12 2003/10/25 00:49:13 sam Exp $
+ * $Id$
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -45,6 +45,8 @@ static void DoWork    ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
 vlc_module_begin();
     set_description( _("audio filter for trivial channel mixing") );
     set_capability( "audio filter", 1 );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_callbacks( Create, NULL );
 vlc_module_end();
 
index 1006cc6..6023b37 100644 (file)
@@ -101,6 +101,8 @@ struct filter_sys_t
 
 vlc_module_begin();
     set_description( _("ATSC A/52 (AC-3) audio decoder") );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     add_bool( "a52-dynrng", 1, NULL, DYNRNG_TEXT, DYNRNG_LONGTEXT, VLC_FALSE );
     set_capability( "audio filter", 100 );
     set_callbacks( Create, Destroy );
index da7e458..a1a6766 100644 (file)
@@ -2,7 +2,7 @@
  * a52tospdif.c : encapsulates A/52 frames into S/PDIF packets
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: a52tospdif.c,v 1.16 2002/12/06 16:34:04 sam Exp $
+ * $Id$
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -48,6 +48,8 @@ static void DoWork    ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("audio filter for A/52->S/PDIF encapsulation") );
     set_capability( "audio filter", 10 );
     set_callbacks( Create, NULL );
index f99b002..b23b051 100644 (file)
@@ -87,6 +87,8 @@ struct filter_sys_t
     "listening room.")
 
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("DTS Coherent Acoustics audio decoder") );
     add_bool( "dts-dynrng", 1, NULL, DYNRNG_TEXT, DYNRNG_LONGTEXT, VLC_FALSE );
     set_capability( "audio filter", 100 );
index 179b1aa..7b13c55 100644 (file)
@@ -2,7 +2,7 @@
  * dtstospdif.c : encapsulates DTS frames into S/PDIF packets
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: dtstospdif.c,v 1.8 2004/02/15 21:52:59 gbazin Exp $
+ * $Id$
  *
  * Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
  *
@@ -65,6 +65,8 @@ static void DoWork    ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("audio filter for DTS->S/PDIF encapsulation") );
     set_capability( "audio filter", 10 );
     set_callbacks( Create, Close );
index 7f1151d..4b5cf28 100644 (file)
@@ -2,7 +2,7 @@
  * fixed32float32.c : converter from fixed32 to float32 bits integer
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: fixed32tofloat32.c,v 1.11 2002/11/20 16:43:32 sam Exp $
+ * $Id$
  *
  * Authors: Jean-Paul Saman <jpsaman@wxs.nl>
  *
@@ -45,6 +45,8 @@ static void FloatToFixed ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("audio filter for fixed32<->float32 conversion") );
     set_capability( "audio filter", 10 );
     set_callbacks( Create, NULL );
index 50094e1..9a6ddcb 100644 (file)
@@ -2,7 +2,7 @@
  * fixed32tos16.c : converter from fixed32 to signed 16 bits integer
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: fixed32tos16.c,v 1.11 2003/10/25 00:49:13 sam Exp $
+ * $Id$
  *
  * Authors: Jean-Paul Saman <jpsaman@wxs.nl>
  *
@@ -43,6 +43,8 @@ static void DoWork    ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("audio filter for fixed32->s16 conversion") );
     set_capability( "audio filter", 10 );
     set_callbacks( Create, NULL );
index bfd53f6..6c47356 100644 (file)
@@ -43,6 +43,8 @@ static void DoWork    ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("audio filter for float32->s16 conversion") );
     set_capability( "audio filter", 1 );
     set_callbacks( Create, NULL );
index 3bca9e0..3c22113 100644 (file)
@@ -2,7 +2,7 @@
  * float32tos8.c : converter from float32 to signed 8 bits integer
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: float32tos8.c,v 1.8 2003/10/25 00:49:13 sam Exp $
+ * $Id$
  *
  * Authors: Xavier Maillard <zedek@fxgsproject.org>
  *
@@ -43,6 +43,8 @@ static void DoWork    ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("audio filter for float32->s8 conversion") );
     set_capability( "audio filter", 1 );
     set_callbacks( Create, NULL );
index f2637f0..18bc07e 100644 (file)
@@ -2,7 +2,7 @@
  * float32tou16.c : converter from float32 to unsigned 16 bits integer
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: float32tou16.c,v 1.8 2003/10/25 00:49:13 sam Exp $
+ * $Id$
  *
  * Authors: Xavier Maillard <zedek@fxgsproject.org>
  *
@@ -43,6 +43,8 @@ static void DoWork    ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("audio filter for float32->u16 conversion") );
     set_capability( "audio filter", 1 );
     set_callbacks( Create, NULL );
index 9349218..46fc75f 100644 (file)
@@ -2,7 +2,7 @@
  * float32tou8.c : converter from float32 to unsigned 8 bits integer
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: float32tou8.c,v 1.8 2003/10/25 00:49:13 sam Exp $
+ * $Id$
  *
  * Authors: Xavier Maillard <zedek@fxgsproject.org>
  *
@@ -43,6 +43,8 @@ static void DoWork    ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("audio filter for float32->u8 conversion") );
     set_capability( "audio filter", 1 );
     set_callbacks( Create, NULL );
index 33a9a34..de5fd41 100644 (file)
@@ -62,6 +62,8 @@ struct filter_sys_t
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("MPEG audio decoder") );
     set_capability( "audio filter", 100 );
     set_callbacks( Create, Destroy );
index 2a8b34f..e5e9a20 100644 (file)
@@ -2,7 +2,7 @@
  * s16tofixed32.c : converter from signed 16 bits integer to fixed 32
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: s16tofixed32.c,v 1.2 2003/10/25 00:49:13 sam Exp $
+ * $Id$
  *
  * Authors: Marc Ariberti <marcari@videolan.ord>
  *
@@ -43,6 +43,8 @@ static void DoWork    ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("audio filter for s16->fixed32 conversion") );
     set_capability( "audio filter", 15 );
     set_callbacks( Create, NULL );
index 9aaca71..d5350a5 100644 (file)
@@ -43,6 +43,8 @@ static void DoWork    ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("audio filter for s16->float32 conversion") );
     set_capability( "audio filter", 1 );
     set_callbacks( Create, NULL );
index 07d9a2f..1e2f5ee 100644 (file)
@@ -3,7 +3,7 @@
  *                      with endianness change
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: s16tofloat32swab.c,v 1.10 2003/10/25 00:49:13 sam Exp $
+ * $Id$
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Henri Fallon <henri@videolan.org>
@@ -54,6 +54,8 @@ static void DoWork    ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description(
             _("audio filter for s16->float32 with endianness conversion") );
     set_capability( "audio filter", 1 );
index 31fd41c..2a03f78 100644 (file)
@@ -2,7 +2,7 @@
  * s8tofloat32.c : converter from signed 8 bits integer to float32.
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: s8tofloat32.c,v 1.3 2003/10/25 00:49:13 sam Exp $
+ * $Id$
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *
@@ -43,6 +43,8 @@ static void DoWork    ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("audio filter for s8->float32 conversion") );
     set_capability( "audio filter", 1 );
     set_callbacks( Create, NULL );
index 13a2b27..1cb09f0 100644 (file)
@@ -2,7 +2,7 @@
  * u8tofixed32.c : converter from unsigned 8 bits integer to fixed32.
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: u8tofixed32.c,v 1.2 2003/10/25 00:49:13 sam Exp $
+ * $Id$
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -43,6 +43,8 @@ static void DoWork    ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("audio filter for u8->fixed32 conversion") );
     set_capability( "audio filter", 1 );
     set_callbacks( Create, NULL );
index cb9c53c..c5c66a9 100644 (file)
@@ -2,7 +2,7 @@
  * u8tofloat32.c : converter from unsigned 8 bits integer to float32.
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: u8tofloat32.c,v 1.4 2003/10/25 00:49:13 sam Exp $
+ * $Id$
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *
@@ -43,6 +43,8 @@ static void DoWork    ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("audio filter for u8->float32 conversion") );
     set_capability( "audio filter", 1 );
     set_callbacks( Create, NULL );
index 2b005cb..ee610ff 100644 (file)
@@ -64,6 +64,9 @@ static void Close( vlc_object_t * );
 vlc_module_begin();
     set_description( _("Equalizer 10 bands") );
     set_capability( "audio filter", 0 );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_AFILTER );
+
     add_string( "equalizer-preset", "flat", NULL, PRESET_TEXT,
                 PRESET_LONGTEXT, VLC_TRUE );
         change_string_list( preset_list, preset_list_text, 0 );
index eebafc1..57bd97a 100644 (file)
@@ -80,6 +80,8 @@ typedef struct aout_filter_sys_t
 
 vlc_module_begin();
     set_description( _("Volume normalizer") );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_AFILTER );
     add_shortcut( "volnorm" );
     add_integer( "norm-buff-size", 20 ,NULL ,BUFF_TEXT, BUFF_LONGTEXT,
                  VLC_TRUE);
index 1e01cc9..c31a3b8 100644 (file)
@@ -79,6 +79,8 @@ struct aout_filter_sys_t
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("audio filter for band-limited interpolation resampling") );
     set_capability( "audio filter", 20 );
     set_callbacks( Create, Close );
index 6353498..03f8a71 100644 (file)
@@ -70,6 +70,8 @@ struct aout_filter_sys_t
  *****************************************************************************/
 vlc_module_begin();
     set_description( _("audio filter using CoreAudio for resampling") );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_capability( "audio filter", 40 );
     set_callbacks( Create, Close );
 vlc_module_end();
index f8e5e2f..1d1f60d 100644 (file)
@@ -57,6 +57,8 @@ struct aout_filter_sys_t
  *****************************************************************************/
 vlc_module_begin();
     set_description( _("audio filter for linear interpolation resampling") );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_capability( "audio filter", 5 );
     set_callbacks( Create, Close );
 vlc_module_end();
index 1d97f65..a0e2beb 100644 (file)
@@ -2,7 +2,7 @@
  * trivial.c : trivial resampler (skips samples or pads with zeroes)
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: trivial.c,v 1.11 2003/03/04 03:27:40 gbazin Exp $
+ * $Id$
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -45,6 +45,8 @@ static void DoWork    ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
 vlc_module_begin();
     set_description( _("audio filter for trivial resampling") );
     set_capability( "audio filter", 1 );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_callbacks( Create, NULL );
 vlc_module_end();
 
index 5b09188..ef89370 100644 (file)
@@ -45,6 +45,8 @@ static void DoWork    ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
 vlc_module_begin();
     set_description( _("audio filter for ugly resampling") );
     set_capability( "audio filter", 2 );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_callbacks( Create, NULL );
 vlc_module_end();
 
index 5c2d062..67f6650 100644 (file)
@@ -2,7 +2,7 @@
  * float32.c : precise float32 audio mixer implementation
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: float32.c,v 1.10 2004/01/25 17:20:18 kuehne Exp $
+ * $Id$
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -42,6 +42,8 @@ static void DoWork    ( aout_instance_t *, aout_buffer_t * );
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("Float32 audio mixer") );
     set_capability( "audio mixer", 10 );
     set_callbacks( Create, NULL );
index e21fc7b..07d5f79 100644 (file)
@@ -42,6 +42,8 @@ static void DoWork    ( aout_instance_t *, aout_buffer_t * );
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("Dummy S/PDIF audio mixer") );
     set_capability( "audio mixer", 1 );
     set_callbacks( Create, NULL );
index e18b673..1ecfd3d 100644 (file)
@@ -2,7 +2,7 @@
  * trivial.c : trivial mixer plug-in (1 input, no downmixing)
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: trivial.c,v 1.14 2004/01/25 17:20:18 kuehne Exp $
+ * $Id$
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -42,6 +42,8 @@ static void DoWork    ( aout_instance_t *, aout_buffer_t * );
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     set_description( _("Trivial audio mixer") );
     set_capability( "audio mixer", 1 );
     set_callbacks( Create, NULL );
index 2731feb..706b079 100644 (file)
@@ -97,6 +97,8 @@ static void ALSAFill     ( aout_instance_t * );
  *****************************************************************************/
 vlc_module_begin();
     set_description( _("ALSA audio output") );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_AOUT );
     add_string( "alsadev", DEFAULT_ALSA_DEVICE, aout_FindAndRestart,
                 N_("ALSA Device Name"), NULL, VLC_FALSE );
     set_capability( "audio output", 150 );
index 12e5818..35af458 100644 (file)
@@ -2,7 +2,7 @@
  * arts.c : aRts module
  *****************************************************************************
  * Copyright (C) 2001-2002 VideoLAN
- * $Id: arts.c,v 1.20 2004/01/25 17:58:29 murray Exp $
+ * $Id$
  *
  * Authors: Emmanuel Blindauer <manu@agat.net>
  *          Samuel Hocevar <sam@zoy.org>
@@ -65,6 +65,8 @@ static void Play         ( aout_instance_t * );
 vlc_module_begin();
    set_description( _("aRts audio output") );
    set_capability( "audio output", 50 );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_AOUT );
    set_callbacks( Open, Close );
 vlc_module_end();
 
index b2ef490..cd72439 100644 (file)
@@ -222,6 +222,8 @@ static OSStatus StreamListener   ( AudioStreamID inStream,
 vlc_module_begin();
     set_description( _("CoreAudio output") );
     set_capability( "audio output", 100 );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_AOUT );
     set_callbacks( Open, Close );
     add_integer( "coreaudio-dev", -1, NULL, ADEV_TEXT, ADEV_LONGTEXT, VLC_FALSE ); 
 vlc_module_end();
index eff1f75..5bed710 100644 (file)
@@ -209,6 +209,8 @@ static int  FillBuffer        ( aout_instance_t *, int, aout_buffer_t * );
 vlc_module_begin();
     set_description( _("DirectX audio output") );
     set_capability( "audio output", 100 );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_AOUT );
     add_shortcut( "directx" );
     set_callbacks( OpenAudio, CloseAudio );
 vlc_module_end();
index 0022da6..0981659 100644 (file)
@@ -65,6 +65,8 @@ static void Play         ( aout_instance_t * );
 vlc_module_begin();
     set_description( _("EsounD audio output") );
     set_capability( "audio output", 50 );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_AOUT );
     set_callbacks( Open, Close );
     add_shortcut( "esound" );
 vlc_module_end();
index 97f867f..a7747d0 100644 (file)
@@ -74,6 +74,8 @@ static void    InterleaveS16( int16_t *, int16_t * );
 vlc_module_begin();
     set_description( N_("HD1000 audio output") );
     set_capability( "audio output", 100 );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_AOUT );
     set_callbacks( Open, Close );
 vlc_module_end();
 
index 6b07c97..e8df5b4 100644 (file)
@@ -107,6 +107,8 @@ static mtime_t BufferDuration( aout_instance_t * p_aout );
 vlc_module_begin();
     set_description( _("Linux OSS audio output") );
 
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_AOUT );
     add_file( "dspdev", "/dev/dsp", aout_FindAndRestart,
               N_("OSS DSP device"), NULL, VLC_FALSE );
     add_bool( "oss-buggy", 0, NULL, BUGGY_TEXT, BUGGY_LONGTEXT, VLC_TRUE );
index 7135870..2a3e402 100644 (file)
@@ -109,6 +109,8 @@ static int PAOpenStream( aout_instance_t * );
 
 vlc_module_begin();
     set_description( N_("PORTAUDIO audio output") );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_AOUT );
     add_integer( "portaudio-device", 0, NULL,
                  DEVICE_TEXT, DEVICE_LONGTEXT, VLC_FALSE );
     set_capability( "audio output", 0 );
index 8242c1f..fba4a72 100644 (file)
@@ -2,7 +2,7 @@
  * sdl.c : SDL audio output plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000-2002 VideoLAN
- * $Id: sdl.c,v 1.26 2004/01/25 17:58:29 murray Exp $
+ * $Id$
  *
  * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *          Sam Hocevar <sam@zoy.org>
@@ -67,6 +67,8 @@ static void SDLCallback ( void *, byte_t *, int );
 vlc_module_begin();
     set_description( _("Simple DirectMedia Layer audio output") );
     set_capability( "audio output", 40 );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_AOUT );
     add_shortcut( "sdl" );
     set_callbacks( Open, Close );
 vlc_module_end();
index bdb96c0..d742c28 100644 (file)
@@ -134,6 +134,8 @@ static void WaveOutThread( notification_thread_t * );
 vlc_module_begin();
     set_description( _("Win32 waveOut extension output") );
     set_capability( "audio output", 50 );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_AOUT );
     add_bool( "waveout-float32", 1, 0, FLOAT_TEXT, FLOAT_LONGTEXT, VLC_TRUE );
     set_callbacks( Open, Close );
 vlc_module_end();
index 64f2f52..6c37c87 100644 (file)
@@ -90,6 +90,8 @@ vlc_module_begin();
     set_description( _("A/52 parser") );
     set_capability( "decoder", 100 );
     set_callbacks( OpenDecoder, CloseDecoder );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACODEC );
 
     add_submodule();
     set_description( _("A/52 audio packetizer") );
index 469ec1b..5c42d2a 100644 (file)
@@ -2,7 +2,7 @@
  * adpcm.c : adpcm variant audio decoder
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: adpcm.c,v 1.19 2004/01/25 18:20:12 bigben Exp $
+ * $Id$
  *
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  *
@@ -40,6 +40,8 @@ static aout_buffer_t *DecodeBlock( decoder_t *, block_t ** );
 vlc_module_begin();
     set_description( _("ADPCM audio decoder") );
     set_capability( "decoder", 50 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACODEC );
     set_callbacks( OpenDecoder, CloseDecoder );
 vlc_module_end();
 
index d487fe2..ef8618a 100644 (file)
@@ -40,6 +40,8 @@ vlc_module_begin();
     /* audio decoder module */
     set_description( _("Raw/Log Audio decoder") );
     set_capability( "decoder", 100 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACODEC );
     set_callbacks( DecoderOpen, DecoderClose );
 
     /* audio encoder submodule */
index c019101..21f23a1 100644 (file)
@@ -37,6 +37,8 @@ static void CloseDecoder( vlc_object_t * );
 vlc_module_begin();
     set_description( _("Cinepak video decoder") );
     set_capability( "decoder", 100 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_VCODEC );
     set_callbacks( OpenDecoder, CloseDecoder );
 vlc_module_end();
 
index c5950dd..9ef43bc 100644 (file)
@@ -100,6 +100,8 @@ vlc_module_begin();
     add_shortcut( "dmo" );
     set_capability( "decoder", 1 );
     set_callbacks( DecoderOpen, DecoderClose );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_SCODEC );
 
 #   define ENC_CFG_PREFIX "sout-dmo-"
     add_submodule();
index 0530e06..6c651c9 100644 (file)
@@ -90,6 +90,8 @@ static block_t       *GetSoutBuffer( decoder_t * );
 vlc_module_begin();
     set_description( _("DTS parser") );
     set_capability( "decoder", 100 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACODEC );
     set_callbacks( OpenDecoder, CloseDecoder );
 
     add_submodule();
index 42769f4..6446e5d 100644 (file)
@@ -50,6 +50,8 @@ static block_t *Encode  ( encoder_t *, subpicture_t * );
 vlc_module_begin();
     set_description( _("DVB subtitles decoder") );
     set_capability( "decoder", 50 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_SCODEC );
     set_callbacks( Open, Close );
 
 #   define ENC_CFG_PREFIX "sout-dvbsub-"
index c1a5447..cc75d8a 100644 (file)
@@ -37,6 +37,8 @@ static void Close( vlc_object_t * );
 vlc_module_begin();
     set_description( _("AAC audio decoder (using libfaad2)") );
     set_capability( "decoder", 100 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACODEC );
     set_callbacks( Open, Close );
 vlc_module_end();
 
index 5210657..9c9dc1a 100644 (file)
@@ -77,6 +77,8 @@ static char *enc_hq_list_text[] = { N_("rd"), N_("bits"), N_("simple") };
  *****************************************************************************/
 vlc_module_begin();
 
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_SCODEC );
     /* decoder main module */
 #if defined(MODULE_NAME_is_ffmpegaltivec) \
      || (defined(CAN_COMPILE_ALTIVEC) && !defined(NO_ALTIVEC_IN_FFMPEG))
@@ -87,6 +89,7 @@ vlc_module_begin();
     set_description( _("ffmpeg audio/video decoder ((MS)MPEG4,SVQ1,H263,WMV,WMA)") );
     set_capability( "decoder", 70 );
 #endif
+    set_section( N_("Decoding") , NULL );
     set_callbacks( OpenDecoder, CloseDecoder );
 
     add_bool( "ffmpeg-dr", 1, NULL, DR_TEXT, DR_TEXT, VLC_TRUE );
@@ -118,6 +121,7 @@ vlc_module_begin();
 
     /* encoder submodule */
     add_submodule();
+    set_section( N_("Encoding") , NULL );
     set_description( _("ffmpeg audio/video encoder") );
     set_capability( "encoder", 100 );
     set_callbacks( E_(OpenEncoder), E_(CloseEncoder) );
index f63c7ee..ded735a 100644 (file)
@@ -142,6 +142,9 @@ static uint8_t flac_crc8( const uint8_t *data, unsigned len );
  *****************************************************************************/
 vlc_module_begin();
 
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACODEC );
+
     set_description( _("Flac audio decoder") );
     set_capability( "decoder", 100 );
     set_callbacks( OpenDecoder, CloseDecoder );
index bfd45d7..1fa6761 100755 (executable)
@@ -90,6 +90,8 @@ static picture_t *GetNewPicture( decoder_t *, uint8_t ** );
 vlc_module_begin();
     set_description( _("MPEG I/II video decoder (using libmpeg2)") );
     set_capability( "decoder", 150 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_VCODEC );
     set_callbacks( OpenDecoder, CloseDecoder );
     add_shortcut( "libmpeg2" );
 vlc_module_end();
index 2a72e2f..06e4b13 100644 (file)
@@ -2,7 +2,7 @@
  * lpcm.c: lpcm decoder/packetizer module
  *****************************************************************************
  * Copyright (C) 1999-2003 VideoLAN
- * $Id: lpcm.c,v 1.21 2004/01/25 18:20:12 bigben Exp $
+ * $Id$
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Henri Fallon <henri@videolan.org>
@@ -77,6 +77,8 @@ static void *DecodeFrame  ( decoder_t *, block_t ** );
  *****************************************************************************/
 vlc_module_begin();
 
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACODEC );
     set_description( _("Linear PCM audio decoder") );
     set_capability( "decoder", 100 );
     set_callbacks( OpenDecoder, CloseDecoder );
index ca28b04..f8f3023 100644 (file)
@@ -64,6 +64,8 @@ static block_t   *SendFrame  ( decoder_t *, block_t * );
 vlc_module_begin();
     set_description( _("Video decoder using openmash") );
     set_capability( "decoder", 50 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_VCODEC );
     set_callbacks( OpenDecoder, CloseDecoder );
 vlc_module_end();
 
index fd3c8ed..045519c 100644 (file)
@@ -104,6 +104,8 @@ static int SyncInfo( uint32_t i_header, unsigned int * pi_channels,
  *****************************************************************************/
 vlc_module_begin();
     set_description( _("MPEG audio layer I/II/III parser") );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACODEC );
 #if defined(SYS_DARWIN)
     set_capability( "decoder", 5 );
 #else
index 46abe55..87826b5 100644 (file)
@@ -46,6 +46,8 @@ vlc_module_begin();
     set_description( _("CVD subtitle decoder") );
     set_capability( "decoder", 50 );
     set_callbacks( VCDSubOpen, VCDSubClose );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_SCODEC );
 
     add_integer ( MODULE_STRING "-debug", 0, NULL,
                   DEBUG_TEXT, DEBUG_LONGTEXT, VLC_TRUE );
index de07312..edb611d 100644 (file)
@@ -58,6 +58,8 @@ static void Close( vlc_object_t * );
 vlc_module_begin();
     set_description( _("QuickTime library decoder") );
     set_capability( "decoder", 10 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_VCODEC );
     set_callbacks( Open, Close );
 
     /* create a mutex */
index 86c20a8..bacea02 100644 (file)
@@ -67,6 +67,8 @@ static block_t   *SendFrame  ( decoder_t *, block_t * );
 vlc_module_begin();
     set_description( _("Pseudo raw video decoder") );
     set_capability( "decoder", 50 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_VCODEC );
     set_callbacks( OpenDecoder, CloseDecoder );
 
     add_submodule();
index 2cdeb30..0d51c67 100755 (executable)
@@ -99,6 +99,9 @@ static block_t *Encode   ( encoder_t *, aout_buffer_t * );
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACODEC );
+
     set_description( _("Speex audio decoder") );
     set_capability( "decoder", 100 );
     set_callbacks( OpenDecoder, CloseDecoder );
index 1f758f8..e988d58 100644 (file)
@@ -40,6 +40,8 @@ static void Close         ( vlc_object_t * );
 vlc_module_begin();
     set_description( _("DVD subtitles decoder") );
     set_capability( "decoder", 50 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_SCODEC );
     set_callbacks( DecoderOpen, Close );
 
     add_submodule();
index 9e8ded6..07fa17e 100644 (file)
@@ -92,6 +92,8 @@ vlc_module_begin();
     set_description( _("text subtitles decoder") );
     set_capability( "decoder", 50 );
     set_callbacks( OpenDecoder, CloseDecoder );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_SCODEC );
 
     add_integer( "subsdec-align", 0, NULL, ALIGN_TEXT, ALIGN_LONGTEXT,
                  VLC_TRUE );
index 62c8d30..cfff76e 100644 (file)
@@ -74,6 +74,8 @@ static void tarkin_CopyPicture( decoder_t *, picture_t *, uint8_t *, int );
 vlc_module_begin();
     set_description( _("Tarkin decoder module") );
     set_capability( "decoder", 100 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_VCODEC );
     set_callbacks( OpenDecoder, CloseDecoder );
     add_shortcut( "tarkin" );
 vlc_module_end();
index e5268cf..3228943 100644 (file)
@@ -88,6 +88,8 @@ static block_t *Encode( encoder_t *p_enc, picture_t *p_pict );
   "of specifying a particular bitrate. This will produce a VBR stream." )
 
 vlc_module_begin();
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_VCODEC );
     set_description( _("Theora video decoder") );
     set_capability( "decoder", 100 );
     set_callbacks( OpenDecoder, CloseDecoder );
index c01dd09..61a70a1 100644 (file)
@@ -63,6 +63,8 @@ vlc_module_begin();
     set_description( _("libtoolame audio encoder") );
     set_capability( "encoder", 50 );
     set_callbacks( OpenEncoder, CloseEncoder );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACODEC );
 
     add_float( ENC_CFG_PREFIX "quality", 0.0, NULL, ENC_QUALITY_TEXT,
                ENC_QUALITY_LONGTEXT, VLC_FALSE );
index d7889f6..3e4cc85 100644 (file)
@@ -148,6 +148,8 @@ vlc_module_begin();
 #else
     set_capability( "decoder", 100 );
 #endif
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACODEC );
     set_callbacks( OpenDecoder, CloseDecoder );
 
     add_submodule();
index 2f6d11d..94f455d 100644 (file)
@@ -101,6 +101,8 @@ vlc_module_begin();
     set_description( _("h264 video encoder using x264 library"));
     set_capability( "encoder", 200 );
     set_callbacks( Open, Close );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_VCODEC );
 
     add_integer( SOUT_CFG_PREFIX "qp", 0, NULL, QP_TEXT, QP_LONGTEXT,
                  VLC_FALSE );
index dd2b434..ab6a54e 100644 (file)
@@ -682,6 +682,8 @@ static void Run          ( intf_thread_t * );
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+set_category( CAT_INTERFACE );
+set_subcategory( SUBCAT_INTERFACE_CONTROL );
 add_category_hint( N_( "Corba control" ), NULL, VLC_FALSE );
 
 set_description( _( "corba control module" ) );
index eb4afd1..4936f5a 100644 (file)
@@ -10,7 +10,7 @@
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
@@ -87,6 +87,8 @@ static char *button_list[] = { "left", "middle", "right" };
 static char *button_list_text[] = { N_("Left"), N_("Middle"), N_("Right") };
 
 vlc_module_begin();
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_CONTROL );
     add_integer( "gestures-threshold", 30, NULL, THRESHOLD_TEXT, THRESHOLD_LONGTEXT, VLC_TRUE );
     add_string( "gestures-button", "right", NULL,
                 BUTTON_TEXT, BUTTON_LONGTEXT, VLC_FALSE );
index 87be3a5..358a1ea 100644 (file)
@@ -91,6 +91,8 @@ static void Close( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("HTTP remote control interface") );
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_CONTROL );
         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 9c5dbf4..5d732e6 100644 (file)
@@ -158,6 +158,8 @@ static void Run       ( intf_thread_t *p_intf );
 #define MAP_LONGTEXT N_( "Allows you to remap the actions." )
 
 vlc_module_begin();
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_CONTROL );
     add_integer( "motion-threshold", DEFAULT_THRESHOLD, NULL,
                      THRESHOLD_TEXT, THRESHOLD_LONGTEXT, VLC_TRUE );
     add_string( "joystick-device", DEFAULT_DEVICE, NULL,
index 86a45d4..7c7bd5e 100644 (file)
@@ -62,6 +62,8 @@ static void Run     ( intf_thread_t * );
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_CONTROL );
     set_description( _("Infrared remote control interface") );
     set_capability( "interface", 0 );
     set_callbacks( Open, Close );
index a4ac92b..d939f47 100644 (file)
@@ -88,6 +88,8 @@ static mtime_t GetClockRef( intf_thread_t *, mtime_t );
 
 vlc_module_begin();
     set_description( _("Network synchronisation") );
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_CONTROL );
 
     add_bool( "netsync-master", 0, NULL,
               NETSYNC_TEXT, NETSYNC_LONGTEXT, VLC_TRUE );
index 99c1f57..be50dcf 100755 (executable)
@@ -59,6 +59,8 @@ static void Close   ( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("Windows Service interface") );
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_CONTROL );
     add_bool( "ntservice-install", 0, NULL,
               INSTALL_TEXT, INSTALL_LONGTEXT, VLC_TRUE );
     add_bool( "ntservice-uninstall", 0, NULL,
index 6696d9a..23fdd2c 100644 (file)
@@ -150,6 +150,8 @@ void __msg_rc( intf_thread_t *p_intf, const char *psz_fmt, ... )
 #endif
 
 vlc_module_begin();
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_CONTROL );
     set_description( _("Remote control interface") );
     add_bool( "rc-show-pos", 0, NULL, POS_TEXT, POS_LONGTEXT, VLC_TRUE );
 #ifdef HAVE_ISATTY
index 0377c6e..087f04a 100755 (executable)
@@ -152,6 +152,8 @@ 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 );
     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 aef2c92..353ecf5 100644 (file)
@@ -39,6 +39,8 @@ static int  Open  ( vlc_object_t * );
 static void Close ( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_description( _("Raw A/52 demuxer") );
     set_capability( "demux2", 145 );
     set_callbacks( Open, Close );
index 90830b8..9180e4d 100644 (file)
@@ -36,6 +36,8 @@ static int  Open    ( vlc_object_t * );
 static void Close  ( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_description( _("AAC demuxer" ) );
     set_capability( "demux2", 100 );
     set_callbacks( Open, Close );
index ca540d4..5dc2ac3 100644 (file)
@@ -2,7 +2,7 @@
  * aiff.c: Audio Interchange File Format demuxer
  *****************************************************************************
  * Copyright (C) 2004 VideoLAN
- * $Id: aiff.c,v 1.1 2004/01/28 12:25:37 fenrir Exp $
+ * $Id$
  *
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  *
@@ -40,6 +40,8 @@ static int  Open    ( vlc_object_t * );
 static void Close  ( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_description( _("AIFF demuxer" ) );
     set_capability( "demux2", 10 );
     set_callbacks( Open, Close );
index 3bec78b..a7a73c8 100644 (file)
@@ -46,6 +46,8 @@ static int  Open  ( vlc_object_t * );
 static void Close ( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_description( _("ASF v1.0 demuxer") );
     set_capability( "demux2", 200 );
     set_callbacks( Open, Close );
index 0a76b27..e3543b8 100644 (file)
@@ -41,6 +41,8 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_description( _("AU demuxer") );
     set_capability( "demux2", 10 );
     set_callbacks( Open, Close );
index 88a8f08..2bec734 100644 (file)
@@ -50,6 +50,8 @@ static void Close( vlc_object_t * );
 vlc_module_begin();
     set_description( _("AVI demuxer") );
     set_capability( "demux2", 212 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
 
     add_bool( "avi-interleaved", 0, NULL,
               INTERLEAVE_TEXT, INTERLEAVE_LONGTEXT, VLC_TRUE );
index 98154ba..9a108c8 100644 (file)
@@ -46,6 +46,8 @@ static int  Open( vlc_object_t * );
 static void Close ( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_description( _("Filedump demuxer") );
     set_capability( "demux2", 0 );
     add_file( "demuxdump-file", "stream-demux.dump", NULL, FILE_TEXT,
index 5b9d2f2..3524c07 100644 (file)
@@ -35,6 +35,8 @@ static int  Open  ( vlc_object_t * );
 static void Close ( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_description( _("Raw DTS demuxer") );
     set_capability( "demux2", 155 );
     set_callbacks( Open, Close );
index 5077c5d..401089b 100644 (file)
@@ -37,6 +37,8 @@ static void Close ( vlc_object_t * );
 vlc_module_begin();
     set_description( _("FLAC demuxer") );
     set_capability( "demux2", 155 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_callbacks( Open, Close );
     add_shortcut( "flac" );
 vlc_module_end();
index 26117ad..0f20ade 100644 (file)
@@ -71,8 +71,11 @@ static void Close( vlc_object_t * );
 vlc_module_begin();
     set_description( _("live.com (RTSP/RTP/SDP) demuxer" ) );
     set_capability( "demux2", 50 );
+    set_name( "Live.com RTP/RTSP");
     set_callbacks( Open, Close );
     add_shortcut( "live" );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
 
     add_submodule();
         set_description( _("RTSP/RTP access and demux") );
index 675ee28..06dee5a 100644 (file)
@@ -63,6 +63,8 @@ static int  Control   ( demux_t *, int, va_list );
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_description( _("Playlist metademux") );
     set_capability( "demux2", 5 );
     set_callbacks( Activate, Deactivate );
index 75b2945..e7335c2 100644 (file)
@@ -48,6 +48,8 @@ vlc_module_begin();
     set_description( _("JPEG camera demuxer") );
     set_capability( "demux2", 5 );
     set_callbacks( Open, Close );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     add_float( "mjpeg-fps", 0.0, NULL, FPS_TEXT, FPS_LONGTEXT, VLC_FALSE );
 vlc_module_end();
 
index 1624daf..176b252 100644 (file)
@@ -95,9 +95,12 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
+    set_name( _("Matroska") );
     set_description( _("Matroska stream demuxer" ) );
     set_capability( "demux2", 50 );
     set_callbacks( Open, Close );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
 
     add_bool( "mkv-seek-percent", 1, NULL,
             N_("Seek based on percent not time"),
index d84c79c..6b081e5 100644 (file)
@@ -47,6 +47,8 @@ static void Close  ( vlc_object_t * );
 vlc_module_begin();
     set_description( _("MOD demuxer (libmodplug)" ) );
     set_capability( "demux2", 10 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
 
     add_bool( "mod-noisereduction", VLC_TRUE, NULL, N_("Noise reduction"), N_("Noise reduction"), VLC_FALSE );
 
index fbc41ab..c988aed 100644 (file)
@@ -45,6 +45,8 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_description( _("MP4 stream demuxer") );
     set_capability( "demux2", 242 );
     set_callbacks( Open, Close );
index 8cfaa06..6360234 100644 (file)
@@ -37,6 +37,8 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_description( _("H264 video demuxer" ) );
     set_capability( "demux2", 0 );
     add_float( "h264-fps", 25.0, NULL, "fps", "fps", VLC_TRUE );
index 58ac716..b691640 100644 (file)
@@ -37,6 +37,8 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_description( _("MPEG-4 audio demuxer" ) );
     set_capability( "demux2", 110 );
     set_callbacks( Open, Close );
index 31926fe..584b2c5 100644 (file)
@@ -37,6 +37,8 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_description( _("MPEG-4 video demuxer" ) );
     set_capability( "demux2", 0 );
     set_callbacks( Open, Close );
index ca0afc0..2499eff 100644 (file)
@@ -41,6 +41,8 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_description( _("MPEG-I/II audio demuxer" ) );
     set_capability( "demux2", 100 );
     set_callbacks( Open, Close );
index 5dc3751..7753265 100644 (file)
@@ -37,6 +37,8 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_description( _("MPEG-I/II video demuxer" ) );
     set_capability( "demux2", 100 );
     set_callbacks( Open, Close );
index 88b43e2..1201b82 100644 (file)
@@ -44,6 +44,8 @@ static void Close  ( vlc_object_t * );
 vlc_module_begin();
     set_description( _("NullSoft demuxer" ) );
     set_capability( "demux2", 10 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_callbacks( Open, Close );
     add_shortcut( "nsv" );
 vlc_module_end();
index bbe3484..6046018 100644 (file)
@@ -41,6 +41,8 @@ static void Close( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("Ogg stream demuxer" ) );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_capability( "demux2", 50 );
     set_callbacks( Open, Close );
     add_shortcut( "ogg" );
index 82031b3..d5b2cb3 100644 (file)
@@ -35,6 +35,8 @@
  *****************************************************************************/
 vlc_module_begin();
     add_shortcut( "playlist" );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
 
     set_description( _("Old playlist open") );
     add_shortcut( "old-open" );
@@ -42,16 +44,21 @@ vlc_module_begin();
     set_callbacks( Import_Old , NULL );
 
     add_submodule();
-    set_description( _("M3U playlist import") );
-    add_shortcut( "m3u-open" );
-    set_capability( "demux2" , 10 );
-    set_callbacks( Import_M3U , Close_M3U );
-
+        set_description( _("Native playlist import") );
+        add_shortcut( "playlist" );
+        add_shortcut( "native-open" );
+        set_capability( "demux2" , 10 );
+        set_callbacks( Import_Native , Close_Native );
     add_submodule();
-    set_description( _("PLS playlist import") );
-    add_shortcut( "pls-open" );
-    set_capability( "demux2" , 10 );
-    set_callbacks( Import_PLS , Close_PLS );
+        set_description( _("M3U playlist import") );
+        add_shortcut( "m3u-open" );
+        set_capability( "demux2" , 10 );
+        set_callbacks( Import_M3U , Close_M3U );
+    add_submodule();
+        set_description( _("PLS playlist import") );
+        add_shortcut( "pls-open" );
+        set_capability( "demux2" , 10 );
+        set_callbacks( Import_PLS , Close_PLS );
 vlc_module_end();
 
 
index 96572aa..9bc6e11 100644 (file)
@@ -29,6 +29,9 @@ vlc_bool_t FindItem( demux_t *, playlist_t *, playlist_item_t **);
 int Import_Old ( vlc_object_t * );
 int Import_M3U ( vlc_object_t * );
 
+int Import_Native ( vlc_object_t * );
+int Close_Native ( vlc_object_t * );
+
 void Close_M3U ( vlc_object_t * );
 int Import_PLS ( vlc_object_t * );
 void Close_PLS ( vlc_object_t * );
index 72f81da..c069c0f 100644 (file)
@@ -45,6 +45,8 @@ static void Close  ( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("PS demuxer") );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_capability( "demux2", 1 );
     set_callbacks( Open, Close );
     add_shortcut( "ps" );
index 07978ca..b699ea3 100644 (file)
@@ -42,6 +42,8 @@ static void Close  ( vlc_object_t * );
 vlc_module_begin();
     set_description( _("PVA demuxer" ) );
     set_capability( "demux2", 10 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_callbacks( Open, Close );
     add_shortcut( "pva" );
 vlc_module_end();
index f50c0a5..5814eff 100644 (file)
@@ -38,6 +38,8 @@ static void Close( vlc_object_t * );
 vlc_module_begin();
     set_description( _("raw DV demuxer") );
     set_capability( "demux2", 2 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_callbacks( Open, Close );
     add_shortcut( "rawdv" );
 vlc_module_end();
index 94e0b42..01e0cdf 100644 (file)
@@ -38,6 +38,8 @@ static void Close  ( vlc_object_t * );
 vlc_module_begin();
     set_description( _("Real demuxer" ) );
     set_capability( "demux2", 15 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_callbacks( Open, Close );
     add_shortcut( "real" );
     add_shortcut( "rm" );
index 02ea755..ce59cea 100644 (file)
@@ -111,6 +111,8 @@ static void Deactivate( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("Kasenna MediaBase metademux") );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_capability( "demux2", 170 );
     set_callbacks( Activate, Deactivate );
     add_shortcut( "sgimb" );
index 0aedae1..d1e7a66 100644 (file)
@@ -65,6 +65,8 @@ static char *ppsz_sub_type[] =
 vlc_module_begin();
     set_description( _("Text subtitles demux") );
     set_capability( "demux2", 0 );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     add_float( "sub-fps", 0.0, NULL,
                N_("Frames per second"),
                SUB_FPS_LONGTEXT, VLC_TRUE );
index 8ec1ef2..a043540 100644 (file)
@@ -85,6 +85,9 @@ static void Close ( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("ISO 13818-1 MPEG Transport Stream input - new" ) );
+    set_name ( _("MPEG-TS") );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
 
     add_string( "ts-extra-pmt", NULL, NULL, PMT_TEXT, PMT_LONGTEXT, VLC_TRUE );
     add_bool( "ts-es-id-pid", 0, NULL, PID_TEXT, PID_LONGTEXT, VLC_TRUE );
index 6b64c65..24aae6c 100644 (file)
@@ -46,6 +46,8 @@ static void Close( vlc_object_t *p_this );
 
 vlc_module_begin();
     set_description( _("Vobsub subtitles demux") );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_capability( "demux2", 1 );
     
     set_callbacks( Open, Close );
index d83eebd..ff5caae 100644 (file)
@@ -40,6 +40,8 @@ static void Close( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("WAV demuxer") );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
     set_capability( "demux2", 142 );
     set_callbacks( Open, Close );
 vlc_module_end();
index 3f6cdfe..303856b 100644 (file)
@@ -2,7 +2,7 @@
  * beos.cpp : BeOS plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: BeOS.cpp,v 1.14 2004/01/26 16:52:31 zorglub Exp $
+ * $Id$
  *
  * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -49,6 +49,8 @@ void E_(CloseVideo)   ( vlc_object_t * );
 static char * ppsz_screenshotformat[] = { "TGA", "PPM", "PNG", "JPEG", "BMP" };
 
 vlc_module_begin();
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
     add_bool( "beos-dvdmenus", 0, NULL, _("Use DVD Menus"), "", VLC_TRUE );
     add_string( "beos-screenshotpath", "/boot/home/", NULL,
                 _("Screenshot Path"), "", VLC_TRUE );
index e3686c6..733e5f4 100644 (file)
@@ -75,6 +75,8 @@ vlc_module_begin();
     int i = getenv( "DISPLAY" ) == NULL ? 15 : 100;
 #endif
     set_description( _("GNOME interface") );
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
 
     add_bool( "gnome-tooltips", 1, E_(GtkHideTooltips),
               TOOLTIPS_TEXT, TOOLTIPS_LONGTEXT, VLC_FALSE );
index 10e0114..7790031 100644 (file)
@@ -74,6 +74,8 @@ vlc_module_begin();
     int i = getenv( "DISPLAY" ) == NULL ? 10 : 90;
 #endif
     set_description( _("Gtk+ interface") );
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
 
     add_bool( "gtk-tooltips", 1, E_(GtkHideTooltips),
               TOOLTIPS_TEXT, TOOLTIPS_LONGTEXT, VLC_FALSE );
index e580916..aae13b4 100644 (file)
@@ -2,7 +2,7 @@
  * gnome2.c : GNOME 2 plugin for vlc
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: gnome2.c,v 1.3 2004/03/03 20:39:52 gbazin Exp $
+ * $Id$
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -52,6 +52,8 @@ static int  Manage       ( intf_thread_t * );
 vlc_module_begin();
     int i = getenv( "DISPLAY" ) == NULL ? 15 : 95;
     set_description( _("Gtk2 interface") );
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
     set_capability( "interface", i );
     set_callbacks( Open, Close );
     set_program( "gvlc" );
index 40d7993..7273e60 100644 (file)
@@ -2,7 +2,7 @@
  * gtk2.c : Gtk2 plugin for vlc
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: gtk2.c,v 1.3 2004/03/03 20:39:52 gbazin Exp $
+ * $Id$
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -52,6 +52,8 @@ static int  Manage       ( intf_thread_t * );
  *****************************************************************************/
 vlc_module_begin();
     int i = getenv( "DISPLAY" ) == NULL ? 15 : 95;
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
     set_description( _("Gtk2 interface") );
     set_capability( "interface", i );
     set_callbacks( Open, Close );
index 7cfd2bd..2b9a439 100644 (file)
@@ -2,7 +2,7 @@
  * kde.cpp : KDE plugin for vlc
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: kde.cpp,v 1.15 2004/01/25 18:53:07 gbazin Exp $
+ * $Id$
  *
  * Authors: Andres Krapf <dae@chez.com> Sun Mar 25 2001
  *
@@ -51,6 +51,8 @@ static void run(intf_thread_t *p_intf);
  *****************************************************************************/
 vlc_module_begin();
     /* int i = getenv( "DISPLAY" ) == NULL ? 8 : 85; */
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
     set_description( _("KDE interface") );
     add_file( "kde-uirc", DATA_PATH "/ui.rc", NULL, N_( "path to ui.rc file" ), NULL, VLC_TRUE );
     set_capability( "interface", 0 ); /* 0 used to be i, disabled because kvlc not maintained */
index 2999a83..7ef816f 100644 (file)
@@ -71,6 +71,8 @@ vlc_module_begin();
     set_description( _("Mac OS X interface, sound and video") );
     set_capability( "interface", 100 );
     set_callbacks( E_(OpenIntf), E_(CloseIntf) );
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
     add_submodule();
         set_capability( "video output", 100 );
         set_callbacks( E_(OpenVideoQT), E_(CloseVideoQT) );
index f8c7f0e..e78a7d0 100644 (file)
@@ -91,6 +91,8 @@ static void ReadDir        ( intf_thread_t * );
 vlc_module_begin();
     set_description( _("ncurses interface") );
     set_capability( "interface", 10 );
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
     set_callbacks( Open, Close );
     add_shortcut( "curses" );
     add_directory( "browse-dir", NULL, NULL, BROWSE_TEXT, BROWSE_LONGTEXT, VLC_FALSE );
index 77385e6..02fddb4 100644 (file)
@@ -64,6 +64,8 @@ gint E_(GtkModeManage)   ( intf_thread_t * p_intf );
  *****************************************************************************/
 vlc_module_begin();
     set_description( N_("PDA Linux Gtk2+ interface") );
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
 //    add_bool( "pda-autoplayfile", 1, GtkAutoPlayFile, AUTOPLAYFILE_TEXT, AUTOPLAYFILE_LONGTEXT, VLC_TRUE );
     set_capability( "interface", 70 );
     set_callbacks( Open, Close );
index 8c8248b..7c41d58 100644 (file)
@@ -44,6 +44,8 @@ vlc_module_begin();
     set_description( _("QNX RTOS video and audio output") );
     set_capability( "video output", 100 );
     set_callbacks( E_(OpenVideo), E_(CloseVideo) );
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
     add_submodule();
         set_capability( "audio output", 100 );
         set_callbacks( E_(OpenAudio), E_(CloseAudio) );
index 29a6935..e889461 100644 (file)
@@ -2,7 +2,7 @@
  * qt.cpp : Qt plugin for vlc
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: qt.cpp,v 1.2 2003/03/30 18:14:38 gbazin Exp $
+ * $Id$
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -47,6 +47,8 @@ vlc_module_begin();
     set_description( _("Qt interface") );
     set_capability( "interface", i );
     set_program( "qvlc" );
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
     set_callbacks( E_(Open), E_(Close) );
 vlc_module_end();
 
index 285c002..7c1e423 100644 (file)
@@ -340,6 +340,8 @@ static int DemuxControl( demux_t *p_demux, int i_query, va_list args )
     " correctly.")
 
 vlc_module_begin();
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
     add_string( "skins2-last", "", NULL, SKINS2_LAST, SKINS2_LAST_LONG,
                 VLC_TRUE );
     add_string( "skins2-config", "", NULL, SKINS2_CONFIG, SKINS2_CONFIG_LONG,
index 3b5c238..e789766 100644 (file)
@@ -37,6 +37,8 @@
 
 #include <vlc/intf.h>
 
+#include <vector>
+
 #include "wxwindows.h"
 #include "preferences_widgets.h"
 
index c80bd5e..40ccfee 100644 (file)
@@ -32,7 +32,7 @@
 #include <vlc/vlc.h>
 #include <vlc/intf.h>
 
-#include <vlc_help.h>
+#include <vlc_config_cat.h>
 
 #include "wxwindows.h"
 #include "preferences_widgets.h"
@@ -46,9 +46,9 @@
 #   define wxRB_SINGLE 0
 #endif
 
-#define GENERAL_ID 1242
-#define PLUGIN_ID 1243
-#define CAPABILITY_ID 1244
+#define TYPE_CATEGORY 0
+#define TYPE_SUBCATEGORY 1
+#define TYPE_MODULE 2
 
 /*****************************************************************************
  * Classes declarations.
@@ -82,7 +82,6 @@ private:
     vlc_bool_t b_advanced;
 
     wxTreeItemId root_item;
-    wxTreeItemId general_item;
     wxTreeItemId plugins_item;
 };
 
@@ -94,7 +93,7 @@ public:
 
     PrefsPanel() { }
     PrefsPanel( wxWindow *parent, intf_thread_t *_p_intf,
-                PrefsDialog *, int i_object_id, char *, char * );
+                PrefsDialog *, ConfigTreeData* );
     virtual ~PrefsPanel() {}
 
     void ApplyChanges();
@@ -106,6 +105,7 @@ private:
 
     vlc_bool_t b_advanced;
 
+    wxStaticText *hidden_text;
     wxBoxSizer *config_sizer;
     wxScrolledWindow *config_window;
 
@@ -116,18 +116,22 @@ class ConfigTreeData : public wxTreeItemData
 {
 public:
 
-    ConfigTreeData() { b_submodule = 0; panel = NULL; psz_section = NULL;
+    ConfigTreeData() { b_submodule = 0; panel = NULL; psz_name = NULL;
                        psz_help = NULL; }
-    virtual ~ConfigTreeData() { if( panel ) delete panel;
-                                if( psz_section) free(psz_section);
-                                if( psz_help) free(psz_help); }
+    virtual ~ConfigTreeData() {
+                                 if( panel ) delete panel;
+                                 if( psz_name ) free( psz_name );
+                                 if( psz_help ) free( psz_help );
+                              };
 
     vlc_bool_t b_submodule;
 
     PrefsPanel *panel;
     wxBoxSizer *sizer;
+
     int i_object_id;
-    char *psz_section;
+    int i_type;
+    char *psz_name;
     char *psz_help;
 };
 
@@ -302,7 +306,7 @@ PrefsTreeCtrl::PrefsTreeCtrl( wxWindow *_p_parent, intf_thread_t *_p_intf,
                 wxTR_LINES_AT_ROOT | wxTR_HIDE_ROOT |
                 wxTR_HAS_BUTTONS | wxTR_TWIST_BUTTONS | wxSUNKEN_BORDER )
 {
-    vlc_list_t      *p_list;
+    vlc_list_t      *p_list = NULL;;
     module_t        *p_module;
     module_config_t *p_item;
     int i_index;
@@ -320,16 +324,7 @@ PrefsTreeCtrl::PrefsTreeCtrl( wxWindow *_p_parent, intf_thread_t *_p_intf,
     p_list = vlc_list_find( p_intf, VLC_OBJECT_MODULE, FIND_ANYWHERE );
     if( !p_list ) return;
 
-    /*
-     * Build a tree of the main options
-     */
-    ConfigTreeData *config_data = new ConfigTreeData;
-    config_data->i_object_id = GENERAL_ID;
-    config_data->psz_help = wraptext( GENERAL_HELP, 72 , ISUTF8 );
-    config_data->psz_section = strdup( GENERAL_TITLE );
-    general_item = AppendItem( root_item, wxU(_("General settings")),
-                                -1, -1, config_data );
-
+    /* Build the categories list */
     for( i_index = 0; i_index < p_list->i_count; i_index++ )
     {
         p_module = (module_t *)p_list->p_values[i_index].p_object;
@@ -338,6 +333,8 @@ PrefsTreeCtrl::PrefsTreeCtrl( wxWindow *_p_parent, intf_thread_t *_p_intf,
     }
     if( i_index < p_list->i_count )
     {
+        wxTreeItemId current_item;
+        char *psz_help;
         /* We found the main module */
 
         /* Enumerate config categories and store a reference so we can
@@ -346,46 +343,66 @@ PrefsTreeCtrl::PrefsTreeCtrl( wxWindow *_p_parent, intf_thread_t *_p_intf,
 
         if( p_item ) do
         {
+            ConfigTreeData *config_data;
             switch( p_item->i_type )
             {
-            case CONFIG_HINT_CATEGORY:
-                ConfigTreeData *config_data = new ConfigTreeData;
-                config_data->psz_section = strdup(p_item->psz_text);
-                if( p_item->psz_longtext )
+            case CONFIG_CATEGORY:
+                config_data = new ConfigTreeData;
+                config_data->psz_name = strdup( config_CategoryNameGet(
+                                                            p_item->i_value ) );
+                psz_help = config_CategoryHelpGet( p_item->i_value );
+                if( psz_help )
                 {
-                    config_data->psz_help =
-                        wraptext( p_item->psz_longtext, 72 , ISUTF8 );
+                    config_data->psz_help = wraptext( strdup( psz_help ),
+                                                      72 , ISUTF8 );
                 }
                 else
                 {
                     config_data->psz_help = NULL;
                 }
-                config_data->i_object_id = p_module->i_object_id;
+                config_data->i_type = TYPE_CATEGORY;
+                config_data->i_object_id = p_item->i_value;
 
                 /* Add the category to the tree */
-                AppendItem( general_item, wxU(p_item->psz_text),
+                current_item = AppendItem( root_item,
+                                           wxU( config_data->psz_name ),
+                                           -1, -1, config_data );
+                break;
+            case CONFIG_SUBCATEGORY:
+                config_data = new ConfigTreeData;
+                config_data->psz_name = strdup(  config_CategoryNameGet(
+                                                           p_item->i_value ) );
+                psz_help = config_CategoryHelpGet( p_item->i_value );
+                if( psz_help )
+                {
+                    config_data->psz_help = wraptext( strdup( psz_help ) ,
+                                                      72 , ISUTF8 );
+                }
+                else
+                {
+                    config_data->psz_help = NULL;
+                }
+                config_data->i_type = TYPE_SUBCATEGORY;
+                config_data->i_object_id = p_item->i_value;
+                AppendItem( current_item, wxU( config_data->psz_name ),
                             -1, -1, config_data );
                 break;
             }
         }
         while( p_item->i_type != CONFIG_HINT_END && p_item++ );
 
-        SortChildren( general_item );
     }
 
 
     /*
      * Build a tree of all the plugins
      */
-    config_data = new ConfigTreeData;
-    config_data->i_object_id = PLUGIN_ID;
-    config_data->psz_help = wraptext( PLUGIN_HELP, 72, ISUTF8 );
-    config_data->psz_section = strdup( PLUGIN_TITLE );
-    plugins_item = AppendItem( root_item, wxU(_("Modules")),
-                        -1, -1,config_data );
-
     for( i_index = 0; i_index < p_list->i_count; i_index++ )
     {
+        int i_category = -1;
+        int i_subcategory = -1;
+        int i_options = 0;
+
         p_module = (module_t *)p_list->p_values[i_index].p_object;
 
         /* Exclude the main module */
@@ -395,66 +412,89 @@ PrefsTreeCtrl::PrefsTreeCtrl( wxWindow *_p_parent, intf_thread_t *_p_intf,
         /* Exclude empty plugins (submodules don't have config options, they
          * are stored in the parent module) */
         if( p_module->b_submodule )
-            p_item = ((module_t *)p_module->p_parent)->p_config;
+              continue;
+//            p_item = ((module_t *)p_module->p_parent)->p_config;
         else
             p_item = p_module->p_config;
 
         if( !p_item ) continue;
         do
         {
+            if( p_item->i_type == CONFIG_CATEGORY )
+            {
+                i_category = p_item->i_value;
+            }
+            else if( p_item->i_type == CONFIG_SUBCATEGORY )
+            {
+                i_subcategory = p_item->i_value;
+            }
             if( p_item->i_type & CONFIG_ITEM )
+                i_options ++;
+            if( i_options > 0 && i_category >= 0 && i_subcategory >= 0 )
+            {
                 break;
+            }
         }
         while( p_item->i_type != CONFIG_HINT_END && p_item++ );
-        if( p_item->i_type == CONFIG_HINT_END ) continue;
 
-        /* Find the capability child item */
-        long cookie; size_t i_child_index;
-        wxTreeItemId capability_item = GetFirstChild( plugins_item, cookie);
-        for( i_child_index = 0;
-             i_child_index < GetChildrenCount( plugins_item, FALSE );
-             i_child_index++ )
+        if( !i_options ) continue;
+
+        /* Find the right category item */
+        long cookie;
+        vlc_bool_t b_found = VLC_FALSE;
+        wxTreeItemId category_item = GetFirstChild( root_item , cookie);
+        while( category_item.IsOk() )
         {
-            if( !GetItemText(capability_item).Cmp(
-                    wxU(p_module->psz_capability ) ) )
+            ConfigTreeData *config_data =
+                    (ConfigTreeData *)GetItemData( category_item );
+            if( config_data->i_object_id == i_category )
             {
+                b_found = VLC_TRUE;
                 break;
             }
-            capability_item = GetNextChild( plugins_item, cookie );
+            category_item = GetNextChild( root_item, cookie );
         }
 
-        if( i_child_index == GetChildrenCount( plugins_item, FALSE ) &&
-            p_module->psz_capability && *p_module->psz_capability )
+        if( !b_found ) continue;
+
+        /* Find subcategory item */
+        b_found = VLC_FALSE;
+        cookie = -1;
+        wxTreeItemId subcategory_item = GetFirstChild( category_item, cookie );
+        while( subcategory_item.IsOk() )
         {
-            /* We didn't find it, add it */
-            ConfigTreeData *config_data = new ConfigTreeData;
-            config_data->psz_section =
-                wraptext( GetCapabilityHelp( p_module->psz_capability , 1 ),
-                          72, ISUTF8 );
-            config_data->psz_help =
-                wraptext( GetCapabilityHelp( p_module->psz_capability , 2 ),
-                          72, ISUTF8 );
-            config_data->i_object_id = CAPABILITY_ID;
-            capability_item = AppendItem( plugins_item,
-                                          wxU(p_module->psz_capability),
-                                          -1,-1,config_data );
+            ConfigTreeData *config_data =
+                    (ConfigTreeData *)GetItemData( subcategory_item );
+            if( config_data->i_object_id == i_subcategory )
+            {
+                b_found = VLC_TRUE;
+                break;
+            }
+            subcategory_item = GetNextChild( category_item, cookie );
+        }
+        if( !b_found )
+        {
+            subcategory_item = category_item;
         }
 
         /* Add the plugin to the tree */
         ConfigTreeData *config_data = new ConfigTreeData;
         config_data->b_submodule = p_module->b_submodule;
+        config_data->i_type = TYPE_MODULE;
         config_data->i_object_id = p_module->b_submodule ?
             ((module_t *)p_module->p_parent)->i_object_id :
             p_module->i_object_id;
         config_data->psz_help = NULL;
-        AppendItem( capability_item, wxU(p_module->psz_object_name), -1, -1,
+
+        AppendItem( subcategory_item, wxU( p_module->psz_name ?
+                       p_module->psz_name : p_module->psz_object_name)
+                , -1, -1,
                     config_data );
     }
 
     /* Sort all this mess */
     long cookie; size_t i_child_index;
-    SortChildren( plugins_item );
-    wxTreeItemId capability_item = GetFirstChild( plugins_item, cookie);
+    wxTreeItemId capability_item = GetFirstChild( root_item, cookie);
     for( i_child_index = 0;
          i_child_index < GetChildrenCount( plugins_item, FALSE );
          i_child_index++ )
@@ -474,7 +514,7 @@ PrefsTreeCtrl::PrefsTreeCtrl( wxWindow *_p_parent, intf_thread_t *_p_intf,
     SelectItem( GetFirstChild( root_item, cookie ) );
 #endif
 
-    Expand( general_item );
+    Expand( root_item );
 }
 
 PrefsTreeCtrl::~PrefsTreeCtrl()
@@ -483,51 +523,44 @@ PrefsTreeCtrl::~PrefsTreeCtrl()
 
 void PrefsTreeCtrl::ApplyChanges()
 {
-    long cookie, cookie2;
+    long cookie, cookie2, cookie3;
     ConfigTreeData *config_data;
 
-    /* Apply changes to the main module */
-    wxTreeItemId item = GetFirstChild( general_item, cookie );
-    for( size_t i_child_index = 0;
-         i_child_index < GetChildrenCount( general_item, FALSE );
-         i_child_index++ )
+    wxTreeItemId category = GetFirstChild( root_item, cookie );
+    while( category.IsOk() )
     {
-        config_data = (ConfigTreeData *)GetItemData( item );
-        if( config_data && config_data->panel )
+        wxTreeItemId subcategory = GetFirstChild( category, cookie2 );
+        while( subcategory.IsOk() )
         {
-            config_data->panel->ApplyChanges();
-        }
-
-        item = GetNextChild( general_item, cookie );
-    }
-
-    /* Apply changes to the plugins */
-    item = GetFirstChild( plugins_item, cookie );
-    for( size_t i_child_index = 0;
-         i_child_index < GetChildrenCount( plugins_item, FALSE );
-         i_child_index++ )
-    {
-        wxTreeItemId item2 = GetFirstChild( item, cookie2 );
-        for( size_t i_child_index = 0;
-             i_child_index < GetChildrenCount( item, FALSE );
-             i_child_index++ )
-        {
-            config_data = (ConfigTreeData *)GetItemData( item2 );
+            wxTreeItemId module = GetFirstChild( subcategory, cookie3 );
+            while( module.IsOk() )
+            {
+                config_data = (ConfigTreeData *)GetItemData( module );
+                if( config_data && config_data->panel )
+                {
+                    config_data->panel->ApplyChanges();
+                }
+                module = GetNextChild( subcategory, cookie3 );
+            }
+            config_data = (ConfigTreeData *)GetItemData( subcategory );
             if( config_data && config_data->panel )
             {
                 config_data->panel->ApplyChanges();
             }
-
-            item2 = GetNextChild( item, cookie2 );
+            subcategory = GetNextChild( category, cookie2 );
         }
-
-        item = GetNextChild( plugins_item, cookie );
+        config_data = (ConfigTreeData *)GetItemData( category );
+        if( config_data && config_data->panel )
+        {
+            config_data->panel->ApplyChanges();
+        }
+        category = GetNextChild( root_item, cookie );
     }
 }
 
 void PrefsTreeCtrl::CleanChanges()
 {
-    long cookie, cookie2;
+    long cookie, cookie2, cookie3;
     ConfigTreeData *config_data;
 
     config_data = !GetSelection() ? NULL :
@@ -538,10 +571,45 @@ void PrefsTreeCtrl::CleanChanges()
         p_sizer->Remove( config_data->panel );
     }
 
+    wxTreeItemId category = GetFirstChild( root_item, cookie );
+    while( category.IsOk() )
+    {
+        wxTreeItemId subcategory = GetFirstChild( category, cookie2 );
+        while( subcategory.IsOk() )
+        {
+            wxTreeItemId module = GetFirstChild( subcategory, cookie3 );
+            while( module.IsOk() )
+            {
+                config_data = (ConfigTreeData *)GetItemData( module );
+                if( config_data && config_data->panel )
+                {
+                    delete config_data->panel;
+                    config_data->panel = NULL;
+                }
+                module = GetNextChild( subcategory, cookie3 );
+            }
+            config_data = (ConfigTreeData *)GetItemData( subcategory );
+            if( config_data && config_data->panel )
+            {
+                delete config_data->panel;
+                config_data->panel = NULL;
+            }
+            subcategory = GetNextChild( category, cookie2 );
+        }
+        config_data = (ConfigTreeData *)GetItemData( category );
+        if( config_data && config_data->panel )
+        {
+            delete config_data->panel;
+            config_data->panel = NULL;
+        }
+        category = GetNextChild( root_item, cookie );
+    }
+
+#if 0
     /* Clean changes for the main module */
-    wxTreeItemId item = GetFirstChild( general_item, cookie );
+    wxTreeItemId item = GetFirstChild( root_item, cookie );
     for( size_t i_child_index = 0;
-         i_child_index < GetChildrenCount( general_item, FALSE );
+         i_child_index < GetChildrenCount( root_item, FALSE );
          i_child_index++ )
     {
         config_data = (ConfigTreeData *)GetItemData( item );
@@ -551,9 +619,8 @@ void PrefsTreeCtrl::CleanChanges()
             config_data->panel = NULL;
         }
 
-        item = GetNextChild( general_item, cookie );
+        item = GetNextChild( root_item, cookie );
     }
-
     /* Clean changes for the plugins */
     item = GetFirstChild( plugins_item, cookie );
     for( size_t i_child_index = 0;
@@ -578,7 +645,7 @@ void PrefsTreeCtrl::CleanChanges()
 
         item = GetNextChild( plugins_item, cookie );
     }
-
+#endif
     if( GetSelection() )
     {
         wxTreeEvent event;
@@ -596,29 +663,28 @@ ConfigTreeData *PrefsTreeCtrl::FindModuleConfig( ConfigTreeData *config_data )
         return config_data;
     }
 
-    long cookie, cookie2;
+    long cookie, cookie2, cookie3;
     ConfigTreeData *config_new;
-    wxTreeItemId item = GetFirstChild( plugins_item, cookie );
-    for( size_t i_child_index = 0;
-         i_child_index < GetChildrenCount( plugins_item, FALSE );
-         i_child_index++ )
+    wxTreeItemId category = GetFirstChild( root_item, cookie );
+    while( category.IsOk() )
     {
-        wxTreeItemId item2 = GetFirstChild( item, cookie2 );
-        for( size_t i_child_index = 0;
-             i_child_index < GetChildrenCount( item, FALSE );
-             i_child_index++ )
+        wxTreeItemId subcategory = GetFirstChild( category, cookie2 );
+        while( subcategory.IsOk() )
         {
-            config_new = (ConfigTreeData *)GetItemData( item2 );
-            if( config_new && !config_new->b_submodule &&
-                config_new->i_object_id == config_data->i_object_id )
+            wxTreeItemId module = GetFirstChild( subcategory, cookie3 );
+            while( module.IsOk() )
             {
-                return config_new;
+                config_new = (ConfigTreeData *)GetItemData( module );
+                if( config_new && !config_new->b_submodule &&
+                    config_new->i_object_id == config_data->i_object_id )
+                {
+                    return config_new;
+                }
+                module = GetNextChild( subcategory, cookie3 );
             }
-
-            item2 = GetNextChild( item, cookie2 );
+            subcategory = GetNextChild( category, cookie2 );
         }
-
-        item = GetNextChild( plugins_item, cookie );
+        category = GetNextChild( root_item, cookie );
     }
 
     /* Found nothing */
@@ -648,9 +714,7 @@ void PrefsTreeCtrl::OnSelectTreeItem( wxTreeEvent& event )
             /* The panel hasn't been created yet. Let's do it. */
             config_data->panel =
                 new PrefsPanel( p_parent, p_intf, p_prefs_dialog,
-                                config_data->i_object_id,
-                                config_data->psz_section,
-                                config_data->psz_help );
+                                config_data );
             config_data->panel->SwitchAdvanced( b_advanced );
         }
         else
@@ -688,10 +752,11 @@ void PrefsTreeCtrl::OnAdvanced( wxCommandEvent& event )
  *****************************************************************************/
 PrefsPanel::PrefsPanel( wxWindow* parent, intf_thread_t *_p_intf,
                         PrefsDialog *_p_prefs_dialog,
-                        int i_object_id, char *psz_section, char *psz_help )
+                        ConfigTreeData *config_data )
   :  wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize )
 {
     module_config_t *p_item;
+    vlc_list_t *p_list = NULL;;
 
     wxStaticText *label;
     wxStaticText *help;
@@ -710,10 +775,9 @@ PrefsPanel::PrefsPanel( wxWindow* parent, intf_thread_t *_p_intf,
     wxBoxSizer *sizer = new wxBoxSizer( wxVERTICAL );
 
 
-    if( i_object_id == PLUGIN_ID || i_object_id == GENERAL_ID ||
-        i_object_id == CAPABILITY_ID )
+    if( config_data->i_type == TYPE_CATEGORY )
     {
-        label = new wxStaticText( this, -1,wxU(_( psz_section )));
+        label = new wxStaticText( this, -1,wxU(_( config_data->psz_name )));
         wxFont heading_font = label->GetFont();
         heading_font.SetPointSize( heading_font.GetPointSize() + 5 );
         label->SetFont( heading_font );
@@ -721,7 +785,8 @@ PrefsPanel::PrefsPanel( wxWindow* parent, intf_thread_t *_p_intf,
         sizer->Add( new wxStaticLine( this, 0 ), 0,
                     wxEXPAND | wxLEFT | wxRIGHT, 2 );
 
-        help = new wxStaticText( this, -1, wxU(_( psz_help ) ) );
+        hidden_text = NULL;
+        help = new wxStaticText( this, -1, wxU(_( config_data->psz_help ) ) );
         sizer->Add( help ,0 ,wxEXPAND | wxALL, 5 );
 
         config_sizer = NULL; config_window = NULL;
@@ -729,7 +794,35 @@ PrefsPanel::PrefsPanel( wxWindow* parent, intf_thread_t *_p_intf,
     else
     {
         /* Get a pointer to the module */
-        p_module = (module_t *)vlc_object_get( p_intf,  i_object_id );
+        if( config_data->i_type == TYPE_MODULE )
+        {
+            p_module = (module_t *)vlc_object_get( p_intf,
+                                                   config_data->i_object_id );
+        }
+        else
+        {
+            /* List the plugins */
+            int i_index;
+            vlc_bool_t b_found = VLC_FALSE;
+            p_list = vlc_list_find( p_intf, VLC_OBJECT_MODULE, FIND_ANYWHERE );
+            if( !p_list ) return;
+
+            for( i_index = 0; i_index < p_list->i_count; i_index++ )
+            {
+                p_module = (module_t *)p_list->p_values[i_index].p_object;
+                if( !strcmp( p_module->psz_object_name, "main" ) )
+                {
+                    b_found = VLC_TRUE;
+                    break;
+                }
+            }
+            if( !p_module && !b_found )
+            {
+                msg_Warn( p_intf, "ohoh, unable to find main module");
+                return;
+            }
+        }
+
         if( p_module->i_object_type != VLC_OBJECT_MODULE )
         {
             /* 0OOoo something went really bad */
@@ -745,21 +838,34 @@ PrefsPanel::PrefsPanel( wxWindow* parent, intf_thread_t *_p_intf,
             p_item = p_module->p_config;
 
         /* Find the category if it has been specified */
-        if( psz_section && p_item->i_type == CONFIG_HINT_CATEGORY )
+        if( config_data->i_type == TYPE_SUBCATEGORY )
         {
-            while( !p_item->i_type == CONFIG_HINT_CATEGORY ||
-                   strcmp( psz_section, p_item->psz_text ) )
+            do
             {
+                if( p_item->i_type == CONFIG_SUBCATEGORY &&
+                    p_item->i_value == config_data->i_object_id )
+                {
+                    break;
+                }
                 if( p_item->i_type == CONFIG_HINT_END )
                     break;
-                p_item++;
-            }
+            } while( p_item++ );
         }
 
         /* Add a head title to the panel */
+        char *psz_head;
+        if( config_data->i_type == TYPE_SUBCATEGORY )
+        {
+            psz_head = config_data->psz_name;
+            p_item++;
+        }
+        else
+        {
+            psz_head = p_module->psz_longname;
+        }
+
         label = new wxStaticText( this, -1,
-                                  wxU(_(psz_section ? p_item->psz_text :
-                                  p_module->psz_longname )));
+                      wxU(_( psz_head ? psz_head : _("Unknown") ) ) );
         wxFont heading_font = label->GetFont();
         heading_font.SetPointSize( heading_font.GetPointSize() + 5 );
         label->SetFont( heading_font );
@@ -777,8 +883,10 @@ PrefsPanel::PrefsPanel( wxWindow* parent, intf_thread_t *_p_intf,
         if( p_item ) do
         {
             /* If a category has been specified, check we finished the job */
-            if( psz_section && p_item->i_type == CONFIG_HINT_CATEGORY &&
-                strcmp( psz_section, p_item->psz_text ) )
+            if( config_data->i_type == TYPE_SUBCATEGORY &&
+                (p_item->i_type == CONFIG_CATEGORY ||
+                  p_item->i_type == CONFIG_SUBCATEGORY ) &&
+                p_item->i_value != config_data->i_object_id )
                 break;
 
             ConfigControl *control =
@@ -793,25 +901,40 @@ PrefsPanel::PrefsPanel( wxWindow* parent, intf_thread_t *_p_intf,
 
             config_sizer->Add( control, 0, wxEXPAND | wxALL, 2 );
         }
-        while( p_item->i_type != CONFIG_HINT_END && p_item++ );
+        while( !( p_item->i_type == CONFIG_HINT_END ||
+               ( config_data->i_type == TYPE_SUBCATEGORY &&
+                 ( p_item->i_type == CONFIG_CATEGORY ||
+                   p_item->i_type == CONFIG_SUBCATEGORY ) ) ) && p_item++ );
+
 
         config_sizer->Layout();
         config_window->SetSizer( config_sizer );
         sizer->Add( config_window, 1, wxEXPAND | wxALL, 5 );
+        hidden_text = new wxStaticText( this, -1,
+                        wxU( _( "Some options are available but hidden. " \
+                                "Check \"Advanced options\" to see them." ) ) );
+        sizer->Add( hidden_text );
 
         /* And at last put a useful help string if available */
-        if( psz_help && *psz_help )
+        if( config_data->psz_help && *config_data->psz_help )
         {
             sizer->Add( new wxStaticLine( this, 0 ), 0,
                         wxEXPAND | wxLEFT | wxRIGHT, 2 );
-            help = new wxStaticText( this, -1, wxU(_(psz_help)),
+            help = new wxStaticText( this, -1, wxU(_(config_data->psz_help)),
                                      wxDefaultPosition, wxDefaultSize,
                                      wxALIGN_LEFT,
                                      wxT("") );
             sizer->Add( help ,0 ,wxEXPAND | wxALL, 5 );
         }
 
-        vlc_object_release( p_module );
+        if( config_data->i_type == TYPE_MODULE )
+        {
+            vlc_object_release( p_module );
+        }
+        else
+        {
+            vlc_list_release( p_list );
+        }
     }
     sizer->Layout();
     SetSizer( sizer );
@@ -832,6 +955,8 @@ void PrefsPanel::ApplyChanges()
         case CONFIG_ITEM_FILE:
         case CONFIG_ITEM_DIRECTORY:
         case CONFIG_ITEM_MODULE:
+        case CONFIG_ITEM_MODULE_LIST:
+        case CONFIG_ITEM_MODULE_LIST_CAT:
             config_PutPsz( p_intf, control->GetName().mb_str(),
                            control->GetPszValue().mb_str() );
             break;
@@ -854,7 +979,12 @@ void PrefsPanel::ApplyChanges()
 
 void PrefsPanel::SwitchAdvanced( vlc_bool_t b_new_advanced )
 {
-    if( b_advanced == b_new_advanced ) return;
+    bool hidden = false;
+
+    if( b_advanced == b_new_advanced ) 
+    {
+        goto hide;
+    }
 
     if( config_sizer && config_window )
     {
@@ -865,6 +995,7 @@ void PrefsPanel::SwitchAdvanced( vlc_bool_t b_new_advanced )
             ConfigControl *control = config_array.Item(i);
             if( control->IsAdvanced() )
             {
+                if( !b_advanced ) hidden = true;
                 control->Show( b_advanced );
                 config_sizer->Show( control, b_advanced );
             }
@@ -874,5 +1005,16 @@ void PrefsPanel::SwitchAdvanced( vlc_bool_t b_new_advanced )
         config_window->FitInside();
         config_window->Refresh();
     }
+hide:
+    if( hidden && hidden_text )
+    {
+        hidden_text->Show( true );
+        config_sizer->Show( hidden_text, true );
+    }
+    else if ( hidden_text )
+    {
+        hidden_text->Show( false );
+        config_sizer->Show( hidden_text, false );
+    }
     return;
 }
index acd6293..b087529 100644 (file)
 #include <vlc/vlc.h>
 #include <vlc/intf.h>
 
-#include <vlc_help.h>
+#include <vlc_config_cat.h>
 
 #include "wxwindows.h"
 #include "preferences_widgets.h"
 
+#include <wx/statline.h>
+
 /*****************************************************************************
  * CreateConfigControl wrapper
  *****************************************************************************/
@@ -51,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_LIST_CAT:
+        p_control = new ModuleListCatConfigControl( p_this, p_item, parent );
+        break;
 
     case CONFIG_ITEM_STRING:
         if( !p_item->i_list )
@@ -95,6 +100,10 @@ ConfigControl *CreateConfigControl( vlc_object_t *p_this,
         p_control = new BoolConfigControl( p_this, p_item, parent );
         break;
 
+    case CONFIG_SECTION:
+        p_control = new SectionConfigControl( p_this, p_item, parent );
+        break;
+
     default:
         break;
     }
@@ -259,7 +268,7 @@ ModuleConfigControl::ModuleConfigControl( vlc_object_t *p_this,
     p_list = vlc_list_find( p_this, VLC_OBJECT_MODULE, FIND_ANYWHERE );
     combo->Append( wxU(_("Default")), (void *)NULL );
     combo->SetSelection( 0 );
-    for( int i_index = 0; i_index < p_list->i_count; i_index++ )
+    for( unsigned int i_index = 0; i_index < p_list->i_count; i_index++ )
     {
         p_parser = (module_t *)p_list->p_values[i_index].p_object ;
 
@@ -292,6 +301,103 @@ wxString ModuleConfigControl::GetPszValue()
 }
 
 /*****************************************************************************
+ * ModuleListCatonfigControl implementation
+ *****************************************************************************/
+BEGIN_EVENT_TABLE(ModuleListCatConfigControl, wxPanel)
+    EVT_CHECKBOX( wxID_HIGHEST , ModuleListCatConfigControl::OnUpdate )
+END_EVENT_TABLE()
+
+
+ModuleListCatConfigControl::ModuleListCatConfigControl( 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;
+
+    delete sizer;
+    sizer = new wxBoxSizer( wxVERTICAL );
+    label = new wxStaticText(this, -1, wxU(p_item->psz_text));
+    sizer->Add( label );
+
+    text = new wxTextCtrl( this, -1, wxU(p_item->psz_value),
+                           wxDefaultPosition,wxSize( 300, 20 ) );
+
+
+    /* build a list of available modules */
+    p_list = vlc_list_find( p_this, VLC_OBJECT_MODULE, FIND_ANYWHERE );
+    for( unsigned 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 )
+            {
+                moduleCheckBox *mc = new moduleCheckBox;
+                mc->checkbox = new wxCheckBox( this, wxID_HIGHEST,
+                                               wxU(p_parser->psz_longname));
+                mc->psz_module = strdup( p_parser->psz_object_name );
+                pp_checkboxes.push_back( mc );
+
+                if( p_item->psz_value &&
+                    strstr( p_item->psz_value, p_parser->psz_object_name ) )
+                {
+                    mc->checkbox->SetValue( true );
+                }
+                sizer->Add( mc->checkbox );
+            }
+        } while( p_config->i_type != CONFIG_HINT_END && p_config++ );
+    }
+    vlc_list_release( p_list );
+
+    text->SetToolTip( wxU(p_item->psz_longtext) );
+    sizer->Add(text, wxEXPAND );
+
+    sizer->Add (new wxStaticText( this, -1, wxU( vlc_wraptext( _("Select modules that you want. To get more advanced control, you can also modify the resulting chain by yourself") , 72, ISUTF8 ) ) ) );
+
+    sizer->Layout();
+    this->SetSizerAndFit( sizer );
+}
+
+ModuleListCatConfigControl::~ModuleListCatConfigControl()
+{
+    ;
+}
+
+wxString ModuleListCatConfigControl::GetPszValue()
+{
+    return wxU( text->GetValue().c_str() ) ;
+}
+
+void  ModuleListCatConfigControl::OnUpdate( wxCommandEvent &event )
+{
+    wxString newtext = wxU("");
+    for( int i = 0 ; i< pp_checkboxes.size() ; i++ )
+    {
+        if( pp_checkboxes[i]->checkbox->IsChecked() )
+        {
+            if( newtext.Len() == 0 )
+            {
+                newtext = newtext + wxU( pp_checkboxes[i]->psz_module );
+            }
+            else
+            {
+                newtext += wxU( "," ) + wxU(pp_checkboxes[i]->psz_module);
+            }
+        }
+    }
+    text->SetValue( newtext );
+}
+
+/*****************************************************************************
  * StringConfigControl implementation
  *****************************************************************************/
 StringConfigControl::StringConfigControl( vlc_object_t *p_this,
@@ -750,3 +856,24 @@ int BoolConfigControl::GetIntValue()
     if( checkbox->IsChecked() ) return 1;
     else return 0;
 }
+
+/*****************************************************************************
+ * SectionConfigControl implementation
+ *****************************************************************************/
+SectionConfigControl::SectionConfigControl( vlc_object_t *p_this,
+                                            module_config_t *p_item,
+                                            wxWindow *parent )
+  : ConfigControl( p_this, p_item, parent )
+{
+    delete sizer;
+    sizer = new wxBoxSizer( wxVERTICAL );
+    sizer->Add( new wxStaticText( this, -1, wxU( p_item->psz_text ) ) );
+    sizer->Add( new wxStaticLine( this, -1 ), 0, wxEXPAND, 5 );
+    sizer->Layout();
+    this->SetSizerAndFit( sizer );
+}
+
+SectionConfigControl::~SectionConfigControl()
+{
+    ;
+}
index 51669c6..88bd1ba 100644 (file)
@@ -21,6 +21,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  *****************************************************************************/
 
+#include <vector>
+
 class ConfigControl: public wxPanel
 {
 public:
@@ -82,6 +84,28 @@ private:
     wxComboBox *combo;
 };
 
+struct moduleCheckBox {
+    wxCheckBox *checkbox;
+    char *psz_module;
+};
+
+class ModuleListCatConfigControl: public ConfigControl
+{
+public:
+    ModuleListCatConfigControl( vlc_object_t *, module_config_t *, wxWindow * );
+    ~ModuleListCatConfigControl();
+    virtual wxString GetPszValue();
+private:
+    std::vector<moduleCheckBox *> pp_checkboxes;
+
+    void OnUpdate( wxCommandEvent& );
+    
+    wxTextCtrl *text;
+    DECLARE_EVENT_TABLE()
+};
+
+;
+
 class StringConfigControl: public ConfigControl
 {
 public:
@@ -190,3 +214,10 @@ private:
 
     DECLARE_EVENT_TABLE()
 };
+
+class SectionConfigControl: public ConfigControl
+{
+public:
+    SectionConfigControl( vlc_object_t *, module_config_t *, wxWindow * );
+    ~SectionConfigControl();
+};
index b7f2bdb..28156a2 100644 (file)
@@ -97,6 +97,8 @@ vlc_module_begin();
     int i_score = getenv( "DISPLAY" ) == NULL ? 15 : 150;
 #endif
     set_description( (char *) _("wxWindows interface module") );
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
     set_capability( "interface", i_score );
     set_callbacks( Open, Close );
     add_shortcut( "wxwindows" );
index acf9f28..4846422 100644 (file)
 vlc_module_begin();
     set_description( _("Dummy interface function") );
     set_capability( "interface", 0 );
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
     add_shortcut( "vlc" );
     set_callbacks( E_(OpenIntf), NULL );
 #ifdef WIN32
+    set_section( N_( "Dummy Interface" ), NULL );
     add_category_hint( N_("Interface"), NULL, VLC_FALSE );
     add_bool( "dummy-quiet", 0, NULL, QUIET_TEXT, QUIET_LONGTEXT, VLC_FALSE );
 #endif
@@ -72,6 +75,7 @@ vlc_module_begin();
         set_capability( "demux2", 0 );
         set_callbacks( E_(OpenDemux), E_(CloseDemux) );
     add_submodule();
+        set_section( N_( "Dummy decoder" ), NULL );
         set_description( _("Dummy decoder function") );
         set_capability( "decoder", 0 );
         set_callbacks( E_(OpenDecoder), E_(CloseDecoder) );
@@ -86,6 +90,7 @@ vlc_module_begin();
         set_callbacks( E_(OpenAudio), NULL );
     add_submodule();
         set_description( _("Dummy video output function") );
+        set_section( N_( "Dummy Video output" ), NULL );
         set_capability( "video output", 1 );
         set_callbacks( E_(OpenVideo), NULL );
         add_category_hint( N_("Video"), NULL, VLC_FALSE );
index 6ab58a0..bcb48a3 100644 (file)
@@ -91,6 +91,8 @@ static char *ppsz_sizes_text[] = { N_("Smaller"), N_("Small"), N_("Normal"),
 
 vlc_module_begin();
     set_description( _("freetype2 font renderer") );
+    set_category( CAT_VIDEO );
+    set_subcategory( SUBCAT_VIDEO_TEXT );
 
     add_file( "freetype-font", DEFAULT_FONT, NULL, FONT_TEXT, FONT_LONGTEXT,
               VLC_FALSE );
index 8cec5f2..74c3f03 100644 (file)
@@ -60,6 +60,8 @@ vlc_module_begin();
     set_description( _("GnuTLS TLS encryption layer") );
     set_capability( "tls", 1 );
     set_callbacks( Open, Close );
+    set_category( CAT_ADVANCED );
+    set_subcategory( SUBCAT_ADVANCED_MISC );
 
     add_integer( "dh-bits", DH_BITS, NULL, DH_BITS_TEXT,
                  DH_BITS_LONGTEXT, VLC_TRUE );
index 4563eea..78e131f 100644 (file)
@@ -98,6 +98,8 @@ static char *mode_list_text[] = { N_("Text"), "HTML" };
 #define LOGMODE_LONGTEXT N_("Specify the log format. Available choices are \"text\" (default) and \"html\".")
 
 vlc_module_begin();
+    set_category( CAT_ADVANCED );
+    set_subcategory( SUBCAT_ADVANCED_MISC );
     set_description( _("File logging interface") );
 
     add_file( "logfile", NULL, NULL, N_("Log filename"), N_("Specify the log filename."), VLC_FALSE );
index c368728..7daa9f4 100644 (file)
@@ -2,7 +2,7 @@
  * memcpy.c : classic memcpy module
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: memcpy.c,v 1.3 2003/03/30 18:14:38 gbazin Exp $
+ * $Id$
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -77,6 +77,8 @@ static int Activate ( vlc_object_t *p_this )
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_ADVANCED );
+    set_subcategory( SUBCAT_ADVANCED_MISC );
 #ifdef MODULE_NAME_IS_memcpy
     set_description( _("libc memcpy") );
     add_shortcut( "c" );
index 0023a91..5628052 100644 (file)
@@ -54,6 +54,8 @@ static int Activate ( vlc_object_t *p_this )
  *****************************************************************************/
 vlc_module_begin();
     set_description( _("AltiVec memcpy") );
+    set_category( CAT_ADVANCED );
+    set_subcategory( SUBCAT_ADVANCED_MISC );
     add_requirement( ALTIVEC );
     set_capability( "memcpy", 100 );
     set_callbacks( Activate, NULL );
index b11b7c5..406bb4c 100644 (file)
@@ -38,6 +38,8 @@ int Export_Old    ( vlc_object_t *p_intf );
  *****************************************************************************/
 vlc_module_begin();
 
+    set_category( CAT_PLAYLIST );
+    set_subcategory( SUBCAT_PLAYLIST_EXPORT );
     add_submodule();
         set_description( _("M3U playlist exporter") );
         add_shortcut( "export-m3u" );
index de6815d..c3c5a87 100644 (file)
@@ -49,6 +49,8 @@ static void Close( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("RTSP VoD server") );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_VOD );
     set_capability( "vod server", 1 );
     set_callbacks( Open, Close );
     add_shortcut( "rtsp" );
index 5ade800..e261caf 100644 (file)
@@ -41,6 +41,8 @@ static void Run          ( intf_thread_t *p_intf );
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_CONTROL );
     set_description( _("X Screensaver disabler") );
     set_capability( "interface", 0 );
     set_callbacks( Activate, NULL );
index 9f25f30..6f017df 100644 (file)
@@ -61,6 +61,8 @@ static void FreeString( subpicture_t * );
 #define TEMPLATE_LONGTEXT N_( "Location of a file holding a SVG template for automatic string conversion" )
 
 vlc_module_begin();
+ set_category( CAT_VIDEO );
+ set_subcategory( SUBCAT_VIDEO_TEXT );
  set_capability( "text renderer", 100 );
  add_shortcut( "svg" );
  add_string( "svg-template-file", "", NULL, TEMPLATE_TEXT, TEMPLATE_LONGTEXT, VLC_TRUE );
index abdcdc2..13243c5 100644 (file)
@@ -36,6 +36,8 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_ADVANCED );
+    set_subcategory( SUBCAT_ADVANCED_XML );
     set_description( _("XML Parser (using libxml2)") );
     set_capability( "xml", 10 );
     set_callbacks( Open, Close );
index cf492cf..e7a8b7b 100644 (file)
@@ -83,6 +83,8 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_ADVANCED );
+    set_subcategory( SUBCAT_ADVANCED_XML );
     set_description( _("Simple XML Parser") );
     set_capability( "xml", 5 );
     set_callbacks( Open, Close );
index e8fbc82..52c3b7c 100644 (file)
@@ -62,6 +62,10 @@ static void Close  ( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("ASF muxer") );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_MUX );
+    set_name( "ASF" );
+
     set_capability( "sout mux", 5 );
     add_shortcut( "asf" );
     add_shortcut( "asfh" );
index 4265ce5..56cca29 100644 (file)
@@ -42,6 +42,8 @@ static void Close  ( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("AVI muxer") );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_MUX );
     set_capability( "sout mux", 5 );
     add_shortcut( "avi" );
     set_callbacks( Open, Close );
index c5b6cc4..c99eeef 100644 (file)
@@ -40,6 +40,8 @@ static void Close  ( vlc_object_t * );
 vlc_module_begin();
     set_description( _("Dummy/Raw muxer") );
     set_capability( "sout mux", 5 );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_MUX );
     add_shortcut( "dummy" );
     add_shortcut( "raw" );
     add_shortcut( "es" );
index 4a615bb..fe621f7 100644 (file)
@@ -54,6 +54,9 @@ static void Close  ( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("MP4/MOV muxer") );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_MUX );
+    set_name( "MP4" );
 
     add_bool( SOUT_CFG_PREFIX "faststart", 1, NULL, FASTSTART_TEXT, FASTSTART_LONGTEXT,
               VLC_TRUE );
index f337f99..6d14a84 100644 (file)
@@ -53,6 +53,9 @@ static void    Close  ( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("PS muxer") );
+    set_name( "MPEG-PS" );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_MUX );
     set_capability( "sout mux", 50 );
     add_shortcut( "ps" );
     add_shortcut( "mpeg1" );
index 7b7031c..e7e28b4 100644 (file)
@@ -127,6 +127,9 @@ static void    Close  ( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("TS muxer (libdvbpsi)") );
+    set_name( "MPEG-TS");
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_MUX );
     set_capability( "sout mux", 120 );
     add_shortcut( "ts" );
 
index f22dbac..eaab175 100644 (file)
@@ -40,6 +40,8 @@ static void Close  ( vlc_object_t * );
 vlc_module_begin();
     set_description( _("Multipart jpeg muxer") );
     set_capability( "sout mux", 5 );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_MUX );
     set_callbacks( Open, Close );
     add_shortcut( "mpjpeg" );
 vlc_module_end();
index 5db1487..6f689e2 100644 (file)
@@ -49,6 +49,8 @@ static void Close  ( vlc_object_t * );
 vlc_module_begin();
     set_description( _("Ogg/ogm muxer") );
     set_capability( "sout mux", 10 );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_MUX );
     add_shortcut( "ogg" );
     add_shortcut( "ogm" );
     set_callbacks( Open, Close );
index e751d51..1076eca 100644 (file)
@@ -41,6 +41,8 @@ static void Close  ( vlc_object_t * );
 vlc_module_begin();
     set_description( _("WAV muxer") );
     set_capability( "sout mux", 5 );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_MUX );
     set_callbacks( Open, Close );
     add_shortcut( "wav" );
 vlc_module_end();
index 6fbe948..c208dfc 100644 (file)
@@ -38,6 +38,8 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_PACKETIZER );
     set_description( _("Copy packetizer") );
     set_capability( "packetizer", 1 );
     set_callbacks( Open, Close );
index dd51eb8..e0855b4 100644 (file)
@@ -42,6 +42,8 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_PACKETIZER );
     set_description( _("H264 video packetizer") );
     set_capability( "packetizer", 50 );
     set_callbacks( Open, Close );
index ee5eeb7..8f5c9b7 100644 (file)
@@ -2,7 +2,7 @@
  * mpeg4audio.c: parse and packetize an MPEG 4 audio stream
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: mpeg4audio.c,v 1.17 2004/02/25 18:43:24 gbazin Exp $
+ * $Id$
  *
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  *          Gildas Bazin <gbazin@netcourrier.com>
@@ -113,6 +113,8 @@ static int ADTSSyncInfo( decoder_t *, const byte_t * p_buf,
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_PACKETIZER );
     set_description( _("MPEG4 audio packetizer") );
     set_capability( "packetizer", 50 );
     set_callbacks( OpenPacketizer, ClosePacketizer );
index 809a9b7..3488aaf 100644 (file)
@@ -41,6 +41,8 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_PACKETIZER );
     set_description( _("MPEG4 video packetizer") );
     set_capability( "packetizer", 50 );
     set_callbacks( Open, Close );
index 1ceecd5..6e26d00 100644 (file)
@@ -55,6 +55,8 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_PACKETIZER );
     set_description( _("MPEG-I/II video packetizer") );
     set_capability( "packetizer", 50 );
     set_callbacks( Open, Close );
index 9ee9e9a..3f595b0 100644 (file)
@@ -61,6 +61,8 @@
 
 vlc_module_begin();
     set_description( _("HAL device detection") );
+    set_category( CAT_PLAYLIST );
+    set_subcategory( SUBCAT_PLAYLIST_SD );
 
     set_capability( "services_discovery", 0 );
     set_callbacks( Open, Close );
index fb1fce3..d00e1c1 100644 (file)
 
 vlc_module_begin();
     set_description( _("SAP interface") );
+    set_category( CAT_PLAYLIST );
+    set_subcategory( SUBCAT_PLAYLIST_SD );
 
     add_string( "sap-addr", NULL, NULL,
                 SAP_ADDR_TEXT, SAP_ADDR_LONGTEXT, VLC_TRUE );
index b402df0..cbb7947 100644 (file)
@@ -50,6 +50,8 @@ vlc_module_begin();
     set_description( _("Display stream output") );
     set_capability( "sout stream", 50 );
     add_shortcut( "display" );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_STREAM );
     add_bool( SOUT_CFG_PREFIX "audio", 1, NULL, AUDIO_TEXT,
               AUDIO_LONGTEXT, VLC_TRUE );
     add_bool( SOUT_CFG_PREFIX "video", 1, NULL, VIDEO_TEXT,
index b694c5f..7966792 100644 (file)
@@ -41,6 +41,8 @@ vlc_module_begin();
     set_capability( "sout stream", 50 );
     add_shortcut( "duplicate" );
     add_shortcut( "dup" );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_STREAM );
     set_callbacks( Open, Close );
 vlc_module_end();
 
index 2383352..86a4088 100644 (file)
@@ -78,6 +78,8 @@ vlc_module_begin();
     set_description( _("Elementary stream output") );
     set_capability( "sout stream", 50 );
     add_shortcut( "es" );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_STREAM );
 
     add_string( SOUT_CFG_PREFIX "access", "", NULL, ACCESS_TEXT,
                 ACCESS_LONGTEXT, VLC_TRUE );
index 7985f71..debc9cd 100644 (file)
@@ -40,6 +40,8 @@ vlc_module_begin();
     set_description( _("Gathering stream output") );
     set_capability( "sout stream", 50 );
     add_shortcut( "gather" );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_STREAM );
     set_callbacks( Open, Close );
 vlc_module_end();
 
index e03ea10..d60086e 100644 (file)
@@ -87,6 +87,8 @@ vlc_module_begin();
     set_description( _("RTP stream output") );
     set_capability( "sout stream", 0 );
     add_shortcut( "rtp" );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_STREAM );
 
     add_string( SOUT_CFG_PREFIX "dst", "", NULL, DST_TEXT,
                 DST_LONGTEXT, VLC_TRUE );
index f8a8711..08a4ee8 100644 (file)
@@ -79,6 +79,8 @@ vlc_module_begin();
     set_capability( "sout stream", 50 );
     add_shortcut( "standard" );
     add_shortcut( "std" );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_STREAM );
 
     add_string( SOUT_CFG_PREFIX "access", "", NULL, ACCESS_TEXT,
                 ACCESS_LONGTEXT, VLC_FALSE );
index dc8b09b..0e24bba 100644 (file)
@@ -134,6 +134,8 @@ vlc_module_begin();
     set_capability( "sout stream", 50 );
     add_shortcut( "transcode" );
     set_callbacks( Open, Close );
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_STREAM );
 
     add_string( SOUT_CFG_PREFIX "venc", NULL, NULL, VENC_TEXT,
                 VENC_LONGTEXT, VLC_FALSE );
index 691722b..513d3b5 100644 (file)
@@ -53,6 +53,8 @@ static int  transrate_video_process( sout_stream_t *, sout_stream_id_t *, block_
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_STREAM );
     set_description( _("MPEG2 video transrating stream output") );
     set_capability( "sout stream", 50 );
     add_shortcut( "transrate" );
index 5b4909c..7136f28 100644 (file)
@@ -71,6 +71,8 @@ static int  SendEvents( vlc_object_t *, char const *,
 
 vlc_module_begin();
     set_description( _("Image properties filter") );
+    set_category( CAT_VIDEO );
+    set_subcategory( SUBCAT_VIDEO_VFILTER );
     set_capability( "video filter", 0 );
 
     add_float_with_range( "contrast", 1.0, 0.0, 2.0, NULL, CONT_TEXT, CONT_LONGTEXT, VLC_FALSE );
index bbf50dd..00517c8 100644 (file)
@@ -65,6 +65,8 @@ static void BlendPalRV( filter_t *, picture_t *, picture_t *, picture_t *,
  *****************************************************************************/
 vlc_module_begin();
     set_description( _("Video pictures blending") );
+    set_category( CAT_VIDEO );
+    set_subcategory( SUBCAT_VIDEO_VFILTER );
     set_capability( "video blending", 100 );
     set_callbacks( OpenFilter, CloseFilter );
 vlc_module_end();
index f3e4a42..5d0b300 100644 (file)
@@ -62,7 +62,9 @@ static int  SendEvents( vlc_object_t *, char const *,
 vlc_module_begin();
     set_description( _("Clone video filter") );
     set_capability( "video filter", 0 );
-    
+    set_category( CAT_VIDEO );
+    set_subcategory( SUBCAT_VIDEO_VFILTER );
+
     add_integer( "clone-count", 2, NULL, COUNT_TEXT, COUNT_LONGTEXT, VLC_FALSE );
     add_string ( "clone-vout-list", NULL, NULL, VOUTLIST_TEXT, VOUTLIST_LONGTEXT, VLC_FALSE );
     
index 83b0094..9c6b475 100644 (file)
@@ -59,6 +59,8 @@ static int  SendEvents( vlc_object_t *, char const *,
 
 vlc_module_begin();
     set_description( _("Crop video filter") );
+    set_category( CAT_VIDEO );
+    set_subcategory( SUBCAT_VIDEO_VFILTER );
     set_capability( "video filter", 0 );
 
     add_string( "crop-geometry", NULL, NULL, GEOMETRY_TEXT, GEOMETRY_LONGTEXT, VLC_FALSE );
index 47d3234..397c335 100644 (file)
@@ -98,6 +98,8 @@ static char *mode_list_text[] = { N_("Discard"), N_("Blend"), N_("Mean"),
 vlc_module_begin();
     set_description( _("Deinterlacing video filter") );
     set_capability( "video filter", 0 );
+    set_category( CAT_VIDEO );
+    set_subcategory( SUBCAT_VIDEO_VFILTER );
 
     add_string( "deinterlace-mode", "discard", NULL, MODE_TEXT,
                 MODE_LONGTEXT, VLC_FALSE );
index 10a5702..72bf5b2 100644 (file)
@@ -65,6 +65,8 @@ static char *mode_list_text[] = { N_("Wave"), N_("Ripple") };
 vlc_module_begin();
     set_description( _("Distort video filter") );
     set_capability( "video filter", 0 );
+    set_category( CAT_VIDEO );
+    set_subcategory( SUBCAT_VIDEO_VFILTER );
 
     add_string( "distort-mode", "wave", NULL, MODE_TEXT, MODE_LONGTEXT,
                 VLC_FALSE );
index 5c10f77..6ae0c0e 100644 (file)
@@ -50,6 +50,8 @@ static int  SendEvents( vlc_object_t *, char const *,
  *****************************************************************************/
 vlc_module_begin();
     set_description( _("Invert video filter") );
+    set_category( CAT_VIDEO );
+    set_subcategory( SUBCAT_VIDEO_VFILTER );
     set_capability( "video filter", 0 );
     add_shortcut( "invert" );
     set_callbacks( Create, Destroy );
index 8a1988e..4d91499 100644 (file)
@@ -84,6 +84,8 @@ static char *ppsz_pos_descriptions[] =
 vlc_module_begin();
     set_description( _("Logo video filter") );
     set_capability( "video filter", 0 );
+    set_category( CAT_VIDEO );
+    set_subcategory( SUBCAT_VIDEO_VFILTER );
     add_shortcut( "logo" );
     set_callbacks( Create, Destroy );
 
index 02cb1d3..6620e61 100755 (executable)
@@ -78,6 +78,8 @@ struct filter_sys_t
 vlc_module_begin();
     set_capability( "sub filter", 0 );
     set_callbacks( CreateFilter, DestroyFilter );
+    set_category( CAT_VIDEO );
+    set_subcategory( SUBCAT_VIDEO_SUBPIC );
     add_string( "marq-marquee", "Marquee", NULL, MSG_TEXT, MSG_LONGTEXT, VLC_FALSE );
     add_integer( "marq-x", 0, NULL, POSX_TEXT, POSX_LONGTEXT, VLC_FALSE );
     add_integer( "marq-y", 0, NULL, POSY_TEXT, POSY_LONGTEXT, VLC_FALSE );
index d4606c1..75b473a 100644 (file)
@@ -52,6 +52,8 @@ static picture_t *Filter( filter_t *, picture_t * );
 vlc_module_begin();
     set_description( _("Video scaling filter") );
     set_capability( "video filter2", 10000 );
+    set_category( CAT_VIDEO );
+    set_subcategory( SUBCAT_VIDEO_VFILTER );
     set_callbacks( OpenFilter, CloseFilter );
 vlc_module_end();
 
index 3932935..dbb28d1 100644 (file)
@@ -64,6 +64,8 @@ struct filter_sys_t
  *****************************************************************************/
 vlc_module_begin();
     set_capability( "sub filter", 0 );
+    set_category( CAT_VIDEO );
+    set_subcategory( SUBCAT_VIDEO_SUBPIC );
     set_callbacks( CreateFilter, DestroyFilter );
     add_string( "time-format", "%Y-%m-%d   %H:%M:%S", NULL, MSG_TEXT, MSG_LONGTEXT, VLC_FALSE );
     add_integer( "time-x", 0, NULL, POSX_TEXT, POSX_LONGTEXT, VLC_FALSE );
index 0e1ec78..aba527b 100644 (file)
@@ -65,6 +65,8 @@ static char *type_list_text[] = { N_("Rotate by 90 degrees"),
 vlc_module_begin();
     set_description( _("Video transformation filter") );
     set_capability( "video filter", 0 );
+    set_category( CAT_VIDEO );
+    set_subcategory( SUBCAT_VIDEO_VFILTER );
 
     add_string( "transform-type", "90", NULL,
                           TYPE_TEXT, TYPE_LONGTEXT, VLC_FALSE);
index 28ec64e..9f54a70 100644 (file)
@@ -65,6 +65,8 @@ static int  SendEvents( vlc_object_t *, char const *,
 vlc_module_begin();
     set_description( _("wall video filter") );
     set_capability( "video filter", 0 );
+    set_category( CAT_VIDEO );
+    set_subcategory( SUBCAT_VIDEO_VFILTER );
 
     add_integer( "wall-cols", 3, NULL, COLS_TEXT, COLS_LONGTEXT, VLC_FALSE );
     add_integer( "wall-rows", 3, NULL, ROWS_TEXT, ROWS_LONGTEXT, VLC_FALSE );
index 9db0342..8a6f9f3 100644 (file)
@@ -52,6 +52,8 @@ static void SetPalette     ( vout_thread_t *, uint16_t *, uint16_t *, uint16_t *
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_VIDEO );
+    set_subcategory( SUBCAT_VIDEO_VOUT );
     set_description( _("ASCII-art video output") );
     set_capability( "video output", 10 );
     add_shortcut( "aalib" );
index 6b8d877..db68c29 100644 (file)
@@ -51,6 +51,8 @@ static void Display   ( vout_thread_t *, picture_t * );
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
+    set_category( CAT_VIDEO );
+    set_subcategory( SUBCAT_VIDEO_VOUT );
     set_description( _("color ASCII art video output") );
     set_capability( "video output", 12 );
     set_callbacks( Create, Destroy );
index b591da4..3e2b779 100644 (file)
@@ -46,7 +46,7 @@ static void Close        ( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("GaLaktos visualization plugin") );
-    set_capability( "audio filter", 0 );
+    set_capability( "visualization", 0 );
     set_callbacks( Open, Close );
     add_shortcut( "galaktos" );
 vlc_module_end();
index 80c1bbb..88b3c86 100644 (file)
@@ -68,7 +68,9 @@ static void Close        ( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("Goom effect") );
-    set_capability( "audio filter", 0 );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_VISUAL );
+    set_capability( "visualization", 0 );
     add_integer( "goom-width", 320, NULL,
                  WIDTH_TEXT, RES_LONGTEXT, VLC_FALSE );
     add_integer( "goom-height", 240, NULL,
index a0570bd..a68b139 100644 (file)
@@ -72,13 +72,17 @@ static int  Open         ( vlc_object_t * );
 static void Close        ( vlc_object_t * );
 
 vlc_module_begin();
-    set_description( _("visualizer filter") );
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_VISUAL );
+    set_description( _("Visualizer filter") );
+    set_section( N_( "General") , NULL );
     add_string("effect-list", "spectrum", NULL,
             ELIST_TEXT, ELIST_LONGTEXT, VLC_TRUE );
     add_integer("effect-width",VOUT_WIDTH,NULL,
              WIDTH_TEXT, WIDTH_LONGTEXT, VLC_FALSE );
     add_integer("effect-height" , VOUT_HEIGHT , NULL,
              HEIGHT_TEXT, HEIGHT_LONGTEXT, VLC_FALSE );
+    set_section( N_("Spectrum analyser") , NULL );
     add_integer("visual-nbbands", 80, NULL,
              NBBANDS_TEXT, NBBANDS_LONGTEXT, VLC_FALSE );
     add_integer("visual-separ", 1, NULL,
@@ -87,9 +91,10 @@ vlc_module_begin();
              AMP_TEXT, AMP_LONGTEXT, VLC_FALSE );
     add_bool("visual-peaks", VLC_TRUE, NULL,
              PEAKS_TEXT, PEAKS_LONGTEXT, VLC_FALSE );
+    set_section( N_( "Random effect") , NULL );
     add_integer("visual-stars", 200, NULL,
              STARS_TEXT, STARS_LONGTEXT, VLC_FALSE );
-    set_capability( "audio filter", 0 );
+    set_capability( "visualization", 0 );
     set_callbacks( Open, Close );
     add_shortcut( "visualizer");
 vlc_module_end();
index f6a48de..59c653c 100644 (file)
@@ -53,7 +53,7 @@ int aout_InputNew( aout_instance_t * p_aout, aout_input_t * p_input )
     audio_sample_format_t user_filter_format;
     audio_sample_format_t intermediate_format;/* input of resampler */
     vlc_value_t val, text;
-    char * psz_filters;
+    char * psz_filters, *psz_visual;
     aout_filter_t * p_user_channel_mixer;
 
     aout_FormatPrint( p_aout, "input", &p_input->input );
@@ -141,29 +141,29 @@ int aout_InputNew( aout_instance_t * p_aout, aout_input_t * p_input )
     if( var_Type( p_aout, "equalizer" ) == 0 )
     {
         module_config_t *p_config;
-       int i;
-
-       p_config = config_FindConfig( VLC_OBJECT(p_aout), "equalizer-preset" );
-       if( p_config && p_config->i_list )
-       {
-           var_Create( p_aout, "equalizer",
-                       VLC_VAR_STRING | VLC_VAR_HASCHOICE );
-           text.psz_string = _("Equalizer");
-           var_Change( p_aout, "equalizer", VLC_VAR_SETTEXT, &text, NULL );
-
-           val.psz_string = ""; text.psz_string = _("Disable");
-           var_Change( p_aout, "equalizer", VLC_VAR_ADDCHOICE, &val, &text );
-
-           for( i = 0; i < p_config->i_list; i++ )
-           {
-               val.psz_string = p_config->ppsz_list[i];
-               text.psz_string = p_config->ppsz_list_text[i];
-               var_Change( p_aout, "equalizer", VLC_VAR_ADDCHOICE,
-                           &val, &text );
-           }
-
-           var_AddCallback( p_aout, "equalizer", EqualizerCallback, NULL );
-       }
+        int i;
+
+        p_config = config_FindConfig( VLC_OBJECT(p_aout), "equalizer-preset" );
+        if( p_config && p_config->i_list )
+        {
+               var_Create( p_aout, "equalizer",
+                           VLC_VAR_STRING | VLC_VAR_HASCHOICE );
+            text.psz_string = _("Equalizer");
+            var_Change( p_aout, "equalizer", VLC_VAR_SETTEXT, &text, NULL );
+
+            val.psz_string = ""; text.psz_string = _("Disable");
+            var_Change( p_aout, "equalizer", VLC_VAR_ADDCHOICE, &val, &text );
+
+            for( i = 0; i < p_config->i_list; i++ )
+            {
+                val.psz_string = p_config->ppsz_list[i];
+                text.psz_string = p_config->ppsz_list_text[i];
+                var_Change( p_aout, "equalizer", VLC_VAR_ADDCHOICE,
+                            &val, &text );
+            }
+
+            var_AddCallback( p_aout, "equalizer", EqualizerCallback, NULL );
+        }
     }
 
     if( var_Type( p_aout, "audio-filter" ) == 0 )
@@ -173,14 +173,35 @@ int aout_InputNew( aout_instance_t * p_aout, aout_input_t * p_input )
         text.psz_string = _("Audio filters");
         var_Change( p_aout, "audio-filter", VLC_VAR_SETTEXT, &text, NULL );
     }
+    if( var_Type( p_aout, "audio-visual" ) == 0 )
+    {
+        var_Create( p_aout, "audio-visual",
+                    VLC_VAR_STRING | VLC_VAR_DOINHERIT );
+        text.psz_string = _("Audio visualizations");
+        var_Change( p_aout, "audio-visual", VLC_VAR_SETTEXT, &text, NULL );
+    }
 
     var_Get( p_aout, "audio-filter", &val );
     psz_filters = val.psz_string;
+    var_Get( p_aout, "audio-visual", &val );
+    psz_visual = val.psz_string;
+
+    if( psz_filters && *psz_filters && psz_visual && *psz_visual )
+    {
+        psz_filters = (char *)realloc( psz_filters, strlen( psz_filters ) +
+                                                    strlen( psz_visual )  + 1);
+        sprintf( psz_filters, "%s,%s", psz_filters, psz_visual );
+    }
+    else if(  psz_visual && *psz_visual )
+    {
+        if( psz_filters ) free( psz_filters );
+        psz_filters = strdup( psz_visual );
+    }
+
     if( psz_filters && *psz_filters )
     {
         char *psz_parser = psz_filters;
         char *psz_next;
-
         while( psz_parser && *psz_parser )
         {
             aout_filter_t * p_filter;
@@ -227,14 +248,19 @@ int aout_InputNew( aout_instance_t * p_aout, aout_input_t * p_input )
 
             if( p_filter->p_module== NULL )
             {
-                msg_Err( p_aout, "cannot add user filter %s (skipped)",
-                         psz_parser );
-
-                vlc_object_detach( p_filter );
-                vlc_object_destroy( p_filter );
-                psz_parser = psz_next;
-                continue;
-
+                p_filter->p_module =
+                    module_Need( p_filter,"visualization", psz_parser,
+                                                           VLC_TRUE );
+                if( p_filter->p_module == NULL )
+                {
+                    msg_Err( p_aout, "cannot add user filter %s (skipped)",
+                             psz_parser );
+
+                    vlc_object_detach( p_filter );
+                    vlc_object_destroy( p_filter );
+                    psz_parser = psz_next;
+                    continue;
+                }
             }
             p_filter->b_continuity = VLC_FALSE;
 
@@ -245,6 +271,7 @@ int aout_InputNew( aout_instance_t * p_aout, aout_input_t * p_input )
         }
     }
     if( psz_filters ) free( psz_filters );
+    if( psz_visual ) free( psz_visual );
 
     /* Attach the user channel mixer */
     if ( p_user_channel_mixer )
index 551f40a..c28ed67 100644 (file)
@@ -245,6 +245,7 @@ int VLC_Init( int i_object, int i_argc, char *ppsz_argv[] )
     char *       p_tmp;
     char *       psz_modules;
     char *       psz_parser;
+    char *       psz_control;
     char *       psz_language;
     vlc_bool_t   b_exit = VLC_FALSE;
     vlc_t *      p_vlc = vlc_current_object( i_object );
@@ -657,6 +658,20 @@ int VLC_Init( int i_object, int i_argc, char *ppsz_argv[] )
      * Load background interfaces
      */
     psz_modules = config_GetPsz( p_vlc, "extraintf" );
+    psz_control = config_GetPsz( p_vlc, "control" );
+
+    if( psz_modules && *psz_modules && psz_control && *psz_control )
+    {
+        psz_modules = (char *)realloc( psz_modules, strlen( psz_modules ) +
+                                                    strlen( psz_control ) + 1 );
+        sprintf( psz_modules, "%s,%s", psz_modules, psz_control );
+    }
+    else if( psz_control && *psz_control )
+    {
+        if( psz_modules ) free( psz_modules );
+        psz_modules = strdup( psz_control );
+    }
+
     psz_parser = psz_modules;
     while ( psz_parser && *psz_parser )
     {
index f5144f5..9c2cdc6 100644 (file)
@@ -61,6 +61,10 @@ static char *ppsz_language_text[] =
     "interface. Use a comma separated list of interface modules. (common " \
     "values are logger, gestures, sap, rc, http or screensaver)")
 
+#define CONTROL_TEXT N_("Control interfaces")
+#define CONTROL_LONGTEXT N_( \
+    "This option allows you to select control interfaces. " )
+
 #define VERBOSE_TEXT N_("Verbosity (0,1,2)")
 #define VERBOSE_LONGTEXT N_( \
     "This options sets the verbosity level (0=only errors and " \
@@ -149,7 +153,12 @@ static char *ppsz_language_text[] =
 #define AUDIO_FILTER_TEXT N_("Audio filters")
 #define AUDIO_FILTER_LONGTEXT N_( \
     "This allows you to add audio post processing filters, to modify " \
-    "the sound, or audio visualization modules (spectrum analyzer, etc.).")
+    "the sound" )
+
+#define AUDIO_VISUAL_TEXT N_("Audio visualizations ")
+#define AUDIO_VISUAL_LONGTEXT N_( \
+    "This allows you to add visualization modules " \
+    "(spectrum analyzer, etc.).")
 
 #define AUDIO_CHANNEL_MIXER N_("Channel mixer")
 #define AUDIO_CHANNEL_MIXER_LONGTEXT N_( \
@@ -808,35 +817,14 @@ static char *ppsz_align_descriptions[] =
  *             N_(text), N_(longtext) );
  * add_integer( option_name, i_value, p_callback, N_(text), N_(longtext),
                 b_advanced_option );
- * add_bool( option_name, b_value, p_callback, N_(text), N_(longtext), 
+ * add_bool( option_name, b_value, p_callback, N_(text), N_(longtext),
              b_advanced_option );
  */
 
 vlc_module_begin();
-    /* Interface options */
-    add_category_hint( N_("Interface"), INTF_CAT_LONGTEXT , VLC_FALSE );
-    add_module( "intf", "interface", NULL, NULL, INTF_TEXT,
-                INTF_LONGTEXT, VLC_FALSE );
-        change_short('I');
-    add_string( "extraintf", NULL, NULL, EXTRAINTF_TEXT,
-                     EXTRAINTF_LONGTEXT, VLC_FALSE );
-    add_integer( "verbose", 0, NULL, VERBOSE_TEXT, VERBOSE_LONGTEXT,
-                 VLC_FALSE );
-        change_short('v');
-    add_bool( "quiet", 0, NULL, QUIET_TEXT, QUIET_LONGTEXT, VLC_TRUE );
-        change_short('q');
-    add_string( "language", "auto", NULL, LANGUAGE_TEXT, LANGUAGE_LONGTEXT,
-                VLC_FALSE );
-        change_string_list( ppsz_language, ppsz_language_text, 0 );
-    add_bool( "color", 0, NULL, COLOR_TEXT, COLOR_LONGTEXT, VLC_TRUE );
-    add_bool( "advanced", 0, NULL, ADVANCED_TEXT,
-                            ADVANCED_LONGTEXT, VLC_FALSE );
-
     /* Audio options */
-    add_category_hint( N_("Audio"), AOUT_CAT_LONGTEXT , VLC_FALSE );
-    add_module( "aout", "audio output", NULL, NULL, AOUT_TEXT, AOUT_LONGTEXT,
-                VLC_TRUE );
-        change_short('A');
+    set_category( CAT_AUDIO );
+    set_subcategory( SUBCAT_AUDIO_GENERAL );
     add_bool( "audio", 1, NULL, AUDIO_TEXT, AUDIO_LONGTEXT, VLC_FALSE );
     add_integer_with_range( "volume", AOUT_VOLUME_DEFAULT, AOUT_VOLUME_MIN,
                             AOUT_VOLUME_MAX, NULL, VOLUME_TEXT,
@@ -853,16 +841,24 @@ vlc_module_begin();
     add_bool( "spdif", 0, NULL, SPDIF_TEXT, SPDIF_LONGTEXT, VLC_FALSE );
     add_integer( "audio-desync", 0, NULL, DESYNC_TEXT,
                  DESYNC_LONGTEXT, VLC_TRUE );
-    add_string( "audio-filter", 0, NULL,AUDIO_FILTER_TEXT,
-                AUDIO_FILTER_LONGTEXT, VLC_FALSE );
+    set_subcategory( SUBCAT_AUDIO_AOUT );
+    add_module( "aout", "audio output", NULL, NULL, AOUT_TEXT, AOUT_LONGTEXT,
+                VLC_TRUE );
+    set_subcategory( SUBCAT_AUDIO_AFILTER );
+    add_module_list_cat( "audio-filter", SUBCAT_AUDIO_AFILTER, 0,
+                         NULL, AUDIO_FILTER_TEXT,
+                         AUDIO_FILTER_LONGTEXT, VLC_FALSE );
+    set_subcategory( SUBCAT_AUDIO_VISUAL );
+    add_string( "audio-visual", 0, NULL,AUDIO_VISUAL_TEXT,
+                AUDIO_VISUAL_LONGTEXT, VLC_FALSE );
+    set_subcategory( SUBCAT_AUDIO_MISC );
     add_module( "audio-channel-mixer", "audio filter", NULL, NULL,
                 AUDIO_CHANNEL_MIXER, AUDIO_CHANNEL_MIXER_LONGTEXT, VLC_FALSE );
+        change_short('A');
 
     /* Video options */
-    add_category_hint( N_("Video"), VOUT_CAT_LONGTEXT , VLC_FALSE );
-    add_module( "vout", "video output", NULL, NULL, VOUT_TEXT, VOUT_LONGTEXT,
-                VLC_TRUE );
-        change_short('V');
+    set_category( CAT_VIDEO );
+    set_subcategory( SUBCAT_VIDEO_GENERAL );
     add_bool( "video", 1, NULL, VIDEO_TEXT, VIDEO_LONGTEXT, VLC_TRUE );
     add_integer( "width", -1, NULL, WIDTH_TEXT, WIDTH_LONGTEXT, VLC_TRUE );
     add_integer( "height", -1, NULL, HEIGHT_TEXT, HEIGHT_LONGTEXT, VLC_TRUE );
@@ -886,19 +882,29 @@ vlc_module_begin();
 
     add_bool( "video-on-top", 0, NULL, VIDEO_ON_TOP_TEXT,
               VIDEO_ON_TOP_LONGTEXT, VLC_FALSE );
-    add_bool( "video-deco", 1, NULL, VIDEO_DECO_TEXT,
-              VIDEO_DECO_LONGTEXT, VLC_TRUE );
-    add_module( "filter", "video filter", NULL, NULL,
-                FILTER_TEXT, FILTER_LONGTEXT, VLC_FALSE );
     add_string( "aspect-ratio", "", NULL,
                 ASPECT_RATIO_TEXT, ASPECT_RATIO_LONGTEXT, VLC_TRUE );
+
+    set_subcategory( SUBCAT_VIDEO_VOUT );
+    add_module( "vout", "video output", NULL, NULL, VOUT_TEXT, VOUT_LONGTEXT,
+                VLC_TRUE );
+        change_short('V');
+
+    set_subcategory( SUBCAT_VIDEO_VFILTER );
+    add_bool( "video-deco", 0, NULL, VIDEO_DECO_TEXT,
+              VIDEO_DECO_LONGTEXT, VLC_TRUE );
+    add_module_list_cat( "filter", SUBCAT_VIDEO_VFILTER, NULL, NULL,
+                FILTER_TEXT, FILTER_LONGTEXT, VLC_FALSE );
 #if 0
     add_string( "pixel-ratio", "1", NULL, PIXEL_RATIO_TEXT, PIXEL_RATIO_TEXT );
 #endif
 
     /* Subpictures options */
-    add_category_hint( N_("Subpictures"), SUB_CAT_LONGTEXT , VLC_FALSE );
+    set_subcategory( SUBCAT_VIDEO_SUBPIC );
+    set_section( N_("On Screen Display") , NULL );
     add_bool( "osd", 1, NULL, OSD_TEXT, OSD_LONGTEXT, VLC_FALSE );
+
+    set_section( N_("Subtitles") , NULL );
     add_bool( "sub-autodetect-file", VLC_TRUE, NULL,
                  SUB_AUTO_TEXT, SUB_AUTO_LONGTEXT, VLC_FALSE );
     add_integer( "sub-autodetect-fuzzy", 3, NULL,
@@ -914,11 +920,21 @@ vlc_module_begin();
               SUB_FILE_LONGTEXT, VLC_TRUE );
     add_integer( "spumargin", -1, NULL, SPUMARGIN_TEXT,
                  SPUMARGIN_LONGTEXT, VLC_TRUE );
+
+    set_section( N_( "Overlays" ) , NULL );
     add_module( "sub-filter", "sub filter", NULL, NULL,
                 SUB_FILTER_TEXT, SUB_FILTER_LONGTEXT, VLC_TRUE );
 
+    set_subcategory( SUBCAT_VIDEO_TEXT );
+
     /* Input options */
-    add_category_hint( N_("Input"), INPUT_CAT_LONGTEXT , VLC_FALSE );
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_ACCESS );
+    set_subcategory( SUBCAT_INPUT_DEMUX );
+    set_subcategory( SUBCAT_INPUT_VCODEC );
+    set_subcategory( SUBCAT_INPUT_ACODEC );
+    set_subcategory( SUBCAT_INPUT_SCODEC );
+    set_subcategory( SUBCAT_INPUT_ADVANCED );
     add_integer( "cr-average", 40, NULL, CR_AVERAGE_TEXT,
                  CR_AVERAGE_LONGTEXT, VLC_FALSE );
     add_integer( "server-port", 1234, NULL,
@@ -947,6 +963,8 @@ vlc_module_begin();
     add_string( "bookmarks", NULL, NULL,
                  BOOKMARKS_TEXT, BOOKMARKS_LONGTEXT, VLC_TRUE );
 
+    set_section( N_( "Default devices") , NULL )
+
     add_file( "dvd", DVD_DEVICE, NULL, DVD_DEV_TEXT, DVD_DEV_LONGTEXT,
               VLC_FALSE );
     add_file( "vcd", VCD_DEVICE, NULL, VCD_DEV_TEXT, VCD_DEV_LONGTEXT,
@@ -959,6 +977,7 @@ vlc_module_begin();
     add_bool( "ipv4", 0, NULL, IPV4_TEXT, IPV4_LONGTEXT, VLC_FALSE );
         change_short('4');
 
+    set_section( N_( "Socks proxy") , NULL )
     add_string( "socks", NULL, NULL,
                  SOCKS_SERVER_TEXT, SOCKS_SERVER_LONGTEXT, VLC_TRUE );
     add_string( "socks-user", NULL, NULL,
@@ -967,6 +986,7 @@ vlc_module_begin();
                  SOCKS_PASS_TEXT, SOCKS_PASS_LONGTEXT, VLC_TRUE );
 
 
+    set_section( N_("Metadata" ) , NULL )
     add_string( "meta-title", NULL, NULL, META_TITLE_TEXT,
                 META_TITLE_LONGTEXT, VLC_TRUE );
     add_string( "meta-author", NULL, NULL, META_AUTHOR_TEXT,
@@ -993,7 +1013,10 @@ vlc_module_begin();
 
 
     /* Stream output options */
+    set_category( CAT_SOUT );
+    set_subcategory( SUBCAT_SOUT_GENERAL );
     add_category_hint( N_("Stream output"), SOUT_CAT_LONGTEXT , VLC_TRUE );
+
     add_string( "sout", NULL, NULL, SOUT_TEXT, SOUT_LONGTEXT, VLC_TRUE );
     add_bool( "sout-display", VLC_FALSE, NULL, SOUT_DISPLAY_TEXT,
                                 SOUT_DISPLAY_LONGTEXT, VLC_TRUE );
@@ -1005,22 +1028,29 @@ vlc_module_begin();
                                 SOUT_AUDIO_LONGTEXT, VLC_TRUE );
     add_bool( "sout-video", 1, NULL, SOUT_VIDEO_TEXT,
                                 SOUT_VIDEO_LONGTEXT, VLC_TRUE );
+    add_integer( "ttl", 1, NULL, TTL_TEXT, TTL_LONGTEXT, VLC_TRUE );
 
-    add_module( "packetizer", "packetizer", NULL, NULL,
-                PACKETIZER_TEXT, PACKETIZER_LONGTEXT, VLC_TRUE );
+    set_subcategory( SUBCAT_SOUT_STREAM );
+    set_subcategory( SUBCAT_SOUT_MUX );
     add_module( "mux", "sout mux", NULL, NULL, MUX_TEXT,
                                 MUX_LONGTEXT, VLC_TRUE );
+    set_subcategory( SUBCAT_SOUT_ACO );
     add_module( "access_output", "sout access", NULL, NULL,
                 ACCESS_OUTPUT_TEXT, ACCESS_OUTPUT_LONGTEXT, VLC_TRUE );
-    add_integer( "ttl", 1, NULL, TTL_TEXT, TTL_LONGTEXT, VLC_TRUE );
+    set_subcategory( SUBCAT_SOUT_PACKETIZER );
+    add_module( "packetizer", "packetizer", NULL, NULL,
+                PACKETIZER_TEXT, PACKETIZER_LONGTEXT, VLC_TRUE );
 
+    set_subcategory( SUBCAT_SOUT_SAP );
     add_bool( "sap-flow-control", VLC_FALSE, NULL, ANN_SAPCTRL_TEXT,
                                ANN_SAPCTRL_LONGTEXT, VLC_TRUE );
     add_integer( "sap-interval", 5, NULL, ANN_SAPINTV_TEXT,
                                ANN_SAPINTV_LONGTEXT, VLC_TRUE );
+    set_subcategory( SUBCAT_SOUT_VOD );
 
     /* CPU options */
-    add_category_hint( N_("CPU"), CPU_CAT_LONGTEXT, VLC_TRUE );
+    set_category( CAT_ADVANCED );
+    set_subcategory( SUBCAT_ADVANCED_CPU );
 #if defined( __i386__ )
     add_bool( "mmx", 1, NULL, MMX_TEXT, MMX_LONGTEXT, VLC_TRUE );
     add_bool( "3dn", 1, NULL, THREE_DN_TEXT, THREE_DN_LONGTEXT, VLC_TRUE );
@@ -1031,22 +1061,8 @@ vlc_module_begin();
 #if defined( __powerpc__ ) || defined( SYS_DARWIN )
     add_bool( "altivec", 1, NULL, ALTIVEC_TEXT, ALTIVEC_LONGTEXT, VLC_TRUE );
 #endif
-
-    /* Playlist options */
-    add_category_hint( N_("Playlist"), PLAYLIST_CAT_LONGTEXT , VLC_FALSE );
-    add_string( "services-discovery", 0, NULL,
-                SD_TEXT, SD_LONGTEXT, VLC_FALSE );
-        change_short('S');
-    add_bool( "random", 0, NULL, RANDOM_TEXT, RANDOM_LONGTEXT, VLC_FALSE );
-        change_short('Z');
-    add_bool( "loop", 0, NULL, LOOP_TEXT, LOOP_LONGTEXT, VLC_FALSE );
-        change_short('L');
-    add_bool( "repeat", 0, NULL, REPEAT_TEXT, REPEAT_LONGTEXT, VLC_TRUE );
-        change_short('R');
-    add_bool( "play-and-stop", 0, NULL, PAS_TEXT, PAS_LONGTEXT, VLC_TRUE );
-
     /* Misc options */
-    add_category_hint( N_("Miscellaneous"), MISC_CAT_LONGTEXT, VLC_TRUE );
+    set_subcategory( SUBCAT_ADVANCED_MISC );
     add_module( "memcpy", "memcpy", NULL, NULL, MEMCPY_TEXT,
                 MEMCPY_LONGTEXT, VLC_TRUE );
     add_module( "access", "access", NULL, NULL, ACCESS_TEXT,
@@ -1088,7 +1104,56 @@ vlc_module_begin();
                   WIN9X_CV_LONGTEXT, VLC_TRUE );
 #endif
 
+    /* Playlist options */
+    set_category( CAT_PLAYLIST );
+    set_subcategory( SUBCAT_PLAYLIST_GENERAL );
+    add_category_hint( N_("Playlist"), PLAYLIST_CAT_LONGTEXT , VLC_FALSE );
+    add_bool( "random", 0, NULL, RANDOM_TEXT, RANDOM_LONGTEXT, VLC_FALSE );
+        change_short('Z');
+    add_bool( "loop", 0, NULL, LOOP_TEXT, LOOP_LONGTEXT, VLC_FALSE );
+        change_short('L');
+    add_bool( "repeat", 0, NULL, REPEAT_TEXT, REPEAT_LONGTEXT, VLC_TRUE );
+        change_short('R');
+    add_bool( "play-and-stop", 0, NULL, PAS_TEXT, PAS_LONGTEXT, VLC_TRUE );
+
+    set_subcategory( SUBCAT_PLAYLIST_SD );
+    add_module_list_cat( "services-discovery", SUBCAT_PLAYLIST_SD, NULL,
+                          NULL, SD_TEXT, SD_LONGTEXT, VLC_FALSE );
+        change_short('S');
+
+    /* Interface options */
+    set_category( CAT_INTERFACE );
+    set_subcategory( SUBCAT_INTERFACE_GENERAL );
+
+    set_section ( N_("Interface module" ), NULL );
+    add_module( "intf", "interface", NULL, NULL, INTF_TEXT,
+                INTF_LONGTEXT, VLC_FALSE );
+        change_short('I');
+
+    set_section ( N_("Extra interface modules" ),  NULL );
+    add_module_list_cat( "extraintf", SUBCAT_INTERFACE_GENERAL,
+                         NULL, NULL, EXTRAINTF_TEXT,
+                         EXTRAINTF_LONGTEXT, VLC_FALSE );
+
+    set_section ( N_("Miscellaneous"), NULL );
+    add_integer( "verbose", 0, NULL, VERBOSE_TEXT, VERBOSE_LONGTEXT,
+                 VLC_FALSE );
+        change_short('v');
+    add_bool( "quiet", 0, NULL, QUIET_TEXT, QUIET_LONGTEXT, VLC_TRUE );
+        change_short('q');
+    add_string( "language", "auto", NULL, LANGUAGE_TEXT, LANGUAGE_LONGTEXT,
+                VLC_FALSE );
+        change_string_list( ppsz_language, ppsz_language_text, 0 );
+    add_bool( "color", 0, NULL, COLOR_TEXT, COLOR_LONGTEXT, VLC_TRUE );
+    add_bool( "advanced", 0, NULL, ADVANCED_TEXT, ADVANCED_LONGTEXT,
+                    VLC_FALSE );
+
+    set_subcategory( SUBCAT_INTERFACE_CONTROL );
+    add_module_list_cat( "control", SUBCAT_INTERFACE_CONTROL, NULL, NULL,
+                         CONTROL_TEXT, CONTROL_LONGTEXT, VLC_FALSE );
+
     /* Hotkey options*/
+    set_subcategory( SUBCAT_INTERFACE_HOTKEYS );
     add_category_hint( N_("Hot keys"), HOTKEY_CAT_LONGTEXT , VLC_FALSE );
 
 #if defined(SYS_DARWIN)
index 7ecb49c..1d1f777 100644 (file)
@@ -203,6 +203,8 @@ char * __config_GetPsz( vlc_object_t *p_this, const char *psz_name )
     if( (p_config->i_type!=CONFIG_ITEM_STRING) &&
         (p_config->i_type!=CONFIG_ITEM_FILE) &&
         (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) )
     {
         msg_Err( p_this, "option %s does not refer to a string", psz_name );
@@ -241,6 +243,8 @@ void __config_PutPsz( vlc_object_t *p_this,
     if( (p_config->i_type!=CONFIG_ITEM_STRING) &&
         (p_config->i_type!=CONFIG_ITEM_FILE) &&
         (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) )
     {
         msg_Err( p_this, "option %s does not refer to a string", psz_name );
index c76a222..d7122d8 100644 (file)
@@ -353,7 +353,7 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent,
         /* continue the parent's filter chain */
         char *psz_end;
 
-        psz_end = strchr( ((vout_thread_t *)p_parent)->psz_filter_chain, ':' );
+        psz_end = strchr( ((vout_thread_t *)p_parent)->psz_filter_chain, ',' );
         if( psz_end && *(psz_end+1) )
             p_vout->psz_filter_chain = strdup( psz_end+1 );
         else p_vout->psz_filter_chain = NULL;
@@ -372,7 +372,7 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent,
          * colons */
         char *psz_end;
 
-        psz_end = strchr( p_vout->psz_filter_chain, ':' );
+        psz_end = strchr( p_vout->psz_filter_chain, ',' );
         if( psz_end )
             psz_plugin = strndup( p_vout->psz_filter_chain,
                                   psz_end - p_vout->psz_filter_chain );