]> git.sesse.net Git - vlc/commitdiff
* New GTK configuration interface. This interface is generated dynamically
authorGildas Bazin <gbazin@videolan.org>
Mon, 11 Mar 2002 07:23:10 +0000 (07:23 +0000)
committerGildas Bazin <gbazin@videolan.org>
Mon, 11 Mar 2002 07:23:10 +0000 (07:23 +0000)
  at run-time from the configuration data contained in each plugin.
* config_PutPszVariable and config_GetPszVariable are now thread safe.
* Few modifications/optimizations to the config module.
* Got rid of all the _VAR macros in config.h

This is the first version of the GTK configuration interface. There are still
a few raw corners and a fews things left to do, but it basically does what
I wanted.
Constructive comments like it sucks or it smells rotten fish are of course
very welcome. And if there are GTK gurus out there, please don't hesitate to
add your touch.

I also started to add usefull comments to the configuration options but I'm not
really good at this kind of thing so if people want to help, they can finish
the job. For this look at all the *_LONGTEXT macros at the top of main.c

(PS: Translations will also be appreciated but not right now as the interface
will likely change again in the few coming days)

50 files changed:
include/common.h
include/config.h
include/configuration.h
include/modules.h
include/modules_inner.h
plugins/ac3_spdif/ac3_spdif.c
plugins/access/http.c
plugins/access/udp.c
plugins/directx/vout_directx.c
plugins/dsp/aout_dsp.c
plugins/dvd/dvd_access.c
plugins/dvd/dvd_es.c
plugins/dvdread/input_dvdread.c
plugins/filter/deinterlace.c
plugins/filter/distort.c
plugins/filter/invert.c
plugins/filter/transform.c
plugins/filter/wall.c
plugins/ggi/ggi.c
plugins/gtk/gnome.glade
plugins/gtk/gnome_callbacks.c
plugins/gtk/gnome_interface.c
plugins/gtk/gnome_interface.h
plugins/gtk/gtk.glade
plugins/gtk/gtk_display.c
plugins/gtk/gtk_interface.c
plugins/gtk/gtk_interface.h
plugins/gtk/gtk_open.c
plugins/gtk/gtk_preferences.c
plugins/gtk/gtk_preferences.h
plugins/mga/xmga.c
plugins/mpeg_system/mpeg_ps.c
plugins/mpeg_vdec/vpar_synchro.c
plugins/network/ipv4.c
plugins/network/ipv6.c
plugins/qnx/vout_qnx.c
plugins/text/logger.c
plugins/vcd/input_vcd.c
plugins/x11/xcommon.c
src/audio_output/audio_output.c
src/input/input.c
src/input/input_dec.c
src/input/mpeg_system.c
src/interface/interface.c
src/interface/main.c
src/misc/configuration.c
src/misc/modules_plugin.h
src/misc/netutils.c
src/video_output/video_output.c
src/video_output/vout_subpictures.c

index c5b75728930258ea6976d3f088f465a7e52e8f83..333bd356037b049aaca5c9a035d6c1a1be182de2 100644 (file)
@@ -3,7 +3,7 @@
  * Collection of useful common types and macros definitions
  *****************************************************************************
  * Copyright (C) 1998, 1999, 2000 VideoLAN
- * $Id: common.h,v 1.84 2002/03/04 23:56:37 massiot Exp $
+ * $Id: common.h,v 1.85 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Samuel Hocevar <sam@via.ecp.fr>
  *          Vincent Seguin <seguin@via.ecp.fr>
@@ -463,6 +463,7 @@ typedef __int64 off_t;
 typedef struct module_symbols_s
 {
     struct main_s* p_main;
+    struct module_bank_s* p_module_bank;
     struct input_bank_s* p_input_bank;
     struct aout_bank_s*  p_aout_bank;
     struct vout_bank_s*  p_vout_bank;
@@ -472,8 +473,7 @@ typedef struct module_symbols_s
     void   ( * config_PutIntVariable ) ( const char *, int );
     void   ( * config_PutPszVariable ) ( const char *, char * );
     struct module_config_s * ( * config_FindConfig ) ( const char * );
-    struct module_config_s * ( * config_Duplicate ) ( struct module_config_s *,
-                                                      int );
+    struct module_config_s * ( * config_Duplicate ) ( struct module_s * );
 
     struct intf_subscription_s * ( * intf_MsgSub ) ( void );
     void ( * intf_MsgUnsub )   ( struct intf_subscription_s * );
index f4aeddaf944b4aea88819bbe2188f150bbbba6b1..729b221fa6d59d17dd582ffcff2e87bfea77f764 100644 (file)
 /* #define AOUT_FORMAT_DEFAULT          AOUT_FMT_U16_LE */
 
 /* Volume */
-#define VOLUME_DEFAULT                  512
+#define VOLUME_DEFAULT                  256
 #define VOLUME_STEP                     128
 #define VOLUME_MAX                      1024
 
 /* Maximal size of the message queue - in case of overflow, all messages in the
  * queue are printed, but not sent to the threads */
 #define INTF_MSG_QSIZE                  256
-
-
-/****************************************************************************
- * Macros for the names of the main options
- * Instead of directly manipulating the option names, we define macros for
- * them. This makes sense only for the main options (ie. only the ones defined
- * in main.c) because they are widely used.
- * We won't bother doing this for plugins as plugin specific options should
- * by definition be restricted in useage to the plugin that defines them.
- *
- ****************************************************************************/
-
-/*
- * Interface option names
- */
-
-/* Variable containing the display method */
-#define INTF_METHOD_VAR                 "intf"
-/* Variable used to store startup script */
-#define INTF_INIT_SCRIPT_VAR            "vlcrc"
-/* Default search path for interface file browser */
-#define INTF_PATH_VAR                   "search_path"
-/* Interface warnig message level */
-#define INTF_WARNING_VAR                "warning"
-/* Variable to enable stats mode */
-#define INTF_STATS_VAR                  "stats"
-
-/*
- * Audio output option names
- */
-
-/* Variable to disable the audio output */
-#define AOUT_NOAUDIO_VAR                "noaudio"
-/* Variable containing the audio output method */
-#define AOUT_METHOD_VAR                 "aout"
-/* Variable for spdif mode */
-#define AOUT_SPDIF_VAR                  "spdif"
-/* Variable for volume */
-#define AOUT_VOLUME_VAR                 "volume"
-/* Variable for mono */
-#define AOUT_MONO_VAR                   "audio_mono"
-/* Variable for output rate */
-#define AOUT_RATE_VAR                   "audio_rate"
-/* Variable for output rate */
-#define AOUT_DESYNC_VAR                 "audio_desync"
-
-/*
- * Video output option names
- */
-
-/* Variable to disable the video output */
-#define VOUT_NOVIDEO_VAR                "novideo"
-/* Variable containing the display method */
-#define VOUT_METHOD_VAR                 "vout"
-/* Variable used in place of DISPLAY if available */
-#define VOUT_DISPLAY_VAR                "display"
-/* Dimensions for display window */
-#define VOUT_WIDTH_VAR                  "width"
-#define VOUT_HEIGHT_VAR                 "height"
-/* Variable for grayscale output mode */
-#define VOUT_GRAYSCALE_VAR              "grayscale"
-/* Variable for fullscreen mode */
-#define VOUT_FULLSCREEN_VAR             "fullscreen"
-/* Variable for overlay mode */
-#define VOUT_NOOVERLAY_VAR              "nooverlay"
-/* Variable containing the filter method */
-#define VOUT_FILTER_VAR                 "filter"
-/* Variable containing the SPU margin */
-#define VOUT_SPUMARGIN_VAR              "spumargin"
-
-/*
- * Input option names
- */
-
-/* Variable containing the input method */
-#define INPUT_METHOD_VAR                "input"
-/* Input port */
-#define INPUT_PORT_VAR                  "server_port"
-/* Channels mode */
-#define INPUT_NETWORK_CHANNEL_VAR       "network_channel"
-/* Variable containing channel server and port */
-#define INPUT_CHANNEL_SERVER_VAR        "channel_server"
-#define INPUT_CHANNEL_PORT_VAR          "channel_port"
-/* Variable containing network interface */
-#define INPUT_IFACE_VAR                 "iface"
-
-#define INPUT_AUDIO_VAR                 "input_audio"
-#define INPUT_CHANNEL_VAR               "input_channel"
-#define INPUT_SUBTITLE_VAR              "input_subtitle"
-/* DVD defaults */
-#define INPUT_DVD_DEVICE_VAR            "dvd_device"
-/* VCD defaults */
-#define INPUT_VCD_DEVICE_VAR            "vcd_device"
-/* IPv6, IPv4 */
-#define INPUT_IPV6_VAR                  "6"
-#define INPUT_IPV4_VAR                  "4"
-
-/*
- * Decoders option names
- */
-
-/* Variables for audio decoders */
-#define ADEC_MPEG_VAR                   "mpeg_adec"
-#define ADEC_AC3_VAR                    "ac3_adec"
-/* The synchro variable name */
-#define VPAR_SYNCHRO_VAR                "vpar_synchro"
-/* Variable containing the SMP value */
-#define VDEC_SMP_VAR                    "vdec_smp"
-
-/*
- * Playlist option names
- */
-
-/* Launch on start-up */
-#define PLAYLIST_STARTUP_VAR            "playlist_on_startup"
-/* Enqueue drag'n dropped item */
-#define PLAYLIST_ENQUEUE_VAR            "playlist_enqueue"
-/* Loop on playlist end */
-#define PLAYLIST_LOOP_VAR               "playlist_loop"
-
-/*
- * CPU options
- */
-#define NOMMX_VAR                       "nommx"
-#define NO3DN_VAR                       "no3dn"
-#define NOMMXEXT_VAR                    "nommxext"
-#define NOSSE_VAR                       "nosse"
-#define NOALTIVEC_VAR                   "noaltivec"
-
-/*
- * Misc option names
- */
-
-/* Variable containing the memcpy method */
-#define MEMCPY_METHOD_VAR               "memcpy"
index 3729a325135f4263f786953878cb7c0347f75675..46c22d2e1b5f11feba3313c130f0369a00ea0adf 100644 (file)
@@ -4,7 +4,7 @@
  * It includes functions allowing to declare, get or set configuration options.
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: configuration.h,v 1.1 2002/02/24 20:51:09 gbazin Exp $
+ * $Id: configuration.h,v 1.2 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *
  * Macros used to build the configuration structure.
  *****************************************************************************/
 
-/* Mandatory last part of the structure */
-#define MODULE_CONFIG_ITEM_END              0x000   /* End of config */
+/* Configuration hint types */
+#define MODULE_CONFIG_HINT_END              0x0001  /* End of config */
+#define MODULE_CONFIG_HINT_CATEGORY         0x0002  /* Start of new category */
+#define MODULE_CONFIG_HINT_SUBCATEGORY      0x0003  /* Start of sub-category */
+#define MODULE_CONFIG_HINT_SUBCATEGORY_END  0x0004  /* End of sub-category */
 
-/* Configuration widgets */
-#define MODULE_CONFIG_ITEM_CATEGORY         0x0001  /* Start of new category */
-#define MODULE_CONFIG_ITEM_SUBCATEGORY      0x0002  /* Start of sub-category */
-#define MODULE_CONFIG_ITEM_SUBCATEGORY_END  0x0003  /* End of sub-category */
-#define MODULE_CONFIG_ITEM_STRING           0x0004  /* String option */
-#define MODULE_CONFIG_ITEM_FILE             0x0005  /* File option */
-#define MODULE_CONFIG_ITEM_PLUGIN           0x0006  /* Plugin option */
-#define MODULE_CONFIG_ITEM_INTEGER          0x0007  /* Integer option */
-#define MODULE_CONFIG_ITEM_BOOL             0x0008  /* Bool option */
-#define MODULE_CONFIG_ITEM_ALIAS            0x0009  /* Alias option */
+#define MODULE_CONFIG_HINT                  0x000F
+
+/* Configuration item types */
+#define MODULE_CONFIG_ITEM_STRING           0x0010  /* String option */
+#define MODULE_CONFIG_ITEM_FILE             0x0020  /* File option */
+#define MODULE_CONFIG_ITEM_PLUGIN           0x0030  /* Plugin option */
+#define MODULE_CONFIG_ITEM_INTEGER          0x0040  /* Integer option */
+#define MODULE_CONFIG_ITEM_BOOL             0x0050  /* Bool option */
+#define MODULE_CONFIG_ITEM_ALIAS            0x0060  /* Alias option */
+
+#define MODULE_CONFIG_ITEM                  0x00F0
 
 typedef struct module_config_s
 {
     int         i_type;                                /* Configuration type */
-    char *      psz_name;                                     /* Option name */
-    char *      psz_text;       /* Short comment on the configuration option */
-    char *      psz_longtext;    /* Long comment on the configuration option */
-    char *      psz_value;                                   /* Option value */
+    char        *psz_name;                                    /* Option name */
+    char        *psz_text;      /* Short comment on the configuration option */
+    char        *psz_longtext;   /* Long comment on the configuration option */
+    char        *psz_value;                                  /* Option value */
     int         i_value;                                     /* Option value */
-    void *      p_callback;      /* Function to call when commiting a change */
+    void        *p_callback;     /* Function to call when commiting a change */
+    vlc_mutex_t *p_lock;            /* lock to use when modifying the config */
     boolean_t   b_dirty;           /* Dirty flag to indicate a config change */
 
 } module_config_t;
@@ -65,8 +70,7 @@ void   config_PutIntVariable( const char *psz_name, int i_value );
 void   config_PutPszVariable( const char *psz_name, char *psz_value );
 
 module_config_t *config_FindConfig( const char *psz_name );
-module_config_t *config_Duplicate ( module_config_t *p_config_orig,
-                                    int i_config_options );
+module_config_t *config_Duplicate ( module_t *p_module );
 #else
 #   define config_GetIntVariable p_symbols->config_GetIntVariable
 #   define config_PutIntVariable p_symbols->config_PutIntVariable
@@ -92,25 +96,29 @@ module_config_t *config_Duplicate ( module_config_t *p_config_orig,
     static module_config_t p_config[] = {
 
 #define MODULE_CONFIG_STOP \
-    { MODULE_CONFIG_ITEM_END, NULL, NULL, NULL, NULL, 0, NULL, 0 } };
+    { MODULE_CONFIG_HINT_END, NULL, NULL, NULL, NULL, 0, NULL, 0 } };
 
 #define ADD_CATEGORY_HINT( text, longtext ) \
-    { MODULE_CONFIG_ITEM_CATEGORY, NULL, text, longtext, NULL, 0, NULL, 0 },
+    { MODULE_CONFIG_HINT_CATEGORY, NULL, text, longtext, NULL, 0, NULL, \
+      NULL, 0 },
 #define ADD_SUBCATEGORY_HINT( text, longtext ) \
-    { MODULE_CONFIG_ITEM_SUBCATEGORY, NULL, text, longtext, NULL, 0, NULL, 0 },
+    { MODULE_CONFIG_HINT_SUBCATEGORY, NULL, text, longtext, NULL, 0, NULL, \
+      NULL, 0 },
 #define END_SUBCATEGORY_HINT \
-    { MODULE_CONFIG_ITEM_SUBCATEGORY_END, NULL, NULL, NULL, NULL, 0, NULL, 0 },
+    { MODULE_CONFIG_HINT_SUBCATEGORY_END, NULL, NULL, NULL, NULL, 0, NULL, \
+      NULL, 0 },
 #define ADD_STRING( name, value, p_callback, text, longtext ) \
     { MODULE_CONFIG_ITEM_STRING, name, text, longtext, value, 0, \
-      p_callback, 0 },
+      p_callback, NULL, 0 },
 #define ADD_FILE( name, psz_value, p_callback, text, longtext ) \
     { MODULE_CONFIG_ITEM_FILE, name, text, longtext, psz_value, 0, \
-      p_callback, 0 },
+      p_callback, NULL, 0 },
 #define ADD_PLUGIN( name, i_capability, psz_value, p_callback, text, longtext)\
     { MODULE_CONFIG_ITEM_PLUGIN, name, text, longtext, psz_value, \
-      i_capability, p_callback, 0 },
+      i_capability, p_callback, NULL, 0 },
 #define ADD_INTEGER( name, i_value, p_callback, text, longtext ) \
     { MODULE_CONFIG_ITEM_INTEGER, name, text, longtext, NULL, i_value, \
-      p_callback, 0 },
+      p_callback, NULL, 0 },
 #define ADD_BOOL( name, p_callback, text, longtext ) \
-    { MODULE_CONFIG_ITEM_BOOL, name, text, longtext, NULL, 0, p_callback, 0 },
+    { MODULE_CONFIG_ITEM_BOOL, name, text, longtext, NULL, 0, p_callback, \
+      NULL, 0 },
index 3816f4ecd273a608c8d1415b7f3685553163055c..b6e49da849baebe79821158e8624c6f2224f6bea 100644 (file)
@@ -2,7 +2,7 @@
  * modules.h : Module management functions.
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: modules.h,v 1.44 2002/03/01 00:33:18 massiot Exp $
+ * $Id: modules.h,v 1.45 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -87,7 +87,7 @@ static __inline__ char *GetCapabilityName( unsigned int i_capa )
  *****************************************************************************
  * This global variable is accessed by any function using modules.
  *****************************************************************************/
-typedef struct
+typedef struct module_bank_s
 {
     struct module_s *   first;                   /* First module in the bank */
     int                 i_count;              /* Number of allocated modules */
@@ -96,7 +96,11 @@ typedef struct
                                     it is to design thread-safe linked lists */
 } module_bank_t;
 
+#ifndef PLUGIN
 extern module_bank_t *p_module_bank;
+#else
+#   define p_module_bank (p_symbols->p_module_bank)
+#endif
 
 /*****************************************************************************
  * Module description structure
@@ -121,8 +125,15 @@ typedef struct module_s
     u32   i_cpu_capabilities;                   /* Required CPU capabilities */
 
     struct module_functions_s *p_functions;          /* Capability functions */
-    struct module_config_s  *p_config;     /* Module configuration structure */
-    int i_config_options;                 /* number of configuration options */
+
+    /*
+     * Variables set by the module to store its config options
+     */
+    struct module_config_s *p_config;      /* Module configuration structure */
+    struct module_config_s *p_config_orig;    /* original module config data */
+    vlc_mutex_t            config_lock;    /* lock used to modify the config */
+    int                    i_config_lines;  /* number of configuration lines */
+    int                    i_config_items;  /* number of configuration items */
 
     /*
      * Variables used internally by the module manager
index f371a4aa32adcee03b09af2b31b6ed5d27daaf92..66db53c2ddfc824c07dcbe25efe816b299a42a2b 100644 (file)
@@ -2,7 +2,7 @@
  * modules_inner.h : Macros used from within a module.
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: modules_inner.h,v 1.12 2002/02/24 20:51:09 gbazin Exp $
+ * $Id: modules_inner.h,v 1.13 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
 #define MODULE_INIT_STOP                                                      \
         STORE_SYMBOLS;                                                        \
         p_module->pp_shortcuts[ i_shortcut ] = NULL;                          \
-        p_module->i_config_options = sizeof(p_config)/sizeof(module_config_t);\
-        p_module->p_config = config_Duplicate( p_config,                      \
-                                              p_module->i_config_options );  \
+        p_module->i_config_items = 0;                                         \
+        for( p_module->i_config_lines = 0;                                    \
+             p_module->i_config_lines < (sizeof(p_config)/                    \
+                                            sizeof(module_config_t));         \
+             p_module->i_config_lines++ )                                     \
+        {                                                                     \
+            if( p_config[p_module->i_config_lines].i_type &                   \
+                MODULE_CONFIG_ITEM )                                          \
+                p_module->i_config_items++;                                   \
+        }                                                                     \
+        vlc_mutex_init( &p_module->config_lock );                             \
+        p_module->p_config_orig = p_config;                                   \
+        p_module->p_config = config_Duplicate( p_module );                    \
         if( p_module->p_config == NULL )                                      \
         {                                                                     \
             intf_ErrMsg( MODULE_STRING                                        \
     {                                                                         \
         p_module->p_functions =                                               \
           ( module_functions_t * )malloc( sizeof( module_functions_t ) );     \
+        p_module->p_config_orig = p_config;                                   \
         if( p_module->p_functions == NULL )                                   \
         {                                                                     \
             return( -1 );                                                     \
 #define MODULE_DEACTIVATE_START                                               \
     int __VLC_SYMBOL( DeactivateModule )( module_t *p_module )                \
     {                                                                         \
+        p_module->p_config_orig = NULL;                                       \
         free( p_module->p_functions );
 
 #define MODULE_DEACTIVATE_STOP                                                \
index 503b41799a68289a2801cfc8ffc3f85ef3870f00..a91ebc043bfdfb8811df4be2c619c00fbe8edbff 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_spdif.c: ac3 pass-through to external decoder with enabled soundcard
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: ac3_spdif.c,v 1.18 2002/03/04 01:53:56 stef Exp $
+ * $Id: ac3_spdif.c,v 1.19 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Stéphane Borel <stef@via.ecp.fr>
  *          Juha Yrjola <jyrjola@cc.hut.fi>
@@ -70,7 +70,7 @@ void _M( adec_getfunctions )( function_list_t * p_function_list )
  *****************************************************************************/
 MODULE_CONFIG_START
 ADD_CATEGORY_HINT( "Misc Options", NULL )
-ADD_BOOL( AOUT_SPDIF_VAR, NULL, "enable AC3 pass-through mode", NULL )
+ADD_BOOL( "spdif", NULL, "enable AC3 pass-through mode", NULL )
 MODULE_CONFIG_STOP
 
 MODULE_INIT_START
@@ -93,7 +93,7 @@ MODULE_DEACTIVATE_STOP
  *****************************************************************************/
 static int decoder_Probe( u8 *pi_type )
 {
-    return( ( config_GetIntVariable( AOUT_SPDIF_VAR )
+    return( ( config_GetIntVariable( "spdif" )
                && *pi_type == AC3_AUDIO_ES ) ? 0 : -1 );
 }
 
index 47144b7c80a2a79a29e169cd87db5ec9927d1943..08b69d320b495edf7371ddc3b6f3a93dbfd629e5 100644 (file)
@@ -2,7 +2,7 @@
  * http.c: HTTP access plug-in
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: http.c,v 1.2 2002/03/04 23:56:37 massiot Exp $
+ * $Id: http.c,v 1.3 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -230,11 +230,11 @@ static int HTTPOpen( input_thread_t * p_input )
     }
 
     p_access_data->psz_network = NULL;
-    if( config_GetIntVariable( INPUT_IPV4_VAR ) )
+    if( config_GetIntVariable( "ipv4" ) )
     {
         p_access_data->psz_network = "ipv4";
     }
-    if( config_GetIntVariable( INPUT_IPV6_VAR ) )
+    if( config_GetIntVariable( "ipv6" ) )
     {
         p_access_data->psz_network = "ipv6";
     }
index 3be691f39c68babaeb61cdbf7ce1524d6227d71b..1d5b667534ca7c5e271a7a8717468bf5e2982258 100644 (file)
@@ -2,7 +2,7 @@
  * udp.c: raw UDP access plug-in
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: udp.c,v 1.2 2002/03/04 23:56:37 massiot Exp $
+ * $Id: udp.c,v 1.3 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -107,11 +107,11 @@ static int UDPOpen( input_thread_t * p_input )
     int                 i_bind_port = 0, i_server_port = 0;
     network_socket_t    socket_desc;
 
-    if( config_GetIntVariable( INPUT_IPV4_VAR ) )
+    if( config_GetIntVariable( "ipv4" ) )
     {
         psz_network = "ipv4";
     }
-    if( config_GetIntVariable( INPUT_IPV6_VAR ) )
+    if( config_GetIntVariable( "ipv6" ) )
     {
         psz_network = "ipv6";
     }
index 8f12e21814fe60518653b86d7c9ba4761cccbacb..c4a65b65b67d0ff2be442c596a2671da4c7f96cb 100644 (file)
@@ -2,7 +2,7 @@
  * vout_directx.c: Windows DirectX video output display method
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: vout_directx.c,v 1.23 2002/02/24 20:51:09 gbazin Exp $
+ * $Id: vout_directx.c,v 1.24 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *
@@ -134,7 +134,7 @@ static int vout_Create( vout_thread_t *p_vout )
     p_vout->p_sys->b_caps_overlay_clipping = 0;
     SetRectEmpty( &p_vout->p_sys->rect_display );
     p_vout->p_sys->b_using_overlay =
-        !config_GetIntVariable( VOUT_NOOVERLAY_VAR );
+        !config_GetIntVariable( "nooverlay" );
 
     p_vout->p_sys->b_cursor = 1;
 
@@ -157,8 +157,8 @@ static int vout_Create( vout_thread_t *p_vout )
     }
 
 #if 0
-    p_vout->p_sys->i_window_width = config_GetIntVariable( VOUT_WIDTH_VAR );
-    p_vout->p_sys->i_window_height = config_GetIntVariable( VOUT_HEIGHT_VAR );
+    p_vout->p_sys->i_window_width = config_GetIntVariable( "width" );
+    p_vout->p_sys->i_window_height = config_GetIntVariable( "height" );
 #endif
 
     /* Set locks and condition variables */
index 1008207925b3acda39616c45deaae7e42608cdf8..d5e423a0dbf750e87e5f39c9e27bb8062d44bbe9 100644 (file)
@@ -2,7 +2,7 @@
  * aout_dsp.c : dsp functions library
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: aout_dsp.c,v 1.25 2002/02/27 18:19:21 sam Exp $
+ * $Id: aout_dsp.c,v 1.26 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -236,7 +236,11 @@ static void aout_Play( aout_thread_t *p_aout, byte_t *buffer, int i_size )
 {
     if( p_aout->b_active )
     {
-        write( p_aout->p_sys->i_fd, buffer, i_size );
+        int i_tmp;
+        i_tmp = write( p_aout->p_sys->i_fd, buffer, i_size );
+       if( i_tmp < 0 )
+           intf_ErrMsg("aout error: %s", strerror(ENOMEM) );
+
     }
 }
 
index beab8aca32f9d707e0e09fc859e497291a7acec6..db250de87af1db5104c743571a7be32197fcd3ad 100644 (file)
@@ -8,7 +8,7 @@
  *  -dvd_udf to find files
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: dvd_access.c,v 1.5 2002/03/09 16:48:33 stef Exp $
+ * $Id: dvd_access.c,v 1.6 2002/03/11 07:23:09 gbazin Exp $
  *
  * Author: Stéphane Borel <stef@via.ecp.fr>
  *
@@ -781,7 +781,7 @@ static char * DVDParse( input_thread_t * p_input )
             /* no device and no access specified: we probably don't want DVD */
             return NULL;
         }
-        psz_device = config_GetPszVariable( INPUT_DVD_DEVICE_VAR );
+        psz_device = config_GetPszVariable( "dvd_device" );
     }
 
     /* check block device */
index 835c6721c9a359d416eea7be948d3d2702fe6323..4deaa07667c216c575cdd7ad71db01952d1b3fea 100644 (file)
@@ -1,7 +1,7 @@
 /* dvd_es.c: functions to find and select ES
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: dvd_es.c,v 1.2 2002/03/08 22:58:12 stef Exp $
+ * $Id: dvd_es.c,v 1.3 2002/03/11 07:23:09 gbazin Exp $
  *
  * Author: Stéphane Borel <stef@via.ecp.fr>
  *
@@ -245,15 +245,15 @@ void DVDLaunchDecoders( input_thread_t * p_input )
     if( p_main->b_audio && p_dvd->i_audio_nb > 0 )
     {
         /* For audio: first one if none or a not existing one specified */
-        i_audio = config_GetIntVariable( INPUT_CHANNEL_VAR );
+        i_audio = config_GetIntVariable( "input_channel" );
         if( i_audio <= 0 || i_audio > p_dvd->i_audio_nb )
         {
-            config_PutIntVariable( INPUT_CHANNEL_VAR, 1 );
+            config_PutIntVariable( "input_channel", 1 );
             i_audio = 1;
         }
         
-        if( config_GetIntVariable( AOUT_SPDIF_VAR ) ||
-            ( config_GetIntVariable( INPUT_AUDIO_VAR ) ==
+        if( config_GetIntVariable( "spdif" ) ||
+            ( config_GetIntVariable( "input_audio" ) ==
               REQUESTED_AC3 ) )
         {
             int     i_ac3 = i_audio;
@@ -280,10 +280,10 @@ void DVDLaunchDecoders( input_thread_t * p_input )
     if( p_main->b_video && p_dvd->i_spu_nb > 0 )
     {
         /* for spu, default is none */
-        i_spu = config_GetIntVariable( INPUT_SUBTITLE_VAR );
+        i_spu = config_GetIntVariable( "input_subtitle" );
         if( i_spu < 0 || i_spu > p_dvd->i_spu_nb )
         {
-            config_PutIntVariable( INPUT_SUBTITLE_VAR, 0 );
+            config_PutIntVariable( "input_subtitle", 0 );
             i_spu = 0;
         }
         if( i_spu > 0 )
index 8e946cd9b4a5c48bd94f6f610eb16bfe673d13fb..984bb1a6925d48f8da9078102b5dc89029629b3b 100644 (file)
@@ -6,7 +6,7 @@
  * It depends on: libdvdread for ifo files and block reading.
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: input_dvdread.c,v 1.31 2002/03/06 16:39:37 stef Exp $
+ * $Id: input_dvdread.c,v 1.32 2002/03/11 07:23:09 gbazin Exp $
  *
  * Author: Stéphane Borel <stef@via.ecp.fr>
  *
@@ -284,7 +284,7 @@ static int DvdReadOpen( struct input_thread_s *p_input )
             free( psz_orig );
             return -1;
         }
-        psz_source = config_GetPszVariable( INPUT_DVD_DEVICE_VAR );
+        psz_source = config_GetPszVariable( "dvd_device" );
     }
 
     if( stat( psz_source, &stat_info ) == -1 )
@@ -1208,16 +1208,16 @@ static void DvdReadLauchDecoders( input_thread_t * p_input )
     if( p_main->b_audio )
     {
         /* For audio: first one if none or a not existing one specified */
-        int i_audio = config_GetIntVariable( INPUT_CHANNEL_VAR );
+        int i_audio = config_GetIntVariable( "input_channel" );
         if( i_audio < 0 /*|| i_audio > i_audio_nb*/ )
         {
-            config_PutIntVariable( INPUT_CHANNEL_VAR, 1 );
+            config_PutIntVariable( "input_channel", 1 );
             i_audio = 1;
         }
         if( i_audio > 0/* && i_audio_nb > 0*/ )
         {
-            if( config_GetIntVariable( AOUT_SPDIF_VAR ) ||
-                ( config_GetIntVariable( INPUT_AUDIO_VAR ) ==
+            if( config_GetIntVariable( "spdif" ) ||
+                ( config_GetIntVariable( "input_audio" ) ==
                   REQUESTED_AC3 ) )
             {
                 int     i_ac3 = i_audio;
@@ -1244,10 +1244,10 @@ static void DvdReadLauchDecoders( input_thread_t * p_input )
     if( p_main->b_video )
     {
         /* for spu, default is none */
-        int i_spu = config_GetIntVariable( INPUT_SUBTITLE_VAR );
+        int i_spu = config_GetIntVariable( "input_subtitle" );
         if( i_spu < 0 /*|| i_spu > i_spu_nb*/ )
         {
-            config_PutIntVariable( INPUT_SUBTITLE_VAR, 0 );
+            config_PutIntVariable( "input_subtitle", 0 );
             i_spu = 0;
         }
         if( i_spu > 0 /*&& i_spu_nb > 0*/ )
index 74afc85dc704cd4770143c6dcca1e2f73890d762..cab0d6226e265957a3d8c367c84d59cf3ef66b4c 100644 (file)
@@ -2,7 +2,7 @@
  * deinterlace.c : deinterlacer plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: deinterlace.c,v 1.6 2002/02/24 20:51:09 gbazin Exp $
+ * $Id: deinterlace.c,v 1.7 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -125,10 +125,10 @@ static int vout_Create( vout_thread_t *p_vout )
 
     /* Look what method was requested */
     if( !(psz_method = psz_method_tmp
-          = config_GetPszVariable( VOUT_FILTER_VAR )) )
+          = config_GetPszVariable( "filter" )) )
     {
         intf_ErrMsg( "vout error: configuration variable %s empty",
-                     VOUT_FILTER_VAR );
+                     "filter" );
         return( 1 );
     }
 
@@ -188,8 +188,8 @@ static int vout_Init( vout_thread_t *p_vout )
     }
 
     /* Try to open the real video output, with half the height our images */
-    psz_filter = config_GetPszVariable( VOUT_FILTER_VAR );
-    config_PutPszVariable( VOUT_FILTER_VAR, NULL );
+    psz_filter = config_GetPszVariable( "filter" );
+    config_PutPszVariable( "filter", NULL );
 
     intf_WarnMsg( 1, "filter: spawning the real video output" );
 
@@ -227,7 +227,7 @@ static int vout_Init( vout_thread_t *p_vout )
         break;
     }
 
-    config_PutPszVariable( VOUT_FILTER_VAR, psz_filter );
+    config_PutPszVariable( "filter", psz_filter );
     if( psz_filter ) free( psz_filter );
 
     /* Everything failed */
index 7c5bc5ee24d97549e7e02c2e10edc22aad67e469..f1b842506e66edd99a6262e4e050439decd13e8c 100644 (file)
@@ -2,7 +2,7 @@
  * distort.c : Misc video effects plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: distort.c,v 1.8 2002/02/24 20:51:09 gbazin Exp $
+ * $Id: distort.c,v 1.9 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -133,10 +133,10 @@ static int vout_Create( vout_thread_t *p_vout )
 
     /* Look what method was requested */
     if( !(psz_method = psz_method_tmp
-          = config_GetPszVariable( VOUT_FILTER_VAR )) )
+          = config_GetPszVariable( "filter" )) )
     {
         intf_ErrMsg( "vout error: configuration variable %s empty",
-                     VOUT_FILTER_VAR );
+                     "filter" );
         return( 1 );
     }
 
@@ -183,8 +183,8 @@ static int vout_Init( vout_thread_t *p_vout )
     p_vout->output.i_aspect = p_vout->render.i_aspect;
 
     /* Try to open the real video output */
-    psz_filter = config_GetPszVariable( VOUT_FILTER_VAR );
-    config_PutPszVariable( VOUT_FILTER_VAR, NULL );
+    psz_filter = config_GetPszVariable( "filter" );
+    config_PutPszVariable( "filter", NULL );
 
     intf_WarnMsg( 1, "filter: spawning the real video output" );
 
@@ -193,7 +193,7 @@ static int vout_Init( vout_thread_t *p_vout )
                            p_vout->render.i_width, p_vout->render.i_height,
                            p_vout->render.i_chroma, p_vout->render.i_aspect );
 
-    config_PutPszVariable( VOUT_FILTER_VAR, psz_filter );
+    config_PutPszVariable( "filter", psz_filter );
     if( psz_filter ) free( psz_filter );
 
     /* Everything failed */
index 0f1f63e78ee478e448b402cf3deef363ddebad09..974dc9e797a1a4e19eac396a2337ad11d23e597d 100644 (file)
@@ -2,7 +2,7 @@
  * invert.c : Invert video plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: invert.c,v 1.8 2002/02/24 20:51:09 gbazin Exp $
+ * $Id: invert.c,v 1.9 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -135,8 +135,8 @@ static int vout_Init( vout_thread_t *p_vout )
     p_vout->output.i_aspect = p_vout->render.i_aspect;
 
     /* Try to open the real video output */
-    psz_filter = config_GetPszVariable( VOUT_FILTER_VAR );
-    config_PutPszVariable( VOUT_FILTER_VAR, NULL );
+    psz_filter = config_GetPszVariable( "filter" );
+    config_PutPszVariable( "filter", NULL );
 
     intf_WarnMsg( 1, "filter: spawning the real video output" );
 
@@ -145,7 +145,7 @@ static int vout_Init( vout_thread_t *p_vout )
                            p_vout->render.i_width, p_vout->render.i_height,
                            p_vout->render.i_chroma, p_vout->render.i_aspect );
 
-    config_PutPszVariable( VOUT_FILTER_VAR, psz_filter );
+    config_PutPszVariable( "filter", psz_filter );
     if( psz_filter ) free( psz_filter );
 
     /* Everything failed */
index 67afa00238c8acbbb08dd87da8ad23cae2a59d26..bff2cdb24376244e89f68d03c98c834354d5dcfc 100644 (file)
@@ -2,7 +2,7 @@
  * transform.c : transform image plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: transform.c,v 1.7 2002/02/24 20:51:09 gbazin Exp $
+ * $Id: transform.c,v 1.8 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -126,10 +126,10 @@ static int vout_Create( vout_thread_t *p_vout )
 
     /* Look what method was requested */
     if( !(psz_method = psz_method_tmp
-          = config_GetPszVariable( VOUT_FILTER_VAR )) )
+          = config_GetPszVariable( "filter" )) )
     {
         intf_ErrMsg( "vout error: configuration variable %s empty",
-                     VOUT_FILTER_VAR );
+                     "filter" );
         return( 1 );
     }
 
@@ -194,8 +194,8 @@ static int vout_Init( vout_thread_t *p_vout )
     p_vout->output.i_aspect = p_vout->render.i_aspect;
 
     /* Try to open the real video output */
-    psz_filter = config_GetPszVariable( VOUT_FILTER_VAR );
-    config_PutPszVariable( VOUT_FILTER_VAR, NULL );
+    psz_filter = config_GetPszVariable( "filter" );
+    config_PutPszVariable( "filter", NULL );
 
     intf_WarnMsg( 1, "filter: spawning the real video output" );
 
@@ -216,7 +216,7 @@ static int vout_Init( vout_thread_t *p_vout )
                            p_vout->render.i_chroma, p_vout->render.i_aspect );
     }
 
-    config_PutPszVariable( VOUT_FILTER_VAR, psz_filter );
+    config_PutPszVariable( "filter", psz_filter );
     if( psz_filter ) free( psz_filter );
 
     /* Everything failed */
index edcd1e80629c1c66ed795f607ca07a455fe9837b..b5bf047b15025e3a1777fb5f86c688894124ed72 100644 (file)
@@ -2,7 +2,7 @@
  * wall.c : Wall video plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: wall.c,v 1.14 2002/02/27 03:47:56 sam Exp $
+ * $Id: wall.c,v 1.15 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -130,10 +130,10 @@ static int vout_Create( vout_thread_t *p_vout )
 
     /* Look what method was requested */
     if( !(psz_method = psz_method_tmp
-          = config_GetPszVariable( VOUT_FILTER_VAR )) )
+          = config_GetPszVariable( "filter" )) )
     {
         intf_ErrMsg( "vout error: configuration variable %s empty",
-                     VOUT_FILTER_VAR );
+                     "filter" );
         return( 1 );
     }
 
@@ -283,8 +283,8 @@ static int vout_Init( vout_thread_t *p_vout )
     p_vout->output.i_aspect = p_vout->render.i_aspect;
 
     /* Try to open the real video output */
-    psz_filter = config_GetPszVariable( VOUT_FILTER_VAR );
-    config_PutPszVariable( VOUT_FILTER_VAR, NULL );
+    psz_filter = config_GetPszVariable( "filter" );
+    config_PutPszVariable( "filter", NULL );
 
     intf_WarnMsg( 1, "filter: spawning the real video outputs" );
 
@@ -339,7 +339,7 @@ static int vout_Init( vout_thread_t *p_vout )
                 intf_ErrMsg( "vout error: failed to get %ix%i vout threads",
                              p_vout->p_sys->i_col, p_vout->p_sys->i_row );
                 RemoveAllVout( p_vout );
-                config_PutPszVariable( VOUT_FILTER_VAR, psz_filter );
+                config_PutPszVariable( "filter", psz_filter );
                 if( psz_filter ) free( psz_filter );
                 return 0;
             }
@@ -348,7 +348,7 @@ static int vout_Init( vout_thread_t *p_vout )
         }
     }
 
-    config_PutPszVariable( VOUT_FILTER_VAR, psz_filter );
+    config_PutPszVariable( "filter", psz_filter );
     if( psz_filter ) free( psz_filter );
 
     ALLOCATE_DIRECTBUFFERS( VOUT_MAX_PICTURES );
index 7847162dfbc2cc00f3e7db080dd46e5decfb7598..96ac8bb85b384437fce1fa46ed74edf700c6e161 100644 (file)
@@ -2,7 +2,7 @@
  * ggi.c : GGI plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: ggi.c,v 1.15 2002/02/24 20:51:09 gbazin Exp $
+ * $Id: ggi.c,v 1.16 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -396,7 +396,7 @@ static int OpenDisplay( vout_thread_t *p_vout )
     }
 
     /* Open display */
-    psz_display = config_GetPszVariable( VOUT_DISPLAY_VAR );
+    psz_display = config_GetPszVariable( "display" );
 
     p_vout->p_sys->p_display = ggiOpen( psz_display, NULL );
     if( psz_display ) free( psz_display );
@@ -410,8 +410,8 @@ static int OpenDisplay( vout_thread_t *p_vout )
 
     /* Find most appropriate mode */
     p_vout->p_sys->mode.frames =    2;                          /* 2 buffers */
-    p_vout->p_sys->mode.visible.x = config_GetIntVariable( VOUT_WIDTH_VAR );
-    p_vout->p_sys->mode.visible.y = config_GetIntVariable( VOUT_HEIGHT_VAR );
+    p_vout->p_sys->mode.visible.x = config_GetIntVariable( "width" );
+    p_vout->p_sys->mode.visible.y = config_GetIntVariable( "height" );
     p_vout->p_sys->mode.virt.x =    GGI_AUTO;
     p_vout->p_sys->mode.virt.y =    GGI_AUTO;
     p_vout->p_sys->mode.size.x =    GGI_AUTO;
index 794caab5cfa4e71577201a995e9dfa3ef1ef4b2b..21f260567044f832a12dfb210486dfd320448016 100644 (file)
              <last_modification_time>Sat, 19 May 2001 03:13:28 GMT</last_modification_time>
            </signal>
            <stock_button>GNOME_STOCK_BUTTON_PREV</stock_button>
-           <relief>GTK_RELIEF_NONE</relief>
+           <relief>GTK_RELIEF_NORMAL</relief>
            <child>
              <padding>0</padding>
              <expand>False</expand>
              <last_modification_time>Sat, 19 May 2001 03:13:23 GMT</last_modification_time>
            </signal>
            <stock_button>GNOME_STOCK_BUTTON_NEXT</stock_button>
-           <relief>GTK_RELIEF_NONE</relief>
+           <relief>GTK_RELIEF_NORMAL</relief>
            <child>
              <padding>0</padding>
              <expand>False</expand>
              <last_modification_time>Tue, 29 May 2001 13:13:41 GMT</last_modification_time>
            </signal>
            <stock_button>GNOME_STOCK_BUTTON_DOWN</stock_button>
-           <relief>GTK_RELIEF_NONE</relief>
+           <relief>GTK_RELIEF_NORMAL</relief>
            <child>
              <padding>0</padding>
              <expand>False</expand>
              <last_modification_time>Sat, 19 May 2001 03:13:08 GMT</last_modification_time>
            </signal>
            <stock_button>GNOME_STOCK_BUTTON_UP</stock_button>
-           <relief>GTK_RELIEF_NONE</relief>
+           <relief>GTK_RELIEF_NORMAL</relief>
            <child>
              <padding>0</padding>
              <expand>False</expand>
@@ -2814,1793 +2814,6 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;
   </widget>
 </widget>
 
-<widget>
-  <class>GnomeDialog</class>
-  <name>intf_preferences</name>
-  <title>Preferences</title>
-  <type>GTK_WINDOW_TOPLEVEL</type>
-  <position>GTK_WIN_POS_NONE</position>
-  <modal>False</modal>
-  <default_width>450</default_width>
-  <default_height>350</default_height>
-  <allow_shrink>True</allow_shrink>
-  <allow_grow>True</allow_grow>
-  <auto_shrink>False</auto_shrink>
-  <auto_close>False</auto_close>
-  <hide_on_close>False</hide_on_close>
-
-  <widget>
-    <class>GtkVBox</class>
-    <child_name>GnomeDialog:vbox</child_name>
-    <name>preferences_vbox</name>
-    <border_width>5</border_width>
-    <homogeneous>False</homogeneous>
-    <spacing>10</spacing>
-    <child>
-      <padding>0</padding>
-      <expand>True</expand>
-      <fill>True</fill>
-    </child>
-
-    <widget>
-      <class>GtkHButtonBox</class>
-      <child_name>GnomeDialog:action_area</child_name>
-      <name>preferences_dialog</name>
-      <layout_style>GTK_BUTTONBOX_END</layout_style>
-      <spacing>8</spacing>
-      <child_min_width>85</child_min_width>
-      <child_min_height>27</child_min_height>
-      <child_ipad_x>7</child_ipad_x>
-      <child_ipad_y>0</child_ipad_y>
-      <child>
-       <padding>0</padding>
-       <expand>False</expand>
-       <fill>True</fill>
-       <pack>GTK_PACK_END</pack>
-      </child>
-
-      <widget>
-       <class>GtkButton</class>
-       <name>preferences_ok</name>
-       <can_default>True</can_default>
-       <can_focus>True</can_focus>
-       <signal>
-         <name>clicked</name>
-         <handler>GtkPreferencesOk</handler>
-         <data>&quot;intf_preferences&quot;</data>
-         <last_modification_time>Sat, 19 May 2001 03:06:57 GMT</last_modification_time>
-       </signal>
-       <stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
-      </widget>
-
-      <widget>
-       <class>GtkButton</class>
-       <name>preferences_apply</name>
-       <can_default>True</can_default>
-       <can_focus>True</can_focus>
-       <signal>
-         <name>clicked</name>
-         <handler>GtkPreferencesApply</handler>
-         <data>&quot;intf_preferences&quot;</data>
-         <last_modification_time>Sat, 19 May 2001 03:06:53 GMT</last_modification_time>
-       </signal>
-       <stock_button>GNOME_STOCK_BUTTON_APPLY</stock_button>
-      </widget>
-
-      <widget>
-       <class>GtkButton</class>
-       <name>preferences_cancel</name>
-       <can_default>True</can_default>
-       <can_focus>True</can_focus>
-       <signal>
-         <name>clicked</name>
-         <handler>GtkPreferencesCancel</handler>
-         <data>&quot;intf_preferences&quot;</data>
-         <last_modification_time>Sat, 19 May 2001 03:07:05 GMT</last_modification_time>
-       </signal>
-       <stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
-      </widget>
-    </widget>
-
-    <widget>
-      <class>GtkFrame</class>
-      <name>preferences_frame</name>
-      <label>Preferences</label>
-      <label_xalign>0.05</label_xalign>
-      <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
-      <child>
-       <padding>0</padding>
-       <expand>True</expand>
-       <fill>True</fill>
-      </child>
-
-      <widget>
-       <class>GtkNotebook</class>
-       <name>preferences_notebook</name>
-       <can_focus>True</can_focus>
-       <show_tabs>True</show_tabs>
-       <show_border>True</show_border>
-       <tab_pos>GTK_POS_TOP</tab_pos>
-       <scrollable>False</scrollable>
-       <tab_hborder>2</tab_hborder>
-       <tab_vborder>2</tab_vborder>
-       <popup_enable>False</popup_enable>
-
-       <widget>
-         <class>GtkTable</class>
-         <name>preferences_file_table</name>
-         <border_width>5</border_width>
-         <rows>1</rows>
-         <columns>2</columns>
-         <homogeneous>False</homogeneous>
-         <row_spacing>5</row_spacing>
-         <column_spacing>5</column_spacing>
-
-         <widget>
-           <class>GnomeFileEntry</class>
-           <name>preferences_file_combo</name>
-           <max_saved>10</max_saved>
-           <directory>False</directory>
-           <modal>False</modal>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>0</top_attach>
-             <bottom_attach>1</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-
-           <widget>
-             <class>GtkEntry</class>
-             <child_name>GnomeEntry:entry</child_name>
-             <name>preferences_file_path_entry</name>
-             <can_focus>True</can_focus>
-             <editable>True</editable>
-             <text_visible>True</text_visible>
-             <text_max_length>0</text_max_length>
-             <text></text>
-           </widget>
-         </widget>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_file_path_label</name>
-           <label>Default path: </label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>0</top_attach>
-             <bottom_attach>1</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <child_name>Notebook:tab</child_name>
-         <name>preferences_file</name>
-         <label>File</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0.5</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-       </widget>
-
-       <widget>
-         <class>GtkTable</class>
-         <name>preferences_disc_table</name>
-         <border_width>5</border_width>
-         <rows>2</rows>
-         <columns>2</columns>
-         <homogeneous>False</homogeneous>
-         <row_spacing>5</row_spacing>
-         <column_spacing>5</column_spacing>
-
-         <widget>
-           <class>GnomeFileEntry</class>
-           <name>preferences_disc_dvd_combo</name>
-           <max_saved>10</max_saved>
-           <directory>False</directory>
-           <modal>False</modal>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>0</top_attach>
-             <bottom_attach>1</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-
-           <widget>
-             <class>GtkEntry</class>
-             <child_name>GnomeEntry:entry</child_name>
-             <name>preferences_disc_dvd_entry</name>
-             <can_focus>True</can_focus>
-             <editable>True</editable>
-             <text_visible>True</text_visible>
-             <text_max_length>0</text_max_length>
-             <text></text>
-           </widget>
-         </widget>
-
-         <widget>
-           <class>GnomeFileEntry</class>
-           <name>preferences_file_vcd_combo</name>
-           <max_saved>10</max_saved>
-           <directory>False</directory>
-           <modal>False</modal>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>1</top_attach>
-             <bottom_attach>2</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-
-           <widget>
-             <class>GtkEntry</class>
-             <child_name>GnomeEntry:entry</child_name>
-             <name>preferences_disc_vcd_entry</name>
-             <can_focus>True</can_focus>
-             <editable>True</editable>
-             <text_visible>True</text_visible>
-             <text_max_length>0</text_max_length>
-             <text></text>
-           </widget>
-         </widget>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_disc_dvd_label</name>
-           <label>Default DVD path: </label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>0</top_attach>
-             <bottom_attach>1</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_disc_vcd_label</name>
-           <label>Default VCD path: </label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>1</top_attach>
-             <bottom_attach>2</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <child_name>Notebook:tab</child_name>
-         <name>preferences_disc</name>
-         <label>Disc</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0.5</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-       </widget>
-
-       <widget>
-         <class>GtkTable</class>
-         <name>preferences_network_table</name>
-         <border_width>5</border_width>
-         <rows>7</rows>
-         <columns>2</columns>
-         <homogeneous>False</homogeneous>
-         <row_spacing>5</row_spacing>
-         <column_spacing>5</column_spacing>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_network_server_label</name>
-           <label>Default server: </label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>0</top_attach>
-             <bottom_attach>1</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkSpinButton</class>
-           <name>preferences_network_port_spinbutton</name>
-           <can_focus>True</can_focus>
-           <climb_rate>1</climb_rate>
-           <digits>0</digits>
-           <numeric>False</numeric>
-           <update_policy>GTK_UPDATE_ALWAYS</update_policy>
-           <snap>False</snap>
-           <wrap>False</wrap>
-           <value>1234</value>
-           <lower>0</lower>
-           <upper>65535</upper>
-           <step>1</step>
-           <page>10</page>
-           <page_size>10</page_size>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>1</top_attach>
-             <bottom_attach>2</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_network_broadcast_label</name>
-           <label>Broadcast address: </label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>2</top_attach>
-             <bottom_attach>3</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_network_port_label</name>
-           <label>Default port: </label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>1</top_attach>
-             <bottom_attach>2</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GnomeEntry</class>
-           <name>preferences_network_server_combo</name>
-           <max_saved>10</max_saved>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>0</top_attach>
-             <bottom_attach>1</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-
-           <widget>
-             <class>GtkEntry</class>
-             <child_name>GnomeEntry:entry</child_name>
-             <name>preferences_network_server_entry</name>
-             <can_focus>True</can_focus>
-             <editable>True</editable>
-             <text_visible>True</text_visible>
-             <text_max_length>0</text_max_length>
-             <text>vls</text>
-           </widget>
-         </widget>
-
-         <widget>
-           <class>GnomeEntry</class>
-           <name>preferences_network_broadcast_combo</name>
-           <max_saved>10</max_saved>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>2</top_attach>
-             <bottom_attach>3</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-
-           <widget>
-             <class>GtkEntry</class>
-             <child_name>GnomeEntry:entry</child_name>
-             <name>preferences_network_broadcast_entry</name>
-             <can_focus>True</can_focus>
-             <editable>True</editable>
-             <text_visible>True</text_visible>
-             <text_max_length>0</text_max_length>
-             <text></text>
-           </widget>
-         </widget>
-
-         <widget>
-           <class>GtkCheckButton</class>
-           <name>preferences_network_broadcast_checkbutton</name>
-           <can_focus>True</can_focus>
-           <label>Broadcast mode</label>
-           <active>False</active>
-           <draw_indicator>True</draw_indicator>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>3</top_attach>
-             <bottom_attach>4</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkRadioButton</class>
-           <name>preferences_network_ts_radiobutton</name>
-           <can_focus>True</can_focus>
-           <label>TS</label>
-           <active>False</active>
-           <draw_indicator>True</draw_indicator>
-           <group>preferences_network_protocol_group</group>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>4</top_attach>
-             <bottom_attach>5</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>False</xexpand>
-             <yexpand>False</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>True</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkRadioButton</class>
-           <name>preferences_network_rtp_radiobutton</name>
-           <can_focus>True</can_focus>
-           <label>RTP</label>
-           <active>False</active>
-           <draw_indicator>True</draw_indicator>
-           <group>preferences_network_protocol_group</group>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>5</top_attach>
-             <bottom_attach>6</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>False</xexpand>
-             <yexpand>False</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>True</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkRadioButton</class>
-           <name>preferences_network_http_radiobutton</name>
-           <can_focus>True</can_focus>
-           <label>HTTP</label>
-           <active>False</active>
-           <draw_indicator>True</draw_indicator>
-           <group>preferences_network_protocol_group</group>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>6</top_attach>
-             <bottom_attach>7</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>False</xexpand>
-             <yexpand>False</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>True</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_network_protocol_label</name>
-           <label>Default protocol: </label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>4</top_attach>
-             <bottom_attach>7</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>True</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <child_name>Notebook:tab</child_name>
-         <name>preferences_network</name>
-         <label>Network</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0.5</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-       </widget>
-
-       <widget>
-         <class>GtkTable</class>
-         <name>preferences_network_interface_table</name>
-         <border_width>5</border_width>
-         <rows>1</rows>
-         <columns>2</columns>
-         <homogeneous>False</homogeneous>
-         <row_spacing>5</row_spacing>
-         <column_spacing>5</column_spacing>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_interface_label</name>
-           <label>Default interface: </label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>0</top_attach>
-             <bottom_attach>1</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GnomeEntry</class>
-           <name>preferences_interface_combo</name>
-           <max_saved>10</max_saved>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>0</top_attach>
-             <bottom_attach>1</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-
-           <widget>
-             <class>GtkEntry</class>
-             <child_name>GnomeEntry:entry</child_name>
-             <name>preferences_interface_entry</name>
-             <can_focus>True</can_focus>
-             <editable>True</editable>
-             <text_visible>True</text_visible>
-             <text_max_length>0</text_max_length>
-             <text></text>
-           </widget>
-         </widget>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <child_name>Notebook:tab</child_name>
-         <name>preferences_interface</name>
-         <label>Interface</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0.5</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-       </widget>
-
-       <widget>
-         <class>GtkTable</class>
-         <name>preferences_video_table</name>
-         <border_width>5</border_width>
-         <rows>7</rows>
-         <columns>2</columns>
-         <homogeneous>False</homogeneous>
-         <row_spacing>5</row_spacing>
-         <column_spacing>5</column_spacing>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_video_output_label</name>
-           <label>Default output: </label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>0</top_attach>
-             <bottom_attach>1</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_video_height</name>
-           <label>Default height: </label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>2</top_attach>
-             <bottom_attach>3</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkSpinButton</class>
-           <name>preferences_video_height_spinbutton</name>
-           <can_focus>True</can_focus>
-           <climb_rate>1</climb_rate>
-           <digits>0</digits>
-           <numeric>False</numeric>
-           <update_policy>GTK_UPDATE_ALWAYS</update_policy>
-           <snap>False</snap>
-           <wrap>False</wrap>
-           <value>576</value>
-           <lower>0</lower>
-           <upper>1600</upper>
-           <step>1</step>
-           <page>10</page>
-           <page_size>10</page_size>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>2</top_attach>
-             <bottom_attach>3</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkSpinButton</class>
-           <name>preferences_video_width_spinbutton</name>
-           <can_focus>True</can_focus>
-           <climb_rate>1</climb_rate>
-           <digits>0</digits>
-           <numeric>False</numeric>
-           <update_policy>GTK_UPDATE_ALWAYS</update_policy>
-           <snap>False</snap>
-           <wrap>False</wrap>
-           <value>720</value>
-           <lower>100</lower>
-           <upper>1600</upper>
-           <step>1</step>
-           <page>10</page>
-           <page_size>10</page_size>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>1</top_attach>
-             <bottom_attach>2</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_video_width_label</name>
-           <label>Default width: </label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>1</top_attach>
-             <bottom_attach>2</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GnomeEntry</class>
-           <name>preferences_video_output_combo</name>
-           <max_saved>10</max_saved>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>0</top_attach>
-             <bottom_attach>1</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-
-           <widget>
-             <class>GtkEntry</class>
-             <child_name>GnomeEntry:entry</child_name>
-             <name>preferences_video_output_entry</name>
-             <can_focus>True</can_focus>
-             <editable>True</editable>
-             <text_visible>True</text_visible>
-             <text_max_length>0</text_max_length>
-             <text></text>
-           </widget>
-         </widget>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_video_depth</name>
-           <label>Default depth:</label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>3</top_attach>
-             <bottom_attach>4</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkOptionMenu</class>
-           <name>preferences_video_depth_optionmenu</name>
-           <can_focus>True</can_focus>
-           <items>15 bits
-16 bits
-32 bits
-</items>
-           <initial_choice>1</initial_choice>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>3</top_attach>
-             <bottom_attach>4</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_video_fullscreen_depth</name>
-           <label>Fullscreen depth:</label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>4</top_attach>
-             <bottom_attach>5</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkOptionMenu</class>
-           <name>preferences_video_fullscreen_depth_optionmenu</name>
-           <can_focus>True</can_focus>
-           <items>15 bits
-16 bits
-32 bits
-</items>
-           <initial_choice>2</initial_choice>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>4</top_attach>
-             <bottom_attach>5</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>True</xfill>
-             <yfill>True</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkCheckButton</class>
-           <name>preferences_video_fullscreen_checkbutton</name>
-           <can_focus>True</can_focus>
-           <label>Fullscreen on play</label>
-           <active>False</active>
-           <draw_indicator>True</draw_indicator>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>6</top_attach>
-             <bottom_attach>7</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkCheckButton</class>
-           <name>preferences_video_grayscale_checkbutton</name>
-           <can_focus>True</can_focus>
-           <label>Grayscale</label>
-           <active>False</active>
-           <draw_indicator>True</draw_indicator>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>6</top_attach>
-             <bottom_attach>7</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_video_gamma_label</name>
-           <label>Gamma:</label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>5</top_attach>
-             <bottom_attach>6</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkSpinButton</class>
-           <name>spinbutton4</name>
-           <can_focus>True</can_focus>
-           <climb_rate>1</climb_rate>
-           <digits>1</digits>
-           <numeric>False</numeric>
-           <update_policy>GTK_UPDATE_ALWAYS</update_policy>
-           <snap>False</snap>
-           <wrap>False</wrap>
-           <value>0</value>
-           <lower>0</lower>
-           <upper>5</upper>
-           <step>0.1</step>
-           <page>10</page>
-           <page_size>10</page_size>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>5</top_attach>
-             <bottom_attach>6</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>False</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <child_name>Notebook:tab</child_name>
-         <name>preferences_video</name>
-         <label>Video</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0.5</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-       </widget>
-
-       <widget>
-         <class>GtkTable</class>
-         <name>preference_audio_table</name>
-         <border_width>5</border_width>
-         <rows>6</rows>
-         <columns>2</columns>
-         <homogeneous>False</homogeneous>
-         <row_spacing>5</row_spacing>
-         <column_spacing>5</column_spacing>
-
-         <widget>
-           <class>GtkCheckButton</class>
-           <name>preferences_audio_spdif_checkbutton</name>
-           <can_focus>True</can_focus>
-           <label>Spdif output</label>
-           <active>False</active>
-           <draw_indicator>True</draw_indicator>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>5</top_attach>
-             <bottom_attach>6</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_audio_output_label</name>
-           <label>Default output: </label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>0</top_attach>
-             <bottom_attach>1</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GnomeEntry</class>
-           <name>preferences_audio_output_combo</name>
-           <max_saved>10</max_saved>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>0</top_attach>
-             <bottom_attach>1</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-
-           <widget>
-             <class>GtkEntry</class>
-             <child_name>GnomeEntry:entry</child_name>
-             <name>preferences_audio_output_entry</name>
-             <can_focus>True</can_focus>
-             <editable>True</editable>
-             <text_visible>True</text_visible>
-             <text_max_length>0</text_max_length>
-             <text></text>
-           </widget>
-         </widget>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_audio_frequency_label</name>
-           <label>Frequency: </label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>2</top_attach>
-             <bottom_attach>3</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkOptionMenu</class>
-           <name>preferences_audio_frequency_optionmenu</name>
-           <can_focus>True</can_focus>
-           <items>48000 Hz
-44100 Hz
-32000 Hz
-22050 Hz
-</items>
-           <initial_choice>0</initial_choice>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>2</top_attach>
-             <bottom_attach>3</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_audio_quality_label</name>
-           <label>Quality: </label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>3</top_attach>
-             <bottom_attach>4</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkOptionMenu</class>
-           <name>preferences_audio_quality_optionmenu</name>
-           <can_focus>True</can_focus>
-           <items>16 bits
-8 bits
-</items>
-           <initial_choice>0</initial_choice>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>3</top_attach>
-             <bottom_attach>4</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_audio_channels_label</name>
-           <label>Channels: </label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>4</top_attach>
-             <bottom_attach>5</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkOptionMenu</class>
-           <name>preferences_audio_channels_optionmenu</name>
-           <can_focus>True</can_focus>
-           <items>Mono
-Stereo
-</items>
-           <initial_choice>1</initial_choice>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>4</top_attach>
-             <bottom_attach>5</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>False</xexpand>
-             <yexpand>False</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkLabel</class>
-           <name>preferences_audio_device_label</name>
-           <label>Default device:</label>
-           <justify>GTK_JUSTIFY_CENTER</justify>
-           <wrap>False</wrap>
-           <xalign>0</xalign>
-           <yalign>0.5</yalign>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>1</top_attach>
-             <bottom_attach>2</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GnomeEntry</class>
-           <name>preferences_audio_device_combo</name>
-           <max_saved>10</max_saved>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>1</top_attach>
-             <bottom_attach>2</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>True</xfill>
-             <yfill>False</yfill>
-           </child>
-
-           <widget>
-             <class>GtkEntry</class>
-             <child_name>GnomeEntry:entry</child_name>
-             <name>preferences_audio_device_entry</name>
-             <can_focus>True</can_focus>
-             <editable>True</editable>
-             <text_visible>True</text_visible>
-             <text_max_length>0</text_max_length>
-             <text></text>
-           </widget>
-         </widget>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <child_name>Notebook:tab</child_name>
-         <name>preferences_audio</name>
-         <label>Audio</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0.5</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-       </widget>
-
-       <widget>
-         <class>GtkTable</class>
-         <name>preference_playlist_table</name>
-         <border_width>5</border_width>
-         <rows>3</rows>
-         <columns>1</columns>
-         <homogeneous>False</homogeneous>
-         <row_spacing>5</row_spacing>
-         <column_spacing>5</column_spacing>
-
-         <widget>
-           <class>GtkCheckButton</class>
-           <name>preferences_playlist_startup_checkbutton</name>
-           <can_focus>True</can_focus>
-           <label>Launch on startup</label>
-           <active>False</active>
-           <draw_indicator>True</draw_indicator>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>0</top_attach>
-             <bottom_attach>1</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkCheckButton</class>
-           <name>preferences_playlist_loop_checkbutton</name>
-           <can_focus>True</can_focus>
-           <label>Loop on playlist end</label>
-           <active>False</active>
-           <draw_indicator>True</draw_indicator>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>2</top_attach>
-             <bottom_attach>3</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-
-         <widget>
-           <class>GtkCheckButton</class>
-           <name>preferences_playlist_enqueue_checkbutton</name>
-           <can_focus>True</can_focus>
-           <label>Enqueue as default</label>
-           <active>False</active>
-           <draw_indicator>True</draw_indicator>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>1</top_attach>
-             <bottom_attach>2</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>True</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>False</yfill>
-           </child>
-         </widget>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <child_name>Notebook:tab</child_name>
-         <name>preferences_playlist</name>
-         <label>Playlist</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0.5</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-       </widget>
-
-       <widget>
-         <class>GtkTable</class>
-         <name>preferences_misc_table</name>
-         <border_width>5</border_width>
-         <rows>1</rows>
-         <columns>2</columns>
-         <homogeneous>False</homogeneous>
-         <row_spacing>5</row_spacing>
-         <column_spacing>5</column_spacing>
-
-         <widget>
-           <class>GtkFrame</class>
-           <name>preferences_misc_associated_files_frame</name>
-           <sensitive>False</sensitive>
-           <label>Files associated with vlc</label>
-           <label_xalign>0.05</label_xalign>
-           <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
-           <child>
-             <left_attach>0</left_attach>
-             <right_attach>1</right_attach>
-             <top_attach>0</top_attach>
-             <bottom_attach>1</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>False</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>True</yfill>
-           </child>
-
-           <widget>
-             <class>GtkTable</class>
-             <name>preferences_misc_associated_table</name>
-             <rows>4</rows>
-             <columns>1</columns>
-             <homogeneous>False</homogeneous>
-             <row_spacing>0</row_spacing>
-             <column_spacing>0</column_spacing>
-
-             <widget>
-               <class>GtkCheckButton</class>
-               <name>preferences_misc_ts_checkbutton</name>
-               <can_focus>True</can_focus>
-               <label>ts</label>
-               <active>False</active>
-               <draw_indicator>True</draw_indicator>
-               <child>
-                 <left_attach>0</left_attach>
-                 <right_attach>1</right_attach>
-                 <top_attach>3</top_attach>
-                 <bottom_attach>4</bottom_attach>
-                 <xpad>0</xpad>
-                 <ypad>0</ypad>
-                 <xexpand>False</xexpand>
-                 <yexpand>False</yexpand>
-                 <xshrink>False</xshrink>
-                 <yshrink>False</yshrink>
-                 <xfill>True</xfill>
-                 <yfill>False</yfill>
-               </child>
-             </widget>
-
-             <widget>
-               <class>GtkCheckButton</class>
-               <name>preferences_misc_vob_checkbutton</name>
-               <can_focus>True</can_focus>
-               <label>vob</label>
-               <active>False</active>
-               <draw_indicator>True</draw_indicator>
-               <child>
-                 <left_attach>0</left_attach>
-                 <right_attach>1</right_attach>
-                 <top_attach>2</top_attach>
-                 <bottom_attach>3</bottom_attach>
-                 <xpad>0</xpad>
-                 <ypad>0</ypad>
-                 <xexpand>False</xexpand>
-                 <yexpand>False</yexpand>
-                 <xshrink>False</xshrink>
-                 <yshrink>False</yshrink>
-                 <xfill>True</xfill>
-                 <yfill>False</yfill>
-               </child>
-             </widget>
-
-             <widget>
-               <class>GtkCheckButton</class>
-               <name>preferences_misc_mp2_checkbutton</name>
-               <can_focus>True</can_focus>
-               <label>mp2</label>
-               <active>False</active>
-               <draw_indicator>True</draw_indicator>
-               <child>
-                 <left_attach>0</left_attach>
-                 <right_attach>1</right_attach>
-                 <top_attach>1</top_attach>
-                 <bottom_attach>2</bottom_attach>
-                 <xpad>0</xpad>
-                 <ypad>0</ypad>
-                 <xexpand>False</xexpand>
-                 <yexpand>False</yexpand>
-                 <xshrink>False</xshrink>
-                 <yshrink>False</yshrink>
-                 <xfill>True</xfill>
-                 <yfill>False</yfill>
-               </child>
-             </widget>
-
-             <widget>
-               <class>GtkCheckButton</class>
-               <name>preferences_misc_mpeg_checkbutton</name>
-               <can_focus>True</can_focus>
-               <label>mpeg</label>
-               <active>False</active>
-               <draw_indicator>True</draw_indicator>
-               <child>
-                 <left_attach>0</left_attach>
-                 <right_attach>1</right_attach>
-                 <top_attach>0</top_attach>
-                 <bottom_attach>1</bottom_attach>
-                 <xpad>0</xpad>
-                 <ypad>0</ypad>
-                 <xexpand>False</xexpand>
-                 <yexpand>False</yexpand>
-                 <xshrink>False</xshrink>
-                 <yshrink>False</yshrink>
-                 <xfill>True</xfill>
-                 <yfill>False</yfill>
-               </child>
-             </widget>
-           </widget>
-         </widget>
-
-         <widget>
-           <class>GtkFrame</class>
-           <name>preferences_misc_message_frame</name>
-           <label>Messages</label>
-           <label_xalign>0.05</label_xalign>
-           <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
-           <child>
-             <left_attach>1</left_attach>
-             <right_attach>2</right_attach>
-             <top_attach>0</top_attach>
-             <bottom_attach>1</bottom_attach>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <xexpand>True</xexpand>
-             <yexpand>False</yexpand>
-             <xshrink>False</xshrink>
-             <yshrink>False</yshrink>
-             <xfill>False</xfill>
-             <yfill>True</yfill>
-           </child>
-
-           <widget>
-             <class>GtkTable</class>
-             <name>preferences_misc_message_table</name>
-             <rows>1</rows>
-             <columns>2</columns>
-             <homogeneous>False</homogeneous>
-             <row_spacing>0</row_spacing>
-             <column_spacing>0</column_spacing>
-
-             <widget>
-               <class>GtkLabel</class>
-               <name>preferences_misc_messages_label</name>
-               <label>Warning level: </label>
-               <justify>GTK_JUSTIFY_CENTER</justify>
-               <wrap>False</wrap>
-               <xalign>0.5</xalign>
-               <yalign>0.5</yalign>
-               <xpad>0</xpad>
-               <ypad>0</ypad>
-               <child>
-                 <left_attach>0</left_attach>
-                 <right_attach>1</right_attach>
-                 <top_attach>0</top_attach>
-                 <bottom_attach>1</bottom_attach>
-                 <xpad>0</xpad>
-                 <ypad>0</ypad>
-                 <xexpand>False</xexpand>
-                 <yexpand>False</yexpand>
-                 <xshrink>False</xshrink>
-                 <yshrink>False</yshrink>
-                 <xfill>True</xfill>
-                 <yfill>False</yfill>
-               </child>
-             </widget>
-
-             <widget>
-               <class>GtkSpinButton</class>
-               <name>preferences_misc_messages_spinbutton</name>
-               <can_focus>True</can_focus>
-               <climb_rate>1</climb_rate>
-               <digits>0</digits>
-               <numeric>False</numeric>
-               <update_policy>GTK_UPDATE_ALWAYS</update_policy>
-               <snap>False</snap>
-               <wrap>False</wrap>
-               <value>0</value>
-               <lower>0</lower>
-               <upper>100</upper>
-               <step>1</step>
-               <page>10</page>
-               <page_size>10</page_size>
-               <child>
-                 <left_attach>1</left_attach>
-                 <right_attach>2</right_attach>
-                 <top_attach>0</top_attach>
-                 <bottom_attach>1</bottom_attach>
-                 <xpad>0</xpad>
-                 <ypad>0</ypad>
-                 <xexpand>True</xexpand>
-                 <yexpand>False</yexpand>
-                 <xshrink>False</xshrink>
-                 <yshrink>False</yshrink>
-                 <xfill>True</xfill>
-                 <yfill>False</yfill>
-               </child>
-             </widget>
-           </widget>
-         </widget>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <child_name>Notebook:tab</child_name>
-         <name>preferences_misc</name>
-         <label>Misc</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0.5</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-       </widget>
-      </widget>
-    </widget>
-  </widget>
-</widget>
-
 <widget>
   <class>GnomeDialog</class>
   <name>intf_open</name>
index e9c08254195a682fed521ca2afe7892d13995196..0ec84675017f21defdf1d135ae2f0d11fbccce3e 100644 (file)
@@ -87,7 +87,7 @@ void
 GnomeMenubarPreferencesActivate        (GtkMenuItem     *menuitem,
                                         gpointer         user_data)
 {
-    GtkPreferencesShow( GTK_WIDGET( menuitem ), NULL, "intf_window" );
+    GtkPreferencesActivate( menuitem, "intf_window" );
 }
 
 
index 74fad977aa69298742377d7869e48757debc799f..bfbaf00566b22b9e53732d1c96a55871c7e70be6 100644 (file)
@@ -600,7 +600,6 @@ create_intf_window (void)
   gtk_widget_show (button_title_prev);
   gtk_box_pack_start (GTK_BOX (title_chapter_box), button_title_prev, FALSE, FALSE, 0);
   gtk_tooltips_set_tip (tooltips, button_title_prev, _("Select previous title"), NULL);
-  gtk_button_set_relief (GTK_BUTTON (button_title_prev), GTK_RELIEF_NONE);
 
   button_title_next = gnome_stock_button (GNOME_STOCK_BUTTON_NEXT);
   gtk_widget_ref (button_title_next);
@@ -608,7 +607,6 @@ create_intf_window (void)
                             (GtkDestroyNotify) gtk_widget_unref);
   gtk_widget_show (button_title_next);
   gtk_box_pack_start (GTK_BOX (title_chapter_box), button_title_next, FALSE, FALSE, 0);
-  gtk_button_set_relief (GTK_BUTTON (button_title_next), GTK_RELIEF_NONE);
 
   vseparator1 = gtk_vseparator_new ();
   gtk_widget_ref (vseparator1);
@@ -645,7 +643,6 @@ create_intf_window (void)
   gtk_widget_show (button_chapter_prev);
   gtk_box_pack_start (GTK_BOX (dvd_chapter_box), button_chapter_prev, FALSE, FALSE, 0);
   gtk_tooltips_set_tip (tooltips, button_chapter_prev, _("Select previous chapter"), NULL);
-  gtk_button_set_relief (GTK_BUTTON (button_chapter_prev), GTK_RELIEF_NONE);
 
   button_chapter_next = gnome_stock_button (GNOME_STOCK_BUTTON_UP);
   gtk_widget_ref (button_chapter_next);
@@ -654,7 +651,6 @@ create_intf_window (void)
   gtk_widget_show (button_chapter_next);
   gtk_box_pack_start (GTK_BOX (dvd_chapter_box), button_chapter_next, FALSE, FALSE, 0);
   gtk_tooltips_set_tip (tooltips, button_chapter_next, _("Select next chapter"), NULL);
-  gtk_button_set_relief (GTK_BUTTON (button_chapter_next), GTK_RELIEF_NONE);
 
   network_box = gtk_hbox_new (TRUE, 0);
   gtk_widget_ref (network_box);
@@ -2103,965 +2099,6 @@ create_intf_jump (void)
   return intf_jump;
 }
 
-GtkWidget*
-create_intf_preferences (void)
-{
-  GtkWidget *intf_preferences;
-  GtkWidget *preferences_vbox;
-  GtkWidget *preferences_frame;
-  GtkWidget *preferences_notebook;
-  GtkWidget *preferences_file_table;
-  GtkWidget *preferences_file_combo;
-  GtkWidget *preferences_file_path_entry;
-  GtkWidget *preferences_file_path_label;
-  GtkWidget *preferences_file;
-  GtkWidget *preferences_disc_table;
-  GtkWidget *preferences_disc_dvd_combo;
-  GtkWidget *preferences_disc_dvd_entry;
-  GtkWidget *preferences_file_vcd_combo;
-  GtkWidget *preferences_disc_vcd_entry;
-  GtkWidget *preferences_disc_dvd_label;
-  GtkWidget *preferences_disc_vcd_label;
-  GtkWidget *preferences_disc;
-  GtkWidget *preferences_network_table;
-  GtkWidget *preferences_network_server_label;
-  GtkObject *preferences_network_port_spinbutton_adj;
-  GtkWidget *preferences_network_port_spinbutton;
-  GtkWidget *preferences_network_broadcast_label;
-  GtkWidget *preferences_network_port_label;
-  GtkWidget *preferences_network_server_combo;
-  GtkWidget *preferences_network_server_entry;
-  GtkWidget *preferences_network_broadcast_combo;
-  GtkWidget *preferences_network_broadcast_entry;
-  GtkWidget *preferences_network_broadcast_checkbutton;
-  GSList *preferences_network_protocol_group_group = NULL;
-  GtkWidget *preferences_network_ts_radiobutton;
-  GtkWidget *preferences_network_rtp_radiobutton;
-  GtkWidget *preferences_network_http_radiobutton;
-  GtkWidget *preferences_network_protocol_label;
-  GtkWidget *preferences_network;
-  GtkWidget *preferences_network_interface_table;
-  GtkWidget *preferences_interface_label;
-  GtkWidget *preferences_interface_combo;
-  GtkWidget *preferences_interface_entry;
-  GtkWidget *preferences_interface;
-  GtkWidget *preferences_video_table;
-  GtkWidget *preferences_video_output_label;
-  GtkWidget *preferences_video_height;
-  GtkObject *preferences_video_height_spinbutton_adj;
-  GtkWidget *preferences_video_height_spinbutton;
-  GtkObject *preferences_video_width_spinbutton_adj;
-  GtkWidget *preferences_video_width_spinbutton;
-  GtkWidget *preferences_video_width_label;
-  GtkWidget *preferences_video_output_combo;
-  GtkWidget *preferences_video_output_entry;
-  GtkWidget *preferences_video_depth;
-  GtkWidget *preferences_video_depth_optionmenu;
-  GtkWidget *preferences_video_depth_optionmenu_menu;
-  GtkWidget *glade_menuitem;
-  GtkWidget *preferences_video_fullscreen_depth;
-  GtkWidget *preferences_video_fullscreen_depth_optionmenu;
-  GtkWidget *preferences_video_fullscreen_depth_optionmenu_menu;
-  GtkWidget *preferences_video_fullscreen_checkbutton;
-  GtkWidget *preferences_video_grayscale_checkbutton;
-  GtkWidget *preferences_video_gamma_label;
-  GtkObject *spinbutton4_adj;
-  GtkWidget *spinbutton4;
-  GtkWidget *preferences_video;
-  GtkWidget *preference_audio_table;
-  GtkWidget *preferences_audio_spdif_checkbutton;
-  GtkWidget *preferences_audio_output_label;
-  GtkWidget *preferences_audio_output_combo;
-  GtkWidget *preferences_audio_output_entry;
-  GtkWidget *preferences_audio_frequency_label;
-  GtkWidget *preferences_audio_frequency_optionmenu;
-  GtkWidget *preferences_audio_frequency_optionmenu_menu;
-  GtkWidget *preferences_audio_quality_label;
-  GtkWidget *preferences_audio_quality_optionmenu;
-  GtkWidget *preferences_audio_quality_optionmenu_menu;
-  GtkWidget *preferences_audio_channels_label;
-  GtkWidget *preferences_audio_channels_optionmenu;
-  GtkWidget *preferences_audio_channels_optionmenu_menu;
-  GtkWidget *preferences_audio_device_label;
-  GtkWidget *preferences_audio_device_combo;
-  GtkWidget *preferences_audio_device_entry;
-  GtkWidget *preferences_audio;
-  GtkWidget *preference_playlist_table;
-  GtkWidget *preferences_playlist_startup_checkbutton;
-  GtkWidget *preferences_playlist_loop_checkbutton;
-  GtkWidget *preferences_playlist_enqueue_checkbutton;
-  GtkWidget *preferences_playlist;
-  GtkWidget *preferences_misc_table;
-  GtkWidget *preferences_misc_associated_files_frame;
-  GtkWidget *preferences_misc_associated_table;
-  GtkWidget *preferences_misc_ts_checkbutton;
-  GtkWidget *preferences_misc_vob_checkbutton;
-  GtkWidget *preferences_misc_mp2_checkbutton;
-  GtkWidget *preferences_misc_mpeg_checkbutton;
-  GtkWidget *preferences_misc_message_frame;
-  GtkWidget *preferences_misc_message_table;
-  GtkWidget *preferences_misc_messages_label;
-  GtkObject *preferences_misc_messages_spinbutton_adj;
-  GtkWidget *preferences_misc_messages_spinbutton;
-  GtkWidget *preferences_misc;
-  GtkWidget *preferences_dialog;
-  GtkWidget *preferences_ok;
-  GtkWidget *preferences_apply;
-  GtkWidget *preferences_cancel;
-
-  intf_preferences = gnome_dialog_new (_("Preferences"), NULL);
-  gtk_object_set_data (GTK_OBJECT (intf_preferences), "intf_preferences", intf_preferences);
-  gtk_window_set_default_size (GTK_WINDOW (intf_preferences), 450, 350);
-  gtk_window_set_policy (GTK_WINDOW (intf_preferences), TRUE, TRUE, FALSE);
-
-  preferences_vbox = GNOME_DIALOG (intf_preferences)->vbox;
-  gtk_object_set_data (GTK_OBJECT (intf_preferences), "preferences_vbox", preferences_vbox);
-  gtk_widget_show (preferences_vbox);
-  gtk_container_set_border_width (GTK_CONTAINER (preferences_vbox), 5);
-
-  preferences_frame = gtk_frame_new (_("Preferences"));
-  gtk_widget_ref (preferences_frame);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_frame", preferences_frame,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_frame);
-  gtk_box_pack_start (GTK_BOX (preferences_vbox), preferences_frame, TRUE, TRUE, 0);
-  gtk_frame_set_label_align (GTK_FRAME (preferences_frame), 0.05, 0.5);
-
-  preferences_notebook = gtk_notebook_new ();
-  gtk_widget_ref (preferences_notebook);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_notebook", preferences_notebook,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_notebook);
-  gtk_container_add (GTK_CONTAINER (preferences_frame), preferences_notebook);
-
-  preferences_file_table = gtk_table_new (1, 2, FALSE);
-  gtk_widget_ref (preferences_file_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_file_table", preferences_file_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_file_table);
-  gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_file_table);
-  gtk_container_set_border_width (GTK_CONTAINER (preferences_file_table), 5);
-  gtk_table_set_row_spacings (GTK_TABLE (preferences_file_table), 5);
-  gtk_table_set_col_spacings (GTK_TABLE (preferences_file_table), 5);
-
-  preferences_file_combo = gnome_file_entry_new (NULL, NULL);
-  gtk_widget_ref (preferences_file_combo);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_file_combo", preferences_file_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_file_combo);
-  gtk_table_attach (GTK_TABLE (preferences_file_table), preferences_file_combo, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_file_path_entry = gnome_file_entry_gtk_entry (GNOME_FILE_ENTRY (preferences_file_combo));
-  gtk_widget_ref (preferences_file_path_entry);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_file_path_entry", preferences_file_path_entry,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_file_path_entry);
-
-  preferences_file_path_label = gtk_label_new (_("Default path: "));
-  gtk_widget_ref (preferences_file_path_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_file_path_label", preferences_file_path_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_file_path_label);
-  gtk_table_attach (GTK_TABLE (preferences_file_table), preferences_file_path_label, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_file_path_label), 0, 0.5);
-
-  preferences_file = gtk_label_new (_("File"));
-  gtk_widget_ref (preferences_file);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_file", preferences_file,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_file);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 0), preferences_file);
-
-  preferences_disc_table = gtk_table_new (2, 2, FALSE);
-  gtk_widget_ref (preferences_disc_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_table", preferences_disc_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_disc_table);
-  gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_disc_table);
-  gtk_container_set_border_width (GTK_CONTAINER (preferences_disc_table), 5);
-  gtk_table_set_row_spacings (GTK_TABLE (preferences_disc_table), 5);
-  gtk_table_set_col_spacings (GTK_TABLE (preferences_disc_table), 5);
-
-  preferences_disc_dvd_combo = gnome_file_entry_new (NULL, NULL);
-  gtk_widget_ref (preferences_disc_dvd_combo);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_dvd_combo", preferences_disc_dvd_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_disc_dvd_combo);
-  gtk_table_attach (GTK_TABLE (preferences_disc_table), preferences_disc_dvd_combo, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_disc_dvd_entry = gnome_file_entry_gtk_entry (GNOME_FILE_ENTRY (preferences_disc_dvd_combo));
-  gtk_widget_ref (preferences_disc_dvd_entry);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_dvd_entry", preferences_disc_dvd_entry,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_disc_dvd_entry);
-
-  preferences_file_vcd_combo = gnome_file_entry_new (NULL, NULL);
-  gtk_widget_ref (preferences_file_vcd_combo);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_file_vcd_combo", preferences_file_vcd_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_file_vcd_combo);
-  gtk_table_attach (GTK_TABLE (preferences_disc_table), preferences_file_vcd_combo, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_disc_vcd_entry = gnome_file_entry_gtk_entry (GNOME_FILE_ENTRY (preferences_file_vcd_combo));
-  gtk_widget_ref (preferences_disc_vcd_entry);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_vcd_entry", preferences_disc_vcd_entry,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_disc_vcd_entry);
-
-  preferences_disc_dvd_label = gtk_label_new (_("Default DVD path: "));
-  gtk_widget_ref (preferences_disc_dvd_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_dvd_label", preferences_disc_dvd_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_disc_dvd_label);
-  gtk_table_attach (GTK_TABLE (preferences_disc_table), preferences_disc_dvd_label, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_disc_dvd_label), 0, 0.5);
-
-  preferences_disc_vcd_label = gtk_label_new (_("Default VCD path: "));
-  gtk_widget_ref (preferences_disc_vcd_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_vcd_label", preferences_disc_vcd_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_disc_vcd_label);
-  gtk_table_attach (GTK_TABLE (preferences_disc_table), preferences_disc_vcd_label, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_disc_vcd_label), 0, 0.5);
-
-  preferences_disc = gtk_label_new (_("Disc"));
-  gtk_widget_ref (preferences_disc);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc", preferences_disc,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_disc);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 1), preferences_disc);
-
-  preferences_network_table = gtk_table_new (7, 2, FALSE);
-  gtk_widget_ref (preferences_network_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_table", preferences_network_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_table);
-  gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_network_table);
-  gtk_container_set_border_width (GTK_CONTAINER (preferences_network_table), 5);
-  gtk_table_set_row_spacings (GTK_TABLE (preferences_network_table), 5);
-  gtk_table_set_col_spacings (GTK_TABLE (preferences_network_table), 5);
-
-  preferences_network_server_label = gtk_label_new (_("Default server: "));
-  gtk_widget_ref (preferences_network_server_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_server_label", preferences_network_server_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_server_label);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_server_label, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_network_server_label), 0, 0.5);
-
-  preferences_network_port_spinbutton_adj = gtk_adjustment_new (1234, 0, 65535, 1, 10, 10);
-  preferences_network_port_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (preferences_network_port_spinbutton_adj), 1, 0);
-  gtk_widget_ref (preferences_network_port_spinbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_port_spinbutton", preferences_network_port_spinbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_port_spinbutton);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_port_spinbutton, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_network_broadcast_label = gtk_label_new (_("Broadcast address: "));
-  gtk_widget_ref (preferences_network_broadcast_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_broadcast_label", preferences_network_broadcast_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_broadcast_label);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_broadcast_label, 0, 1, 2, 3,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_network_broadcast_label), 0, 0.5);
-
-  preferences_network_port_label = gtk_label_new (_("Default port: "));
-  gtk_widget_ref (preferences_network_port_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_port_label", preferences_network_port_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_port_label);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_port_label, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_network_port_label), 0, 0.5);
-
-  preferences_network_server_combo = gnome_entry_new (NULL);
-  gtk_widget_ref (preferences_network_server_combo);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_server_combo", preferences_network_server_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_server_combo);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_server_combo, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_network_server_entry = gnome_entry_gtk_entry (GNOME_ENTRY (preferences_network_server_combo));
-  gtk_widget_ref (preferences_network_server_entry);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_server_entry", preferences_network_server_entry,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_server_entry);
-  gtk_entry_set_text (GTK_ENTRY (preferences_network_server_entry), _("vls"));
-
-  preferences_network_broadcast_combo = gnome_entry_new (NULL);
-  gtk_widget_ref (preferences_network_broadcast_combo);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_broadcast_combo", preferences_network_broadcast_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_broadcast_combo);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_broadcast_combo, 1, 2, 2, 3,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_network_broadcast_entry = gnome_entry_gtk_entry (GNOME_ENTRY (preferences_network_broadcast_combo));
-  gtk_widget_ref (preferences_network_broadcast_entry);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_broadcast_entry", preferences_network_broadcast_entry,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_broadcast_entry);
-
-  preferences_network_broadcast_checkbutton = gtk_check_button_new_with_label (_("Broadcast mode"));
-  gtk_widget_ref (preferences_network_broadcast_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_broadcast_checkbutton", preferences_network_broadcast_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_broadcast_checkbutton);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_broadcast_checkbutton, 0, 1, 3, 4,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_network_ts_radiobutton = gtk_radio_button_new_with_label (preferences_network_protocol_group_group, _("TS"));
-  preferences_network_protocol_group_group = gtk_radio_button_group (GTK_RADIO_BUTTON (preferences_network_ts_radiobutton));
-  gtk_widget_ref (preferences_network_ts_radiobutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_ts_radiobutton", preferences_network_ts_radiobutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_ts_radiobutton);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_ts_radiobutton, 1, 2, 4, 5,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (GTK_SHRINK), 0, 0);
-
-  preferences_network_rtp_radiobutton = gtk_radio_button_new_with_label (preferences_network_protocol_group_group, _("RTP"));
-  preferences_network_protocol_group_group = gtk_radio_button_group (GTK_RADIO_BUTTON (preferences_network_rtp_radiobutton));
-  gtk_widget_ref (preferences_network_rtp_radiobutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_rtp_radiobutton", preferences_network_rtp_radiobutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_rtp_radiobutton);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_rtp_radiobutton, 1, 2, 5, 6,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (GTK_SHRINK), 0, 0);
-
-  preferences_network_http_radiobutton = gtk_radio_button_new_with_label (preferences_network_protocol_group_group, _("HTTP"));
-  preferences_network_protocol_group_group = gtk_radio_button_group (GTK_RADIO_BUTTON (preferences_network_http_radiobutton));
-  gtk_widget_ref (preferences_network_http_radiobutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_http_radiobutton", preferences_network_http_radiobutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_http_radiobutton);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_http_radiobutton, 1, 2, 6, 7,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (GTK_SHRINK), 0, 0);
-
-  preferences_network_protocol_label = gtk_label_new (_("Default protocol: "));
-  gtk_widget_ref (preferences_network_protocol_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_protocol_label", preferences_network_protocol_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_protocol_label);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_protocol_label, 0, 1, 4, 7,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_network_protocol_label), 0, 0.5);
-
-  preferences_network = gtk_label_new (_("Network"));
-  gtk_widget_ref (preferences_network);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network", preferences_network,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 2), preferences_network);
-
-  preferences_network_interface_table = gtk_table_new (1, 2, FALSE);
-  gtk_widget_ref (preferences_network_interface_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_interface_table", preferences_network_interface_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_interface_table);
-  gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_network_interface_table);
-  gtk_container_set_border_width (GTK_CONTAINER (preferences_network_interface_table), 5);
-  gtk_table_set_row_spacings (GTK_TABLE (preferences_network_interface_table), 5);
-  gtk_table_set_col_spacings (GTK_TABLE (preferences_network_interface_table), 5);
-
-  preferences_interface_label = gtk_label_new (_("Default interface: "));
-  gtk_widget_ref (preferences_interface_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_interface_label", preferences_interface_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_interface_label);
-  gtk_table_attach (GTK_TABLE (preferences_network_interface_table), preferences_interface_label, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_interface_label), 0, 0.5);
-
-  preferences_interface_combo = gnome_entry_new (NULL);
-  gtk_widget_ref (preferences_interface_combo);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_interface_combo", preferences_interface_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_interface_combo);
-  gtk_table_attach (GTK_TABLE (preferences_network_interface_table), preferences_interface_combo, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_interface_entry = gnome_entry_gtk_entry (GNOME_ENTRY (preferences_interface_combo));
-  gtk_widget_ref (preferences_interface_entry);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_interface_entry", preferences_interface_entry,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_interface_entry);
-
-  preferences_interface = gtk_label_new (_("Interface"));
-  gtk_widget_ref (preferences_interface);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_interface", preferences_interface,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_interface);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 3), preferences_interface);
-
-  preferences_video_table = gtk_table_new (7, 2, FALSE);
-  gtk_widget_ref (preferences_video_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_table", preferences_video_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_table);
-  gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_video_table);
-  gtk_container_set_border_width (GTK_CONTAINER (preferences_video_table), 5);
-  gtk_table_set_row_spacings (GTK_TABLE (preferences_video_table), 5);
-  gtk_table_set_col_spacings (GTK_TABLE (preferences_video_table), 5);
-
-  preferences_video_output_label = gtk_label_new (_("Default output: "));
-  gtk_widget_ref (preferences_video_output_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_output_label", preferences_video_output_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_output_label);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_output_label, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_video_output_label), 0, 0.5);
-
-  preferences_video_height = gtk_label_new (_("Default height: "));
-  gtk_widget_ref (preferences_video_height);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_height", preferences_video_height,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_height);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_height, 0, 1, 2, 3,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_video_height), 0, 0.5);
-
-  preferences_video_height_spinbutton_adj = gtk_adjustment_new (576, 0, 1600, 1, 10, 10);
-  preferences_video_height_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (preferences_video_height_spinbutton_adj), 1, 0);
-  gtk_widget_ref (preferences_video_height_spinbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_height_spinbutton", preferences_video_height_spinbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_height_spinbutton);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_height_spinbutton, 1, 2, 2, 3,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_video_width_spinbutton_adj = gtk_adjustment_new (720, 100, 1600, 1, 10, 10);
-  preferences_video_width_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (preferences_video_width_spinbutton_adj), 1, 0);
-  gtk_widget_ref (preferences_video_width_spinbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_width_spinbutton", preferences_video_width_spinbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_width_spinbutton);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_width_spinbutton, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_video_width_label = gtk_label_new (_("Default width: "));
-  gtk_widget_ref (preferences_video_width_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_width_label", preferences_video_width_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_width_label);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_width_label, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_video_width_label), 0, 0.5);
-
-  preferences_video_output_combo = gnome_entry_new (NULL);
-  gtk_widget_ref (preferences_video_output_combo);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_output_combo", preferences_video_output_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_output_combo);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_output_combo, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_video_output_entry = gnome_entry_gtk_entry (GNOME_ENTRY (preferences_video_output_combo));
-  gtk_widget_ref (preferences_video_output_entry);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_output_entry", preferences_video_output_entry,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_output_entry);
-
-  preferences_video_depth = gtk_label_new (_("Default depth:"));
-  gtk_widget_ref (preferences_video_depth);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_depth", preferences_video_depth,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_depth);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_depth, 0, 1, 3, 4,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_video_depth), 0, 0.5);
-
-  preferences_video_depth_optionmenu = gtk_option_menu_new ();
-  gtk_widget_ref (preferences_video_depth_optionmenu);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_depth_optionmenu", preferences_video_depth_optionmenu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_depth_optionmenu);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_depth_optionmenu, 1, 2, 3, 4,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  preferences_video_depth_optionmenu_menu = gtk_menu_new ();
-  glade_menuitem = gtk_menu_item_new_with_label (_("15 bits"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_video_depth_optionmenu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("16 bits"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_video_depth_optionmenu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("32 bits"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_video_depth_optionmenu_menu), glade_menuitem);
-  gtk_option_menu_set_menu (GTK_OPTION_MENU (preferences_video_depth_optionmenu), preferences_video_depth_optionmenu_menu);
-  gtk_option_menu_set_history (GTK_OPTION_MENU (preferences_video_depth_optionmenu), 1);
-
-  preferences_video_fullscreen_depth = gtk_label_new (_("Fullscreen depth:"));
-  gtk_widget_ref (preferences_video_fullscreen_depth);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_fullscreen_depth", preferences_video_fullscreen_depth,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_fullscreen_depth);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_fullscreen_depth, 0, 1, 4, 5,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_video_fullscreen_depth), 0, 0.5);
-
-  preferences_video_fullscreen_depth_optionmenu = gtk_option_menu_new ();
-  gtk_widget_ref (preferences_video_fullscreen_depth_optionmenu);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_fullscreen_depth_optionmenu", preferences_video_fullscreen_depth_optionmenu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_fullscreen_depth_optionmenu);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_fullscreen_depth_optionmenu, 1, 2, 4, 5,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
-  preferences_video_fullscreen_depth_optionmenu_menu = gtk_menu_new ();
-  glade_menuitem = gtk_menu_item_new_with_label (_("15 bits"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_video_fullscreen_depth_optionmenu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("16 bits"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_video_fullscreen_depth_optionmenu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("32 bits"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_video_fullscreen_depth_optionmenu_menu), glade_menuitem);
-  gtk_option_menu_set_menu (GTK_OPTION_MENU (preferences_video_fullscreen_depth_optionmenu), preferences_video_fullscreen_depth_optionmenu_menu);
-  gtk_option_menu_set_history (GTK_OPTION_MENU (preferences_video_fullscreen_depth_optionmenu), 2);
-
-  preferences_video_fullscreen_checkbutton = gtk_check_button_new_with_label (_("Fullscreen on play"));
-  gtk_widget_ref (preferences_video_fullscreen_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_fullscreen_checkbutton", preferences_video_fullscreen_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_fullscreen_checkbutton);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_fullscreen_checkbutton, 0, 1, 6, 7,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_video_grayscale_checkbutton = gtk_check_button_new_with_label (_("Grayscale"));
-  gtk_widget_ref (preferences_video_grayscale_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_grayscale_checkbutton", preferences_video_grayscale_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_grayscale_checkbutton);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_grayscale_checkbutton, 1, 2, 6, 7,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_video_gamma_label = gtk_label_new (_("Gamma:"));
-  gtk_widget_ref (preferences_video_gamma_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_gamma_label", preferences_video_gamma_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_gamma_label);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_gamma_label, 0, 1, 5, 6,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_video_gamma_label), 0, 0.5);
-
-  spinbutton4_adj = gtk_adjustment_new (0, 0, 5, 0.1, 10, 10);
-  spinbutton4 = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton4_adj), 1, 1);
-  gtk_widget_ref (spinbutton4);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "spinbutton4", spinbutton4,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (spinbutton4);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), spinbutton4, 1, 2, 5, 6,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-
-  preferences_video = gtk_label_new (_("Video"));
-  gtk_widget_ref (preferences_video);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video", preferences_video,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 4), preferences_video);
-
-  preference_audio_table = gtk_table_new (6, 2, FALSE);
-  gtk_widget_ref (preference_audio_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preference_audio_table", preference_audio_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preference_audio_table);
-  gtk_container_add (GTK_CONTAINER (preferences_notebook), preference_audio_table);
-  gtk_container_set_border_width (GTK_CONTAINER (preference_audio_table), 5);
-  gtk_table_set_row_spacings (GTK_TABLE (preference_audio_table), 5);
-  gtk_table_set_col_spacings (GTK_TABLE (preference_audio_table), 5);
-
-  preferences_audio_spdif_checkbutton = gtk_check_button_new_with_label (_("Spdif output"));
-  gtk_widget_ref (preferences_audio_spdif_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_spdif_checkbutton", preferences_audio_spdif_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_spdif_checkbutton);
-  gtk_table_attach (GTK_TABLE (preference_audio_table), preferences_audio_spdif_checkbutton, 0, 2, 5, 6,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_audio_output_label = gtk_label_new (_("Default output: "));
-  gtk_widget_ref (preferences_audio_output_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_output_label", preferences_audio_output_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_output_label);
-  gtk_table_attach (GTK_TABLE (preference_audio_table), preferences_audio_output_label, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_audio_output_label), 0, 0.5);
-
-  preferences_audio_output_combo = gnome_entry_new (NULL);
-  gtk_widget_ref (preferences_audio_output_combo);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_output_combo", preferences_audio_output_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_output_combo);
-  gtk_table_attach (GTK_TABLE (preference_audio_table), preferences_audio_output_combo, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_audio_output_entry = gnome_entry_gtk_entry (GNOME_ENTRY (preferences_audio_output_combo));
-  gtk_widget_ref (preferences_audio_output_entry);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_output_entry", preferences_audio_output_entry,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_output_entry);
-
-  preferences_audio_frequency_label = gtk_label_new (_("Frequency: "));
-  gtk_widget_ref (preferences_audio_frequency_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_frequency_label", preferences_audio_frequency_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_frequency_label);
-  gtk_table_attach (GTK_TABLE (preference_audio_table), preferences_audio_frequency_label, 0, 1, 2, 3,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_audio_frequency_label), 0, 0.5);
-
-  preferences_audio_frequency_optionmenu = gtk_option_menu_new ();
-  gtk_widget_ref (preferences_audio_frequency_optionmenu);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_frequency_optionmenu", preferences_audio_frequency_optionmenu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_frequency_optionmenu);
-  gtk_table_attach (GTK_TABLE (preference_audio_table), preferences_audio_frequency_optionmenu, 1, 2, 2, 3,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  preferences_audio_frequency_optionmenu_menu = gtk_menu_new ();
-  glade_menuitem = gtk_menu_item_new_with_label (_("48000 Hz"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_audio_frequency_optionmenu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("44100 Hz"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_audio_frequency_optionmenu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("32000 Hz"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_audio_frequency_optionmenu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("22050 Hz"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_audio_frequency_optionmenu_menu), glade_menuitem);
-  gtk_option_menu_set_menu (GTK_OPTION_MENU (preferences_audio_frequency_optionmenu), preferences_audio_frequency_optionmenu_menu);
-
-  preferences_audio_quality_label = gtk_label_new (_("Quality: "));
-  gtk_widget_ref (preferences_audio_quality_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_quality_label", preferences_audio_quality_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_quality_label);
-  gtk_table_attach (GTK_TABLE (preference_audio_table), preferences_audio_quality_label, 0, 1, 3, 4,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_audio_quality_label), 0, 0.5);
-
-  preferences_audio_quality_optionmenu = gtk_option_menu_new ();
-  gtk_widget_ref (preferences_audio_quality_optionmenu);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_quality_optionmenu", preferences_audio_quality_optionmenu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_quality_optionmenu);
-  gtk_table_attach (GTK_TABLE (preference_audio_table), preferences_audio_quality_optionmenu, 1, 2, 3, 4,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  preferences_audio_quality_optionmenu_menu = gtk_menu_new ();
-  glade_menuitem = gtk_menu_item_new_with_label (_("16 bits"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_audio_quality_optionmenu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("8 bits"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_audio_quality_optionmenu_menu), glade_menuitem);
-  gtk_option_menu_set_menu (GTK_OPTION_MENU (preferences_audio_quality_optionmenu), preferences_audio_quality_optionmenu_menu);
-
-  preferences_audio_channels_label = gtk_label_new (_("Channels: "));
-  gtk_widget_ref (preferences_audio_channels_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_channels_label", preferences_audio_channels_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_channels_label);
-  gtk_table_attach (GTK_TABLE (preference_audio_table), preferences_audio_channels_label, 0, 1, 4, 5,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_audio_channels_label), 0, 0.5);
-
-  preferences_audio_channels_optionmenu = gtk_option_menu_new ();
-  gtk_widget_ref (preferences_audio_channels_optionmenu);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_channels_optionmenu", preferences_audio_channels_optionmenu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_channels_optionmenu);
-  gtk_table_attach (GTK_TABLE (preference_audio_table), preferences_audio_channels_optionmenu, 1, 2, 4, 5,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  preferences_audio_channels_optionmenu_menu = gtk_menu_new ();
-  glade_menuitem = gtk_menu_item_new_with_label (_("Mono"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_audio_channels_optionmenu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("Stereo"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_audio_channels_optionmenu_menu), glade_menuitem);
-  gtk_option_menu_set_menu (GTK_OPTION_MENU (preferences_audio_channels_optionmenu), preferences_audio_channels_optionmenu_menu);
-  gtk_option_menu_set_history (GTK_OPTION_MENU (preferences_audio_channels_optionmenu), 1);
-
-  preferences_audio_device_label = gtk_label_new (_("Default device:"));
-  gtk_widget_ref (preferences_audio_device_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_device_label", preferences_audio_device_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_device_label);
-  gtk_table_attach (GTK_TABLE (preference_audio_table), preferences_audio_device_label, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_audio_device_label), 0, 0.5);
-
-  preferences_audio_device_combo = gnome_entry_new (NULL);
-  gtk_widget_ref (preferences_audio_device_combo);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_device_combo", preferences_audio_device_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_device_combo);
-  gtk_table_attach (GTK_TABLE (preference_audio_table), preferences_audio_device_combo, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_audio_device_entry = gnome_entry_gtk_entry (GNOME_ENTRY (preferences_audio_device_combo));
-  gtk_widget_ref (preferences_audio_device_entry);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_device_entry", preferences_audio_device_entry,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_device_entry);
-
-  preferences_audio = gtk_label_new (_("Audio"));
-  gtk_widget_ref (preferences_audio);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio", preferences_audio,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 5), preferences_audio);
-
-  preference_playlist_table = gtk_table_new (3, 1, FALSE);
-  gtk_widget_ref (preference_playlist_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preference_playlist_table", preference_playlist_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preference_playlist_table);
-  gtk_container_add (GTK_CONTAINER (preferences_notebook), preference_playlist_table);
-  gtk_container_set_border_width (GTK_CONTAINER (preference_playlist_table), 5);
-  gtk_table_set_row_spacings (GTK_TABLE (preference_playlist_table), 5);
-  gtk_table_set_col_spacings (GTK_TABLE (preference_playlist_table), 5);
-
-  preferences_playlist_startup_checkbutton = gtk_check_button_new_with_label (_("Launch on startup"));
-  gtk_widget_ref (preferences_playlist_startup_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_playlist_startup_checkbutton", preferences_playlist_startup_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_playlist_startup_checkbutton);
-  gtk_table_attach (GTK_TABLE (preference_playlist_table), preferences_playlist_startup_checkbutton, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_playlist_loop_checkbutton = gtk_check_button_new_with_label (_("Loop on playlist end"));
-  gtk_widget_ref (preferences_playlist_loop_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_playlist_loop_checkbutton", preferences_playlist_loop_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_playlist_loop_checkbutton);
-  gtk_table_attach (GTK_TABLE (preference_playlist_table), preferences_playlist_loop_checkbutton, 0, 1, 2, 3,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_playlist_enqueue_checkbutton = gtk_check_button_new_with_label (_("Enqueue as default"));
-  gtk_widget_ref (preferences_playlist_enqueue_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_playlist_enqueue_checkbutton", preferences_playlist_enqueue_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_playlist_enqueue_checkbutton);
-  gtk_table_attach (GTK_TABLE (preference_playlist_table), preferences_playlist_enqueue_checkbutton, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_playlist = gtk_label_new (_("Playlist"));
-  gtk_widget_ref (preferences_playlist);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_playlist", preferences_playlist,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_playlist);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 6), preferences_playlist);
-
-  preferences_misc_table = gtk_table_new (1, 2, FALSE);
-  gtk_widget_ref (preferences_misc_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_table", preferences_misc_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_table);
-  gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_misc_table);
-  gtk_container_set_border_width (GTK_CONTAINER (preferences_misc_table), 5);
-  gtk_table_set_row_spacings (GTK_TABLE (preferences_misc_table), 5);
-  gtk_table_set_col_spacings (GTK_TABLE (preferences_misc_table), 5);
-
-  preferences_misc_associated_files_frame = gtk_frame_new (_("Files associated with vlc"));
-  gtk_widget_ref (preferences_misc_associated_files_frame);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_associated_files_frame", preferences_misc_associated_files_frame,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_associated_files_frame);
-  gtk_table_attach (GTK_TABLE (preferences_misc_table), preferences_misc_associated_files_frame, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_FILL), 0, 0);
-  gtk_widget_set_sensitive (preferences_misc_associated_files_frame, FALSE);
-  gtk_frame_set_label_align (GTK_FRAME (preferences_misc_associated_files_frame), 0.05, 0.5);
-
-  preferences_misc_associated_table = gtk_table_new (4, 1, FALSE);
-  gtk_widget_ref (preferences_misc_associated_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_associated_table", preferences_misc_associated_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_associated_table);
-  gtk_container_add (GTK_CONTAINER (preferences_misc_associated_files_frame), preferences_misc_associated_table);
-
-  preferences_misc_ts_checkbutton = gtk_check_button_new_with_label (_("ts"));
-  gtk_widget_ref (preferences_misc_ts_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_ts_checkbutton", preferences_misc_ts_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_ts_checkbutton);
-  gtk_table_attach (GTK_TABLE (preferences_misc_associated_table), preferences_misc_ts_checkbutton, 0, 1, 3, 4,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-
-  preferences_misc_vob_checkbutton = gtk_check_button_new_with_label (_("vob"));
-  gtk_widget_ref (preferences_misc_vob_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_vob_checkbutton", preferences_misc_vob_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_vob_checkbutton);
-  gtk_table_attach (GTK_TABLE (preferences_misc_associated_table), preferences_misc_vob_checkbutton, 0, 1, 2, 3,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-
-  preferences_misc_mp2_checkbutton = gtk_check_button_new_with_label (_("mp2"));
-  gtk_widget_ref (preferences_misc_mp2_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_mp2_checkbutton", preferences_misc_mp2_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_mp2_checkbutton);
-  gtk_table_attach (GTK_TABLE (preferences_misc_associated_table), preferences_misc_mp2_checkbutton, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-
-  preferences_misc_mpeg_checkbutton = gtk_check_button_new_with_label (_("mpeg"));
-  gtk_widget_ref (preferences_misc_mpeg_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_mpeg_checkbutton", preferences_misc_mpeg_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_mpeg_checkbutton);
-  gtk_table_attach (GTK_TABLE (preferences_misc_associated_table), preferences_misc_mpeg_checkbutton, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-
-  preferences_misc_message_frame = gtk_frame_new (_("Messages"));
-  gtk_widget_ref (preferences_misc_message_frame);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_message_frame", preferences_misc_message_frame,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_message_frame);
-  gtk_table_attach (GTK_TABLE (preferences_misc_table), preferences_misc_message_frame, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_FILL), 0, 0);
-  gtk_frame_set_label_align (GTK_FRAME (preferences_misc_message_frame), 0.05, 0.5);
-
-  preferences_misc_message_table = gtk_table_new (1, 2, FALSE);
-  gtk_widget_ref (preferences_misc_message_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_message_table", preferences_misc_message_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_message_table);
-  gtk_container_add (GTK_CONTAINER (preferences_misc_message_frame), preferences_misc_message_table);
-
-  preferences_misc_messages_label = gtk_label_new (_("Warning level: "));
-  gtk_widget_ref (preferences_misc_messages_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_messages_label", preferences_misc_messages_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_messages_label);
-  gtk_table_attach (GTK_TABLE (preferences_misc_message_table), preferences_misc_messages_label, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-
-  preferences_misc_messages_spinbutton_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 10);
-  preferences_misc_messages_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (preferences_misc_messages_spinbutton_adj), 1, 0);
-  gtk_widget_ref (preferences_misc_messages_spinbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_messages_spinbutton", preferences_misc_messages_spinbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_messages_spinbutton);
-  gtk_table_attach (GTK_TABLE (preferences_misc_message_table), preferences_misc_messages_spinbutton, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-
-  preferences_misc = gtk_label_new (_("Misc"));
-  gtk_widget_ref (preferences_misc);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc", preferences_misc,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 7), preferences_misc);
-
-  preferences_dialog = GNOME_DIALOG (intf_preferences)->action_area;
-  gtk_object_set_data (GTK_OBJECT (intf_preferences), "preferences_dialog", preferences_dialog);
-  gtk_widget_show (preferences_dialog);
-  gtk_button_box_set_layout (GTK_BUTTON_BOX (preferences_dialog), GTK_BUTTONBOX_END);
-  gtk_button_box_set_spacing (GTK_BUTTON_BOX (preferences_dialog), 8);
-
-  gnome_dialog_append_button (GNOME_DIALOG (intf_preferences), GNOME_STOCK_BUTTON_OK);
-  preferences_ok = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_preferences)->buttons)->data);
-  gtk_widget_ref (preferences_ok);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_ok", preferences_ok,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_ok);
-  GTK_WIDGET_SET_FLAGS (preferences_ok, GTK_CAN_DEFAULT);
-
-  gnome_dialog_append_button (GNOME_DIALOG (intf_preferences), GNOME_STOCK_BUTTON_APPLY);
-  preferences_apply = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_preferences)->buttons)->data);
-  gtk_widget_ref (preferences_apply);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_apply", preferences_apply,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_apply);
-  GTK_WIDGET_SET_FLAGS (preferences_apply, GTK_CAN_DEFAULT);
-
-  gnome_dialog_append_button (GNOME_DIALOG (intf_preferences), GNOME_STOCK_BUTTON_CANCEL);
-  preferences_cancel = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_preferences)->buttons)->data);
-  gtk_widget_ref (preferences_cancel);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_cancel", preferences_cancel,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_cancel);
-  GTK_WIDGET_SET_FLAGS (preferences_cancel, GTK_CAN_DEFAULT);
-
-  gtk_signal_connect (GTK_OBJECT (preferences_ok), "clicked",
-                      GTK_SIGNAL_FUNC (GtkPreferencesOk),
-                      "intf_preferences");
-  gtk_signal_connect (GTK_OBJECT (preferences_apply), "clicked",
-                      GTK_SIGNAL_FUNC (GtkPreferencesApply),
-                      "intf_preferences");
-  gtk_signal_connect (GTK_OBJECT (preferences_cancel), "clicked",
-                      GTK_SIGNAL_FUNC (GtkPreferencesCancel),
-                      "intf_preferences");
-
-  return intf_preferences;
-}
-
 GtkWidget*
 create_intf_open (void)
 {
index 8c368a9d0005bb17a1e51a7689efd0d22e0a5e8e..ffa3f65fdc36d3ae0e53b7c48872950724bfc36c 100644 (file)
@@ -11,6 +11,5 @@ GtkWidget* create_intf_disc (void);
 GtkWidget* create_intf_network (void);
 GtkWidget* create_intf_playlist (void);
 GtkWidget* create_intf_jump (void);
-GtkWidget* create_intf_preferences (void);
 GtkWidget* create_intf_open (void);
 GtkWidget* create_intf_messages (void);
index ff2a578de3601fb6503517953325e44e1aac5f5a..24d8266dcca0325fd897d8fa793b485e47f64863 100644 (file)
@@ -2901,1900 +2901,6 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;</label>
   </widget>
 </widget>
 
-<widget>
-  <class>GtkDialog</class>
-  <name>intf_preferences</name>
-  <title>Preferences</title>
-  <type>GTK_WINDOW_TOPLEVEL</type>
-  <position>GTK_WIN_POS_NONE</position>
-  <modal>False</modal>
-  <allow_shrink>True</allow_shrink>
-  <allow_grow>True</allow_grow>
-  <auto_shrink>False</auto_shrink>
-
-  <widget>
-    <class>GtkVBox</class>
-    <child_name>Dialog:vbox</child_name>
-    <name>dialog-vbox5</name>
-    <border_width>5</border_width>
-    <homogeneous>False</homogeneous>
-    <spacing>5</spacing>
-
-    <widget>
-      <class>GtkHBox</class>
-      <child_name>Dialog:action_area</child_name>
-      <name>dialog-action_area4</name>
-      <border_width>10</border_width>
-      <homogeneous>True</homogeneous>
-      <spacing>5</spacing>
-      <child>
-       <padding>0</padding>
-       <expand>False</expand>
-       <fill>True</fill>
-       <pack>GTK_PACK_END</pack>
-      </child>
-
-      <widget>
-       <class>GtkButton</class>
-       <name>preferences_ok_button</name>
-       <can_focus>True</can_focus>
-       <signal>
-         <name>clicked</name>
-         <handler>GtkPreferencesOk</handler>
-         <data>&quot;intf_preferences&quot;</data>
-         <last_modification_time>Mon, 14 May 2001 21:21:39 GMT</last_modification_time>
-       </signal>
-       <label>Ok</label>
-       <relief>GTK_RELIEF_NORMAL</relief>
-       <child>
-         <padding>0</padding>
-         <expand>True</expand>
-         <fill>True</fill>
-       </child>
-      </widget>
-
-      <widget>
-       <class>GtkButton</class>
-       <name>preferences_apply_button</name>
-       <can_focus>True</can_focus>
-       <signal>
-         <name>clicked</name>
-         <handler>GtkPreferencesApply</handler>
-         <data>&quot;intf_preferences&quot;</data>
-         <last_modification_time>Mon, 14 May 2001 21:22:10 GMT</last_modification_time>
-       </signal>
-       <label>Apply</label>
-       <relief>GTK_RELIEF_NORMAL</relief>
-       <child>
-         <padding>0</padding>
-         <expand>True</expand>
-         <fill>True</fill>
-       </child>
-      </widget>
-
-      <widget>
-       <class>GtkButton</class>
-       <name>preferences_cancel_button</name>
-       <can_focus>True</can_focus>
-       <signal>
-         <name>clicked</name>
-         <handler>GtkPreferencesCancel</handler>
-         <data>&quot;intf_preferences&quot;</data>
-         <last_modification_time>Mon, 14 May 2001 21:22:46 GMT</last_modification_time>
-       </signal>
-       <label>Cancel</label>
-       <relief>GTK_RELIEF_NORMAL</relief>
-       <child>
-         <padding>0</padding>
-         <expand>True</expand>
-         <fill>True</fill>
-       </child>
-      </widget>
-    </widget>
-
-    <widget>
-      <class>GtkNotebook</class>
-      <name>preferences_notebook</name>
-      <can_focus>True</can_focus>
-      <show_tabs>True</show_tabs>
-      <show_border>True</show_border>
-      <tab_pos>GTK_POS_TOP</tab_pos>
-      <scrollable>False</scrollable>
-      <tab_hborder>2</tab_hborder>
-      <tab_vborder>2</tab_vborder>
-      <popup_enable>False</popup_enable>
-      <child>
-       <padding>0</padding>
-       <expand>True</expand>
-       <fill>True</fill>
-      </child>
-
-      <widget>
-       <class>GtkTable</class>
-       <name>preferences_file_table</name>
-       <border_width>5</border_width>
-       <rows>1</rows>
-       <columns>3</columns>
-       <homogeneous>False</homogeneous>
-       <row_spacing>5</row_spacing>
-       <column_spacing>5</column_spacing>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preferences_file_path_label</name>
-         <label>Default path:</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>0</top_attach>
-           <bottom_attach>1</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>False</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkCombo</class>
-         <name>preferences_file_path_combo</name>
-         <value_in_list>False</value_in_list>
-         <ok_if_empty>True</ok_if_empty>
-         <case_sensitive>False</case_sensitive>
-         <use_arrows>True</use_arrows>
-         <use_arrows_always>False</use_arrows_always>
-         <items></items>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>0</top_attach>
-           <bottom_attach>1</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-
-         <widget>
-           <class>GtkEntry</class>
-           <child_name>GtkCombo:entry</child_name>
-           <name>preferences_file_path_entry</name>
-           <can_focus>True</can_focus>
-           <editable>True</editable>
-           <text_visible>True</text_visible>
-           <text_max_length>0</text_max_length>
-           <text></text>
-         </widget>
-       </widget>
-
-       <widget>
-         <class>GtkButton</class>
-         <name>preferences_file_path_button</name>
-         <can_focus>True</can_focus>
-         <label>Browse</label>
-         <relief>GTK_RELIEF_NORMAL</relief>
-         <child>
-           <left_attach>2</left_attach>
-           <right_attach>3</right_attach>
-           <top_attach>0</top_attach>
-           <bottom_attach>1</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-      </widget>
-
-      <widget>
-       <class>GtkLabel</class>
-       <child_name>Notebook:tab</child_name>
-       <name>preferences_file</name>
-       <label>File</label>
-       <justify>GTK_JUSTIFY_CENTER</justify>
-       <wrap>False</wrap>
-       <xalign>0.5</xalign>
-       <yalign>0.5</yalign>
-       <xpad>0</xpad>
-       <ypad>0</ypad>
-      </widget>
-
-      <widget>
-       <class>GtkTable</class>
-       <name>preferences_disc_table</name>
-       <border_width>5</border_width>
-       <rows>2</rows>
-       <columns>3</columns>
-       <homogeneous>False</homogeneous>
-       <row_spacing>5</row_spacing>
-       <column_spacing>5</column_spacing>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preferences_disc_vcd_label</name>
-         <label>Default VCD path</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>1</top_attach>
-           <bottom_attach>2</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>False</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preference_disc_dvd_label</name>
-         <label>Default DVD path:</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>0</top_attach>
-           <bottom_attach>1</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>False</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkCombo</class>
-         <name>preferences_disc_dvd_combo</name>
-         <value_in_list>False</value_in_list>
-         <ok_if_empty>True</ok_if_empty>
-         <case_sensitive>False</case_sensitive>
-         <use_arrows>True</use_arrows>
-         <use_arrows_always>False</use_arrows_always>
-         <items>/dev/dvd
-</items>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>0</top_attach>
-           <bottom_attach>1</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-
-         <widget>
-           <class>GtkEntry</class>
-           <child_name>GtkCombo:entry</child_name>
-           <name>preferences_disc_dvd_entry</name>
-           <can_focus>True</can_focus>
-           <editable>True</editable>
-           <text_visible>True</text_visible>
-           <text_max_length>0</text_max_length>
-           <text>/dev/dvd</text>
-         </widget>
-       </widget>
-
-       <widget>
-         <class>GtkCombo</class>
-         <name>preferences_disc_vcd_combo</name>
-         <value_in_list>False</value_in_list>
-         <ok_if_empty>True</ok_if_empty>
-         <case_sensitive>False</case_sensitive>
-         <use_arrows>True</use_arrows>
-         <use_arrows_always>False</use_arrows_always>
-         <items>/dev/cdrom
-</items>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>1</top_attach>
-           <bottom_attach>2</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-
-         <widget>
-           <class>GtkEntry</class>
-           <child_name>GtkCombo:entry</child_name>
-           <name>preferences_disc_vcd_entry</name>
-           <can_focus>True</can_focus>
-           <editable>True</editable>
-           <text_visible>True</text_visible>
-           <text_max_length>0</text_max_length>
-           <text>/dev/cdrom</text>
-         </widget>
-       </widget>
-
-       <widget>
-         <class>GtkButton</class>
-         <name>preferences_disc_dvd_browse_button</name>
-         <can_focus>True</can_focus>
-         <label>Browse</label>
-         <relief>GTK_RELIEF_NORMAL</relief>
-         <child>
-           <left_attach>2</left_attach>
-           <right_attach>3</right_attach>
-           <top_attach>0</top_attach>
-           <bottom_attach>1</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkButton</class>
-         <name>preferences_disc_vcd_browse_button</name>
-         <can_focus>True</can_focus>
-         <label>Browse</label>
-         <relief>GTK_RELIEF_NORMAL</relief>
-         <child>
-           <left_attach>2</left_attach>
-           <right_attach>3</right_attach>
-           <top_attach>1</top_attach>
-           <bottom_attach>2</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-      </widget>
-
-      <widget>
-       <class>GtkLabel</class>
-       <child_name>Notebook:tab</child_name>
-       <name>preferences_disc</name>
-       <label>Disc</label>
-       <justify>GTK_JUSTIFY_CENTER</justify>
-       <wrap>False</wrap>
-       <xalign>0.5</xalign>
-       <yalign>0.5</yalign>
-       <xpad>0</xpad>
-       <ypad>0</ypad>
-      </widget>
-
-      <widget>
-       <class>GtkTable</class>
-       <name>preferences_network_table</name>
-       <border_width>5</border_width>
-       <rows>7</rows>
-       <columns>2</columns>
-       <homogeneous>False</homogeneous>
-       <row_spacing>5</row_spacing>
-       <column_spacing>5</column_spacing>
-
-       <widget>
-         <class>GtkCombo</class>
-         <name>preferences_network_server_combo</name>
-         <value_in_list>False</value_in_list>
-         <ok_if_empty>True</ok_if_empty>
-         <case_sensitive>False</case_sensitive>
-         <use_arrows>True</use_arrows>
-         <use_arrows_always>False</use_arrows_always>
-         <items></items>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>0</top_attach>
-           <bottom_attach>1</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-
-         <widget>
-           <class>GtkEntry</class>
-           <child_name>GtkCombo:entry</child_name>
-           <name>preferences_network_server_entry</name>
-           <can_focus>True</can_focus>
-           <editable>True</editable>
-           <text_visible>True</text_visible>
-           <text_max_length>0</text_max_length>
-           <text>vls </text>
-         </widget>
-       </widget>
-
-       <widget>
-         <class>GtkCombo</class>
-         <name>preferences_network_broadcast_combo</name>
-         <value_in_list>False</value_in_list>
-         <ok_if_empty>True</ok_if_empty>
-         <case_sensitive>False</case_sensitive>
-         <use_arrows>True</use_arrows>
-         <use_arrows_always>False</use_arrows_always>
-         <items></items>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>2</top_attach>
-           <bottom_attach>3</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-
-         <widget>
-           <class>GtkEntry</class>
-           <child_name>GtkCombo:entry</child_name>
-           <name>preferences_network_broadcast_entry</name>
-           <can_focus>True</can_focus>
-           <editable>True</editable>
-           <text_visible>True</text_visible>
-           <text_max_length>0</text_max_length>
-           <text></text>
-         </widget>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preferences_network_server_label</name>
-         <label>Default server:</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>0</top_attach>
-           <bottom_attach>1</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preferences_network_port_label</name>
-         <label>Default port:</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>1</top_attach>
-           <bottom_attach>2</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkSpinButton</class>
-         <name>preferences_network_port_spinbutton</name>
-         <can_focus>True</can_focus>
-         <climb_rate>1</climb_rate>
-         <digits>0</digits>
-         <numeric>False</numeric>
-         <update_policy>GTK_UPDATE_ALWAYS</update_policy>
-         <snap>False</snap>
-         <wrap>False</wrap>
-         <value>1234</value>
-         <lower>0</lower>
-         <upper>65535</upper>
-         <step>1</step>
-         <page>10</page>
-         <page_size>10</page_size>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>1</top_attach>
-           <bottom_attach>2</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preferences_network_broadcast_label</name>
-         <label>Broadcast address:</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>2</top_attach>
-           <bottom_attach>3</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkCheckButton</class>
-         <name>preferences_network_broadcast_checkbutton</name>
-         <can_focus>True</can_focus>
-         <label>Broadcast mode</label>
-         <active>False</active>
-         <draw_indicator>True</draw_indicator>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>3</top_attach>
-           <bottom_attach>4</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preferences_network_protocol_label</name>
-         <label>Default protocol:</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>4</top_attach>
-           <bottom_attach>7</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkRadioButton</class>
-         <name>preferences_network_ts_radiobutton</name>
-         <can_focus>True</can_focus>
-         <label>TS</label>
-         <active>False</active>
-         <draw_indicator>True</draw_indicator>
-         <group>preferences_network_protocol_group</group>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>4</top_attach>
-           <bottom_attach>5</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkRadioButton</class>
-         <name>preferences_network_rtp_radiobutton</name>
-         <can_focus>True</can_focus>
-         <label>RTP</label>
-         <active>False</active>
-         <draw_indicator>True</draw_indicator>
-         <group>preferences_network_protocol_group</group>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>5</top_attach>
-           <bottom_attach>6</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkRadioButton</class>
-         <name>preferences_network_http_radiobutton</name>
-         <can_focus>True</can_focus>
-         <label>HTTP</label>
-         <active>False</active>
-         <draw_indicator>True</draw_indicator>
-         <group>preferences_network_protocol_group</group>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>6</top_attach>
-           <bottom_attach>7</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-      </widget>
-
-      <widget>
-       <class>GtkLabel</class>
-       <child_name>Notebook:tab</child_name>
-       <name>preferences_network</name>
-       <label>Network</label>
-       <justify>GTK_JUSTIFY_CENTER</justify>
-       <wrap>False</wrap>
-       <xalign>0.5</xalign>
-       <yalign>0.5</yalign>
-       <xpad>0</xpad>
-       <ypad>0</ypad>
-      </widget>
-
-      <widget>
-       <class>GtkTable</class>
-       <name>preferences_interface_table</name>
-       <border_width>5</border_width>
-       <rows>1</rows>
-       <columns>2</columns>
-       <homogeneous>False</homogeneous>
-       <row_spacing>5</row_spacing>
-       <column_spacing>5</column_spacing>
-
-       <widget>
-         <class>GtkCombo</class>
-         <name>preferences_interface_combo</name>
-         <value_in_list>False</value_in_list>
-         <ok_if_empty>True</ok_if_empty>
-         <case_sensitive>False</case_sensitive>
-         <use_arrows>True</use_arrows>
-         <use_arrows_always>False</use_arrows_always>
-         <items>Gtk+
-Gnome
-</items>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>0</top_attach>
-           <bottom_attach>1</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-
-         <widget>
-           <class>GtkEntry</class>
-           <child_name>GtkCombo:entry</child_name>
-           <name>preferences_interface_entry</name>
-           <can_focus>True</can_focus>
-           <editable>True</editable>
-           <text_visible>True</text_visible>
-           <text_max_length>0</text_max_length>
-           <text>Gtk+</text>
-         </widget>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preferences_interface_label</name>
-         <label>Default interface:</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>0</top_attach>
-           <bottom_attach>1</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>False</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-      </widget>
-
-      <widget>
-       <class>GtkLabel</class>
-       <child_name>Notebook:tab</child_name>
-       <name>preferences_interface</name>
-       <label>Interface</label>
-       <justify>GTK_JUSTIFY_CENTER</justify>
-       <wrap>False</wrap>
-       <xalign>0.5</xalign>
-       <yalign>0.5</yalign>
-       <xpad>0</xpad>
-       <ypad>0</ypad>
-      </widget>
-
-      <widget>
-       <class>GtkTable</class>
-       <name>preferences_video_table</name>
-       <border_width>5</border_width>
-       <rows>7</rows>
-       <columns>2</columns>
-       <homogeneous>False</homogeneous>
-       <row_spacing>5</row_spacing>
-       <column_spacing>5</column_spacing>
-
-       <widget>
-         <class>GtkCombo</class>
-         <name>preferences_video_output_combo</name>
-         <value_in_list>False</value_in_list>
-         <ok_if_empty>True</ok_if_empty>
-         <case_sensitive>False</case_sensitive>
-         <use_arrows>True</use_arrows>
-         <use_arrows_always>False</use_arrows_always>
-         <items>sdl
-xvideo
-x11
-</items>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>0</top_attach>
-           <bottom_attach>1</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-
-         <widget>
-           <class>GtkEntry</class>
-           <child_name>GtkCombo:entry</child_name>
-           <name>preferences_video_output_entry</name>
-           <can_focus>True</can_focus>
-           <editable>True</editable>
-           <text_visible>True</text_visible>
-           <text_max_length>0</text_max_length>
-           <text>sdl</text>
-         </widget>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preferences_video_output_label</name>
-         <label>Default output:</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>0</top_attach>
-           <bottom_attach>1</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preferences_video_width_label</name>
-         <label>Default width:</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>1</top_attach>
-           <bottom_attach>2</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkSpinButton</class>
-         <name>preferences_video_height_spinbutton</name>
-         <can_focus>True</can_focus>
-         <climb_rate>1</climb_rate>
-         <digits>0</digits>
-         <numeric>False</numeric>
-         <update_policy>GTK_UPDATE_ALWAYS</update_policy>
-         <snap>False</snap>
-         <wrap>False</wrap>
-         <value>576</value>
-         <lower>0</lower>
-         <upper>1200</upper>
-         <step>1</step>
-         <page>10</page>
-         <page_size>10</page_size>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>2</top_attach>
-           <bottom_attach>3</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkSpinButton</class>
-         <name>preferences_video_width_spinbutton</name>
-         <can_focus>True</can_focus>
-         <climb_rate>1</climb_rate>
-         <digits>0</digits>
-         <numeric>False</numeric>
-         <update_policy>GTK_UPDATE_ALWAYS</update_policy>
-         <snap>False</snap>
-         <wrap>False</wrap>
-         <value>720</value>
-         <lower>100</lower>
-         <upper>1600</upper>
-         <step>1</step>
-         <page>10</page>
-         <page_size>10</page_size>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>1</top_attach>
-           <bottom_attach>2</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preferences_video_height_label</name>
-         <label>Default height:</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>2</top_attach>
-           <bottom_attach>3</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkOptionMenu</class>
-         <name>preferences_depth_optionmenu</name>
-         <can_focus>True</can_focus>
-         <items>15 bits
-16 bits
-32 bits
-</items>
-         <initial_choice>1</initial_choice>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>3</top_attach>
-           <bottom_attach>4</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preferences_video_depth_label</name>
-         <label>Default depth:</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>3</top_attach>
-           <bottom_attach>4</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preferences_video_fullscreen_depth_label</name>
-         <label>Fullscreen depth:</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>4</top_attach>
-           <bottom_attach>5</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkOptionMenu</class>
-         <name>preferences_video_fullscreen_depth_optionmenu</name>
-         <can_focus>True</can_focus>
-         <items>15 bits
-16 bits
-32 bits
-</items>
-         <initial_choice>2</initial_choice>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>4</top_attach>
-           <bottom_attach>5</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkSpinButton</class>
-         <name>preferences_video_gamma_spinbutton</name>
-         <can_focus>True</can_focus>
-         <climb_rate>1</climb_rate>
-         <digits>1</digits>
-         <numeric>False</numeric>
-         <update_policy>GTK_UPDATE_ALWAYS</update_policy>
-         <snap>False</snap>
-         <wrap>False</wrap>
-         <value>0</value>
-         <lower>0</lower>
-         <upper>10</upper>
-         <step>0.1</step>
-         <page>1</page>
-         <page_size>1</page_size>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>5</top_attach>
-           <bottom_attach>6</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preferences_video_gamma_label</name>
-         <label>Gamma:</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>5</top_attach>
-           <bottom_attach>6</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkCheckButton</class>
-         <name>preferences_video_fullscreen_checkbutton</name>
-         <can_focus>True</can_focus>
-         <label>Fullscreen on play</label>
-         <active>False</active>
-         <draw_indicator>True</draw_indicator>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>6</top_attach>
-           <bottom_attach>7</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkCheckButton</class>
-         <name>preferences_video_grayscale_checkbutton</name>
-         <can_focus>True</can_focus>
-         <label>Grayscale</label>
-         <active>False</active>
-         <draw_indicator>True</draw_indicator>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>6</top_attach>
-           <bottom_attach>7</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-      </widget>
-
-      <widget>
-       <class>GtkLabel</class>
-       <child_name>Notebook:tab</child_name>
-       <name>preferences_video</name>
-       <label>Video</label>
-       <justify>GTK_JUSTIFY_CENTER</justify>
-       <wrap>False</wrap>
-       <xalign>0.5</xalign>
-       <yalign>0.5</yalign>
-       <xpad>0</xpad>
-       <ypad>0</ypad>
-      </widget>
-
-      <widget>
-       <class>GtkTable</class>
-       <name>preferences_audio_table</name>
-       <border_width>5</border_width>
-       <rows>6</rows>
-       <columns>2</columns>
-       <homogeneous>False</homogeneous>
-       <row_spacing>5</row_spacing>
-       <column_spacing>5</column_spacing>
-
-       <widget>
-         <class>GtkOptionMenu</class>
-         <name>preferences_audio_quality_optionmenu</name>
-         <can_focus>True</can_focus>
-         <items>8 bits
-16 bits
-</items>
-         <initial_choice>1</initial_choice>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>2</top_attach>
-           <bottom_attach>3</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>False</xexpand>
-           <yexpand>False</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkOptionMenu</class>
-         <name>preferences_audio_frequency_optionmenu</name>
-         <can_focus>True</can_focus>
-         <items>48000 Hz
-44100 Hz
-</items>
-         <initial_choice>0</initial_choice>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>3</top_attach>
-           <bottom_attach>4</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>False</xexpand>
-           <yexpand>False</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkOptionMenu</class>
-         <name>preferences_audio_channels_optionmenu</name>
-         <can_focus>True</can_focus>
-         <items>Mono
-Stereo
-</items>
-         <initial_choice>1</initial_choice>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>4</top_attach>
-           <bottom_attach>5</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>False</xexpand>
-           <yexpand>False</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preferences_audio_output_label</name>
-         <label>Default output:</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>0</top_attach>
-           <bottom_attach>1</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preferences_audio_device_label</name>
-         <label>Default device:</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>1</top_attach>
-           <bottom_attach>2</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preferences_audio_quality_label</name>
-         <label>Quality:</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>2</top_attach>
-           <bottom_attach>3</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preferences_audio_frequency_label</name>
-         <label>Frequency:</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>3</top_attach>
-           <bottom_attach>4</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkLabel</class>
-         <name>preferences_audio_channel_label</name>
-         <label>Channels:</label>
-         <justify>GTK_JUSTIFY_CENTER</justify>
-         <wrap>False</wrap>
-         <xalign>0</xalign>
-         <yalign>0.5</yalign>
-         <xpad>0</xpad>
-         <ypad>0</ypad>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>4</top_attach>
-           <bottom_attach>5</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkCheckButton</class>
-         <name>preferences_audio_spdif_checkbutton</name>
-         <can_focus>True</can_focus>
-         <label>Spdif output</label>
-         <active>False</active>
-         <draw_indicator>True</draw_indicator>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>5</top_attach>
-           <bottom_attach>6</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkCombo</class>
-         <name>preferences_audio_output_combo</name>
-         <value_in_list>False</value_in_list>
-         <ok_if_empty>True</ok_if_empty>
-         <case_sensitive>False</case_sensitive>
-         <use_arrows>True</use_arrows>
-         <use_arrows_always>False</use_arrows_always>
-         <items>dsp
-alsa
-</items>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>0</top_attach>
-           <bottom_attach>1</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-
-         <widget>
-           <class>GtkEntry</class>
-           <child_name>GtkCombo:entry</child_name>
-           <name>preferences_audio_output_entry</name>
-           <can_focus>True</can_focus>
-           <editable>True</editable>
-           <text_visible>True</text_visible>
-           <text_max_length>0</text_max_length>
-           <text>dsp</text>
-         </widget>
-       </widget>
-
-       <widget>
-         <class>GtkCombo</class>
-         <name>preferences_audio_device_combo</name>
-         <value_in_list>False</value_in_list>
-         <ok_if_empty>True</ok_if_empty>
-         <case_sensitive>False</case_sensitive>
-         <use_arrows>True</use_arrows>
-         <use_arrows_always>False</use_arrows_always>
-         <items>/dev/dsp
-</items>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>1</top_attach>
-           <bottom_attach>2</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>True</xfill>
-           <yfill>False</yfill>
-         </child>
-
-         <widget>
-           <class>GtkEntry</class>
-           <child_name>GtkCombo:entry</child_name>
-           <name>preferences_audio_device_entry</name>
-           <can_focus>True</can_focus>
-           <editable>True</editable>
-           <text_visible>True</text_visible>
-           <text_max_length>0</text_max_length>
-           <text>/dev/dsp</text>
-         </widget>
-       </widget>
-      </widget>
-
-      <widget>
-       <class>GtkLabel</class>
-       <child_name>Notebook:tab</child_name>
-       <name>preferences_audio</name>
-       <label>Audio</label>
-       <justify>GTK_JUSTIFY_CENTER</justify>
-       <wrap>False</wrap>
-       <xalign>0.5</xalign>
-       <yalign>0.5</yalign>
-       <xpad>0</xpad>
-       <ypad>0</ypad>
-      </widget>
-
-      <widget>
-       <class>GtkTable</class>
-       <name>preferences_playlist_table</name>
-       <border_width>5</border_width>
-       <rows>3</rows>
-       <columns>1</columns>
-       <homogeneous>False</homogeneous>
-       <row_spacing>5</row_spacing>
-       <column_spacing>5</column_spacing>
-
-       <widget>
-         <class>GtkCheckButton</class>
-         <name>preferences_playlist_startup_checkbutton</name>
-         <can_focus>True</can_focus>
-         <label>Launch on startup</label>
-         <active>False</active>
-         <draw_indicator>True</draw_indicator>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>0</top_attach>
-           <bottom_attach>1</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkCheckButton</class>
-         <name>preferences_playlist_enqueue_checkbutton</name>
-         <can_focus>True</can_focus>
-         <label>Enqueue as default</label>
-         <active>False</active>
-         <draw_indicator>True</draw_indicator>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>1</top_attach>
-           <bottom_attach>2</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-
-       <widget>
-         <class>GtkCheckButton</class>
-         <name>preferences_playlist_loop_checkbutton</name>
-         <can_focus>True</can_focus>
-         <label>Loop on playlist end</label>
-         <active>False</active>
-         <draw_indicator>True</draw_indicator>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>2</top_attach>
-           <bottom_attach>3</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>True</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>False</yfill>
-         </child>
-       </widget>
-      </widget>
-
-      <widget>
-       <class>GtkLabel</class>
-       <child_name>Notebook:tab</child_name>
-       <name>preferences_playlist</name>
-       <label>Playlist</label>
-       <justify>GTK_JUSTIFY_CENTER</justify>
-       <wrap>False</wrap>
-       <xalign>0.5</xalign>
-       <yalign>0.5</yalign>
-       <xpad>0</xpad>
-       <ypad>0</ypad>
-      </widget>
-
-      <widget>
-       <class>GtkTable</class>
-       <name>preferences_misc_table</name>
-       <border_width>5</border_width>
-       <rows>1</rows>
-       <columns>2</columns>
-       <homogeneous>False</homogeneous>
-       <row_spacing>5</row_spacing>
-       <column_spacing>5</column_spacing>
-
-       <widget>
-         <class>GtkFrame</class>
-         <name>preferences_misc_associated_frame</name>
-         <label>Types associated with vlc</label>
-         <label_xalign>0</label_xalign>
-         <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
-         <child>
-           <left_attach>0</left_attach>
-           <right_attach>1</right_attach>
-           <top_attach>0</top_attach>
-           <bottom_attach>1</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>False</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>True</yfill>
-         </child>
-
-         <widget>
-           <class>GtkTable</class>
-           <name>preferences_misc_associated_table</name>
-           <rows>4</rows>
-           <columns>1</columns>
-           <homogeneous>False</homogeneous>
-           <row_spacing>0</row_spacing>
-           <column_spacing>0</column_spacing>
-
-           <widget>
-             <class>GtkCheckButton</class>
-             <name>preferences_misc_associated_checkbutton</name>
-             <can_focus>True</can_focus>
-             <label>mpeg</label>
-             <active>False</active>
-             <draw_indicator>True</draw_indicator>
-             <child>
-               <left_attach>0</left_attach>
-               <right_attach>1</right_attach>
-               <top_attach>0</top_attach>
-               <bottom_attach>1</bottom_attach>
-               <xpad>0</xpad>
-               <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
-
-           <widget>
-             <class>GtkCheckButton</class>
-             <name>preferences_misc_mp2_checkbutton</name>
-             <can_focus>True</can_focus>
-             <label>mp2</label>
-             <active>False</active>
-             <draw_indicator>True</draw_indicator>
-             <child>
-               <left_attach>0</left_attach>
-               <right_attach>1</right_attach>
-               <top_attach>1</top_attach>
-               <bottom_attach>2</bottom_attach>
-               <xpad>0</xpad>
-               <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
-
-           <widget>
-             <class>GtkCheckButton</class>
-             <name>preferences_misc_vob_checkbutton</name>
-             <can_focus>True</can_focus>
-             <label>vob</label>
-             <active>False</active>
-             <draw_indicator>True</draw_indicator>
-             <child>
-               <left_attach>0</left_attach>
-               <right_attach>1</right_attach>
-               <top_attach>2</top_attach>
-               <bottom_attach>3</bottom_attach>
-               <xpad>0</xpad>
-               <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
-
-           <widget>
-             <class>GtkCheckButton</class>
-             <name>preferences_misc_ts_checkbutton</name>
-             <can_focus>True</can_focus>
-             <label>ts</label>
-             <active>False</active>
-             <draw_indicator>True</draw_indicator>
-             <child>
-               <left_attach>0</left_attach>
-               <right_attach>1</right_attach>
-               <top_attach>3</top_attach>
-               <bottom_attach>4</bottom_attach>
-               <xpad>0</xpad>
-               <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
-         </widget>
-       </widget>
-
-       <widget>
-         <class>GtkFrame</class>
-         <name>preferences_misc_message_frame</name>
-         <label>Messages</label>
-         <label_xalign>0</label_xalign>
-         <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
-         <child>
-           <left_attach>1</left_attach>
-           <right_attach>2</right_attach>
-           <top_attach>0</top_attach>
-           <bottom_attach>1</bottom_attach>
-           <xpad>0</xpad>
-           <ypad>0</ypad>
-           <xexpand>True</xexpand>
-           <yexpand>False</yexpand>
-           <xshrink>False</xshrink>
-           <yshrink>False</yshrink>
-           <xfill>False</xfill>
-           <yfill>True</yfill>
-         </child>
-
-         <widget>
-           <class>GtkTable</class>
-           <name>preferences_misc_messages_table</name>
-           <rows>1</rows>
-           <columns>2</columns>
-           <homogeneous>False</homogeneous>
-           <row_spacing>0</row_spacing>
-           <column_spacing>0</column_spacing>
-
-           <widget>
-             <class>GtkLabel</class>
-             <name>preferences_misc_messages_label</name>
-             <label>Warning level: </label>
-             <justify>GTK_JUSTIFY_CENTER</justify>
-             <wrap>False</wrap>
-             <xalign>0</xalign>
-             <yalign>0.5</yalign>
-             <xpad>0</xpad>
-             <ypad>0</ypad>
-             <child>
-               <left_attach>0</left_attach>
-               <right_attach>1</right_attach>
-               <top_attach>0</top_attach>
-               <bottom_attach>1</bottom_attach>
-               <xpad>0</xpad>
-               <ypad>0</ypad>
-               <xexpand>False</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>True</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
-
-           <widget>
-             <class>GtkSpinButton</class>
-             <name>preferences_misc_messages_spinbutton</name>
-             <can_focus>True</can_focus>
-             <climb_rate>1</climb_rate>
-             <digits>0</digits>
-             <numeric>False</numeric>
-             <update_policy>GTK_UPDATE_ALWAYS</update_policy>
-             <snap>False</snap>
-             <wrap>False</wrap>
-             <value>0</value>
-             <lower>0</lower>
-             <upper>100</upper>
-             <step>1</step>
-             <page>10</page>
-             <page_size>10</page_size>
-             <child>
-               <left_attach>1</left_attach>
-               <right_attach>2</right_attach>
-               <top_attach>0</top_attach>
-               <bottom_attach>1</bottom_attach>
-               <xpad>0</xpad>
-               <ypad>0</ypad>
-               <xexpand>True</xexpand>
-               <yexpand>False</yexpand>
-               <xshrink>False</xshrink>
-               <yshrink>False</yshrink>
-               <xfill>False</xfill>
-               <yfill>False</yfill>
-             </child>
-           </widget>
-         </widget>
-       </widget>
-      </widget>
-
-      <widget>
-       <class>GtkLabel</class>
-       <child_name>Notebook:tab</child_name>
-       <name>preferences_misc</name>
-       <label>Misc</label>
-       <justify>GTK_JUSTIFY_CENTER</justify>
-       <wrap>False</wrap>
-       <xalign>0.5</xalign>
-       <yalign>0.5</yalign>
-       <xpad>0</xpad>
-       <ypad>0</ypad>
-      </widget>
-    </widget>
-  </widget>
-</widget>
-
 <widget>
   <class>GtkDialog</class>
   <name>intf_messages</name>
index 96fdc442a6306f42d8bed38f6e1b8bfa2f6bba7f..aac18bd3d142aaed25491a307edbaa4239ef4cb8 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_display.c: Gtk+ tools for main interface
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: gtk_display.c,v 1.18 2002/03/06 01:20:56 stef Exp $
+ * $Id: gtk_display.c,v 1.19 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -147,7 +147,7 @@ gint GtkModeManage( intf_thread_t * p_intf )
                                     p_input_bank->pp_input[0]->psz_source );
                 p_channel = GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
                            p_intf->p_sys->p_window ), "network_channel_box" ) );
-                if( config_GetIntVariable( INPUT_NETWORK_CHANNEL_VAR ) )
+                if( config_GetIntVariable( "network_channel" ) )
                 {
                     gtk_widget_show( GTK_WIDGET( p_channel ) );
                 }
@@ -193,7 +193,7 @@ gint GtkModeManage( intf_thread_t * p_intf )
     }
     else
     {
-        if( config_GetIntVariable( INPUT_NETWORK_CHANNEL_VAR ) )
+        if( config_GetIntVariable( "network_channel" ) )
         {
             gtk_widget_show( GTK_WIDGET( p_network_box ) );
 
index 8cd01fd669eff202ef0bd7676a6918543b69dbf3..b57860492284c65c882427638da43be9e0591815 100644 (file)
@@ -2304,1009 +2304,6 @@ create_intf_playlist (void)
   return intf_playlist;
 }
 
-GtkWidget*
-create_intf_preferences (void)
-{
-  GtkWidget *intf_preferences;
-  GtkWidget *dialog_vbox5;
-  GtkWidget *preferences_notebook;
-  GtkWidget *preferences_file_table;
-  GtkWidget *preferences_file_path_label;
-  GtkWidget *preferences_file_path_combo;
-  GtkWidget *preferences_file_path_entry;
-  GtkWidget *preferences_file_path_button;
-  GtkWidget *preferences_file;
-  GtkWidget *preferences_disc_table;
-  GtkWidget *preferences_disc_vcd_label;
-  GtkWidget *preference_disc_dvd_label;
-  GtkWidget *preferences_disc_dvd_combo;
-  GList *preferences_disc_dvd_combo_items = NULL;
-  GtkWidget *preferences_disc_dvd_entry;
-  GtkWidget *preferences_disc_vcd_combo;
-  GList *preferences_disc_vcd_combo_items = NULL;
-  GtkWidget *preferences_disc_vcd_entry;
-  GtkWidget *preferences_disc_dvd_browse_button;
-  GtkWidget *preferences_disc_vcd_browse_button;
-  GtkWidget *preferences_disc;
-  GtkWidget *preferences_network_table;
-  GtkWidget *preferences_network_server_combo;
-  GtkWidget *preferences_network_server_entry;
-  GtkWidget *preferences_network_broadcast_combo;
-  GtkWidget *preferences_network_broadcast_entry;
-  GtkWidget *preferences_network_server_label;
-  GtkWidget *preferences_network_port_label;
-  GtkObject *preferences_network_port_spinbutton_adj;
-  GtkWidget *preferences_network_port_spinbutton;
-  GtkWidget *preferences_network_broadcast_label;
-  GtkWidget *preferences_network_broadcast_checkbutton;
-  GtkWidget *preferences_network_protocol_label;
-  GSList *preferences_network_protocol_group_group = NULL;
-  GtkWidget *preferences_network_ts_radiobutton;
-  GtkWidget *preferences_network_rtp_radiobutton;
-  GtkWidget *preferences_network_http_radiobutton;
-  GtkWidget *preferences_network;
-  GtkWidget *preferences_interface_table;
-  GtkWidget *preferences_interface_combo;
-  GList *preferences_interface_combo_items = NULL;
-  GtkWidget *preferences_interface_entry;
-  GtkWidget *preferences_interface_label;
-  GtkWidget *preferences_interface;
-  GtkWidget *preferences_video_table;
-  GtkWidget *preferences_video_output_combo;
-  GList *preferences_video_output_combo_items = NULL;
-  GtkWidget *preferences_video_output_entry;
-  GtkWidget *preferences_video_output_label;
-  GtkWidget *preferences_video_width_label;
-  GtkObject *preferences_video_height_spinbutton_adj;
-  GtkWidget *preferences_video_height_spinbutton;
-  GtkObject *preferences_video_width_spinbutton_adj;
-  GtkWidget *preferences_video_width_spinbutton;
-  GtkWidget *preferences_video_height_label;
-  GtkWidget *preferences_depth_optionmenu;
-  GtkWidget *preferences_depth_optionmenu_menu;
-  GtkWidget *glade_menuitem;
-  GtkWidget *preferences_video_depth_label;
-  GtkWidget *preferences_video_fullscreen_depth_label;
-  GtkWidget *preferences_video_fullscreen_depth_optionmenu;
-  GtkWidget *preferences_video_fullscreen_depth_optionmenu_menu;
-  GtkObject *preferences_video_gamma_spinbutton_adj;
-  GtkWidget *preferences_video_gamma_spinbutton;
-  GtkWidget *preferences_video_gamma_label;
-  GtkWidget *preferences_video_fullscreen_checkbutton;
-  GtkWidget *preferences_video_grayscale_checkbutton;
-  GtkWidget *preferences_video;
-  GtkWidget *preferences_audio_table;
-  GtkWidget *preferences_audio_quality_optionmenu;
-  GtkWidget *preferences_audio_quality_optionmenu_menu;
-  GtkWidget *preferences_audio_frequency_optionmenu;
-  GtkWidget *preferences_audio_frequency_optionmenu_menu;
-  GtkWidget *preferences_audio_channels_optionmenu;
-  GtkWidget *preferences_audio_channels_optionmenu_menu;
-  GtkWidget *preferences_audio_output_label;
-  GtkWidget *preferences_audio_device_label;
-  GtkWidget *preferences_audio_quality_label;
-  GtkWidget *preferences_audio_frequency_label;
-  GtkWidget *preferences_audio_channel_label;
-  GtkWidget *preferences_audio_spdif_checkbutton;
-  GtkWidget *preferences_audio_output_combo;
-  GList *preferences_audio_output_combo_items = NULL;
-  GtkWidget *preferences_audio_output_entry;
-  GtkWidget *preferences_audio_device_combo;
-  GList *preferences_audio_device_combo_items = NULL;
-  GtkWidget *preferences_audio_device_entry;
-  GtkWidget *preferences_audio;
-  GtkWidget *preferences_playlist_table;
-  GtkWidget *preferences_playlist_startup_checkbutton;
-  GtkWidget *preferences_playlist_enqueue_checkbutton;
-  GtkWidget *preferences_playlist_loop_checkbutton;
-  GtkWidget *preferences_playlist;
-  GtkWidget *preferences_misc_table;
-  GtkWidget *preferences_misc_associated_frame;
-  GtkWidget *preferences_misc_associated_table;
-  GtkWidget *preferences_misc_associated_checkbutton;
-  GtkWidget *preferences_misc_mp2_checkbutton;
-  GtkWidget *preferences_misc_vob_checkbutton;
-  GtkWidget *preferences_misc_ts_checkbutton;
-  GtkWidget *preferences_misc_message_frame;
-  GtkWidget *preferences_misc_messages_table;
-  GtkWidget *preferences_misc_messages_label;
-  GtkObject *preferences_misc_messages_spinbutton_adj;
-  GtkWidget *preferences_misc_messages_spinbutton;
-  GtkWidget *preferences_misc;
-  GtkWidget *dialog_action_area4;
-  GtkWidget *preferences_ok_button;
-  GtkWidget *preferences_apply_button;
-  GtkWidget *preferences_cancel_button;
-
-  intf_preferences = gtk_dialog_new ();
-  gtk_object_set_data (GTK_OBJECT (intf_preferences), "intf_preferences", intf_preferences);
-  gtk_window_set_title (GTK_WINDOW (intf_preferences), _("Preferences"));
-  gtk_window_set_policy (GTK_WINDOW (intf_preferences), TRUE, TRUE, FALSE);
-
-  dialog_vbox5 = GTK_DIALOG (intf_preferences)->vbox;
-  gtk_object_set_data (GTK_OBJECT (intf_preferences), "dialog_vbox5", dialog_vbox5);
-  gtk_widget_show (dialog_vbox5);
-  gtk_container_set_border_width (GTK_CONTAINER (dialog_vbox5), 5);
-
-  preferences_notebook = gtk_notebook_new ();
-  gtk_widget_ref (preferences_notebook);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_notebook", preferences_notebook,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_notebook);
-  gtk_box_pack_start (GTK_BOX (dialog_vbox5), preferences_notebook, TRUE, TRUE, 0);
-
-  preferences_file_table = gtk_table_new (1, 3, FALSE);
-  gtk_widget_ref (preferences_file_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_file_table", preferences_file_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_file_table);
-  gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_file_table);
-  gtk_container_set_border_width (GTK_CONTAINER (preferences_file_table), 5);
-  gtk_table_set_row_spacings (GTK_TABLE (preferences_file_table), 5);
-  gtk_table_set_col_spacings (GTK_TABLE (preferences_file_table), 5);
-
-  preferences_file_path_label = gtk_label_new (_("Default path:"));
-  gtk_widget_ref (preferences_file_path_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_file_path_label", preferences_file_path_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_file_path_label);
-  gtk_table_attach (GTK_TABLE (preferences_file_table), preferences_file_path_label, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_file_path_label), 0, 0.5);
-
-  preferences_file_path_combo = gtk_combo_new ();
-  gtk_widget_ref (preferences_file_path_combo);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_file_path_combo", preferences_file_path_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_file_path_combo);
-  gtk_table_attach (GTK_TABLE (preferences_file_table), preferences_file_path_combo, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_file_path_entry = GTK_COMBO (preferences_file_path_combo)->entry;
-  gtk_widget_ref (preferences_file_path_entry);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_file_path_entry", preferences_file_path_entry,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_file_path_entry);
-
-  preferences_file_path_button = gtk_button_new_with_label (_("Browse"));
-  gtk_widget_ref (preferences_file_path_button);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_file_path_button", preferences_file_path_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_file_path_button);
-  gtk_table_attach (GTK_TABLE (preferences_file_table), preferences_file_path_button, 2, 3, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_file = gtk_label_new (_("File"));
-  gtk_widget_ref (preferences_file);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_file", preferences_file,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_file);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 0), preferences_file);
-
-  preferences_disc_table = gtk_table_new (2, 3, FALSE);
-  gtk_widget_ref (preferences_disc_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_table", preferences_disc_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_disc_table);
-  gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_disc_table);
-  gtk_container_set_border_width (GTK_CONTAINER (preferences_disc_table), 5);
-  gtk_table_set_row_spacings (GTK_TABLE (preferences_disc_table), 5);
-  gtk_table_set_col_spacings (GTK_TABLE (preferences_disc_table), 5);
-
-  preferences_disc_vcd_label = gtk_label_new (_("Default VCD path"));
-  gtk_widget_ref (preferences_disc_vcd_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_vcd_label", preferences_disc_vcd_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_disc_vcd_label);
-  gtk_table_attach (GTK_TABLE (preferences_disc_table), preferences_disc_vcd_label, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_disc_vcd_label), 0, 0.5);
-
-  preference_disc_dvd_label = gtk_label_new (_("Default DVD path:"));
-  gtk_widget_ref (preference_disc_dvd_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preference_disc_dvd_label", preference_disc_dvd_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preference_disc_dvd_label);
-  gtk_table_attach (GTK_TABLE (preferences_disc_table), preference_disc_dvd_label, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preference_disc_dvd_label), 0, 0.5);
-
-  preferences_disc_dvd_combo = gtk_combo_new ();
-  gtk_widget_ref (preferences_disc_dvd_combo);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_dvd_combo", preferences_disc_dvd_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_disc_dvd_combo);
-  gtk_table_attach (GTK_TABLE (preferences_disc_table), preferences_disc_dvd_combo, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  preferences_disc_dvd_combo_items = g_list_append (preferences_disc_dvd_combo_items, (gpointer) DVD_DEVICE);
-  gtk_combo_set_popdown_strings (GTK_COMBO (preferences_disc_dvd_combo), preferences_disc_dvd_combo_items);
-  g_list_free (preferences_disc_dvd_combo_items);
-
-  preferences_disc_dvd_entry = GTK_COMBO (preferences_disc_dvd_combo)->entry;
-  gtk_widget_ref (preferences_disc_dvd_entry);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_dvd_entry", preferences_disc_dvd_entry,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_disc_dvd_entry);
-  gtk_entry_set_text (GTK_ENTRY (preferences_disc_dvd_entry), DVD_DEVICE);
-
-  preferences_disc_vcd_combo = gtk_combo_new ();
-  gtk_widget_ref (preferences_disc_vcd_combo);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_vcd_combo", preferences_disc_vcd_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_disc_vcd_combo);
-  gtk_table_attach (GTK_TABLE (preferences_disc_table), preferences_disc_vcd_combo, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  preferences_disc_vcd_combo_items = g_list_append (preferences_disc_vcd_combo_items, (gpointer) _("/dev/cdrom"));
-  gtk_combo_set_popdown_strings (GTK_COMBO (preferences_disc_vcd_combo), preferences_disc_vcd_combo_items);
-  g_list_free (preferences_disc_vcd_combo_items);
-
-  preferences_disc_vcd_entry = GTK_COMBO (preferences_disc_vcd_combo)->entry;
-  gtk_widget_ref (preferences_disc_vcd_entry);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_vcd_entry", preferences_disc_vcd_entry,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_disc_vcd_entry);
-  gtk_entry_set_text (GTK_ENTRY (preferences_disc_vcd_entry), _("/dev/cdrom"));
-
-  preferences_disc_dvd_browse_button = gtk_button_new_with_label (_("Browse"));
-  gtk_widget_ref (preferences_disc_dvd_browse_button);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_dvd_browse_button", preferences_disc_dvd_browse_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_disc_dvd_browse_button);
-  gtk_table_attach (GTK_TABLE (preferences_disc_table), preferences_disc_dvd_browse_button, 2, 3, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_disc_vcd_browse_button = gtk_button_new_with_label (_("Browse"));
-  gtk_widget_ref (preferences_disc_vcd_browse_button);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc_vcd_browse_button", preferences_disc_vcd_browse_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_disc_vcd_browse_button);
-  gtk_table_attach (GTK_TABLE (preferences_disc_table), preferences_disc_vcd_browse_button, 2, 3, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_disc = gtk_label_new (_("Disc"));
-  gtk_widget_ref (preferences_disc);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_disc", preferences_disc,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_disc);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 1), preferences_disc);
-
-  preferences_network_table = gtk_table_new (7, 2, FALSE);
-  gtk_widget_ref (preferences_network_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_table", preferences_network_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_table);
-  gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_network_table);
-  gtk_container_set_border_width (GTK_CONTAINER (preferences_network_table), 5);
-  gtk_table_set_row_spacings (GTK_TABLE (preferences_network_table), 5);
-  gtk_table_set_col_spacings (GTK_TABLE (preferences_network_table), 5);
-
-  preferences_network_server_combo = gtk_combo_new ();
-  gtk_widget_ref (preferences_network_server_combo);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_server_combo", preferences_network_server_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_server_combo);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_server_combo, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_network_server_entry = GTK_COMBO (preferences_network_server_combo)->entry;
-  gtk_widget_ref (preferences_network_server_entry);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_server_entry", preferences_network_server_entry,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_server_entry);
-  gtk_entry_set_text (GTK_ENTRY (preferences_network_server_entry), _("vls "));
-
-  preferences_network_broadcast_combo = gtk_combo_new ();
-  gtk_widget_ref (preferences_network_broadcast_combo);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_broadcast_combo", preferences_network_broadcast_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_broadcast_combo);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_broadcast_combo, 1, 2, 2, 3,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_network_broadcast_entry = GTK_COMBO (preferences_network_broadcast_combo)->entry;
-  gtk_widget_ref (preferences_network_broadcast_entry);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_broadcast_entry", preferences_network_broadcast_entry,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_broadcast_entry);
-
-  preferences_network_server_label = gtk_label_new (_("Default server:"));
-  gtk_widget_ref (preferences_network_server_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_server_label", preferences_network_server_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_server_label);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_server_label, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_network_server_label), 0, 0.5);
-
-  preferences_network_port_label = gtk_label_new (_("Default port:"));
-  gtk_widget_ref (preferences_network_port_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_port_label", preferences_network_port_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_port_label);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_port_label, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_network_port_label), 0, 0.5);
-
-  preferences_network_port_spinbutton_adj = gtk_adjustment_new (1234, 0, 65535, 1, 10, 10);
-  preferences_network_port_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (preferences_network_port_spinbutton_adj), 1, 0);
-  gtk_widget_ref (preferences_network_port_spinbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_port_spinbutton", preferences_network_port_spinbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_port_spinbutton);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_port_spinbutton, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_network_broadcast_label = gtk_label_new (_("Broadcast address:"));
-  gtk_widget_ref (preferences_network_broadcast_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_broadcast_label", preferences_network_broadcast_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_broadcast_label);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_broadcast_label, 0, 1, 2, 3,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_network_broadcast_label), 0, 0.5);
-
-  preferences_network_broadcast_checkbutton = gtk_check_button_new_with_label (_("Broadcast mode"));
-  gtk_widget_ref (preferences_network_broadcast_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_broadcast_checkbutton", preferences_network_broadcast_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_broadcast_checkbutton);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_broadcast_checkbutton, 0, 1, 3, 4,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_network_protocol_label = gtk_label_new (_("Default protocol:"));
-  gtk_widget_ref (preferences_network_protocol_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_protocol_label", preferences_network_protocol_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_protocol_label);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_protocol_label, 0, 1, 4, 7,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_network_protocol_label), 0, 0.5);
-
-  preferences_network_ts_radiobutton = gtk_radio_button_new_with_label (preferences_network_protocol_group_group, _("TS"));
-  preferences_network_protocol_group_group = gtk_radio_button_group (GTK_RADIO_BUTTON (preferences_network_ts_radiobutton));
-  gtk_widget_ref (preferences_network_ts_radiobutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_ts_radiobutton", preferences_network_ts_radiobutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_ts_radiobutton);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_ts_radiobutton, 1, 2, 4, 5,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_network_rtp_radiobutton = gtk_radio_button_new_with_label (preferences_network_protocol_group_group, _("RTP"));
-  preferences_network_protocol_group_group = gtk_radio_button_group (GTK_RADIO_BUTTON (preferences_network_rtp_radiobutton));
-  gtk_widget_ref (preferences_network_rtp_radiobutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_rtp_radiobutton", preferences_network_rtp_radiobutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_rtp_radiobutton);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_rtp_radiobutton, 1, 2, 5, 6,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_network_http_radiobutton = gtk_radio_button_new_with_label (preferences_network_protocol_group_group, _("HTTP"));
-  preferences_network_protocol_group_group = gtk_radio_button_group (GTK_RADIO_BUTTON (preferences_network_http_radiobutton));
-  gtk_widget_ref (preferences_network_http_radiobutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network_http_radiobutton", preferences_network_http_radiobutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network_http_radiobutton);
-  gtk_table_attach (GTK_TABLE (preferences_network_table), preferences_network_http_radiobutton, 1, 2, 6, 7,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_network = gtk_label_new (_("Network"));
-  gtk_widget_ref (preferences_network);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_network", preferences_network,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_network);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 2), preferences_network);
-
-  preferences_interface_table = gtk_table_new (1, 2, FALSE);
-  gtk_widget_ref (preferences_interface_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_interface_table", preferences_interface_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_interface_table);
-  gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_interface_table);
-  gtk_container_set_border_width (GTK_CONTAINER (preferences_interface_table), 5);
-  gtk_table_set_row_spacings (GTK_TABLE (preferences_interface_table), 5);
-  gtk_table_set_col_spacings (GTK_TABLE (preferences_interface_table), 5);
-
-  preferences_interface_combo = gtk_combo_new ();
-  gtk_widget_ref (preferences_interface_combo);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_interface_combo", preferences_interface_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_interface_combo);
-  gtk_table_attach (GTK_TABLE (preferences_interface_table), preferences_interface_combo, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  preferences_interface_combo_items = g_list_append (preferences_interface_combo_items, (gpointer) _("Gtk+"));
-  preferences_interface_combo_items = g_list_append (preferences_interface_combo_items, (gpointer) _("Gnome"));
-  gtk_combo_set_popdown_strings (GTK_COMBO (preferences_interface_combo), preferences_interface_combo_items);
-  g_list_free (preferences_interface_combo_items);
-
-  preferences_interface_entry = GTK_COMBO (preferences_interface_combo)->entry;
-  gtk_widget_ref (preferences_interface_entry);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_interface_entry", preferences_interface_entry,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_interface_entry);
-  gtk_entry_set_text (GTK_ENTRY (preferences_interface_entry), _("Gtk+"));
-
-  preferences_interface_label = gtk_label_new (_("Default interface:"));
-  gtk_widget_ref (preferences_interface_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_interface_label", preferences_interface_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_interface_label);
-  gtk_table_attach (GTK_TABLE (preferences_interface_table), preferences_interface_label, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_interface_label), 0, 0.5);
-
-  preferences_interface = gtk_label_new (_("Interface"));
-  gtk_widget_ref (preferences_interface);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_interface", preferences_interface,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_interface);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 3), preferences_interface);
-
-  preferences_video_table = gtk_table_new (7, 2, FALSE);
-  gtk_widget_ref (preferences_video_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_table", preferences_video_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_table);
-  gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_video_table);
-  gtk_container_set_border_width (GTK_CONTAINER (preferences_video_table), 5);
-  gtk_table_set_row_spacings (GTK_TABLE (preferences_video_table), 5);
-  gtk_table_set_col_spacings (GTK_TABLE (preferences_video_table), 5);
-
-  preferences_video_output_combo = gtk_combo_new ();
-  gtk_widget_ref (preferences_video_output_combo);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_output_combo", preferences_video_output_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_output_combo);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_output_combo, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  preferences_video_output_combo_items = g_list_append (preferences_video_output_combo_items, (gpointer) _("sdl"));
-  preferences_video_output_combo_items = g_list_append (preferences_video_output_combo_items, (gpointer) _("xvideo"));
-  preferences_video_output_combo_items = g_list_append (preferences_video_output_combo_items, (gpointer) _("x11"));
-  gtk_combo_set_popdown_strings (GTK_COMBO (preferences_video_output_combo), preferences_video_output_combo_items);
-  g_list_free (preferences_video_output_combo_items);
-
-  preferences_video_output_entry = GTK_COMBO (preferences_video_output_combo)->entry;
-  gtk_widget_ref (preferences_video_output_entry);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_output_entry", preferences_video_output_entry,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_output_entry);
-  gtk_entry_set_text (GTK_ENTRY (preferences_video_output_entry), _("sdl"));
-
-  preferences_video_output_label = gtk_label_new (_("Default output:"));
-  gtk_widget_ref (preferences_video_output_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_output_label", preferences_video_output_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_output_label);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_output_label, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_video_output_label), 0, 0.5);
-
-  preferences_video_width_label = gtk_label_new (_("Default width:"));
-  gtk_widget_ref (preferences_video_width_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_width_label", preferences_video_width_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_width_label);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_width_label, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_video_width_label), 0, 0.5);
-
-  preferences_video_height_spinbutton_adj = gtk_adjustment_new (576, 0, 1200, 1, 10, 10);
-  preferences_video_height_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (preferences_video_height_spinbutton_adj), 1, 0);
-  gtk_widget_ref (preferences_video_height_spinbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_height_spinbutton", preferences_video_height_spinbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_height_spinbutton);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_height_spinbutton, 1, 2, 2, 3,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_video_width_spinbutton_adj = gtk_adjustment_new (720, 100, 1600, 1, 10, 10);
-  preferences_video_width_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (preferences_video_width_spinbutton_adj), 1, 0);
-  gtk_widget_ref (preferences_video_width_spinbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_width_spinbutton", preferences_video_width_spinbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_width_spinbutton);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_width_spinbutton, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_video_height_label = gtk_label_new (_("Default height:"));
-  gtk_widget_ref (preferences_video_height_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_height_label", preferences_video_height_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_height_label);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_height_label, 0, 1, 2, 3,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_video_height_label), 0, 0.5);
-
-  preferences_depth_optionmenu = gtk_option_menu_new ();
-  gtk_widget_ref (preferences_depth_optionmenu);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_depth_optionmenu", preferences_depth_optionmenu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_depth_optionmenu);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_depth_optionmenu, 1, 2, 3, 4,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  preferences_depth_optionmenu_menu = gtk_menu_new ();
-  glade_menuitem = gtk_menu_item_new_with_label (_("15 bits"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_depth_optionmenu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("16 bits"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_depth_optionmenu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("32 bits"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_depth_optionmenu_menu), glade_menuitem);
-  gtk_option_menu_set_menu (GTK_OPTION_MENU (preferences_depth_optionmenu), preferences_depth_optionmenu_menu);
-  gtk_option_menu_set_history (GTK_OPTION_MENU (preferences_depth_optionmenu), 1);
-
-  preferences_video_depth_label = gtk_label_new (_("Default depth:"));
-  gtk_widget_ref (preferences_video_depth_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_depth_label", preferences_video_depth_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_depth_label);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_depth_label, 0, 1, 3, 4,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_video_depth_label), 0, 0.5);
-
-  preferences_video_fullscreen_depth_label = gtk_label_new (_("Fullscreen depth:"));
-  gtk_widget_ref (preferences_video_fullscreen_depth_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_fullscreen_depth_label", preferences_video_fullscreen_depth_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_fullscreen_depth_label);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_fullscreen_depth_label, 0, 1, 4, 5,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_video_fullscreen_depth_label), 0, 0.5);
-
-  preferences_video_fullscreen_depth_optionmenu = gtk_option_menu_new ();
-  gtk_widget_ref (preferences_video_fullscreen_depth_optionmenu);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_fullscreen_depth_optionmenu", preferences_video_fullscreen_depth_optionmenu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_fullscreen_depth_optionmenu);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_fullscreen_depth_optionmenu, 1, 2, 4, 5,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  preferences_video_fullscreen_depth_optionmenu_menu = gtk_menu_new ();
-  glade_menuitem = gtk_menu_item_new_with_label (_("15 bits"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_video_fullscreen_depth_optionmenu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("16 bits"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_video_fullscreen_depth_optionmenu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("32 bits"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_video_fullscreen_depth_optionmenu_menu), glade_menuitem);
-  gtk_option_menu_set_menu (GTK_OPTION_MENU (preferences_video_fullscreen_depth_optionmenu), preferences_video_fullscreen_depth_optionmenu_menu);
-  gtk_option_menu_set_history (GTK_OPTION_MENU (preferences_video_fullscreen_depth_optionmenu), 2);
-
-  preferences_video_gamma_spinbutton_adj = gtk_adjustment_new (0, 0, 10, 0.1, 1, 1);
-  preferences_video_gamma_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (preferences_video_gamma_spinbutton_adj), 1, 1);
-  gtk_widget_ref (preferences_video_gamma_spinbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_gamma_spinbutton", preferences_video_gamma_spinbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_gamma_spinbutton);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_gamma_spinbutton, 1, 2, 5, 6,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_video_gamma_label = gtk_label_new (_("Gamma:"));
-  gtk_widget_ref (preferences_video_gamma_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_gamma_label", preferences_video_gamma_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_gamma_label);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_gamma_label, 0, 1, 5, 6,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_video_gamma_label), 0, 0.5);
-
-  preferences_video_fullscreen_checkbutton = gtk_check_button_new_with_label (_("Fullscreen on play"));
-  gtk_widget_ref (preferences_video_fullscreen_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_fullscreen_checkbutton", preferences_video_fullscreen_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_fullscreen_checkbutton);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_fullscreen_checkbutton, 0, 1, 6, 7,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_video_grayscale_checkbutton = gtk_check_button_new_with_label (_("Grayscale"));
-  gtk_widget_ref (preferences_video_grayscale_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video_grayscale_checkbutton", preferences_video_grayscale_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video_grayscale_checkbutton);
-  gtk_table_attach (GTK_TABLE (preferences_video_table), preferences_video_grayscale_checkbutton, 1, 2, 6, 7,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_video = gtk_label_new (_("Video"));
-  gtk_widget_ref (preferences_video);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_video", preferences_video,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_video);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 4), preferences_video);
-
-  preferences_audio_table = gtk_table_new (6, 2, FALSE);
-  gtk_widget_ref (preferences_audio_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_table", preferences_audio_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_table);
-  gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_audio_table);
-  gtk_container_set_border_width (GTK_CONTAINER (preferences_audio_table), 5);
-  gtk_table_set_row_spacings (GTK_TABLE (preferences_audio_table), 5);
-  gtk_table_set_col_spacings (GTK_TABLE (preferences_audio_table), 5);
-
-  preferences_audio_quality_optionmenu = gtk_option_menu_new ();
-  gtk_widget_ref (preferences_audio_quality_optionmenu);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_quality_optionmenu", preferences_audio_quality_optionmenu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_quality_optionmenu);
-  gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_quality_optionmenu, 1, 2, 2, 3,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  preferences_audio_quality_optionmenu_menu = gtk_menu_new ();
-  glade_menuitem = gtk_menu_item_new_with_label (_("8 bits"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_audio_quality_optionmenu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("16 bits"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_audio_quality_optionmenu_menu), glade_menuitem);
-  gtk_option_menu_set_menu (GTK_OPTION_MENU (preferences_audio_quality_optionmenu), preferences_audio_quality_optionmenu_menu);
-  gtk_option_menu_set_history (GTK_OPTION_MENU (preferences_audio_quality_optionmenu), 1);
-
-  preferences_audio_frequency_optionmenu = gtk_option_menu_new ();
-  gtk_widget_ref (preferences_audio_frequency_optionmenu);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_frequency_optionmenu", preferences_audio_frequency_optionmenu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_frequency_optionmenu);
-  gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_frequency_optionmenu, 1, 2, 3, 4,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  preferences_audio_frequency_optionmenu_menu = gtk_menu_new ();
-  glade_menuitem = gtk_menu_item_new_with_label (_("48000 Hz"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_audio_frequency_optionmenu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("44100 Hz"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_audio_frequency_optionmenu_menu), glade_menuitem);
-  gtk_option_menu_set_menu (GTK_OPTION_MENU (preferences_audio_frequency_optionmenu), preferences_audio_frequency_optionmenu_menu);
-
-  preferences_audio_channels_optionmenu = gtk_option_menu_new ();
-  gtk_widget_ref (preferences_audio_channels_optionmenu);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_channels_optionmenu", preferences_audio_channels_optionmenu,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_channels_optionmenu);
-  gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_channels_optionmenu, 1, 2, 4, 5,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  preferences_audio_channels_optionmenu_menu = gtk_menu_new ();
-  glade_menuitem = gtk_menu_item_new_with_label (_("Mono"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_audio_channels_optionmenu_menu), glade_menuitem);
-  glade_menuitem = gtk_menu_item_new_with_label (_("Stereo"));
-  gtk_widget_show (glade_menuitem);
-  gtk_menu_append (GTK_MENU (preferences_audio_channels_optionmenu_menu), glade_menuitem);
-  gtk_option_menu_set_menu (GTK_OPTION_MENU (preferences_audio_channels_optionmenu), preferences_audio_channels_optionmenu_menu);
-  gtk_option_menu_set_history (GTK_OPTION_MENU (preferences_audio_channels_optionmenu), 1);
-
-  preferences_audio_output_label = gtk_label_new (_("Default output:"));
-  gtk_widget_ref (preferences_audio_output_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_output_label", preferences_audio_output_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_output_label);
-  gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_output_label, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_audio_output_label), 0, 0.5);
-
-  preferences_audio_device_label = gtk_label_new (_("Default device:"));
-  gtk_widget_ref (preferences_audio_device_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_device_label", preferences_audio_device_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_device_label);
-  gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_device_label, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_audio_device_label), 0, 0.5);
-
-  preferences_audio_quality_label = gtk_label_new (_("Quality:"));
-  gtk_widget_ref (preferences_audio_quality_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_quality_label", preferences_audio_quality_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_quality_label);
-  gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_quality_label, 0, 1, 2, 3,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_audio_quality_label), 0, 0.5);
-
-  preferences_audio_frequency_label = gtk_label_new (_("Frequency:"));
-  gtk_widget_ref (preferences_audio_frequency_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_frequency_label", preferences_audio_frequency_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_frequency_label);
-  gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_frequency_label, 0, 1, 3, 4,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_audio_frequency_label), 0, 0.5);
-
-  preferences_audio_channel_label = gtk_label_new (_("Channels:"));
-  gtk_widget_ref (preferences_audio_channel_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_channel_label", preferences_audio_channel_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_channel_label);
-  gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_channel_label, 0, 1, 4, 5,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_audio_channel_label), 0, 0.5);
-
-  preferences_audio_spdif_checkbutton = gtk_check_button_new_with_label (_("Spdif output"));
-  gtk_widget_ref (preferences_audio_spdif_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_spdif_checkbutton", preferences_audio_spdif_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_spdif_checkbutton);
-  gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_spdif_checkbutton, 0, 2, 5, 6,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_audio_output_combo = gtk_combo_new ();
-  gtk_widget_ref (preferences_audio_output_combo);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_output_combo", preferences_audio_output_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_output_combo);
-  gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_output_combo, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  preferences_audio_output_combo_items = g_list_append (preferences_audio_output_combo_items, (gpointer) _("dsp"));
-  preferences_audio_output_combo_items = g_list_append (preferences_audio_output_combo_items, (gpointer) _("alsa"));
-  gtk_combo_set_popdown_strings (GTK_COMBO (preferences_audio_output_combo), preferences_audio_output_combo_items);
-  g_list_free (preferences_audio_output_combo_items);
-
-  preferences_audio_output_entry = GTK_COMBO (preferences_audio_output_combo)->entry;
-  gtk_widget_ref (preferences_audio_output_entry);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_output_entry", preferences_audio_output_entry,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_output_entry);
-  gtk_entry_set_text (GTK_ENTRY (preferences_audio_output_entry), _("dsp"));
-
-  preferences_audio_device_combo = gtk_combo_new ();
-  gtk_widget_ref (preferences_audio_device_combo);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_device_combo", preferences_audio_device_combo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_device_combo);
-  gtk_table_attach (GTK_TABLE (preferences_audio_table), preferences_audio_device_combo, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-  preferences_audio_device_combo_items = g_list_append (preferences_audio_device_combo_items, (gpointer) _("/dev/dsp"));
-  gtk_combo_set_popdown_strings (GTK_COMBO (preferences_audio_device_combo), preferences_audio_device_combo_items);
-  g_list_free (preferences_audio_device_combo_items);
-
-  preferences_audio_device_entry = GTK_COMBO (preferences_audio_device_combo)->entry;
-  gtk_widget_ref (preferences_audio_device_entry);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio_device_entry", preferences_audio_device_entry,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio_device_entry);
-  gtk_entry_set_text (GTK_ENTRY (preferences_audio_device_entry), _("/dev/dsp"));
-
-  preferences_audio = gtk_label_new (_("Audio"));
-  gtk_widget_ref (preferences_audio);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_audio", preferences_audio,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_audio);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 5), preferences_audio);
-
-  preferences_playlist_table = gtk_table_new (3, 1, FALSE);
-  gtk_widget_ref (preferences_playlist_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_playlist_table", preferences_playlist_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_playlist_table);
-  gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_playlist_table);
-  gtk_container_set_border_width (GTK_CONTAINER (preferences_playlist_table), 5);
-  gtk_table_set_row_spacings (GTK_TABLE (preferences_playlist_table), 5);
-  gtk_table_set_col_spacings (GTK_TABLE (preferences_playlist_table), 5);
-
-  preferences_playlist_startup_checkbutton = gtk_check_button_new_with_label (_("Launch on startup"));
-  gtk_widget_ref (preferences_playlist_startup_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_playlist_startup_checkbutton", preferences_playlist_startup_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_playlist_startup_checkbutton);
-  gtk_table_attach (GTK_TABLE (preferences_playlist_table), preferences_playlist_startup_checkbutton, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_playlist_enqueue_checkbutton = gtk_check_button_new_with_label (_("Enqueue as default"));
-  gtk_widget_ref (preferences_playlist_enqueue_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_playlist_enqueue_checkbutton", preferences_playlist_enqueue_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_playlist_enqueue_checkbutton);
-  gtk_table_attach (GTK_TABLE (preferences_playlist_table), preferences_playlist_enqueue_checkbutton, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_playlist_loop_checkbutton = gtk_check_button_new_with_label (_("Loop on playlist end"));
-  gtk_widget_ref (preferences_playlist_loop_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_playlist_loop_checkbutton", preferences_playlist_loop_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_playlist_loop_checkbutton);
-  gtk_table_attach (GTK_TABLE (preferences_playlist_table), preferences_playlist_loop_checkbutton, 0, 1, 2, 3,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_EXPAND), 0, 0);
-
-  preferences_playlist = gtk_label_new (_("Playlist"));
-  gtk_widget_ref (preferences_playlist);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_playlist", preferences_playlist,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_playlist);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 6), preferences_playlist);
-
-  preferences_misc_table = gtk_table_new (1, 2, FALSE);
-  gtk_widget_ref (preferences_misc_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_table", preferences_misc_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_table);
-  gtk_container_add (GTK_CONTAINER (preferences_notebook), preferences_misc_table);
-  gtk_container_set_border_width (GTK_CONTAINER (preferences_misc_table), 5);
-  gtk_table_set_row_spacings (GTK_TABLE (preferences_misc_table), 5);
-  gtk_table_set_col_spacings (GTK_TABLE (preferences_misc_table), 5);
-
-  preferences_misc_associated_frame = gtk_frame_new (_("Types associated with vlc"));
-  gtk_widget_ref (preferences_misc_associated_frame);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_associated_frame", preferences_misc_associated_frame,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_associated_frame);
-  gtk_table_attach (GTK_TABLE (preferences_misc_table), preferences_misc_associated_frame, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_FILL), 0, 0);
-
-  preferences_misc_associated_table = gtk_table_new (4, 1, FALSE);
-  gtk_widget_ref (preferences_misc_associated_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_associated_table", preferences_misc_associated_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_associated_table);
-  gtk_container_add (GTK_CONTAINER (preferences_misc_associated_frame), preferences_misc_associated_table);
-
-  preferences_misc_associated_checkbutton = gtk_check_button_new_with_label (_("mpeg"));
-  gtk_widget_ref (preferences_misc_associated_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_associated_checkbutton", preferences_misc_associated_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_associated_checkbutton);
-  gtk_table_attach (GTK_TABLE (preferences_misc_associated_table), preferences_misc_associated_checkbutton, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-
-  preferences_misc_mp2_checkbutton = gtk_check_button_new_with_label (_("mp2"));
-  gtk_widget_ref (preferences_misc_mp2_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_mp2_checkbutton", preferences_misc_mp2_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_mp2_checkbutton);
-  gtk_table_attach (GTK_TABLE (preferences_misc_associated_table), preferences_misc_mp2_checkbutton, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-
-  preferences_misc_vob_checkbutton = gtk_check_button_new_with_label (_("vob"));
-  gtk_widget_ref (preferences_misc_vob_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_vob_checkbutton", preferences_misc_vob_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_vob_checkbutton);
-  gtk_table_attach (GTK_TABLE (preferences_misc_associated_table), preferences_misc_vob_checkbutton, 0, 1, 2, 3,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-
-  preferences_misc_ts_checkbutton = gtk_check_button_new_with_label (_("ts"));
-  gtk_widget_ref (preferences_misc_ts_checkbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_ts_checkbutton", preferences_misc_ts_checkbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_ts_checkbutton);
-  gtk_table_attach (GTK_TABLE (preferences_misc_associated_table), preferences_misc_ts_checkbutton, 0, 1, 3, 4,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-
-  preferences_misc_message_frame = gtk_frame_new (_("Messages"));
-  gtk_widget_ref (preferences_misc_message_frame);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_message_frame", preferences_misc_message_frame,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_message_frame);
-  gtk_table_attach (GTK_TABLE (preferences_misc_table), preferences_misc_message_frame, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (GTK_FILL), 0, 0);
-
-  preferences_misc_messages_table = gtk_table_new (1, 2, FALSE);
-  gtk_widget_ref (preferences_misc_messages_table);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_messages_table", preferences_misc_messages_table,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_messages_table);
-  gtk_container_add (GTK_CONTAINER (preferences_misc_message_frame), preferences_misc_messages_table);
-
-  preferences_misc_messages_label = gtk_label_new (_("Warning level: "));
-  gtk_widget_ref (preferences_misc_messages_label);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_messages_label", preferences_misc_messages_label,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_messages_label);
-  gtk_table_attach (GTK_TABLE (preferences_misc_messages_table), preferences_misc_messages_label, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-  gtk_misc_set_alignment (GTK_MISC (preferences_misc_messages_label), 0, 0.5);
-
-  preferences_misc_messages_spinbutton_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 10);
-  preferences_misc_messages_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (preferences_misc_messages_spinbutton_adj), 1, 0);
-  gtk_widget_ref (preferences_misc_messages_spinbutton);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc_messages_spinbutton", preferences_misc_messages_spinbutton,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc_messages_spinbutton);
-  gtk_table_attach (GTK_TABLE (preferences_misc_messages_table), preferences_misc_messages_spinbutton, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND),
-                    (GtkAttachOptions) (0), 0, 0);
-
-  preferences_misc = gtk_label_new (_("Misc"));
-  gtk_widget_ref (preferences_misc);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_misc", preferences_misc,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_misc);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (preferences_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (preferences_notebook), 7), preferences_misc);
-
-  dialog_action_area4 = GTK_DIALOG (intf_preferences)->action_area;
-  gtk_object_set_data (GTK_OBJECT (intf_preferences), "dialog_action_area4", dialog_action_area4);
-  gtk_widget_show (dialog_action_area4);
-  gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area4), 10);
-
-  preferences_ok_button = gtk_button_new_with_label (_("Ok"));
-  gtk_widget_ref (preferences_ok_button);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_ok_button", preferences_ok_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_ok_button);
-  gtk_box_pack_start (GTK_BOX (dialog_action_area4), preferences_ok_button, TRUE, TRUE, 0);
-
-  preferences_apply_button = gtk_button_new_with_label (_("Apply"));
-  gtk_widget_ref (preferences_apply_button);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_apply_button", preferences_apply_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_apply_button);
-  gtk_box_pack_start (GTK_BOX (dialog_action_area4), preferences_apply_button, TRUE, TRUE, 0);
-
-  preferences_cancel_button = gtk_button_new_with_label (_("Cancel"));
-  gtk_widget_ref (preferences_cancel_button);
-  gtk_object_set_data_full (GTK_OBJECT (intf_preferences), "preferences_cancel_button", preferences_cancel_button,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (preferences_cancel_button);
-  gtk_box_pack_start (GTK_BOX (dialog_action_area4), preferences_cancel_button, TRUE, TRUE, 0);
-
-  gtk_signal_connect (GTK_OBJECT (preferences_ok_button), "clicked",
-                      GTK_SIGNAL_FUNC (GtkPreferencesOk),
-                      "intf_preferences");
-  gtk_signal_connect (GTK_OBJECT (preferences_apply_button), "clicked",
-                      GTK_SIGNAL_FUNC (GtkPreferencesApply),
-                      "intf_preferences");
-  gtk_signal_connect (GTK_OBJECT (preferences_cancel_button), "clicked",
-                      GTK_SIGNAL_FUNC (GtkPreferencesCancel),
-                      "intf_preferences");
-
-  return intf_preferences;
-}
-
 GtkWidget*
 create_intf_messages (void)
 {
index e22ed299f24f473e70731f29fa74bd686baf1e74..8423c74f3b396d6b66977e63a25507d068139c26 100644 (file)
@@ -10,5 +10,4 @@ GtkWidget* create_intf_disc (void);
 GtkWidget* create_intf_network (void);
 GtkWidget* create_intf_jump (void);
 GtkWidget* create_intf_playlist (void);
-GtkWidget* create_intf_preferences (void);
 GtkWidget* create_intf_messages (void);
index 7bd19aff6127f1ee91ce339738818147ddb1c939..3e92f9f3430fcbb5d183d9a2c6de3e64a4b9b095 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_open.c : functions to handle file/disc/network open widgets.
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: gtk_open.c,v 1.18 2002/03/04 02:26:23 stef Exp $
+ * $Id: gtk_open.c,v 1.19 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -72,7 +72,7 @@ gboolean GtkFileOpenShow( GtkWidget       *widget,
         gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_fileopen ),
                              "p_intf", p_intf );
 
-        if( (psz_path = config_GetPszVariable( INTF_PATH_VAR )) )
+        if( (psz_path = config_GetPszVariable( "search_path" )) )
             gtk_file_selection_set_filename( GTK_FILE_SELECTION(
                 p_intf->p_sys->p_fileopen ), psz_path );
         if( psz_path ) free( psz_path );
@@ -153,7 +153,7 @@ void GtkDiscOpenDvd( GtkToggleButton * togglebutton, gpointer user_data )
     {
         char *psz_dvd_device;
 
-        if( (psz_dvd_device = config_GetPszVariable( INPUT_DVD_DEVICE_VAR )) )
+        if( (psz_dvd_device = config_GetPszVariable( "dvd_device" )) )
             gtk_entry_set_text(
                 GTK_ENTRY( lookup_widget( GTK_WIDGET(togglebutton),
                                           "disc_name" ) ), psz_dvd_device );
@@ -167,7 +167,7 @@ void GtkDiscOpenVcd( GtkToggleButton * togglebutton, gpointer user_data )
     {
         char *psz_vcd_device;
 
-        if( (psz_vcd_device = config_GetPszVariable( INPUT_VCD_DEVICE_VAR )) )
+        if( (psz_vcd_device = config_GetPszVariable( "vcd_device" )) )
             gtk_entry_set_text(
                 GTK_ENTRY( lookup_widget( GTK_WIDGET(togglebutton),
                                           "disc_name" ) ), psz_vcd_device );
@@ -272,9 +272,9 @@ gboolean GtkNetworkOpenShow( GtkWidget       *widget,
 
         gtk_spin_button_set_value( GTK_SPIN_BUTTON( gtk_object_get_data(
             GTK_OBJECT( p_intf->p_sys->p_network ), "network_port" ) ),
-            config_GetIntVariable( INPUT_PORT_VAR ) );
+            config_GetIntVariable( "server_port" ) );
 
-        psz_channel_server = config_GetPszVariable( INPUT_CHANNEL_SERVER_VAR );
+        psz_channel_server = config_GetPszVariable( "channel_server" );
         if( psz_channel_server )
             gtk_entry_set_text( GTK_ENTRY( gtk_object_get_data(
                 GTK_OBJECT( p_intf->p_sys->p_network ), "network_channel" ) ),
@@ -283,11 +283,11 @@ gboolean GtkNetworkOpenShow( GtkWidget       *widget,
 
         gtk_spin_button_set_value( GTK_SPIN_BUTTON( gtk_object_get_data(
             GTK_OBJECT( p_intf->p_sys->p_network ), "network_channel_port" ) ),
-            config_GetIntVariable( INPUT_CHANNEL_PORT_VAR ) );
+            config_GetIntVariable( "channel_port" ) );
 
         gtk_toggle_button_set_active( gtk_object_get_data( GTK_OBJECT(
             p_intf->p_sys->p_network ), "network_channel_check" ),
-            config_GetIntVariable( INPUT_NETWORK_CHANNEL_VAR ) );
+            config_GetIntVariable( "network_channel" ) );
     }
 
     gtk_widget_show( p_intf->p_sys->p_network );
@@ -337,7 +337,7 @@ void GtkNetworkOpenOk( GtkButton *button, gpointer user_data )
     /* Manage channel server */
     b_channel = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(
         lookup_widget( GTK_WIDGET(button), "network_channel_check" ) ) );
-    config_PutIntVariable( INPUT_NETWORK_CHANNEL_VAR, b_channel );
+    config_PutIntVariable( "network_channel", b_channel );
     if( b_channel )
     {
         char *          psz_channel;
@@ -353,10 +353,10 @@ void GtkNetworkOpenOk( GtkButton *button, gpointer user_data )
         i_channel_port = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(
             lookup_widget( GTK_WIDGET(button), "network_channel_port" ) ) );
 
-        config_PutPszVariable( INPUT_CHANNEL_SERVER_VAR, psz_channel );
+        config_PutPszVariable( "channel_server", psz_channel );
         if( i_channel_port < 65536 )
         {
-            config_PutIntVariable( INPUT_CHANNEL_PORT_VAR, i_channel_port );
+            config_PutIntVariable( "channel_port", i_channel_port );
         }
 
         p_intf->p_sys->b_playing = 1;
index bf333bb6dc1920e0a12fcb1ebdf0e1715f1db020..bbf906037c8c45c6fde93e08815614cf3f558cd7 100644 (file)
@@ -1,11 +1,10 @@
 /*****************************************************************************
- * gtk_control.c : functions to handle stream control buttons.
+ * gtk_preferences.c: functions to handle the preferences dialog box.
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: gtk_preferences.c,v 1.11 2002/02/24 20:51:10 gbazin Exp $
+ * $Id: gtk_preferences.c,v 1.12 2002/03/11 07:23:09 gbazin Exp $
  *
- * Authors: Samuel Hocevar <sam@zoy.org>
- *          Stéphane Borel <stef@via.ecp.fr>
+ * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *      
  * 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
  *****************************************************************************/
 
 /*****************************************************************************
- * Preamble
+ * Preamble: Our main job is to build a nice interface from the modules config
+ *   structure. Once this is done, we need to track each change made by the
+ *   user to the data contained in this interface so that when/if he decides to
+ *   apply his changes we can quickly commit them into the modules config
+ *   structure. (for this last task we use a GHashTable to accumulate the
+ *   changes. To commit them, we then just have to circle through it )
+ *
  *****************************************************************************/
 #include <sys/types.h>                                              /* off_t */
 #include <stdlib.h>
 
 #include <string.h>
 
-#include "stream_control.h"
-#include "input_ext-intf.h"
-
 #include "interface.h"
-#include "intf_playlist.h"
 
-#include "gtk_callbacks.h"
-#include "gtk_interface.h"
 #include "gtk_support.h"
-#include "gtk_playlist.h"
 #include "gtk_common.h"
+#include "gtk_preferences.h"
+
+/* local functions */
+static GtkWidget *GtkCreateConfigDialog( char *, intf_thread_t * );
+
+static void GtkConfigOk          ( GtkButton *, gpointer );
+static void GtkConfigApply       ( GtkButton *, gpointer );
+static void GtkConfigCancel      ( GtkButton *, gpointer );
+
+static void GtkStringChanged     ( GtkEditable *, gpointer );
+static void GtkIntChanged        ( GtkEditable *, gpointer );
+static void GtkBoolChanged       ( GtkToggleButton *, gpointer );
+
+static void GtkFreeHashTable     ( gpointer );
+static void GtkFreeHashValue     ( gpointer, gpointer, gpointer );
+static void GtkSaveHashValue     ( gpointer, gpointer, gpointer );
+
+static void GtkPluginConfigure   ( GtkButton *, gpointer );
+static void GtkPluginSelected    ( GtkButton *, gpointer );
+static void GtkPluginHighlighted ( GtkCList *, int, int, GdkEventButton *,
+                                   gpointer );
 
 /****************************************************************************
- * GtkPreferencesShow: display interface window after initialization
- * if necessary
+ * Callback for menuitems: display configuration interface window
  ****************************************************************************/
-
-/* macros to create preference box */
-#define ASSIGN_PSZ_ENTRY( var, name )                                        \
-    gtk_entry_set_text( GTK_ENTRY( gtk_object_get_data( GTK_OBJECT(          \
-        p_intf->p_sys->p_preferences ), name ) ),                            \
-                        config_GetPszVariable( var ) )
-
-#define ASSIGN_INT_VALUE( var, name )                                        \
-    gtk_spin_button_set_value( GTK_SPIN_BUTTON( gtk_object_get_data(         \
-        GTK_OBJECT( p_intf->p_sys->p_preferences ), name ) ),                \
-                               config_GetIntVariable( var ) )
-
-#define ASSIGN_INT_TOGGLE( var, name )                                       \
-    gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( gtk_object_get_data(    \
-        GTK_OBJECT( p_intf->p_sys->p_preferences ), name ) ),                \
-                               config_GetIntVariable( var ) )
-
-gboolean GtkPreferencesShow( GtkWidget       *widget,
-                             GdkEventButton  *event,
-                             gpointer         user_data )
+void GtkPreferencesActivate( GtkMenuItem * menuitem, gpointer user_data )
 {
-    intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+    intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), (char*)user_data );
 
-    /* If we have never used the file selector, open it */
+    /* If we have never used the preferences selector, open it */
     if( !GTK_IS_WIDGET( p_intf->p_sys->p_preferences ) )
     {
-        p_intf->p_sys->p_preferences = create_intf_preferences();
-        gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_preferences ),
-                             "p_intf", p_intf );
-
-        /* Default path */
-        ASSIGN_PSZ_ENTRY( INTF_PATH_VAR,
-                          "preferences_file_path_entry" );
-    
-        /* Default DVD */
-        ASSIGN_PSZ_ENTRY( INPUT_DVD_DEVICE_VAR,
-                          "preferences_disc_dvd_entry" );
-    
-        /* Default VCD */
-        ASSIGN_PSZ_ENTRY( INPUT_VCD_DEVICE_VAR,
-                          "preferences_disc_vcd_entry" );
-    
-        /* Default port */
-        ASSIGN_INT_VALUE( INPUT_PORT_VAR,
-                          "preferences_network_port_spinbutton" );
-    
-        /* XXX Protocol */
-    
-        /* Default interface */
-        ASSIGN_PSZ_ENTRY( INTF_METHOD_VAR,
-                          "preferences_interface_entry" );
-    
-        /* Default video output */
-        ASSIGN_PSZ_ENTRY( VOUT_METHOD_VAR,
-                          "preferences_video_output_entry" );
-    
-        /* Default output width */
-        ASSIGN_INT_VALUE( VOUT_WIDTH_VAR,
-                          "preferences_video_width_spinbutton" );
-    
-        /* Default output height */
-        ASSIGN_INT_VALUE( VOUT_HEIGHT_VAR,
-                          "preferences_video_height_spinbutton" );
-    
-        /* XXX Default screen depth */
-    
-        /* XXX Default fullscreen depth */
-    
-        /* XXX Default gamma */
-        
-        /* Fullscreen on play */
-        ASSIGN_INT_TOGGLE( VOUT_FULLSCREEN_VAR,
-                           "preferences_video_fullscreen_checkbutton" );
-    
-        /* Grayscale display */
-        ASSIGN_INT_TOGGLE( VOUT_GRAYSCALE_VAR,
-                           "preferences_video_grayscale_checkbutton" );
-    
-        /* Default audio output */
-        ASSIGN_PSZ_ENTRY( AOUT_METHOD_VAR,
-                          "preferences_audio_output_entry" );
-
-    
-        /* XXX Default frequency */
-    
-        /* XXX Default quality */
-    
-        /* XXX Default number of channels */
-    
-        /* Use spdif output ? */
-        ASSIGN_INT_TOGGLE( AOUT_SPDIF_VAR,
-                           "preferences_audio_spdif_checkbutton" );
-    
-        /* Launch playlist on startup */
-        ASSIGN_INT_TOGGLE( PLAYLIST_STARTUP_VAR,
-                        "preferences_playlist_startup_checkbutton" );
-    
-        /* Enqueue drag'n dropped item as default */
-        ASSIGN_INT_TOGGLE( PLAYLIST_ENQUEUE_VAR,
-                           "preferences_playlist_enqueue_checkbutton" );
-    
-        /* Loop on playlist end */
-        ASSIGN_INT_TOGGLE( PLAYLIST_LOOP_VAR,
-                           "preferences_playlist_loop_checkbutton" );
-    
-        /* Verbosity of warning messages */
-        ASSIGN_INT_VALUE( INTF_WARNING_VAR,
-                          "preferences_misc_messages_spinbutton" );
-#undef ASSIGN_PSZ_ENTRY
-#undef ASSIGN_INT_VALUE
-#undef ASSIGN_INT_TOGGLE
+        p_intf->p_sys->p_preferences = GtkCreateConfigDialog( "main",
+                                                              p_intf );
     }
 
     gtk_widget_show( p_intf->p_sys->p_preferences );
     gdk_window_raise( p_intf->p_sys->p_preferences->window );
-
-    return TRUE;
 }
 
 /****************************************************************************
- * GtkPreferencesApply: store the values into the environnement variables
+ * GtkCreateConfigDialog: dynamically creates the configuration dialog
+ * box from all the configuration data provided by the selected module.
  ****************************************************************************/
+static GtkWidget *GtkCreateConfigDialog( char *psz_module_name,
+                                         intf_thread_t *p_intf )
+{
+    module_t *p_module, *p_module_bis;
+    int i;
+
+    GHashTable *config_hash_table;
+
+    GtkWidget *config_dialog;
+    GtkWidget *config_dialog_vbox;
+    GtkWidget *config_notebook;
+    GtkWidget *scrolled_window;
+    GtkWidget *category_vbox = NULL;
+
+    GtkWidget *dialog_action_area;
+    GtkWidget *ok_button;
+    GtkWidget *apply_button;
+    GtkWidget *cancel_button;
+
+    GtkWidget *item_frame;
+    GtkWidget *item_table;
+    GtkWidget *item_hbox;
+    GtkWidget *item_label;
+    GtkWidget *item_text;
+    GtkWidget *string_entry;
+    GtkWidget *integer_spinbutton;
+    GtkObject *item_adj;
+    GtkWidget *bool_checkbutton;
+    GtkWidget *plugin_clist;
+    GtkWidget *plugin_config_button;
+    GtkWidget *plugin_select_button;
+
+    /* Look for the selected module */
+    for( p_module = p_module_bank->first ; p_module != NULL ;
+         p_module = p_module->next )
+    {
 
-/* macros to read value frfom preference box */
-#define ASSIGN_PSZ_ENTRY( var, name )                                         \
-    config_PutPszVariable( var, gtk_entry_get_text(                           \
-    GTK_ENTRY( gtk_object_get_data( GTK_OBJECT( p_preferences ), name ) ) ) )
+        if( psz_module_name && !strcmp( psz_module_name, p_module->psz_name ) )
+            break;
+    }
+    if( !p_module ) return NULL;
+
+
+    /*
+     * We found it, now we can start building its configuration interface
+     */
+
+    /* Create the configuration dialog box */
+    config_dialog = gtk_dialog_new();
+    gtk_window_set_title( GTK_WINDOW(config_dialog), p_module->psz_longname );
+    gtk_window_set_default_size( GTK_WINDOW(config_dialog),
+                                 600 /*width*/, 400/*height*/ );
+
+    config_dialog_vbox = GTK_DIALOG(config_dialog)->vbox;
+    gtk_widget_show( config_dialog_vbox );
+    gtk_container_set_border_width( GTK_CONTAINER(config_dialog_vbox), 0 );
+
+    /* Create our config hash table and associate it with the dialog box */
+    config_hash_table = g_hash_table_new( NULL, NULL );
+    gtk_object_set_data_full( GTK_OBJECT(config_dialog), "config_hash_table",
+                              config_hash_table,
+                              (GtkDestroyNotify)GtkFreeHashTable );
+
+    /* Create notebook */
+    config_notebook = gtk_notebook_new();
+    gtk_notebook_set_scrollable( GTK_NOTEBOOK(config_notebook), TRUE);
+    gtk_widget_show( config_notebook );
+    gtk_box_pack_start( GTK_BOX(config_dialog_vbox), config_notebook,
+                        TRUE, TRUE, 0 );
+
+    /* Enumerate config options and add corresponding config boxes */
+    for( i = 0; i < p_module->i_config_lines; i++ )
+    {
 
-#define ASSIGN_INT_VALUE( var, name )                                         \
-    config_PutIntVariable( var, gtk_spin_button_get_value_as_int(             \
-        GTK_SPIN_BUTTON( gtk_object_get_data( GTK_OBJECT( p_preferences ),    \
-        name ) ) ) )
+        switch( p_module->p_config[i].i_type )
+        {
+        case MODULE_CONFIG_HINT_CATEGORY:
+
+            /* create a new scrolled window. */
+            scrolled_window = gtk_scrolled_window_new( NULL, NULL );
+            gtk_scrolled_window_set_policy(
+                GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_NEVER,
+                GTK_POLICY_AUTOMATIC );
+            gtk_widget_show( scrolled_window );
+
+            /* add scrolled window as a notebook page */
+            item_label = gtk_label_new( p_module->p_config[i].psz_text );
+            gtk_widget_show( item_label );
+            gtk_notebook_append_page( GTK_NOTEBOOK(config_notebook),
+                                      scrolled_window, item_label );
+
+            /* pack a new vbox into the scrolled window */
+            category_vbox = gtk_vbox_new( FALSE, 10 );
+            gtk_container_set_border_width( GTK_CONTAINER(category_vbox), 5 );
+            gtk_scrolled_window_add_with_viewport(
+                GTK_SCROLLED_WINDOW( scrolled_window ), category_vbox );
+            gtk_widget_show( category_vbox );
+
+            break;
+
+        case MODULE_CONFIG_ITEM_PLUGIN:
+
+            /* add new frame for the config option */
+            item_frame = gtk_frame_new( p_module->p_config[i].psz_text );
+            gtk_widget_show( item_frame );
+            gtk_box_pack_start( GTK_BOX(category_vbox), item_frame,
+                                FALSE, FALSE, 5 );
+
+            /* add a new table for the config option */
+            item_table = gtk_table_new( 3, 3, FALSE );
+            gtk_widget_show( item_table );
+            gtk_container_add( GTK_CONTAINER(item_frame), item_table );
+
+            /* create a new scrolled window */
+            scrolled_window = gtk_scrolled_window_new( NULL, NULL );
+            gtk_scrolled_window_set_policy(
+                GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_NEVER,
+                GTK_POLICY_AUTOMATIC );
+            gtk_widget_set_usize( scrolled_window, -2, 150 );
+            gtk_widget_show( scrolled_window );
+            gtk_table_attach( GTK_TABLE(item_table), scrolled_window,
+                              0, 2, 0, 1, GTK_FILL, GTK_FILL, 5, 5 );
+
+            /* create a new clist widget and add it to the scrolled win */
+            plugin_clist = gtk_clist_new_with_titles( 1,
+                               &p_module->p_config[i].psz_text );
+            gtk_clist_column_titles_passive( GTK_CLIST(plugin_clist) );
+            gtk_clist_set_selection_mode( GTK_CLIST(plugin_clist),
+                                          GTK_SELECTION_SINGLE);
+            gtk_container_add( GTK_CONTAINER(scrolled_window), plugin_clist );
+            gtk_widget_show( plugin_clist );
+
+            /* build a list of available plugins */
+            for( p_module_bis = p_module_bank->first ;
+                 p_module_bis != NULL ;
+                 p_module_bis = p_module_bis->next )
+            {
+                if( p_module_bis->i_capabilities &
+                    (1 << p_module->p_config[i].i_value) )
+
+                    gtk_clist_append( GTK_CLIST(plugin_clist),
+                                      (gchar **)&p_module_bis->psz_name );
+            }
+
+            /* add text box for config description */
+            if( p_module->p_config[i].psz_longtext )
+            {
+                item_text = gtk_label_new( p_module->p_config[i].psz_longtext);
+                gtk_label_set_justify( GTK_LABEL(item_text), GTK_JUSTIFY_LEFT);
+                gtk_label_set_line_wrap( GTK_LABEL(item_text), TRUE );
+                gtk_widget_show( item_text );
+                gtk_table_attach( GTK_TABLE(item_table), item_text,
+                                  2, 3, 0, 1, GTK_FILL, GTK_FILL, 5, 5 );
+            }
+
+            /* pack a label into the config line */
+            item_label = gtk_label_new( "" );
+            gtk_widget_show( item_label );
+            gtk_table_attach( GTK_TABLE(item_table), item_label,
+                              2, 3, 1, 2, GTK_FILL, GTK_FILL, 5, 5 );
+
+            /* connect signals to the plugins list */
+            gtk_signal_connect( GTK_OBJECT(plugin_clist), "select_row",
+                                GTK_SIGNAL_FUNC(GtkPluginHighlighted),
+                                (gpointer)item_label );
+
+            /* add configure button */
+            plugin_config_button =
+                gtk_button_new_with_label( _("Configure") );
+            gtk_widget_set_sensitive( plugin_config_button, FALSE );
+            gtk_widget_show( plugin_config_button );
+            gtk_table_attach( GTK_TABLE(item_table), plugin_config_button,
+                              0, 1, 1, 2, GTK_FILL, GTK_FILL, 5, 5 );
+            gtk_object_set_data( GTK_OBJECT(plugin_clist),
+                                 "config_button", plugin_config_button );
+
+            /* add select button */
+            plugin_select_button =
+                gtk_button_new_with_label( _("Select") );
+            gtk_widget_show( plugin_select_button );
+            gtk_table_attach( GTK_TABLE(item_table), plugin_select_button,
+                              1, 2, 1, 2, GTK_FILL, GTK_FILL, 5, 5 );
+
+            /* add new label */
+            item_label = gtk_label_new( _("Selected:") );
+            gtk_widget_show( item_label );
+            gtk_table_attach( GTK_TABLE(item_table), item_label,
+                              0, 1, 2, 3, GTK_FILL, GTK_FILL, 5, 5 );
+
+            /* add input box with default value */
+            string_entry = gtk_entry_new();
+            gtk_object_set_data( GTK_OBJECT(plugin_clist),
+                                 "plugin_entry", string_entry );
+            gtk_widget_show( string_entry );
+            gtk_table_attach( GTK_TABLE(item_table), string_entry,
+                              2, 3, 2, 3, GTK_FILL, GTK_FILL, 5, 5 );
+            vlc_mutex_lock( p_module->p_config[i].p_lock );
+            gtk_entry_set_text( GTK_ENTRY(string_entry),
+                                p_module->p_config[i].psz_value ?
+                                p_module->p_config[i].psz_value : "" );
+            vlc_mutex_unlock( p_module->p_config[i].p_lock );
+
+            /* connect signals to the buttons */
+            gtk_signal_connect( GTK_OBJECT(plugin_config_button), "clicked",
+                                GTK_SIGNAL_FUNC(GtkPluginConfigure),
+                                (gpointer)plugin_clist );
+            gtk_signal_connect( GTK_OBJECT(plugin_select_button), "clicked",
+                                GTK_SIGNAL_FUNC(GtkPluginSelected),
+                                (gpointer)plugin_clist );
+
+            /* connect signal to track changes in the text box */
+            gtk_object_set_data( GTK_OBJECT(string_entry), "config_option",
+                                 p_module->p_config[i].psz_name );
+            gtk_signal_connect( GTK_OBJECT(string_entry), "changed",
+                                GTK_SIGNAL_FUNC(GtkStringChanged),
+                                (gpointer)config_dialog );
+            break;
+
+        case MODULE_CONFIG_ITEM_STRING:
+        case MODULE_CONFIG_ITEM_FILE:
+
+            /* add new frame for the config option */
+            item_frame = gtk_frame_new( p_module->p_config[i].psz_text );
+            gtk_widget_show( item_frame );
+            gtk_box_pack_start( GTK_BOX(category_vbox), item_frame,
+                                FALSE, FALSE, 5 );
+
+            /* add a new table for the config option */
+            item_table = gtk_table_new( 1, 1, FALSE );
+            gtk_widget_show( item_table );
+            gtk_container_add( GTK_CONTAINER(item_frame), item_table );
+
+            /* add input box with default value */
+            string_entry = gtk_entry_new();
+            gtk_widget_show( string_entry );
+            gtk_table_attach( GTK_TABLE(item_table), string_entry,
+                              0, 1, 0, 1, GTK_FILL, GTK_FILL, 5, 5 );
+            vlc_mutex_lock( p_module->p_config[i].p_lock );
+            gtk_entry_set_text( GTK_ENTRY(string_entry),
+                                p_module->p_config[i].psz_value ?
+                                p_module->p_config[i].psz_value : "" );
+            vlc_mutex_unlock( p_module->p_config[i].p_lock );
+
+            /* add text box for config description */
+            if( p_module->p_config[i].psz_longtext )
+            {
+                item_text = gtk_label_new( p_module->p_config[i].psz_longtext);
+                gtk_label_set_justify( GTK_LABEL(item_text), GTK_JUSTIFY_LEFT);
+                gtk_label_set_line_wrap( GTK_LABEL(item_text), TRUE );
+                gtk_widget_set_usize( item_text, 500, -2 );
+                gtk_widget_show( item_text );
+                gtk_table_resize( GTK_TABLE(item_table), 2, 1 );
+                gtk_table_attach( GTK_TABLE(item_table), item_text,
+                                  0, 1, 1, 2, GTK_FILL, GTK_FILL, 5, 5 );
+            }
+
+            /* connect signal to track changes in the text box */
+            gtk_object_set_data( GTK_OBJECT(string_entry), "config_option",
+                                 p_module->p_config[i].psz_name );
+            gtk_signal_connect( GTK_OBJECT(string_entry), "changed",
+                                GTK_SIGNAL_FUNC(GtkStringChanged),
+                                (gpointer)config_dialog );
+            break;
+
+        case MODULE_CONFIG_ITEM_INTEGER:
+
+            /* add new frame for the config option */
+            item_frame = gtk_frame_new( p_module->p_config[i].psz_text );
+            gtk_widget_show( item_frame );
+            gtk_box_pack_start( GTK_BOX(category_vbox), item_frame,
+                                FALSE, FALSE, 5 );
+
+            /* add a new table for the config option */
+            item_table = gtk_table_new( 2, 1, FALSE );
+            gtk_widget_show( item_table );
+            gtk_container_add( GTK_CONTAINER(item_frame), item_table );
+
+            /* add input box with default value */
+            item_adj = gtk_adjustment_new( p_module->p_config[i].i_value,
+                                           -1, 1000, 1, 10, 10 );
+            integer_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT(item_adj),
+                                                      1, 0 );
+            gtk_widget_show( integer_spinbutton );
+            gtk_table_attach( GTK_TABLE(item_table), integer_spinbutton,
+                                  0, 1, 0, 1, GTK_FILL, GTK_FILL, 5, 5 );
+
+            /* add text box for config description */
+            if( p_module->p_config[i].psz_longtext )
+            {
+                item_text = gtk_label_new( p_module->p_config[i].psz_longtext);
+                gtk_label_set_justify( GTK_LABEL(item_text), GTK_JUSTIFY_LEFT);
+                gtk_label_set_line_wrap( GTK_LABEL(item_text), TRUE );
+                gtk_widget_set_usize( item_text, 500, -2 );
+                gtk_widget_show( item_text );
+                gtk_table_resize( GTK_TABLE(item_table), 2, 1 );
+                gtk_table_attach( GTK_TABLE(item_table), item_text,
+                                  0, 2, 1, 2, GTK_FILL, GTK_FILL, 5, 5 );
+            }
+
+            /* connect signal to track changes in the spinbutton value */
+            gtk_object_set_data( GTK_OBJECT(integer_spinbutton),
+                "config_option", p_module->p_config[i].psz_name );
+            gtk_signal_connect( GTK_OBJECT(integer_spinbutton), "changed",
+                                GTK_SIGNAL_FUNC(GtkIntChanged),
+                                (gpointer)config_dialog );
+            break;
+
+        case MODULE_CONFIG_ITEM_BOOL:
+
+            /* add new frame for the config option */
+            item_frame = gtk_frame_new( p_module->p_config[i].psz_text );
+            gtk_widget_show( item_frame );
+            gtk_box_pack_start( GTK_BOX(category_vbox), item_frame,
+                                FALSE, FALSE, 5 );
+
+            /* add a new table for the config option */
+            item_table = gtk_table_new( 2, 1, FALSE );
+            gtk_widget_show( item_table );
+            gtk_container_add( GTK_CONTAINER(item_frame), item_table );
+
+            /* add check button */
+            bool_checkbutton = gtk_check_button_new_with_label(
+                                   _(p_module->p_config[i].psz_text) );
+            gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(bool_checkbutton),
+                                          p_module->p_config[i].i_value );
+            gtk_widget_show( bool_checkbutton );
+            gtk_table_attach( GTK_TABLE(item_table), bool_checkbutton,
+                                  0, 1, 0, 1, GTK_FILL, GTK_FILL, 5, 5 );
+
+            /* add text box for config description */
+            if( p_module->p_config[i].psz_longtext )
+            {
+                item_text = gtk_label_new( p_module->p_config[i].psz_longtext);
+                gtk_label_set_justify( GTK_LABEL(item_text), GTK_JUSTIFY_LEFT);
+                gtk_label_set_line_wrap( GTK_LABEL(item_text), TRUE );
+                gtk_widget_set_usize( item_text, 500, -2 );
+                gtk_widget_show( item_text );
+                gtk_table_resize( GTK_TABLE(item_table), 2, 1 );
+                gtk_table_attach( GTK_TABLE(item_table), item_text,
+                                  0, 2, 1, 2, GTK_FILL, GTK_FILL, 5, 5 );
+            }
+
+            /* connect signal to track changes in the button state */
+            gtk_object_set_data( GTK_OBJECT(bool_checkbutton), "config_option",
+                                 p_module->p_config[i].psz_name );
+            gtk_signal_connect( GTK_OBJECT(bool_checkbutton), "toggled",
+                                GTK_SIGNAL_FUNC(GtkBoolChanged),
+                                (gpointer)config_dialog );
+            break;
+        }
+    }
 
-#define ASSIGN_INT_TOGGLE( var, name )                                        \
-    config_PutIntVariable( var, gtk_toggle_button_get_active(                 \
-        GTK_TOGGLE_BUTTON( gtk_object_get_data( GTK_OBJECT( p_preferences ),  \
-        name ) ) ) )
+    /* Now let's add the action buttons at the bottom of the page */
+
+    dialog_action_area = GTK_DIALOG(config_dialog)->action_area;
+    gtk_widget_show( dialog_action_area );
+    //gtk_container_set_border_width( GTK_CONTAINER(dialog_action_area), 10 );
+
+    /* add a new table for the config option */
+    item_hbox = gtk_hbox_new( FALSE, 0 );
+    gtk_widget_show( item_hbox );
+    gtk_box_pack_end( GTK_BOX(dialog_action_area), item_hbox,
+                      TRUE, FALSE, 0 );
+    item_hbox = gtk_hbox_new( FALSE, 0 );
+    gtk_widget_show( item_hbox );
+    gtk_box_pack_end( GTK_BOX(dialog_action_area), item_hbox,
+                      TRUE, FALSE, 0 );
+
+    /* Create the OK button */
+    ok_button = gtk_button_new_with_label( _("Ok") );
+    gtk_widget_show( ok_button );
+    gtk_box_pack_start( GTK_BOX(dialog_action_area), ok_button,
+                        TRUE, TRUE, 0 );
+
+    apply_button = gtk_button_new_with_label( _("Apply") );
+    gtk_widget_show( apply_button );
+    gtk_box_pack_start( GTK_BOX(dialog_action_area), apply_button,
+                        TRUE, TRUE, 0 );
+
+    cancel_button = gtk_button_new_with_label( _("Cancel") );
+    gtk_widget_show( cancel_button );
+    gtk_box_pack_start( GTK_BOX(dialog_action_area), cancel_button,
+                        TRUE, TRUE, 0 );
+
+    gtk_signal_connect( GTK_OBJECT(ok_button), "clicked",
+                        GTK_SIGNAL_FUNC(GtkConfigOk),
+                        config_dialog );
+    gtk_signal_connect( GTK_OBJECT(apply_button), "clicked",
+                        GTK_SIGNAL_FUNC(GtkConfigApply),
+                        config_dialog );
+    gtk_signal_connect( GTK_OBJECT(cancel_button), "clicked",
+                        GTK_SIGNAL_FUNC(GtkConfigCancel),
+                        config_dialog );
+
+    return config_dialog;
+}
 
-void GtkPreferencesApply( GtkButton * button, gpointer user_data )
+/****************************************************************************
+ * GtkConfigApply: store the changes to the config inside the modules
+ * configuration structure
+ ****************************************************************************/
+void GtkConfigApply( GtkButton * button, gpointer user_data )
 {
-    GtkWidget *     p_preferences;
+    GHashTable *hash_table;
+    hash_table = (GHashTable *)gtk_object_get_data( GTK_OBJECT(user_data),
+                                                    "config_hash_table" );
+    g_hash_table_foreach( hash_table, GtkSaveHashValue, NULL );
 
-    /* get preferences window */
-    p_preferences = gtk_widget_get_toplevel( GTK_WIDGET( button ) );
+}
 
-    /* Default path */
-    ASSIGN_PSZ_ENTRY( INTF_PATH_VAR, "preferences_file_path_entry" );
+void GtkConfigOk( GtkButton * button, gpointer user_data )
+{
+    GtkConfigApply( button, user_data );
+    gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
+}
 
-    /* Default DVD */
-    ASSIGN_PSZ_ENTRY( INPUT_DVD_DEVICE_VAR, "preferences_disc_dvd_entry" );
 
-    /* Default VCD */
-    ASSIGN_PSZ_ENTRY( INPUT_VCD_DEVICE_VAR, "preferences_disc_vcd_entry" );
+void GtkConfigCancel( GtkButton * button, gpointer user_data )
+{
+    gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
+}
 
-    /* Default port */
-    ASSIGN_INT_VALUE( INPUT_PORT_VAR, "preferences_network_port_spinbutton" );
+/****************************************************************************
+ * GtkPluginHighlighted: display plugin description when an entry is selected
+ *   in the clist, and activate the configure button if necessary.
+ ****************************************************************************/
+void GtkPluginHighlighted( GtkCList *plugin_clist, int row, int column,
+                           GdkEventButton *event, gpointer user_data )
+{
+    GtkWidget *config_button;
+    module_t *p_module;
+    char *psz_name;
 
-    /* XXX Protocol */
+    if( gtk_clist_get_text( GTK_CLIST(plugin_clist), row, column, &psz_name ) )
+    {
 
-    /* Default interface */
-    ASSIGN_PSZ_ENTRY( INTF_METHOD_VAR, "preferences_interface_entry" );
+        /* look for plugin 'psz_name' */
+        for( p_module = p_module_bank->first ;
+             p_module != NULL ;
+             p_module = p_module->next )
+        {
+          if( !strcmp( p_module->psz_name, psz_name ) )
+          {
+              gtk_label_set_text( GTK_LABEL(user_data),
+                                  p_module->psz_longname ?
+                                      p_module->psz_longname : "" );
+              gtk_object_set_data( GTK_OBJECT(plugin_clist),
+                                   "plugin_highlighted", p_module );
+
+              config_button = gtk_object_get_data( GTK_OBJECT(plugin_clist),
+                                                   "config_button" );
+              if( p_module->i_config_items )
+                  gtk_widget_set_sensitive( config_button, TRUE );
+              else
+                  gtk_widget_set_sensitive( config_button, FALSE );
+
+              break;
+          }
+        }
 
-    /* Default video output */
-    ASSIGN_PSZ_ENTRY( VOUT_METHOD_VAR, "preferences_video_output_entry" );
+    }
+}
 
-    /* Default output width */
-    ASSIGN_INT_VALUE( VOUT_WIDTH_VAR, "preferences_video_width_spinbutton" );
+/****************************************************************************
+ * GtkPluginConfigure: display plugin configuration dialog box.
+ ****************************************************************************/
+void GtkPluginConfigure( GtkButton *button, gpointer user_data )
+{
+    module_t *p_module;
+    GtkWidget *widget;
 
-    /* Default output height */
-    ASSIGN_INT_VALUE( VOUT_HEIGHT_VAR, "preferences_video_height_spinbutton" );
+    p_module = (module_t *)gtk_object_get_data( GTK_OBJECT(user_data),
+                                                "plugin_highlighted" );
 
-    /* XXX Default screen depth */
+    if( !p_module ) return;
 
-    /* XXX Default fullscreen depth */
+    widget = GtkCreateConfigDialog( p_module->psz_name, NULL );
 
-    /* XXX Default gamma */
-    
-    /* Fullscreen on play */
-    ASSIGN_INT_TOGGLE( VOUT_FULLSCREEN_VAR,
-                       "preferences_video_fullscreen_checkbutton" );
+    gtk_widget_show( widget );
+    gdk_window_raise( widget->window );
 
-    /* Grayscale display */
-    ASSIGN_INT_TOGGLE( VOUT_GRAYSCALE_VAR,
-                       "preferences_video_grayscale_checkbutton" );
+}
 
-    /* Default audio output */
-    ASSIGN_PSZ_ENTRY( AOUT_METHOD_VAR, "preferences_audio_output_entry" );
+/****************************************************************************
+ * GtkPluginSelected: select plugin.
+ ****************************************************************************/
+void GtkPluginSelected( GtkButton *button, gpointer user_data )
+{
+    module_t *p_module;
+    GtkWidget *widget;
 
-    /* XXX Default frequency */
+    p_module = (module_t *)gtk_object_get_data( GTK_OBJECT(user_data),
+                                                "plugin_highlighted" );
+    widget = (GtkWidget *)gtk_object_get_data( GTK_OBJECT(user_data),
+                                                "plugin_entry" );
+    if( !p_module ) return;
 
-    /* XXX Default quality */
+    gtk_entry_set_text( GTK_ENTRY(widget), p_module->psz_name );
 
-    /* XXX Default number of channels */
+}
 
-    /* Use spdif output ? */
-    ASSIGN_INT_TOGGLE( AOUT_SPDIF_VAR, "preferences_audio_spdif_checkbutton" );
+/****************************************************************************
+ * GtkStringChanged: signal called when the user changes a string value.
+ ****************************************************************************/
+static void GtkStringChanged( GtkEditable *editable, gpointer user_data )
+{
+    module_config_t *p_config;
+
+    GHashTable *hash_table;
+    hash_table = (GHashTable *)gtk_object_get_data( GTK_OBJECT(user_data),
+                                                    "config_hash_table" );
+    /* free old p_config */
+    p_config = (module_config_t *)g_hash_table_lookup( hash_table,
+                                                       (gpointer)editable );
+    if( p_config ) GtkFreeHashValue( NULL, (gpointer)p_config, NULL );
+
+    p_config = malloc( sizeof(module_config_t) );
+    p_config->i_type = MODULE_CONFIG_ITEM_STRING;
+    p_config->psz_value = gtk_editable_get_chars( editable, 0, -1 );
+    p_config->psz_name = (char *)gtk_object_get_data( GTK_OBJECT(editable),
+                                                      "config_option" );
+
+    g_hash_table_insert( hash_table, (gpointer)editable,
+                         (gpointer)p_config );
+}
 
-    /* Launch playlist on startup */
-    ASSIGN_INT_TOGGLE( PLAYLIST_STARTUP_VAR,
-                       "preferences_playlist_startup_checkbutton" );
+/****************************************************************************
+ * GtkIntChanged: signal called when the user changes a an integer value.
+ ****************************************************************************/
+static void GtkIntChanged( GtkEditable *editable, gpointer user_data )
+{
+    module_config_t *p_config;
+
+    GHashTable *hash_table;
+    hash_table = (GHashTable *)gtk_object_get_data( GTK_OBJECT(user_data),
+                                                    "config_hash_table" );
+
+    /* free old p_config */
+    p_config = (module_config_t *)g_hash_table_lookup( hash_table,
+                                                       (gpointer)editable );
+    if( p_config ) GtkFreeHashValue( NULL, (gpointer)p_config, NULL );
+
+    p_config = malloc( sizeof(module_config_t) );
+    p_config->i_type = MODULE_CONFIG_ITEM_INTEGER;
+    p_config->i_value =  gtk_spin_button_get_value_as_int(
+                             GTK_SPIN_BUTTON(editable) );
+    p_config->psz_name = (char *)gtk_object_get_data( GTK_OBJECT(editable),
+                                                      "config_option" );
+
+    g_hash_table_insert( hash_table, (gpointer)editable,
+                         (gpointer)p_config );
+}
 
-    /* Enqueue drag'n dropped item as default */
-    ASSIGN_INT_TOGGLE( PLAYLIST_ENQUEUE_VAR,
-                       "preferences_playlist_enqueue_checkbutton" );
+/****************************************************************************
+ * GtkStringChanged: signal called when the user changes a bool value.
+ ****************************************************************************/
+static void GtkBoolChanged( GtkToggleButton *button, gpointer user_data )
+{
+    module_config_t *p_config;
 
-    /* Loop on playlist end */
-    ASSIGN_INT_TOGGLE( PLAYLIST_LOOP_VAR,
-                       "preferences_playlist_loop_checkbutton" );
+    GHashTable *hash_table;
+    hash_table = (GHashTable *)gtk_object_get_data( GTK_OBJECT(user_data),
+                                                    "config_hash_table" );
 
-    /* Verbosity of warning messages */
-    ASSIGN_INT_VALUE( INTF_WARNING_VAR,
-                      "preferences_misc_messages_spinbutton" );
-}
-#undef ASSIGN_PSZ_ENTRY
-#undef ASSIGN_INT_VALUE
-#undef ASSIGN_INT_TOGGLE
+    /* free old p_config */
+    p_config = (module_config_t *)g_hash_table_lookup( hash_table,
+                                                       (gpointer)button );
+    if( p_config ) GtkFreeHashValue( NULL, (gpointer)p_config, NULL );
 
+    p_config = malloc( sizeof(module_config_t) );
+    p_config->i_type = MODULE_CONFIG_ITEM_BOOL;
+    p_config->i_value = gtk_toggle_button_get_active( button );
+    p_config->psz_name = (char *)gtk_object_get_data( GTK_OBJECT(button),
+                                                      "config_option" );
 
-void GtkPreferencesOk( GtkButton * button, gpointer user_data )
-{
-    GtkPreferencesApply( button, user_data );
-    gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
+    g_hash_table_insert( hash_table, (gpointer)button,
+                         (gpointer)p_config );
 }
 
+/****************************************************************************
+ * GtkFreeHashTable: signal called when the config hash table is destroyed.
+ ****************************************************************************/
+static void GtkFreeHashTable( gpointer user_data )
+{
+    GHashTable *hash_table = (GHashTable *)user_data;
+
+    g_hash_table_foreach( hash_table, GtkFreeHashValue, NULL );
+    g_hash_table_destroy( hash_table );
+}
 
-void GtkPreferencesCancel( GtkButton * button, gpointer user_data )
+/****************************************************************************
+ * GtkFreeHashValue: signal called when an element of the config hash table
+ * is destroyed.
+ ****************************************************************************/
+static void GtkFreeHashValue( gpointer key, gpointer value, gpointer user_data)
 {
-    gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
+    module_config_t *p_config = (module_config_t *)value;
+
+    if( p_config->i_type == MODULE_CONFIG_ITEM_STRING )
+        g_free( p_config->psz_value );
+    free( p_config );
 }
 
 /****************************************************************************
- * Callbacks for menuitems
+ * GtkSaveHashValue: callback used when enumerating the hash table in
+ * GtkConfigApply().
  ****************************************************************************/
-void GtkPreferencesActivate( GtkMenuItem * menuitem, gpointer user_data )
+static void GtkSaveHashValue( gpointer key, gpointer value, gpointer user_data)
 {
-    GtkPreferencesShow( GTK_WIDGET( menuitem ), NULL, user_data );
+    module_config_t *p_config = (module_config_t *)value;
+
+    switch( p_config->i_type )
+    {
+
+    case MODULE_CONFIG_ITEM_STRING:
+    case MODULE_CONFIG_ITEM_FILE:
+    case MODULE_CONFIG_ITEM_PLUGIN:
+        config_PutPszVariable( p_config->psz_name, p_config->psz_value );
+        break;
+    case MODULE_CONFIG_ITEM_INTEGER:
+    case MODULE_CONFIG_ITEM_BOOL:
+        config_PutIntVariable( p_config->psz_name, p_config->i_value );
+        break;
+    }
 }
index d9515fa8b54aaed1e3f4d474f91df795315afdd0..aeb1b457d671e104cad4561561f797f058075b8f 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_control.h: prototypes for control functions
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: gtk_preferences.h,v 1.2 2001/05/15 14:49:48 stef Exp $
+ * $Id: gtk_preferences.h,v 1.3 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -22,8 +22,4 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  *****************************************************************************/
 
-gboolean GtkPreferencesShow   ( GtkWidget *, GdkEventButton *, gpointer );
-void     GtkPreferencesOk     ( GtkButton *, gpointer );
-void     GtkPreferencesApply  ( GtkButton *, gpointer );
-void     GtkPreferencesCancel ( GtkButton *, gpointer );
-void     GtkPreferencesActivate( GtkMenuItem *, gpointer );
+void GtkPreferencesActivate( GtkMenuItem *, gpointer );
index 9805e27d58aa2a27229c7dbf5f39061c6236be06..7a6ba55136af6b503db1b6e01132f298be37ad3d 100644 (file)
@@ -2,7 +2,7 @@
  * xmga.c : X11 MGA plugin for vlc
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: xmga.c,v 1.6 2002/02/24 20:51:10 gbazin Exp $
+ * $Id: xmga.c,v 1.7 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -267,9 +267,9 @@ static int vout_Create( vout_thread_t *p_vout )
         return( 1 );
     }
 
-    /* Open display, unsing the VOUT_DISPLAY_VAR config variable or the DISPLAY
+    /* Open display, unsing the "display" config variable or the DISPLAY
      * environment variable */
-    psz_display = config_GetPszVariable( VOUT_DISPLAY_VAR );
+    psz_display = config_GetPszVariable( "display" );
     p_vout->p_sys->p_display = XOpenDisplay( psz_display );
 
     if( p_vout->p_sys->p_display == NULL )                          /* error */
index 3944ad9653975916981395060c673b19745672b1..cb393e2cdfad285c30b302877ad7983e49e80125 100644 (file)
@@ -2,7 +2,7 @@
  * mpeg_ps.c : Program Stream input module for vlc
  *****************************************************************************
  * Copyright (C) 2000-2001 VideoLAN
- * $Id: mpeg_ps.c,v 1.5 2002/03/04 23:56:37 massiot Exp $
+ * $Id: mpeg_ps.c,v 1.6 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -216,11 +216,11 @@ static int PSInit( input_thread_t * p_input )
 
                     case MPEG1_AUDIO_ES:
                     case MPEG2_AUDIO_ES:
-                        if( config_GetIntVariable( INPUT_CHANNEL_VAR )
+                        if( config_GetIntVariable( "input_channel" )
                                 == (p_es->i_id & 0x1F) ||
-                              ( config_GetIntVariable( INPUT_CHANNEL_VAR ) < 0
+                              ( config_GetIntVariable( "input_channel" ) < 0
                                 && !(p_es->i_id & 0x1F) ) )
-                        switch( config_GetIntVariable( INPUT_AUDIO_VAR ) )
+                        switch( config_GetIntVariable( "input_audio" ) )
                         {
                         case -1:
                         case REQUESTED_MPEG:
@@ -229,11 +229,11 @@ static int PSInit( input_thread_t * p_input )
                         break;
 
                     case AC3_AUDIO_ES:
-                        if( config_GetIntVariable( INPUT_CHANNEL_VAR )
+                        if( config_GetIntVariable( "input_channel" )
                                 == ((p_es->i_id & 0xF00) >> 8) ||
-                              ( config_GetIntVariable( INPUT_CHANNEL_VAR ) < 0
+                              ( config_GetIntVariable( "input_channel" ) < 0
                                 && !((p_es->i_id & 0xF00) >> 8) ) )
-                        switch( config_GetIntVariable( INPUT_AUDIO_VAR ) )
+                        switch( config_GetIntVariable( "input_audio" ) )
                         {
                         case -1:
                         case REQUESTED_AC3:
@@ -242,7 +242,7 @@ static int PSInit( input_thread_t * p_input )
                         break;
 
                     case DVD_SPU_ES:
-                        if( config_GetIntVariable( INPUT_SUBTITLE_VAR )
+                        if( config_GetIntVariable( "input_subtitle" )
                                 == ((p_es->i_id & 0x1F00) >> 8) )
                         {
                             input_SelectES( p_input, p_es );
@@ -250,11 +250,11 @@ static int PSInit( input_thread_t * p_input )
                         break;
 
                     case LPCM_AUDIO_ES:
-                        if( config_GetIntVariable( INPUT_CHANNEL_VAR )
+                        if( config_GetIntVariable( "input_channel" )
                                 == ((p_es->i_id & 0x1F00) >> 8) ||
-                              ( config_GetIntVariable( INPUT_CHANNEL_VAR ) < 0
+                              ( config_GetIntVariable( "input_channel" ) < 0
                                 && !((p_es->i_id & 0x1F00) >> 8) ) )
-                        switch( config_GetIntVariable( INPUT_AUDIO_VAR ) )
+                        switch( config_GetIntVariable( "input_audio" ) )
                         {
                         case -1:
                         case REQUESTED_LPCM:
index e57e2eb940eb88e64f3e9f434c00ed3ece8874cf..8ad374a72bd5c5983bb448cc5e56a01c6091c3a0 100644 (file)
@@ -2,7 +2,7 @@
  * vpar_synchro.c : frame dropping routines
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: vpar_synchro.c,v 1.7 2002/02/24 20:51:10 gbazin Exp $
+ * $Id: vpar_synchro.c,v 1.8 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *          Samuel Hocevar <sam@via.ecp.fr>
@@ -534,7 +534,7 @@ void vpar_SynchroNewPicture( vpar_thread_t * p_vpar, int i_coding_type,
 static int SynchroType( void )
 {
     char psz_synchro_tmp[5];
-    char * psz_synchro = config_GetPszVariable( VPAR_SYNCHRO_VAR );
+    char * psz_synchro = config_GetPszVariable( "vpar_synchro" );
 
     if( psz_synchro == NULL )
     {
index bae150a6d3451bc90b4ce8ab545143549faeae17..77f845e81cb7c18f92d3a74dfecda92ae5369ccc 100644 (file)
@@ -2,7 +2,7 @@
  * ipv4.c: IPv4 network abstraction layer
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: ipv4.c,v 1.4 2002/03/04 23:56:37 massiot Exp $
+ * $Id: ipv4.c,v 1.5 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *          Mathias Kretschmer <mathias@research.att.com>
@@ -163,7 +163,7 @@ static int OpenUDP( network_socket_t * p_socket )
 
     if( i_bind_port == 0 )
     {
-        i_bind_port = config_GetIntVariable( INPUT_PORT_VAR );
+        i_bind_port = config_GetIntVariable( "server_port" );
     }
 
     /* Open a SOCK_DGRAM (UDP) socket, in the AF_INET domain, automatic (0)
index 209bf68d439b9dab44d3bae66cf86bfefeeacb2d..936ed4fc3482e7df1a76fbe1e76c931d04401c23 100644 (file)
@@ -2,7 +2,7 @@
  * ipv6.c: IPv6 network abstraction layer
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: ipv6.c,v 1.1 2002/03/04 23:56:37 massiot Exp $
+ * $Id: ipv6.c,v 1.2 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Alexis Guillard <alexis.guillard@bt.com>
  *          Christophe Massiot <massiot@via.ecp.fr>
@@ -148,7 +148,7 @@ static int OpenUDP( network_socket_t * p_socket )
 
     if( i_bind_port == 0 )
     {
-        i_bind_port = config_GetIntVariable( INPUT_PORT_VAR );
+        i_bind_port = config_GetIntVariable( "server_port" );
     }
 
     /* Open a SOCK_DGRAM (UDP) socket, in the AF_INET6 domain, automatic (0)
index 20bc5322ceaf059d7927b89317058fc7ae282859..20d0b96f6677e26179cbb911f73f831e9e62d238 100644 (file)
@@ -142,14 +142,14 @@ static int vout_Create( vout_thread_t *p_vout )
     memset( p_vout->p_sys, 0, sizeof( vout_sys_t ) );
 
     p_vout->b_fullscreen = 
-        config_GetIntVariable( VOUT_FULLSCREEN_VAR );
+        config_GetIntVariable( "fullscreen" );
     p_vout->p_sys->i_mode = 
-        config_GetIntVariable( VOUT_NOOVERLAY_VAR ) ?
+        config_GetIntVariable( "nooverlay" ) ?
         MODE_NORMAL_MEM : MODE_VIDEO_OVERLAY;
     p_vout->p_sys->dim.w =
-        config_GetIntVariable( VOUT_WIDTH_VAR );
+        config_GetIntVariable( "width" );
     p_vout->p_sys->dim.h =
-        config_GetIntVariable( VOUT_HEIGHT_VAR );
+        config_GetIntVariable( "height" );
 
     /* init display and create window */
     if( QNXInitDisplay( p_vout ) || QNXCreateWnd( p_vout ) )
index 04bf16e5d2676742742c1560305e55e9e96622fd..f68b5568c07d56db4c1511c8be3a196cc8882dc8 100644 (file)
@@ -2,7 +2,7 @@
  * logger.c : file logging plugin for vlc
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: logger.c,v 1.4 2002/02/24 20:51:10 gbazin Exp $
+ * $Id: logger.c,v 1.5 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -103,10 +103,9 @@ static int intf_Open( intf_thread_t *p_intf )
     }
 
     if( !(psz_filename = psz_filename_tmp
-          = config_GetPszVariable( INTF_METHOD_VAR )) )
+          = config_GetPszVariable( "intf" )) )
     {
-        intf_ErrMsg( "intf error: configuration variable %s empty",
-                     INTF_METHOD_VAR );
+        intf_ErrMsg( "intf error: configuration variable intf empty" );
         return -1;
     }
 
index cf465d1e7c560175b38a46f3c73f22647ffddfc4..85b320d7164d7621bff131193acb8df5b0aca462 100644 (file)
@@ -164,7 +164,7 @@ static int VCDOpen( struct input_thread_s *p_input )
             free( psz_orig );
             return -1;
         }
-        psz_source = config_GetPszVariable( INPUT_VCD_DEVICE_VAR );
+        psz_source = config_GetPszVariable( "vcd_device" );
     }
 
     /* test the type of file given */
index b31695f957be4a6f5771a1b42d847373f0d4d2e8..6845b18659a383247c53a97e6e3da9ceec177c39 100644 (file)
@@ -2,7 +2,7 @@
  * xcommon.c: Functions common to the X11 and XVideo plugins
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: xcommon.c,v 1.20 2002/03/03 20:42:21 gbazin Exp $
+ * $Id: xcommon.c,v 1.21 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -295,9 +295,9 @@ static int vout_Create( vout_thread_t *p_vout )
         return( 1 );
     }
 
-    /* Open display, unsing the VOUT_DISPLAY_VAR config variable or the DISPLAY
+    /* Open display, unsing the "display" config variable or the DISPLAY
      * environment variable */
-    psz_display = config_GetPszVariable( VOUT_DISPLAY_VAR );
+    psz_display = config_GetPszVariable( "display" );
     p_vout->p_sys->p_display = XOpenDisplay( psz_display );
 
     if( p_vout->p_sys->p_display == NULL )                          /* error */
index 172b38eec0200b52326fe505e11b0de2ff9b7f00..58994641ab8fbb70a45dbbd4930d987088d09fa1 100644 (file)
@@ -2,7 +2,7 @@
  * audio_output.c : audio output thread
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: audio_output.c,v 1.81 2002/03/04 22:18:25 gbazin Exp $
+ * $Id: audio_output.c,v 1.82 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *          Cyril Deguet <asmax@via.ecp.fr>
@@ -96,15 +96,15 @@ aout_thread_t *aout_CreateThread( int *pi_status, int i_channels, int i_rate )
     }
 
     p_aout->i_latency = 0;
-    p_aout->i_rate = config_GetIntVariable( AOUT_RATE_VAR );
-    p_aout->i_channels = config_GetIntVariable( AOUT_MONO_VAR ) ? 1 : 2;
+    p_aout->i_rate = config_GetIntVariable( "rate" );
+    p_aout->i_channels = config_GetIntVariable( "mono" ) ? 1 : 2;
 
     /* Maybe we should pass this setting in argument */
     p_aout->i_format = AOUT_FORMAT_DEFAULT;
 
     /* special setting for ac3 pass-through mode */
     /* FIXME is it necessary ? (cf ac3_adec.c) */
-    if( config_GetIntVariable( AOUT_SPDIF_VAR ) && p_main->b_ac3 )
+    if( config_GetIntVariable( "spdif" ) && p_main->b_ac3 )
     {
         intf_WarnMsg( 4, "aout info: setting ac3 spdif" );
         p_aout->i_format = AOUT_FMT_AC3;
@@ -118,7 +118,7 @@ aout_thread_t *aout_CreateThread( int *pi_status, int i_channels, int i_rate )
     }
 
     /* Choose the best module */
-    psz_name = config_GetPszVariable( AOUT_METHOD_VAR );
+    psz_name = config_GetPszVariable( "aout" );
     p_aout->p_module = module_Need( MODULE_CAPABILITY_AOUT, psz_name,
                                     (void *)p_aout );
     if( psz_name ) free( psz_name );
@@ -149,7 +149,7 @@ aout_thread_t *aout_CreateThread( int *pi_status, int i_channels, int i_rate )
     }
 
     /* Initialize the volume level */
-    p_aout->i_volume = config_GetIntVariable( AOUT_VOLUME_VAR );
+    p_aout->i_volume = config_GetIntVariable( "volume" );
     p_aout->i_savedvolume = 0;
     
     /* FIXME: maybe it would be cleaner to change SpawnThread prototype
index 456577e19da42f9773cba1b9d8112ac5180b7733..88ef91948bce6db39bce462e53fd20d23735137c 100644 (file)
@@ -4,7 +4,7 @@
  * decoders.
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: input.c,v 1.188 2002/03/09 16:48:33 stef Exp $
+ * $Id: input.c,v 1.189 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *          Alexis Guillard <alexis.guillard@bt.com>
@@ -187,9 +187,8 @@ input_thread_t *input_CreateThread ( playlist_item_t *p_item, int *pi_status )
     p_input->stream.control.i_status = PLAYING_S;
     p_input->stream.control.i_rate = DEFAULT_RATE;
     p_input->stream.control.b_mute = 0;
-    p_input->stream.control.b_grayscale = config_GetIntVariable(
-                                                  VOUT_GRAYSCALE_VAR );
-    p_input->stream.control.i_smp = config_GetIntVariable( VDEC_SMP_VAR );
+    p_input->stream.control.b_grayscale = config_GetIntVariable( "grayscale" );
+    p_input->stream.control.i_smp = config_GetIntVariable( "vdec_smp" );
 
     intf_WarnMsg( 1, "input: playlist item `%s'", p_input->psz_source );
 
index 6e6f699608e00a7ae6ee0c6331c19980f52485b6..5adfd4a46d4f7053c07cb2497e23126f9cec6db8 100644 (file)
@@ -2,7 +2,7 @@
  * input_dec.c: Functions for the management of decoders
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: input_dec.c,v 1.29 2002/03/01 00:33:18 massiot Exp $
+ * $Id: input_dec.c,v 1.30 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -50,11 +50,11 @@ vlc_thread_t input_RunDecoder( input_thread_t * p_input,
 
     if( p_es->i_type == MPEG1_AUDIO_ES || p_es->i_type == MPEG2_AUDIO_ES )
     {
-        psz_plugin = config_GetPszVariable( ADEC_MPEG_VAR );
+        psz_plugin = config_GetPszVariable( "mpeg_adec" );
     }
     if( p_es->i_type == AC3_AUDIO_ES )
     {
-        psz_plugin = config_GetPszVariable( ADEC_AC3_VAR );
+        psz_plugin = config_GetPszVariable( "ac3_adec" );
     }
 
     /* Get a suitable module */
index 7bf7351d2f3ce5041cc856857c138e10c57c2947..c9cfa3fd9d8bd780ab1920f02f868217f3769474 100644 (file)
@@ -2,7 +2,7 @@
  * mpeg_system.c: TS, PS and PES management
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: mpeg_system.c,v 1.83 2002/03/05 17:46:33 stef Exp $
+ * $Id: mpeg_system.c,v 1.84 2002/03/11 07:23:09 gbazin Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *          Michel Lespinasse <walken@via.ecp.fr>
@@ -812,11 +812,11 @@ es_descriptor_t * input_ParsePS( input_thread_t * p_input,
                         p_es->i_cat = AUDIO_ES;
 #ifdef AUTO_SPAWN
                         if( !p_input->stream.b_seekable )
-                        if( config_GetIntVariable( INPUT_CHANNEL_VAR )
+                        if( config_GetIntVariable( "input_channel" )
                                 == (p_es->i_id & 0x1F) ||
-                            ( config_GetIntVariable( INPUT_CHANNEL_VAR ) < 0
+                            ( config_GetIntVariable( "input_channel" ) < 0
                               && !(p_es->i_id & 0x1F) ) )
-                        switch( config_GetIntVariable( INPUT_AUDIO_VAR ) )
+                        switch( config_GetIntVariable( "input_audio" ) )
                         {
                         case -1:
                         case REQUESTED_MPEG:
@@ -832,11 +832,11 @@ es_descriptor_t * input_ParsePS( input_thread_t * p_input,
                         p_es->i_cat = AUDIO_ES;
 #ifdef AUTO_SPAWN
                         if( !p_input->stream.b_seekable )
-                        if( config_GetIntVariable( INPUT_CHANNEL_VAR )
+                        if( config_GetIntVariable( "input_channel" )
                                 == ((p_es->i_id & 0xF00) >> 8) ||
-                            ( config_GetIntVariable( INPUT_CHANNEL_VAR ) < 0
+                            ( config_GetIntVariable( "input_channel" ) < 0
                               && !((p_es->i_id & 0xF00) >> 8)) )
-                        switch( config_GetIntVariable( INPUT_AUDIO_VAR ) )
+                        switch( config_GetIntVariable( "input_audio" ) )
                         {
                         case -1:
                         case REQUESTED_AC3:
@@ -850,7 +850,7 @@ es_descriptor_t * input_ParsePS( input_thread_t * p_input,
                         p_es->i_type = DVD_SPU_ES;
                         p_es->i_cat = SPU_ES;
 #ifdef AUTO_SPAWN
-                        if( config_GetIntVariable( INPUT_SUBTITLE_VAR )
+                        if( config_GetIntVariable( "input_subtitle" )
                                 == ((p_es->i_id & 0x1F00) >> 8) )
                         {
                             if( !p_input->stream.b_seekable )
@@ -1638,7 +1638,7 @@ static void input_DecodePMT( input_thread_t * p_input, es_descriptor_t * p_es )
         if( p_main->b_audio )
         {
             /* Default is the first one */
-            i_required_audio_es = config_GetIntVariable( INPUT_CHANNEL_VAR );
+            i_required_audio_es = config_GetIntVariable( "input_channel" );
             if( i_required_audio_es < 0 )
             {
                 i_required_audio_es = 1;
@@ -1653,7 +1653,7 @@ static void input_DecodePMT( input_thread_t * p_input, es_descriptor_t * p_es )
         if( p_main->b_video )
         {
             /* for spu, default is none */
-            i_required_spu_es = config_GetIntVariable( INPUT_SUBTITLE_VAR );
+            i_required_spu_es = config_GetIntVariable( "input_subtitle" );
             if( i_required_spu_es < 0 )
             {
                 i_required_spu_es = 0;
index eaaeb92cbc0e81e897e5d1de10923932d075938c..df26af55978769dd42015401359fa0077e83c996 100644 (file)
@@ -4,7 +4,7 @@
  * interface, such as command line.
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: interface.c,v 1.91 2002/03/06 03:27:17 sam Exp $
+ * $Id: interface.c,v 1.92 2002/03/11 07:23:10 gbazin Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *
@@ -71,7 +71,7 @@ intf_thread_t* intf_Create( void )
     }
 
     /* Choose the best module */
-    psz_name = config_GetPszVariable( INTF_METHOD_VAR );
+    psz_name = config_GetPszVariable( "intf" );
     p_intf->p_module = module_Need( MODULE_CAPABILITY_INTF, psz_name,
                                     (void *)p_intf );
 
@@ -165,7 +165,7 @@ static void intf_Manage( intf_thread_t *p_intf )
 
                 p_main->p_playlist->b_stopped = 0;
                 p_main->p_playlist->i_mode = PLAYLIST_FORWARD + 
-                    config_GetIntVariable( PLAYLIST_LOOP_VAR );
+                    config_GetIntVariable( "playlist_loop" );
                 intf_WarnMsg( 3, "intf: creating new input thread" );
                 p_input = input_CreateThread( &p_main->p_playlist->current,
                                               NULL );
index e954e222f33dba3cce2b1e1502bfaf59a8078172..e48bf8a337581d7d1917bdea5921b6ef98fb7391 100644 (file)
@@ -4,7 +4,7 @@
  * and spawn threads.
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: main.c,v 1.161 2002/03/06 23:54:28 sam Exp $
+ * $Id: main.c,v 1.162 2002/03/11 07:23:10 gbazin Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
 #define MODULE_NAME main
 #include "modules_inner.h"                        /* for configuration stuff */
 
+
+#define INTF_TEXT "interface method"
+#define INTF_LONGTEXT "This option allows you to select the interface used by"\
+                      " vlc.\nNote that the default behaviour is to" \
+                      " automatically select the best method available"
+
+#define WARNING_TEXT "warning level (or use -v, -vv, etc...)"
+#define WARNING_LONGTEXT "Increasing the warning level will allow you to see" \
+                         " more debug messages and can sometimes help you to" \
+                         " troubleshoot a problem"
+
+#define STATS_TEXT "output statistics"
+#define STATS_LONGTEXT "Enabling the stats mode will flood your log console" \
+                       " with various statistics messages"
+
+#define INTF_PATH_TEXT "interface default search path"
+#define INTF_PATH_LONGTEXT "This option allows you to set the default path" \
+                           "that the interface will open when looking for a" \
+                           " file"
+
+#define AOUT_TEXT "audio output method"
+#define AOUT_LONGTEXT "This option allows you to select the audio" \
+                      " audio output method used by vlc.\nNote that the" \
+                      " default behaviour is to automatically select the best"\
+                      " method available"
+
+#define NOAUDIO_TEXT "disable audio"
+#define NOAUDIO_LONGTEXT "This will completely disable the audio output. The" \
+                         " audio decoding stage shouldn't even be done, so it"\
+                         " can allow you to save some processing power"
+
+#define MONO_TEXT "mono audio"
+#define MONO_LONGTEXT "This will force a mono audio output"
+
+#define VOLUME_TEXT "audio output volume"
+#define VOLUME_LONGTEXT "You can set the default audio output volume here"
+
+#define RATE_TEXT "audio output frequency"
+#define RATE_LONGTEXT "You can force the audio output frequency here"
+
+#define DESYNC_TEXT "Compensate desynchronization of audio (in ms)"
+#define DESYNC_LONGTEXT "This option allows you to delay the audio output." \
+                        "This can be handy if you notice a lag between the" \
+                        " video and the audio"
+
+#define VOUT_TEXT "video output method"
+#define VOUT_LONGTEXT "This option allows you to select the video output" \
+                      "method used by vlc.\nNote that the default behaviour" \
+                      "is to automatically select the best method available"
+
+#define NOVIDEO_TEXT "disable video"
+#define NOVIDEO_LONGTEXT "This will completely disable the video output. The" \
+                         "video decoding stage shouldn't even be done, so it" \
+                         "can allow you to save some processing power"
+
+#define DISPLAY_TEXT "display identifier"
+#define DISPLAY_LONGTEXT NULL
+
+#define WIDTH_TEXT "video width"
+#define WIDTH_LONGTEXT "You can enforce the video width here.\nNote" \
+                       "that by default vlc will adapt to the video properties"
+
+#define HEIGHT_TEXT "video height"
+#define HEIGHT_LONGTEXT NULL
+
+#define GRAYSCALE_TEXT "grayscale video output"
+#define GRAYSCALE_LONGTEXT NULL
+
+#define FULLSCREEN_TEXT "fullscreen video output"
+#define FULLSCREEN_LONGTEXT NULL
+
+#define NOOVERLAY_TEXT "disable accelerated display"
+#define NOOVERLAY_LONGTEXT NULL
+
+#define SPUMARGIN_TEXT "force SPU position"
+#define SPUMARGIN_LONGTEXT NULL
+
+#define FILTER_TEXT "video filter module"
+#define FILTER_LONGTEXT NULL
+
+#define INPUT_TEXT "input method"
+#define INPUT_LONGTEXT NULL
+
+#define SERVER_PORT_TEXT "server port"
+#define SERVER_PORT_LONGTEXT NULL
+
+#define NETCHANNEL_TEXT "enable network channel mode"
+#define NETCHANNEL_LONGTEXT NULL
+
+#define CHAN_SERV_TEXT "channel server address"
+#define CHAN_SERV_LONGTEXT NULL
+
+#define CHAN_PORT_TEXT "channel server port"
+#define CHAN_PORT_LONGTEXT NULL
+
+#define IFACE_TEXT "network interface"
+#define IFACE_LONGTEXT NULL
+
+#define INPUT_AUDIO_TEXT "choose audio"
+#define INPUT_AUDIO_LONGTEXT NULL
+
+#define INPUT_CHAN_TEXT "choose channel"
+#define INPUT_CHAN_LONGTEXT NULL
+
+#define INPUT_SUBT_TEXT "choose subtitles"
+#define INPUT_SUBT_LONGTEXT NULL
+
+#define DVD_DEV_TEXT "DVD device"
+#define DVD_DEV_LONGTEXT NULL
+
+#define VCD_DEV_TEXT "VCD device"
+#define VCD_DEV_LONGTEXT NULL
+
+#define IPV6_TEXT "force IPv6"
+#define IPV6_LONGTEXT NULL
+
+#define IPV4_TEXT "force IPv6"
+#define IPV4_LONGTEXT NULL
+
+#define ADEC_MPEG_TEXT "choose MPEG audio decoder"
+#define ADEC_MPEG_LONGTEXT NULL
+
+#define ADEC_AC3_TEXT "choose AC3 audio decoder"
+#define ADEC_AC3_LONGTEXT NULL
+
+#define VDEC_SMP_TEXT "use additional processors"
+#define VDEC_SMP_LONGTEXT NULL
+
+#define VPAR_SYNCHRO_TEXT "force synchro algorithm {I|I+|IP|IP+|IPB}"
+#define VPAR_SYNCHRO_LONGTEXT NULL
+
+#define NOMMX_TEXT "disable CPU's MMX support"
+#define NOMMX_LONGTEXT NULL
+
+#define NO3DN_TEXT "disable CPU's 3D Now! support"
+#define NO3DN_LONGTEXT NULL
+
+#define NOMMXEXT_TEXT "disable CPU's MMX EXT support"
+#define NOMMXEXT_LONGTEXT NULL
+
+#define NOSSE_TEXT "disable CPU's SSE support"
+#define NOSSE_LONGTEXT NULL
+
+#define NOALTIVEC_TEXT "disable CPU's AltiVec support"
+#define NOALTIVEC_LONGTEXT NULL
+
+#define PLAYLIST_LAUNCH_TEXT "launch playlist on startup"
+#define PLAYLIST_LAUNCH_LONGTEXT NULL
+
+#define PLAYLIST_ENQUEUE_TEXT "enqeue playlist as default"
+#define PLAYLIST_ENQUEUE_LONGTEXT NULL
+
+#define PLAYLIST_LOOP_TEXT "loop playlist on end"
+#define PLAYLIST_LOOP_LONGTEXT NULL
+
+#define MEMCPY_TEXT "memory copy method"
+#define MEMCPY_LONGTEXT NULL
+
 /* Quick usage guide
 MODULE_CONFIG_START
 MODULE_CONFIG_STOP
@@ -109,96 +267,77 @@ ADD_BOOL( option_name, p_callback, text, longtext )
 
 MODULE_CONFIG_START
 
-/* Help options */
-ADD_CATEGORY_HINT( "Help Options", NULL )
-ADD_BOOL    ( "help", NULL,"print help and exit (or use -h)", NULL )
-ADD_BOOL    ( "longhelp", NULL, "print long help version and exit (or use -H)",
-              NULL )
-ADD_BOOL    ( "list", NULL, "list available plugins (or use -l)", NULL )
-ADD_STRING  ( "pluginhelp", NULL, NULL,"print help on a plugin and exit",NULL )
-ADD_BOOL    ( "version", NULL, "output version information and exit", NULL )
-
 /* Interface options */
-ADD_CATEGORY_HINT( "Interface Options", NULL)
-ADD_PLUGIN  ( INTF_METHOD_VAR, MODULE_CAPABILITY_INTF, NULL, NULL,
-              "interface method", NULL )
-ADD_INTEGER ( INTF_WARNING_VAR, 0, NULL, "warning level (or use -v)", NULL )
-ADD_BOOL    ( INTF_STATS_VAR, NULL, "output statistics", NULL )
-ADD_STRING  ( INTF_PATH_VAR, NULL, NULL, "interface default search path", NULL)
-
-/* Audio Options */
-ADD_CATEGORY_HINT( "Audio Options", NULL)
-ADD_BOOL    ( AOUT_NOAUDIO_VAR, NULL, "disable audio", NULL )
-ADD_PLUGIN  ( AOUT_METHOD_VAR, MODULE_CAPABILITY_AOUT, NULL, NULL,
-              "audio output method", NULL )
-ADD_BOOL    ( AOUT_MONO_VAR, NULL, "mono audio", NULL )
-ADD_INTEGER ( AOUT_VOLUME_VAR, VOLUME_DEFAULT, NULL, "VLC output volume", NULL)
-ADD_INTEGER ( AOUT_RATE_VAR, 44100, NULL, "VLC output frequency", NULL )
-ADD_INTEGER ( AOUT_DESYNC_VAR, 0, NULL, "Compensate desynchronization of the "
-                                        "audio (in ms)", NULL )
+ADD_CATEGORY_HINT( "Interface", NULL)
+ADD_PLUGIN  ( "intf", MODULE_CAPABILITY_INTF, NULL, NULL, INTF_TEXT, INTF_LONGTEXT )
+ADD_INTEGER ( "warning", 0, NULL, WARNING_TEXT, WARNING_LONGTEXT )
+ADD_BOOL    ( "stats", NULL, STATS_TEXT, STATS_LONGTEXT )
+ADD_STRING  ( "search_path", NULL, NULL, INTF_PATH_TEXT, INTF_PATH_LONGTEXT )
+
+/* Audio options */
+ADD_CATEGORY_HINT( "Audio", NULL)
+ADD_PLUGIN  ( "aout", MODULE_CAPABILITY_AOUT, NULL, NULL, AOUT_TEXT, AOUT_LONGTEXT )
+ADD_BOOL    ( "noaudio", NULL, NOAUDIO_TEXT, NOAUDIO_LONGTEXT )
+ADD_BOOL    ( "mono", NULL, MONO_TEXT, MONO_LONGTEXT )
+ADD_INTEGER ( "volume", VOLUME_DEFAULT, NULL, VOLUME_TEXT, VOLUME_LONGTEXT )
+ADD_INTEGER ( "rate", 44100, NULL, RATE_TEXT, RATE_LONGTEXT )
+ADD_INTEGER ( "desync", 0, NULL, DESYNC_TEXT, DESYNC_LONGTEXT )
 
 /* Video options */
-ADD_CATEGORY_HINT( "Video Options", NULL )
-ADD_BOOL    ( VOUT_NOVIDEO_VAR, NULL, "disable video", NULL )
-ADD_PLUGIN  ( VOUT_METHOD_VAR, MODULE_CAPABILITY_VOUT, NULL, NULL,
-              "video output method", NULL )
-ADD_STRING  ( VOUT_DISPLAY_VAR, NULL, NULL, "display string", NULL )
-ADD_INTEGER ( VOUT_WIDTH_VAR, 720, NULL, "display width", NULL )
-ADD_INTEGER ( VOUT_HEIGHT_VAR, 576, NULL, "display height", NULL )
-ADD_BOOL    ( VOUT_GRAYSCALE_VAR, NULL, "grayscale output", NULL )
-ADD_BOOL    ( VOUT_FULLSCREEN_VAR, NULL, "fullscreen output", NULL )
-ADD_BOOL    ( VOUT_NOOVERLAY_VAR, NULL, "disable accelerated display", NULL )
-ADD_PLUGIN  ( VOUT_FILTER_VAR, MODULE_CAPABILITY_VOUT, NULL, NULL,
-              "video filter module", NULL )
-ADD_INTEGER ( VOUT_SPUMARGIN_VAR, -1, NULL, "force SPU position", NULL )
+ADD_CATEGORY_HINT( "Video", NULL )
+ADD_PLUGIN  ( "vout", MODULE_CAPABILITY_VOUT, NULL, NULL, VOUT_TEXT, VOUT_LONGTEXT )
+ADD_BOOL    ( "novideo", NULL, NOVIDEO_TEXT, NOVIDEO_LONGTEXT )
+ADD_STRING  ( "display", NULL, NULL, DISPLAY_TEXT, DISPLAY_LONGTEXT )
+ADD_INTEGER ( "width", 720, NULL, WIDTH_TEXT, WIDTH_LONGTEXT )
+ADD_INTEGER ( "height", 576, NULL, HEIGHT_TEXT, HEIGHT_LONGTEXT )
+ADD_BOOL    ( "grayscale", NULL, GRAYSCALE_TEXT, GRAYSCALE_LONGTEXT )
+ADD_BOOL    ( "fullscreen", NULL, FULLSCREEN_TEXT, FULLSCREEN_LONGTEXT )
+ADD_BOOL    ( "nooverlay", NULL, NOOVERLAY_TEXT, NOOVERLAY_LONGTEXT )
+ADD_INTEGER ( "spumargin", -1, NULL, SPUMARGIN_TEXT, SPUMARGIN_LONGTEXT )
+ADD_PLUGIN  ( "filter", MODULE_CAPABILITY_VOUT, NULL, NULL, FILTER_TEXT, FILTER_LONGTEXT )
 
 /* Input options */
-ADD_CATEGORY_HINT( "Input Options", NULL )
-ADD_STRING  ( INPUT_METHOD_VAR, NULL, NULL, "input method", NULL )
-ADD_INTEGER ( INPUT_PORT_VAR, 1234, NULL, "server port", NULL )
-ADD_BOOL    ( INPUT_NETWORK_CHANNEL_VAR, NULL, "enable network channel mode",
-              NULL )
-ADD_STRING  ( INPUT_CHANNEL_SERVER_VAR, "localhost", NULL,
-              "channel server address", NULL )
-ADD_INTEGER ( INPUT_CHANNEL_PORT_VAR, 6010, NULL, "channel server port", NULL )
-ADD_STRING  ( INPUT_IFACE_VAR, "eth0", NULL, "network interface", NULL )
-
-ADD_INTEGER ( INPUT_AUDIO_VAR, -1, NULL, "choose audio", NULL )
-ADD_INTEGER ( INPUT_CHANNEL_VAR, -1, NULL, "choose channel", NULL )
-ADD_INTEGER ( INPUT_SUBTITLE_VAR, -1, NULL, "choose subtitles", NULL )
-
-ADD_STRING  ( INPUT_DVD_DEVICE_VAR, "/dev/dvd", NULL, "DVD device", NULL )
-ADD_STRING  ( INPUT_VCD_DEVICE_VAR, "/dev/cdrom", NULL, "VCD device", NULL )
-ADD_BOOL    ( INPUT_IPV6_VAR, NULL, "force IPv6", NULL )
-ADD_BOOL    ( INPUT_IPV4_VAR, NULL, "force IPv4", NULL )
+ADD_CATEGORY_HINT( "Input", NULL )
+ADD_STRING  ( "input", NULL, NULL, INPUT_TEXT, INPUT_LONGTEXT )
+ADD_INTEGER ( "server_port", 1234, NULL, SERVER_PORT_TEXT, SERVER_PORT_LONGTEXT )
+ADD_BOOL    ( "network_channel", NULL, NETCHANNEL_TEXT, NETCHANNEL_LONGTEXT )
+ADD_STRING  ( "channel_server", "localhost", NULL, CHAN_SERV_TEXT, CHAN_SERV_LONGTEXT )
+ADD_INTEGER ( "channel_port", 6010, NULL, CHAN_PORT_TEXT, CHAN_PORT_LONGTEXT )
+ADD_STRING  ( "iface", "eth0", NULL, IFACE_TEXT, IFACE_LONGTEXT )
+
+ADD_INTEGER ( "input_audio", -1, NULL, INPUT_AUDIO_TEXT, INPUT_AUDIO_LONGTEXT )
+ADD_INTEGER ( "input channel", -1, NULL, INPUT_CHAN_TEXT, INPUT_CHAN_LONGTEXT )
+ADD_INTEGER ( "input_subtitle", -1, NULL, INPUT_SUBT_TEXT, INPUT_SUBT_LONGTEXT )
+
+ADD_STRING  ( "dvd_device", "/dev/dvd", NULL, DVD_DEV_TEXT, DVD_DEV_LONGTEXT )
+ADD_STRING  ( "vcd_device", "/dev/cdrom", NULL, VCD_DEV_TEXT, VCD_DEV_LONGTEXT )
+ADD_BOOL    ( "ipv6", NULL, IPV6_TEXT, IPV6_LONGTEXT )
+ADD_BOOL    ( "ipv4", NULL, IPV4_TEXT, IPV4_LONGTEXT )
 
 /* Decoder options */
-ADD_CATEGORY_HINT( "Decoders Options", NULL )
-ADD_PLUGIN  ( ADEC_MPEG_VAR, MODULE_CAPABILITY_DECODER, NULL, NULL,
-              "choose MPEG audio decoder", NULL )
-ADD_PLUGIN  ( ADEC_AC3_VAR, MODULE_CAPABILITY_DECODER, NULL, NULL,
-              "choose AC3 audio decoder", NULL )
-ADD_INTEGER ( VDEC_SMP_VAR, 0, NULL, "use additional processors", NULL )
-ADD_STRING  ( VPAR_SYNCHRO_VAR, NULL, NULL, "force synchro algorithm "
-                                            "{I|I+|IP|IP+|IPB}", NULL )
+ADD_CATEGORY_HINT( "Decoders", NULL )
+ADD_PLUGIN  ( "mpeg_adec", MODULE_CAPABILITY_DECODER, NULL, NULL, ADEC_MPEG_TEXT, ADEC_MPEG_LONGTEXT )
+ADD_PLUGIN  ( "ac3_adec", MODULE_CAPABILITY_DECODER, NULL, NULL, ADEC_AC3_TEXT, ADEC_AC3_LONGTEXT )
+ADD_INTEGER ( "vdec_smp", 0, NULL, VDEC_SMP_TEXT, VDEC_SMP_LONGTEXT )
+ADD_STRING  ( "vpar_synchro", NULL, NULL, VPAR_SYNCHRO_TEXT, VPAR_SYNCHRO_LONGTEXT )
 
 /* CPU options */
-ADD_CATEGORY_HINT( "CPU Options Options", NULL )
-ADD_BOOL    ( NOMMX_VAR, NULL, "disable CPU's MMX support", NULL )
-ADD_BOOL    ( NO3DN_VAR, NULL, "disable CPU's 3D Now! support", NULL )
-ADD_BOOL    ( NOMMXEXT_VAR, NULL, "disable CPU's MMX EXT support", NULL )
-ADD_BOOL    ( NOSSE_VAR, NULL, "disable CPU's SSE support", NULL )
-ADD_BOOL    ( NOALTIVEC_VAR, NULL, "disable CPU's AltiVec support", NULL )
+ADD_CATEGORY_HINT( "CPU", NULL )
+ADD_BOOL    ( "nommx", NULL, NOMMX_TEXT, NOMMX_LONGTEXT )
+ADD_BOOL    ( "no3dn", NULL, NO3DN_TEXT, NO3DN_LONGTEXT )
+ADD_BOOL    ( "nommxext", NULL, NOMMXEXT_TEXT, NOMMXEXT_LONGTEXT )
+ADD_BOOL    ( "nosse", NULL, NOSSE_TEXT, NOSSE_LONGTEXT )
+ADD_BOOL    ( "noaltivec", NULL, NOALTIVEC_TEXT, NOALTIVEC_LONGTEXT )
 
 /* Playlist options */
-ADD_BOOL    ( PLAYLIST_STARTUP_VAR, NULL, "launch playlist on startup", NULL )
-ADD_BOOL    ( PLAYLIST_ENQUEUE_VAR, NULL, "enqueue playlist as default", NULL )
-ADD_BOOL    ( PLAYLIST_LOOP_VAR, NULL, "loop on playlist end", NULL )
+ADD_CATEGORY_HINT( "Playlist", NULL )
+ADD_BOOL    ( "playlist_launch", NULL, PLAYLIST_LAUNCH_TEXT, PLAYLIST_LAUNCH_LONGTEXT )
+ADD_BOOL    ( "playlist_enqueue", NULL, PLAYLIST_ENQUEUE_TEXT, PLAYLIST_ENQUEUE_LONGTEXT )
+ADD_BOOL    ( "playlist_loop", NULL, PLAYLIST_LOOP_TEXT, PLAYLIST_LOOP_LONGTEXT )
 
 /* Misc options */
-ADD_CATEGORY_HINT( "Miscellaneous Options", NULL )
-ADD_PLUGIN  ( MEMCPY_METHOD_VAR, MODULE_CAPABILITY_MEMCPY, NULL, NULL,
-              "memory copy method", NULL )
+ADD_CATEGORY_HINT( "Miscellaneous", NULL )
+ADD_PLUGIN  ( "memcpy", MODULE_CAPABILITY_MEMCPY, NULL, NULL, MEMCPY_TEXT, MEMCPY_LONGTEXT )
 
 MODULE_CONFIG_STOP
 
@@ -212,6 +351,23 @@ MODULE_ACTIVATE_STOP
 
 MODULE_DEACTIVATE_START
 MODULE_DEACTIVATE_STOP
+
+/* Hack for help options */
+static module_t help_module;
+static module_config_t p_help_config[] = {
+    { MODULE_CONFIG_ITEM_BOOL, "help", "print help (or use -h)",
+      NULL, NULL, 0, NULL, NULL, 0 },
+    { MODULE_CONFIG_ITEM_BOOL, "longhelp", "print detailed help (or use -H)",
+      NULL, NULL, 0, NULL, NULL, 0 },
+    { MODULE_CONFIG_ITEM_BOOL, "list", "print a list of available plugins "
+      "(or use -l)", NULL, NULL, 0, NULL, NULL, 0 },
+    { MODULE_CONFIG_ITEM_STRING, "plugin", "print help on plugin (or use -p)",
+      NULL, NULL, 0, NULL, &help_module.config_lock, 0 },
+    { MODULE_CONFIG_ITEM_BOOL, "version", "print version information",
+      NULL, NULL, 0, NULL, NULL, 0 },
+    { MODULE_CONFIG_HINT_END, NULL, NULL, NULL, NULL, 0, NULL, NULL, 0 } };
+
+
 /*****************************************************************************
  * End configuration.
  *****************************************************************************/
@@ -267,6 +423,7 @@ int main( int i_argc, char *ppsz_argv[], char *ppsz_env[] )
     input_bank_t  input_bank;
     aout_bank_t   aout_bank;
     vout_bank_t   vout_bank;
+    char *psz_plugin;
     char *p_tmp;
 
     p_main        = &main_data;               /* set up the global variables */
@@ -300,7 +457,7 @@ int main( int i_argc, char *ppsz_argv[], char *ppsz_env[] )
     /*
      * Initialize threads system
      */
-    vlc_threads_init( );
+    vlc_threads_init();
 
     /*
      * Test if our code is likely to run on this CPU
@@ -345,6 +502,17 @@ int main( int i_argc, char *ppsz_argv[], char *ppsz_env[] )
     module_InitBank();
     module_LoadMain();
 
+    /* Hack: insert the help module here */
+    help_module.psz_name = "help";
+    help_module.i_config_lines = sizeof(p_help_config) /
+                                     sizeof(module_config_t);
+    help_module.i_config_items = help_module.i_config_lines - 1;
+    vlc_mutex_init( &help_module.config_lock );
+    help_module.p_config = p_help_config;
+    help_module.next = p_module_bank->first;
+    p_module_bank->first = &help_module;
+    /* end hack */
+
     if( GetConfigurationFromCmdLine( &i_argc, ppsz_argv, 1 ) )
     {
         intf_MsgDestroy();
@@ -354,6 +522,10 @@ int main( int i_argc, char *ppsz_argv[], char *ppsz_env[] )
     /* Check for short help option */
     if( config_GetIntVariable( "help" ) )
     {
+        intf_Msg( "Usage: %s [options] [parameters] [file]...\n",
+                  p_main->psz_arg0 );
+
+        Usage( "help" );
         Usage( "main" );
         return( -1 );
     }
@@ -365,6 +537,10 @@ int main( int i_argc, char *ppsz_argv[], char *ppsz_env[] )
         return( -1 );
     }
 
+    /* Hack: remove the help module here */
+    p_module_bank->first = help_module.next;
+    /* end hack */
+
     /*
      * Load the builtins and plugins into the module_bank.
      * We have to do it before GetConfiguration() because this also gets the
@@ -376,8 +552,13 @@ int main( int i_argc, char *ppsz_argv[], char *ppsz_env[] )
     intf_WarnMsg( 2, "module: module bank initialized, found %i modules",
                   p_module_bank->i_count );
 
+    /* Hack: insert the help module here */
+    help_module.next = p_module_bank->first;
+    p_module_bank->first = &help_module;
+    /* end hack */
+
     /* Check for help on plugins */
-    if( (p_tmp = config_GetPszVariable( "pluginhelp" )) )
+    if( (p_tmp = config_GetPszVariable( "plugin" )) )
     {
         Usage( p_tmp );
         free( p_tmp );
@@ -398,6 +579,11 @@ int main( int i_argc, char *ppsz_argv[], char *ppsz_env[] )
         return( -1 );
     }
 
+    /* Hack: remove the help module here */
+    p_module_bank->first = help_module.next;
+    /* end hack */
+
+
     /*
      * Override default configuration with config file settings
      */
@@ -417,21 +603,21 @@ int main( int i_argc, char *ppsz_argv[], char *ppsz_env[] )
     }
 
     /* p_main inititalization. FIXME ? */
-    p_main->i_desync = (mtime_t)config_GetIntVariable( AOUT_DESYNC_VAR )
+    p_main->i_desync = (mtime_t)config_GetIntVariable( "desync" )
       * (mtime_t)1000;
-    p_main->b_stats = config_GetIntVariable( INTF_STATS_VAR );
-    p_main->b_audio = !config_GetIntVariable( AOUT_NOAUDIO_VAR );
-    p_main->b_stereo= !config_GetIntVariable( AOUT_MONO_VAR );
-    p_main->b_video = !config_GetIntVariable( VOUT_NOVIDEO_VAR );
-    if( config_GetIntVariable( NOMMX_VAR ) )
+    p_main->b_stats = config_GetIntVariable( "stats" );
+    p_main->b_audio = !config_GetIntVariable( "noaudio" );
+    p_main->b_stereo= !config_GetIntVariable( "mono" );
+    p_main->b_video = !config_GetIntVariable( "novideo" );
+    if( config_GetIntVariable( "nommx" ) )
         p_main->i_cpu_capabilities &= ~CPU_CAPABILITY_MMX;
-    if( config_GetIntVariable( NO3DN_VAR ) )
+    if( config_GetIntVariable( "no3dn" ) )
         p_main->i_cpu_capabilities &= ~CPU_CAPABILITY_3DNOW;
-    if( config_GetIntVariable( NOMMXEXT_VAR ) )
+    if( config_GetIntVariable( "nommxext" ) )
         p_main->i_cpu_capabilities &= ~CPU_CAPABILITY_MMXEXT;
-    if( config_GetIntVariable( NOSSE_VAR ) )
+    if( config_GetIntVariable( "nosse" ) )
         p_main->i_cpu_capabilities &= ~CPU_CAPABILITY_SSE;
-    if( config_GetIntVariable( NOALTIVEC_VAR ) )
+    if( config_GetIntVariable( "noaltivec" ) )
         p_main->i_cpu_capabilities &= ~CPU_CAPABILITY_ALTIVEC;
 
 
@@ -487,8 +673,10 @@ int main( int i_argc, char *ppsz_argv[], char *ppsz_env[] )
     /*
      * Choose the best memcpy module
      */
+    psz_plugin = config_GetPszVariable( "memcpy" );
     p_main->p_memcpy_module = module_Need( MODULE_CAPABILITY_MEMCPY, NULL,
-                                           NULL );
+                                           psz_plugin );
+    if( psz_plugin ) free( psz_plugin );
     if( p_main->p_memcpy_module == NULL )
     {
         intf_ErrMsg( "intf error: no suitable memcpy module, "
@@ -504,13 +692,13 @@ int main( int i_argc, char *ppsz_argv[], char *ppsz_env[] )
     /*
      * Initialize shared resources and libraries
      */
-    if( config_GetIntVariable( INPUT_NETWORK_CHANNEL_VAR ) &&
+    if( config_GetIntVariable( "network_channel" ) &&
         network_ChannelCreate() )
     {
         /* On error during Channels initialization, switch off channels */
         intf_ErrMsg( "intf error: channels initialization failed, " 
                                  "deactivating channels" );
-        config_PutIntVariable( INPUT_NETWORK_CHANNEL_VAR, 0 );
+        config_PutIntVariable( "network_channel", 0 );
     }
 
     /*
@@ -541,7 +729,7 @@ int main( int i_argc, char *ppsz_argv[], char *ppsz_env[] )
         /*
          * Go back into channel 0 which is the network
          */
-        if( config_GetIntVariable( INPUT_NETWORK_CHANNEL_VAR ) )
+        if( config_GetIntVariable( "network_channel" ) )
         {
             network_ChannelJoin( COMMON_CHANNEL );
         }
@@ -616,8 +804,7 @@ static int GetConfigurationFromCmdLine( int *pi_argc, char *ppsz_argv[],
     struct option *p_longopts;
 
     /* Short options */
-    const char *psz_shortopts = "hHvl";
-
+    const char *psz_shortopts = "hHvlp:";
 
     /* Set default configuration and copy arguments */
     p_main->i_argc    = *pi_argc;
@@ -650,15 +837,13 @@ static int GetConfigurationFromCmdLine( int *pi_argc, char *ppsz_argv[],
      * Generate the longopts structure used by getopt_long
      */
     i_longopts_size = 0;
-    for( p_module = p_module_bank->first ;
+    for( p_module = p_module_bank->first;
          p_module != NULL ;
          p_module = p_module->next )
     {
         /* count the number of exported configuration options (to allocate
-         * longopts). The i_config_options we use is an approximation of the
-         * real number of options (it also includes markers like: category ...)
-         * but it is enough for our purpose */
-        i_longopts_size += p_module->i_config_options -1;
+         * longopts). */
+        i_longopts_size += p_module->i_config_items;
     }
 
     p_longopts = (struct option *)malloc( sizeof(struct option)
@@ -676,14 +861,11 @@ static int GetConfigurationFromCmdLine( int *pi_argc, char *ppsz_argv[],
          p_module != NULL ;
          p_module = p_module->next )
     {
-        for( i = 1; i < (p_module->i_config_options -1); i++ )
+        for( i = 0; i < p_module->i_config_lines; i++ )
         {
-            if( (p_module->p_config[i].i_type == MODULE_CONFIG_ITEM_CATEGORY)||
-                (p_module->p_config[i].i_type ==
-                     MODULE_CONFIG_ITEM_SUBCATEGORY)||
-                (p_module->p_config[i].i_type ==
-                     MODULE_CONFIG_ITEM_SUBCATEGORY_END) )
-                 continue;
+            if( p_module->p_config[i].i_type & MODULE_CONFIG_HINT )
+                /* ignore hints */
+                continue;
             p_longopts[i_index].name = p_module->p_config[i].psz_name;
             p_longopts[i_index].has_arg =
                 (p_module->p_config[i].i_type == MODULE_CONFIG_ITEM_BOOL)?
@@ -747,6 +929,9 @@ static int GetConfigurationFromCmdLine( int *pi_argc, char *ppsz_argv[],
         case 'l':                                              /* -l, --list */
             config_PutIntVariable( "list", 1 );
             break;
+        case 'p':                                            /* -p, --plugin */
+            config_PutPszVariable( "plugin", optarg );
+            break;
         case 'v':                                           /* -v, --verbose */
             p_main->i_warning_level++;
             break;
@@ -754,6 +939,7 @@ static int GetConfigurationFromCmdLine( int *pi_argc, char *ppsz_argv[],
         /* Internal error: unknown option */
         case '?':
         default:
+
             if( !b_ignore_errors )
             {
                 intf_ErrMsg( "intf error: unknown option `%s'",
@@ -767,7 +953,6 @@ static int GetConfigurationFromCmdLine( int *pi_argc, char *ppsz_argv[],
 #endif
                 free( p_longopts );
                 return( EINVAL );
-                break;
             }
         }
 
@@ -818,10 +1003,6 @@ static void Usage( const char *psz_module_name )
     ShowConsole();
 #endif
 
-    /* Usage */
-    intf_Msg( "Usage: %s [options] [parameters] [file]...\n",
-              p_main->psz_arg0 );
-
     /* Enumerate the config of each module */
     for( p_module = p_module_bank->first ;
          p_module != NULL ;
@@ -831,16 +1012,19 @@ static void Usage( const char *psz_module_name )
         if( psz_module_name && strcmp( psz_module_name, p_module->psz_name ) )
             continue;
 
+        /* ignore plugins without config options */
+        if( !p_module->i_config_items ) continue;
+
         /* print module name */
-        intf_Msg( "%s configuration:\n", p_module->psz_name );
+        intf_Msg( "%s options:\n", p_module->psz_name );
 
-        for( i = 0; i < (p_module->i_config_options -1); i++ )
+        for( i = 0; i < p_module->i_config_lines; i++ )
         {
             int j;
 
             switch( p_module->p_config[i].i_type )
             {
-            case MODULE_CONFIG_ITEM_CATEGORY:
+            case MODULE_CONFIG_HINT_CATEGORY:
                 intf_Msg( " %s", p_module->p_config[i].psz_text );
                 break;
 
@@ -870,7 +1054,7 @@ static void Usage( const char *psz_module_name )
                           p_module->p_config[i].psz_text );
                 psz_spaces[j] = 32;
                 break;
-            default:
+            case MODULE_CONFIG_ITEM_BOOL:
                 /* Nasty hack, but right now I'm too tired to think about
                  * a nice solution */
                 j = 25 - strlen( p_module->p_config[i].psz_name ) - 1;
@@ -892,7 +1076,8 @@ static void Usage( const char *psz_module_name )
                 "\n  *.mpg, *.vob                   \tPlain MPEG-1/2 files"
                 "\n  [dvd:][device][@raw_device][@[title][,[chapter][,angle]]]"
                 "\n                                 \tDVD device"
-                "\n  vcd:<device>                   \tVCD device"
+                "\n  [vcd:][device][@[title][,[chapter]]"
+                "\n                                 \tVCD device"
                 "\n  udpstream:[<server>[:<server port>]][@[<bind address>]"
                       "[:<bind port>]]"
                 "\n                                 \tUDP stream sent by VLS"
index 3b460c1984fe90fbe6284e481ba0c26be5806388..13709a5759ac09a15122b5593b0b92cbda4380cd 100644 (file)
@@ -2,7 +2,7 @@
  * configuration.c management of the modules configuration
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: configuration.c,v 1.2 2002/02/26 22:08:57 gbazin Exp $
+ * $Id: configuration.c,v 1.3 2002/03/11 07:23:10 gbazin Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *
@@ -27,9 +27,6 @@
 
 #include <videolan/vlc.h>
 
-/* TODO: implement locking for config_PutPszVariable and config_GetPszVariable
- * because they are not thread safe */
-
 /*****************************************************************************
  * config_GetIntVariable: get the value of an int variable
  *****************************************************************************
@@ -96,7 +93,9 @@ char * config_GetPszVariable( const char *psz_name )
     }
 
     /* return a copy of the string */
+    vlc_mutex_lock( p_config->p_lock );
     if( p_config->psz_value ) psz_value = strdup( p_config->psz_value );
+    vlc_mutex_unlock( p_config->p_lock );
 
     return psz_value;
 }
@@ -111,7 +110,6 @@ char * config_GetPszVariable( const char *psz_name )
 void config_PutPszVariable( const char *psz_name, char *psz_value )
 {
     module_config_t *p_config;
-    char *psz_tmp;
 
     p_config = config_FindConfig( psz_name );
 
@@ -131,12 +129,15 @@ void config_PutPszVariable( const char *psz_name, char *psz_value )
         return;
     }
 
-    psz_tmp = p_config->psz_value;
+    vlc_mutex_lock( p_config->p_lock );
+
+    /* free old string */
+    if( p_config->psz_value ) free( p_config->psz_value );
+
     if( psz_value ) p_config->psz_value = strdup( psz_value );
     else p_config->psz_value = NULL;
 
-    /* free old string */
-    if( psz_tmp ) free( psz_tmp );
+    vlc_mutex_unlock( p_config->p_lock );
 
 }
 
@@ -187,14 +188,10 @@ module_config_t *config_FindConfig( const char *psz_name )
          p_module != NULL ;
          p_module = p_module->next )
     {
-        for( i = 0; i < (p_module->i_config_options -1); i++ )
+        for( i = 0; i < p_module->i_config_lines; i++ )
         {
-            if( (p_module->p_config[i].i_type ==
-                     MODULE_CONFIG_ITEM_CATEGORY)||
-                (p_module->p_config[i].i_type ==
-                     MODULE_CONFIG_ITEM_SUBCATEGORY)||
-                (p_module->p_config[i].i_type ==
-                     MODULE_CONFIG_ITEM_SUBCATEGORY_END) )
+            if( p_module->p_config[i].i_type & MODULE_CONFIG_HINT )
+                /* ignore hints */
                 continue;
             if( !strcmp( psz_name, p_module->p_config[i].psz_name ) )
                 return &p_module->p_config[i];
@@ -211,42 +208,46 @@ module_config_t *config_FindConfig( const char *psz_name )
  * this module might be unloaded from memory at any time (remember HideModule).
  * This is why we need to create an exact copy of the config data.
  *****************************************************************************/
-module_config_t *config_Duplicate( module_config_t *p_config_orig,
-                                   int i_config_options )
+module_config_t *config_Duplicate( module_t *p_module )
 {
     int i;
     module_config_t *p_config;
 
     /* allocate memory */
     p_config = (module_config_t *)malloc( sizeof(module_config_t)
-                                          * i_config_options );
+                                          * p_module->i_config_lines );
     if( p_config == NULL )
     {
         intf_ErrMsg( "config_Duplicate error: can't allocate p_config" );
         return( NULL );
     }
 
-    for( i = 0; i < i_config_options ; i++ )
+    for( i = 0; i < p_module->i_config_lines ; i++ )
     {
-        p_config[i].i_type = p_config_orig[i].i_type;
-        p_config[i].i_value = p_config_orig[i].i_value;
-        p_config[i].b_dirty = p_config_orig[i].b_dirty;
-        if( p_config_orig[i].psz_name )
-            p_config[i].psz_name = strdup( p_config_orig[i].psz_name );
+        p_config[i].i_type = p_module->p_config_orig[i].i_type;
+        p_config[i].i_value = p_module->p_config_orig[i].i_value;
+        p_config[i].b_dirty = p_module->p_config_orig[i].b_dirty;
+        p_config[i].p_lock = &p_module->config_lock;
+        if( p_module->p_config_orig[i].psz_name )
+            p_config[i].psz_name =
+                strdup( p_module->p_config_orig[i].psz_name );
         else p_config[i].psz_name = NULL;
-        if( p_config_orig[i].psz_text )
-            p_config[i].psz_text = strdup( p_config_orig[i].psz_text );
+        if( p_module->p_config_orig[i].psz_text )
+            p_config[i].psz_text =
+                strdup( p_module->p_config_orig[i].psz_text );
         else p_config[i].psz_text = NULL;
-        if( p_config_orig[i].psz_longtext )
-            p_config[i].psz_longtext = strdup( p_config_orig[i].psz_longtext );
+        if( p_module->p_config_orig[i].psz_longtext )
+            p_config[i].psz_longtext =
+                strdup( p_module->p_config_orig[i].psz_longtext );
         else p_config[i].psz_longtext = NULL;
-        if( p_config_orig[i].psz_value )
-            p_config[i].psz_value = strdup( p_config_orig[i].psz_value );
+        if( p_module->p_config_orig[i].psz_value )
+            p_config[i].psz_value =
+                strdup( p_module->p_config_orig[i].psz_value );
         else p_config[i].psz_value = NULL;
 
         /* the callback pointer is only valid when the module is loaded so this
          * value is set in ActivateModule() and reset in DeactivateModule() */
-        p_config_orig[i].p_callback = NULL;
+        p_config[i].p_callback = NULL;
     }
 
     return p_config;
index e7af760dc92919038ee607834d7ac53b3bacfce1..168a64db33a30d54904236134f9dff0281866837 100644 (file)
@@ -2,7 +2,7 @@
  * modules_plugin.h : Plugin management functions used by the core application.
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: modules_plugin.h,v 1.14 2002/03/04 23:56:38 massiot Exp $
+ * $Id: modules_plugin.h,v 1.15 2002/03/11 07:23:10 gbazin Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -154,6 +154,7 @@ module_error( void )
  *****************************************************************************/
 #define STORE_SYMBOLS( p_symbols ) \
     (p_symbols)->p_main = p_main; \
+    (p_symbols)->p_module_bank = p_module_bank; \
     (p_symbols)->p_input_bank = p_input_bank; \
     (p_symbols)->p_aout_bank = p_aout_bank; \
     (p_symbols)->p_vout_bank = p_vout_bank; \
index e31e2fd9d045f55a886f63dd49f0c15cdcaad904..12621764970561254018baee9d433866ef49de4b 100644 (file)
@@ -2,7 +2,7 @@
  * netutils.c: various network functions
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: netutils.c,v 1.59 2002/03/04 23:56:38 massiot Exp $
+ * $Id: netutils.c,v 1.60 2002/03/11 07:23:10 gbazin Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *          Benoit Steiner <benny@via.ecp.fr>
@@ -157,7 +157,7 @@ int network_ChannelJoin( int i_channel )
     struct timeval delay;
     fd_set fds;
 
-    if( !config_GetIntVariable( INPUT_NETWORK_CHANNEL_VAR ) )
+    if( !config_GetIntVariable( "network_channel" ) )
     {
         intf_ErrMsg( "network: channels disabled, to enable them, use the"
                      "--channels option" );
@@ -174,24 +174,23 @@ int network_ChannelJoin( int i_channel )
         mwait( p_main->p_channel->last_change + INPUT_CHANNEL_CHANGE_DELAY );
     }
 
-    if( config_GetIntVariable( INPUT_IPV4_VAR ) )
+    if( config_GetIntVariable( "ipv4" ) )
     {
         psz_network = "ipv4";
     }
-    if( config_GetIntVariable( INPUT_IPV6_VAR ) )
+    if( config_GetIntVariable( "ipv6" ) )
     {
         psz_network = "ipv6";
     }
 
     /* Getting information about the channel server */
-    if( !(psz_vlcs = config_GetPszVariable( INPUT_CHANNEL_SERVER_VAR )) )
+    if( !(psz_vlcs = config_GetPszVariable( "channel_server" )) )
     {
-        intf_ErrMsg( "network: configuration variable %s empty",
-                     INPUT_CHANNEL_SERVER_VAR );
+        intf_ErrMsg( "network: configuration variable channel_server empty" );
         return -1;
     }
 
-    i_port = config_GetIntVariable( INPUT_CHANNEL_PORT_VAR );
+    i_port = config_GetIntVariable( "channel_port" );
 
     intf_WarnMsg( 5, "channel: connecting to %s:%d",
                      psz_vlcs, i_port );
@@ -315,10 +314,9 @@ static int GetMacAddress( int i_fd, char *psz_mac )
      * Looking for information about the eth0 interface
      */
     interface.ifr_addr.sa_family = AF_INET;
-    if( !(psz_interface = config_GetPszVariable( INPUT_IFACE_VAR )) )
+    if( !(psz_interface = config_GetPszVariable( "iface" )) )
     {
-        intf_ErrMsg( "network error: configuration variable %s empty",
-                     INPUT_IFACE_VAR );
+        intf_ErrMsg( "network error: configuration variable iface empty" );
         return -1;
     }
     strcpy( interface.ifr_name, psz_interface );
index 9b2feff3fa3f2bf5144c1af4eea583c783066ca6..d92f82f661c3b16c1213935343b74315f8e18c11 100644 (file)
@@ -5,7 +5,7 @@
  * thread, and destroy a previously oppened video output thread.
  *****************************************************************************
  * Copyright (C) 2000-2001 VideoLAN
- * $Id: video_output.c,v 1.164 2002/03/03 20:42:21 gbazin Exp $
+ * $Id: video_output.c,v 1.165 2002/03/11 07:23:10 gbazin Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *
@@ -106,9 +106,9 @@ vout_thread_t * vout_CreateThread   ( int *pi_status,
     }
 
     /* Choose the best module */
-    if( !(psz_plugin = config_GetPszVariable( VOUT_FILTER_VAR )) )
+    if( !(psz_plugin = config_GetPszVariable( "filter" )) )
     {
-        psz_plugin = config_GetPszVariable( VOUT_METHOD_VAR );
+        psz_plugin = config_GetPszVariable( "vout" );
     }
 
     /* Initialize thread properties - thread id and locks will be initialized
@@ -154,7 +154,7 @@ vout_thread_t * vout_CreateThread   ( int *pi_status,
     p_vout->c_fps_samples= 0;
 
     /* user requested fullscreen? */
-    if( config_GetIntVariable( VOUT_FULLSCREEN_VAR ) )
+    if( config_GetIntVariable( "fullscreen" ) )
         p_vout->i_changes |= VOUT_FULLSCREEN_CHANGE;
 
     p_vout->p_module
index e1d41ee78d671f0431eba4d61d1553a23ea07b69..33f1bcd7ecd322dcf102e3ab7ff2bd6819bfaee2 100644 (file)
@@ -2,7 +2,7 @@
  * vout_subpictures.c : subpicture management functions
  *****************************************************************************
  * Copyright (C) 2000 VideoLAN
- * $Id: vout_subpictures.c,v 1.9 2002/02/24 20:51:10 gbazin Exp $
+ * $Id: vout_subpictures.c,v 1.10 2002/03/11 07:23:10 gbazin Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -60,7 +60,7 @@ void  vout_DisplaySubPicture( vout_thread_t *p_vout, subpicture_t *p_subpic )
 
     /* If the user requested an SPU margin, we force the position after
      * having checked that it was a valid value. */
-    i_margin = config_GetIntVariable( VOUT_SPUMARGIN_VAR );
+    i_margin = config_GetIntVariable( "spumargin" );
 
     if( i_margin >= 0 )
     {