Misc stuff, adding new glade stuff - Alex
authorterminatorX <>
Wed, 19 Mar 2003 22:53:32 +0000 (22:53 +0000)
committerterminatorX <>
Wed, 19 Mar 2003 22:53:32 +0000 (22:53 +0000)
64 files changed:
Makefile.am
configure.in
src/Makefile.am
src/main.cc
src/tX_audiodevice.cc
src/tX_audiodevice.h
src/tX_audiofile.cc
src/tX_audiofile.h
src/tX_dial.c
src/tX_dial.h
src/tX_dialog.cc
src/tX_dialog.h
src/tX_endian.c
src/tX_endian.h
src/tX_engine.cc
src/tX_engine.h
src/tX_event.cc
src/tX_event.h
src/tX_flash.c
src/tX_flash.h
src/tX_glade_callbacks.cc [new file with mode: 0644]
src/tX_glade_callbacks.h [new file with mode: 0644]
src/tX_glade_interface.cc [new file with mode: 0644]
src/tX_glade_interface.h [new file with mode: 0644]
src/tX_glade_support.cc [new file with mode: 0644]
src/tX_glade_support.h [new file with mode: 0644]
src/tX_global.c
src/tX_global.h
src/tX_icon.h
src/tX_knobloader.c
src/tX_knobloader.h
src/tX_ladspa.cc
src/tX_ladspa.h
src/tX_legacy_global.c
src/tX_legacy_vtt.cc
src/tX_loaddlg.cc
src/tX_loaddlg.h
src/tX_logo.c
src/tX_mastergui.cc
src/tX_mastergui.h
src/tX_midiin.cc
src/tX_midiin.h
src/tX_mouse.cc
src/tX_mouse.h
src/tX_pbutton.cc
src/tX_pbutton.h
src/tX_prelis.cc
src/tX_prelis.h
src/tX_sequencer.cc
src/tX_sequencer.h
src/tX_tape.cc
src/tX_tape.h
src/tX_types.h
src/tX_vtt.cc
src/tX_vtt.h
src/tX_vttfx.cc
src/tX_vttfx.h
src/tX_vttgui.cc
src/tX_vttgui.h
src/tX_widget.c
src/tX_widget.h
src/version.h
terminatorX.glade [new file with mode: 0644]
terminatorX.gladep [new file with mode: 0644]

index 7183067531dad744b4d1f223a5e35e64dcb78efe..aa0b7ef843eed24bbbe75f1abebec349a06a87f9 100644 (file)
@@ -1,5 +1,5 @@
 AUTOMAKE_OPTIONS = foreign 
 SUBDIRS = src gnome-support doc
-EXTRA_DIST = COPYING-DOCS README.GNOME README.PERFORMANCE terminatorX.spec terminatorX.spec.in
+EXTRA_DIST = COPYING-DOCS README.GNOME README.PERFORMANCE terminatorX.spec terminatorX.spec.in terminatorX.glade terminatorX.gladep
 
 man_MANS = terminatorX.1
index fbb7ce6c25afa9e6e82b858a2b84e4609a96c76e..21dda23145d1485ccf305a699eb1f250191767dd 100644 (file)
@@ -14,7 +14,7 @@ dnl AC_ARG_ENABLE(3dnow,    [  --enable-3dnow          enables 3DNow! support. (
 dnl AC_ARG_ENABLE(benchmark,[  --enable-benchmark      creates a non-functional test version (default=no) ])
 AC_ARG_ENABLE(wav,          [  --enable-wav            enables the builtin wav-loader (default=yes) ])
 AC_ARG_ENABLE(xsetpointer,  [  --enable-xsetpointer    enables executing of xsetpointer (default=auto) ])
-dnl AC_ARG_ENABLE(alsa,         [  --enable-alsa           use ALSA for sound output (default=auto) ])
+AC_ARG_ENABLE(alsa,         [  --enable-alsa           use ALSA for sound output (default=auto) ])
 AC_ARG_ENABLE(oss,          [  --enable-oss            use OSS for sound output (default=auto) ])
 dnl AC_ARG_ENABLE(movqfix,         [  --disable-movqfix       don't use movq fix for gcc >= 2.96 [default=on] ])
 dnl AC_ARG_ENABLE(dga2,     [  --enable-dga2           use DGA2 instead of DGA1. (experimental) (default=no) ])
@@ -271,25 +271,26 @@ fi
 using_alsa=no
 using_oss=no
 
-dnl if test "$enable_alsa" != "no"; then
-dnl    AC_CHECK_LIB(asound, snd_ctl_open,alsalib=yes,alsalib=no)
-dnl    AC_CHECK_HEADERS(sys/asoundlib.h,alsaheader=yes,alsaheader=no)
-dnl
-dnl    if test "$alsalib" = "yes"; then
-dnl            if test "$alsaheader" = "yes"; then
-dnl                    AC_DEFINE(USE_ALSA)
-dnl                    using_alsa=yes;
-dnl            else 
-dnl                    if test "$enable_alsa" = "yes"; then
-dnl                            AC_MSG_ERROR([** Coulnd't find ALSA header file sys/asoundlib.h **])
-dnl                    fi
-dnl            fi
-dnl    else
-dnl            if test "$enable_alsa" = "yes"; then
-dnl                    AC_MSG_ERROR([** Coulnd'f find ALSA library libasound. **])
-dnl            fi
-dnl    fi
-dnl fi
+if test "$enable_alsa" != "no"; then
+    AC_CHECK_LIB(asound, snd_pcm_writei,alsalib=yes,alsalib=no)
+    AC_CHECK_HEADERS(alsa/asoundlib.h,alsaheader=yes,alsaheader=no)
+
+    if test "$alsalib" = "yes"; then
+           if test "$alsaheader" = "yes"; then
+                   AC_DEFINE_UNQUOTED([USE_ALSA], 1, [ Define to use ALSA audio backend instead of OSS.])
+                   LIBS="$LIBS -lasound"
+                   using_alsa=yes;
+           else 
+                   if test "$enable_alsa" = "yes"; then
+                           AC_MSG_ERROR([** Coulnd't find ALSA header file sys/asoundlib.h **])
+                   fi
+           fi
+    else
+           if test "$enable_alsa" = "yes"; then
+                   AC_MSG_ERROR([** Coulnd'f find ALSA library libasound. **])
+           fi
+    fi
+fi
 
 if test "$enable_oss" != "no"; then
        AC_CHECK_HEADERS(sys/ioctl.h sys/soundcard.h,oss=yes,oss=no)
@@ -305,33 +306,38 @@ if test "$enable_oss" != "no"; then
 fi
 
 if test "$enable_alsamidi" != "no"; then
-    AC_CHECK_LIB(asound, snd_seq_open,alsalib=yes,alsalib=no)
-    AC_CHECK_HEADERS(alsa/asoundlib.h,alsaheader=yes,alsaheader=no)
-
-    if test "$alsalib" = "yes"; then
-           if test "$alsaheader" = "yes"; then
-                   AC_DEFINE_UNQUOTED([USE_ALSA_MIDI_IN], 1, [Define for ALSA MIDI in support])
-                   LIBS="$LIBS -lasound"
-                   OPTION_ALSAMIDI="yes"
-           else 
-                   if test "$enable_alsamidi" = "yes"; then
-                           AC_MSG_ERROR([** Coulnd't find ALSA header file alsa/asoundlib.h **])
-                   fi
-           fi
-    else
-           if test "$enable_alsamidin" = "yes"; then
-                   AC_MSG_ERROR([** Couldn't find ALSA library libasound. **])
-           fi
-    fi
+       if test "$using_alsa" = "yes"; then
+               AC_DEFINE_UNQUOTED([USE_ALSA_MIDI_IN], 1, [Define for ALSA MIDI in support])
+               OPTION_ALSAMIDI="yes"                           
+       else
+               AC_CHECK_LIB(asound, snd_seq_open,alsalib=yes,alsalib=no)
+               AC_CHECK_HEADERS(alsa/asoundlib.h,alsaheader=yes,alsaheader=no)
+
+               if test "$alsalib" = "yes"; then
+                       if test "$alsaheader" = "yes"; then
+                               AC_DEFINE_UNQUOTED([USE_ALSA_MIDI_IN], 1, [Define for ALSA MIDI in support])
+                               LIBS="$LIBS -lasound"
+                               OPTION_ALSAMIDI="yes"
+                       else 
+                               if test "$enable_alsamidi" = "yes"; then
+                                       AC_MSG_ERROR([** Coulnd't find ALSA header file alsa/asoundlib.h **])
+                               fi
+                       fi
+               else
+                       if test "$enable_alsamidin" = "yes"; then
+                               AC_MSG_ERROR([** Couldn't find ALSA library libasound. **])
+                       fi
+               fi
+       fi
 fi
 
-
-dnl if test "$using_alsa" = "yes"; then
-dnl    AC_MSG_RESULT([termnatorX audiodevice: using ALSA.])
-dnl fi
-
-if test "$using_oss" = "yes"; then
-       AC_MSG_RESULT([termnatorX audiodevice: using OSS.])
+if test "$using_alsa" = "yes"; then
+       AC_MSG_RESULT([termnatorX audiodevice: using ALSA.])
+       AC_DEFINE_UNQUOTED([USE_ALSA], 1, [Define for ALSA pcm output])
+else 
+       if test "$using_oss" = "yes"; then
+               AC_MSG_RESULT([termnatorX audiodevice: using OSS.])
+       fi
 fi
 
 if test "$using_alsa" != "yes"; then
index afbe0889627d99be9e65044e63e339c7b785b920..45657f5ff262acf3d0766b4d04a1641b50ab58b5 100644 (file)
@@ -35,4 +35,7 @@ terminatorX_SOURCES = tX_endian.c tX_dialog.cc tX_widget.c wav_write.c \
                        tX_extdial.h tX_extdial.cc tX_panel.h tX_panel.cc \
                        tX_ladspa.h tX_ladspa.cc tX_vttfx.h tX_vttfx.cc \
                        tX_legacy_vtt.cc tX_legacy_global.c \
-                       tX_midiin.h tX_midiin.cc
+                       tX_midiin.h tX_midiin.cc tX_glade_interface.cc \
+                       tX_glade_interface.h tX_glade_callbacks.cc \
+                       tX_glade_callbacks.h tX_glade_support.cc \
+                       tX_glade_support.h
index 82481f8b5bd9ea891b1bae5f92dcae77b2b98aa6..5e142b52e1871646fe407090cda01b42f25a91bc 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
 
     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
@@ -364,7 +364,7 @@ int parse_args(int *argc, char **argv)
 
 int main(int argc, char **argv)
 {
-       fprintf(stderr, "%s - Copyright (C) 1999-2002 by Alexander König\n", VERSIONSTRING);
+       fprintf(stderr, "%s - Copyright (C) 1999-2003 by Alexander König\n", VERSIONSTRING);
        fprintf(stderr, "terminatorX comes with ABSOLUTELY NO WARRANTY - for details read the license.\n");
 
        engine=new tX_engine();
index 5a042e18189be92988169d3b3215a1af05a989ac..6054f028d294008bab3a7c7b056ec988a3e2f609 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
@@ -97,45 +97,44 @@ int tX_audiodevice_oss :: open()
        int buff_cfg;
 
        if (fd) return (1);
-        fd = ::open(globals.audio_device, O_WRONLY, 0);
+       fd=::open(globals.audio_device, O_WRONLY, 0);
        
        /* setting buffer size */       
        buff_cfg=(globals.buff_no<<16) | globals.buff_size;
+       p=buff_cfg;
 
        tX_debug("tX_adudiodevice_oss::open() - buff_no: %i, buff_size: %i, buff_cfg: %08x", globals.buff_no, globals.buff_size, buff_cfg);
-       
-       p=buff_cfg;
                
        i = ioctl(fd, SNDCTL_DSP_SETFRAGMENT, &p);
-
-        ioctl(fd, SNDCTL_DSP_RESET, 0);                
+       ioctl(fd, SNDCTL_DSP_RESET, 0);         
 
        /* 16 Bits */
        
-        p =  16;
-
-        i +=  ioctl(fd, SOUND_PCM_WRITE_BITS, &p);
+       p =  16;
+       i +=  ioctl(fd, SOUND_PCM_WRITE_BITS, &p);
 
        /* STEREO :) */
        
-        p =  2;
-        i += ioctl(fd, SOUND_PCM_WRITE_CHANNELS, &p);
+       p =  2;
+       i += ioctl(fd, SOUND_PCM_WRITE_CHANNELS, &p);
        
        /* 44.1 khz */
 
-        p =  44100;
-        i += ioctl(fd, SOUND_PCM_WRITE_RATE, &p);
-               
-        i += ioctl(fd, SNDCTL_DSP_GETBLKSIZE, &blocksize);
+       p =  44100;
+       i += ioctl(fd, SOUND_PCM_WRITE_RATE, &p);
+       
+       /* Figure actual blocksize.. */
+       
+       i += ioctl(fd, SNDCTL_DSP_GETBLKSIZE, &blocksize);
 
        tX_debug("tX_adudiodevice_oss::open() - blocksize: %i", blocksize);
 
        samples_per_buffer=blocksize/sizeof(int16_t);
        globals.true_block_size=samples_per_buffer/2;
        
-        ioctl(fd, SNDCTL_DSP_SYNC, 0);
+       ioctl(fd, SNDCTL_DSP_SYNC, 0);
 
-        return(i);     
+       return i;
 }
 
 int tX_audiodevice_oss :: close()
@@ -148,7 +147,7 @@ int tX_audiodevice_oss :: close()
        fd=0;
        blocksize=0;
                
-       return(0);      
+       return 0;
 }
 
 tX_audiodevice_oss :: tX_audiodevice_oss()
@@ -176,25 +175,110 @@ void tX_audiodevice_oss :: play(int16_t *buffer)
 
 int tX_audiodevice_alsa :: open()
 {
-       return 1;
+       snd_pcm_stream_t stream = SND_PCM_STREAM_PLAYBACK;
+       snd_pcm_hw_params_t *hw_params;
+       char *pcm_name;
+       
+       pcm_name=strdup(globals.audio_device);
+       snd_pcm_hw_params_alloca(&hw_params);
+       
+       if (snd_pcm_open(&pcm_handle, pcm_name, stream, 0) < 0) {
+               tX_error("ALSA: Failed to access PCM device \"%s\"", pcm_name);
+               snd_pcm_hw_params_free (hw_params);
+               return -1;
+       }
+       
+       if (snd_pcm_hw_params_any(pcm_handle, hw_params) < 0) {
+               tX_error("ALSA: Failed to configure PCM device \"%s\"", pcm_name);
+               snd_pcm_hw_params_free (hw_params);
+               return -1;
+       }
+       
+       /* Setting INTERLEAVED stereo... */
+       if (snd_pcm_hw_params_set_access(pcm_handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED) < 0) {
+               tX_error("ALSA: Failed to set interleaved access for PCM device \"%s\"", pcm_name);
+               snd_pcm_hw_params_free (hw_params);
+               return -1;
+       }
+       
+       /* Make it 16 Bit LE - we handle converting from BE anyway... */
+       if (snd_pcm_hw_params_set_format(pcm_handle, hw_params, SND_PCM_FORMAT_S16_LE) < 0) {
+               tX_error("ALSA: Error setting 16 Bit sample width for PCM device \"%s\"", pcm_name);
+               snd_pcm_hw_params_free (hw_params);
+               return -1;
+       }
+       
+       /* Setting sampling rate */
+       int rate=44100;
+       int hw_rate;
+       int dir;
+       
+       hw_rate = snd_pcm_hw_params_set_rate_near(pcm_handle, hw_params, rate, &dir);
+       
+       if (dir != 0) {
+               tX_warning("ALSA: The PCM device \"%s\" doesnt support 44100 kHz playback - using %i instead", pcm_name, hw_rate);
+       }       
+
+       /* Using stereo output */
+       if (snd_pcm_hw_params_set_channels(pcm_handle, hw_params, 2) < 0) {
+               tX_error("ALSA: PCM device \"%s\" does not support stereo operation", pcm_name);
+               snd_pcm_hw_params_free (hw_params);
+               return -1;
+       }
+
+       /* Setting the number of buffers... */
+       if (snd_pcm_hw_params_set_periods(pcm_handle, hw_params, globals.buff_no, 0) < 0) {
+               tX_error("ALSA: Failed to set %i periods for PCM device \"%s\"", globals.buff_no, pcm_name);
+               snd_pcm_hw_params_free (hw_params);
+               return -1;
+       }
+       
+       int samples=1<<globals.buff_size;
+       
+//     snd_pcm_sw_params_set_avail_min(pcm_handle, hw_params, samples);
+       samples=snd_pcm_hw_params_set_buffer_size_near(pcm_handle, hw_params, samples);
+       
+       samples_per_buffer= samples;//hw_buffsize/sizeof(int16_t);
+       globals.true_block_size=samples_per_buffer/2;
+       
+       tX_error("sa: %i", samples);
+               
+       /* Apply all that setup work.. */
+       if (snd_pcm_hw_params(pcm_handle, hw_params) < 0) {
+               tX_error("ALSA: Failed to apply settings to PCM device \"%s\"", pcm_name);
+               snd_pcm_hw_params_free (hw_params);
+               return -1;
+       }
+       
+       snd_pcm_hw_params_free (hw_params);
+       tX_warning("ALSA OK!");
+       return 0;
 }
 
 int tX_audiodevice_alsa :: close()
 {
-       return 1;
+       snd_pcm_close(pcm_handle);
+       
+       return 0;
 }
 
 tX_audiodevice_alsa :: tX_audiodevice_alsa()
 {
+       pcm_handle=NULL;        
        init();
 }
 
 void tX_audiodevice_alsa :: play(int16_t *buffer)
 {
+       snd_pcm_sframes_t pcmreturn;
 #ifdef BIG_ENDIAN_MACHINE
        swapbuffer (buffer, samples_per_buffer);
 #endif
-       /***/
+       
+       while ((pcmreturn = snd_pcm_writei(pcm_handle, buffer, samples_per_buffer /* *2 ?*/)) == EPIPE) {
+               snd_pcm_prepare(pcm_handle);
+               tX_warning("ALSA: ** buffer underrun **");
+       }       
 }
 
 #endif //USE_ALSA
index b743e8e2bb6b06597218aca7c21209ce0c8bdda0..b7bb5ef3fcb7c7910b99ff92b9d23ca3decb7639 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
 
 #define NON_RT_BUFF 12
 
+#ifdef USE_ALSA
+#include <alsa/asoundlib.h>
+#endif
+
 class tX_audiodevice
 {
        protected:
@@ -75,7 +79,9 @@ class tX_audiodevice_oss : public tX_audiodevice
 #ifdef USE_ALSA
 
 class tX_audiodevice_alsa : public tX_audiodevice
-{      
+{
+       snd_pcm_t *pcm_handle;
+       
        public:
        virtual int open();
        virtual int close();
index 19c86841ae275cbca9a55ba42d062ae019c2ffca..8372aa713eea257a436b89a63211a7097279ac65 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 637714ae040869adcf41a6b624debab5e3f18e32..a3e4eabd4398ccda8698fe8b4511f82ff5b8637d 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 827c30cc2a0f29c1b7ac751256bb2ffbcbd6f2d7..b6adcbe07f7b05b4094cdadc0f830dea17314b96 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index c6b69bfd62f3fc4cabfbd3f2cfc1d1c180a0aad4..f671d4c7ffa5a30a04a7f7e7142bbe35e4fad75c 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 1653e01bfeb1c9b35e398aa8bebc707d60da37b2..d044d61e7bc36a3fb79848fa8f1b5574a10491c3 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
@@ -27,6 +27,7 @@
     28 Jul 1999: Now display compiletime settings in the about dialog.
 */    
 
+#include "config.h"
 #include "tX_types.h"
 #include "tX_global.h"
 #include "tX_dialog.h"
@@ -92,7 +93,7 @@ int opt_hidden=0;
 void apply_options() {
        char *text;
        
-       strcpy(globals.audio_device, gtk_entry_get_text(GTK_ENTRY(audio_device)));
+       strcpy(globals.audio_device, gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(audio_device)->entry)));
        globals.buff_no=(int)buff_no->value;    
        globals.buff_size=(int)buff_size->value;
        
@@ -207,6 +208,49 @@ void select_input(GtkWidget *w, char *dev)
        gtk_button_set_label(GTK_BUTTON(xinput_device), dev);
 }
 
+#ifdef USE_ALSA
+GList *get_alsa_device_list() {
+       FILE *file;
+       GList *devices=NULL;
+       char buffer[256];
+       
+       if ((file = fopen("/proc/asound/pcm", "r"))) {
+               while(fgets(buffer, 255, file)) {
+                       buffer[255]=0;
+                       if(strstr(buffer, "playback")) {
+                               devices=g_list_append (devices, strdup(buffer));
+                       }
+               }
+               fclose(file);
+       }
+       
+       return devices;
+}
+#else
+#include <dirent.h>
+int oss_select_dsp_only(const struct dirent *entry){
+       return (strstr(entry->d_name, "dsp")!=0);
+}
+
+GList *get_oss_device_list() {
+       GList *devices=NULL;
+    struct dirent **namelist;
+    int n,i;
+    n = scandir("/dev", &namelist, oss_select_dsp_only, alphasort);
+    
+    if (n>0) {
+       for (i=0; i<n; i++) {
+                       char buffer[256];
+            sprintf(buffer, "/dev/%s\n", namelist[i]->d_name);
+            free(namelist[i]);
+                       devices=g_list_append (devices, strdup(buffer));
+               }
+       }
+       
+       return devices;
+}
+#endif
+
 void create_options()
 {
        GtkWidget *box;
@@ -248,9 +292,20 @@ void create_options()
 
        add_expl("Device:");
        
-       audio_device=gtk_entry_new_with_max_length(PATH_MAX);
-       gtk_entry_set_text(GTK_ENTRY(audio_device), globals.audio_device);
-       gtk_tooltips_set_tip(opt_tips, audio_device, "Enter the path to your audio device here. For most systems this should be /dev/dsp.", NULL);
+       //audio_device=gtk_entry_new_with_max_length(PATH_MAX);
+       //gtk_entry_set_text(GTK_ENTRY(audio_device), globals.audio_device);
+       audio_device=gtk_combo_new();
+       GList *strings;
+#ifdef USE_ALSA
+       strings=get_alsa_device_list();
+#else
+       strings=get_oss_device_list();
+#endif
+       gtk_combo_set_popdown_strings (GTK_COMBO(audio_device), strings);
+       gtk_combo_set_value_in_list(GTK_COMBO(audio_device), FALSE, FALSE);
+       gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(audio_device)->entry), globals.audio_device);
+       
+       gtk_tooltips_set_tip(opt_tips, audio_device, "Select the audiodevice you want terminatorX to send its output to.", NULL);
        add_widget_dyn(audio_device);
        
        end_box();
@@ -566,6 +621,8 @@ void show_about(int nag)
        
        gtk_widget_show( pwid );
 
+       printf("pixmap: %08x.\n", pwid);
+       
        if (nag) {
                GtkWidget *box=gtk_vbox_new(FALSE, 2);
                GtkWidget *box2=gtk_hbox_new(FALSE, 2);
@@ -580,7 +637,7 @@ void show_about(int nag)
                gtk_misc_set_alignment(GTK_MISC(label), 0.1, 0.5);
                gtk_widget_show(label);
 
-               label=gtk_label_new("Copyright (C) 1999-2002 by Alexander K\xC3\xB6nig");
+               label=gtk_label_new("Copyright (C) 1999-2003 by Alexander K\xC3\xB6nig");
                gtk_box_pack_start(GTK_BOX(box2), label, WID_DYN);
                gtk_misc_set_alignment(GTK_MISC(label), 0.9, 0.5);
                gtk_widget_show(label);
@@ -598,7 +655,7 @@ void show_about(int nag)
                
                sep=gtk_hseparator_new();
                add_about_wid_fix(sep);
-               char about_prefix_umlaut[]="\nThis is "PACKAGE" Release "VERSION" - Copyright (C) 1999-2002 by Alexander K\xC3\xB6nig";
+               char about_prefix_umlaut[]="\nThis is "PACKAGE" Release "VERSION" - Copyright (C) 1999-2003 by Alexander K\xC3\xB6nig";
                char about_rest[]="\n\nSend comments, patches and scratches to: alex@lisas.de\n"
                "terminatorX-homepage: http://www.terminatorX.cx\n\nThis binary has been compiled with the following flags: "
                "Sox support: "
index e8ae8ade6ea116c75aea909e53a1379218112d83..20720d201fd739dafc41fd0010efa04600b4131e 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index a51e964c17d21bd5d758ae14aeab5dcf4e0ca6c6..0cc2e444ee3ab9033a913ff0de9aaa95e6fc762b 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index d1990d48c754bcf3014d6bf7fae12d8e0aecc5bd..7b9def05d4301df6d9f311e485a6851c56bb79ab 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 91717c0216bde42186fce7e222175e92de57496e..442216c63759fd413f45e4a5406f268886e7c375 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
@@ -34,6 +34,7 @@
        is created on startup and kept alive until termination
 */    
 
+#include <config.h>
 #include "tX_types.h"
 #include "tX_engine.h"
 #include "tX_audiodevice.h"
@@ -108,7 +109,7 @@ void tX_engine :: loop() {
                        }
 
 #ifdef USE_ALSA_MIDI_IN                        
-                       midi->check_event();
+                       if (midi->get_is_open()) midi->check_event();
 #endif                 
                
                        /* Playback the audio... */
@@ -230,13 +231,15 @@ tX_engine_error tX_engine :: run() {
        
        switch (globals.audiodevice_type) {
 #ifdef USE_OSS 
-               case TX_AUDIODEVICE_TYPE_OSS:
-                       device=new tX_audiodevice_oss(); break;
+               case OSS:
+                       device=new tX_audiodevice_oss(); 
+               break;
 #endif                 
 
 #ifdef USE_ALSA                        
-               case TX_AUDIODEVICE_TYPE_ALSA:
-                       device=new tX_audiodevice_alsa(); break;
+               case ALSA:
+                       device=new tX_audiodevice_alsa(); 
+               break;
 #endif
                
                default:
index a48c2cc945679b23f68d227659268cdd0079d3df..f7f8096df11804ab768aa907438730590ed36df9 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
@@ -76,6 +76,7 @@ class tX_engine {
 
 #ifdef USE_ALSA_MIDI_IN
        tX_midiin *midi;
+       tX_midiin *get_midi() { return midi; }
 #endif 
 
        tX_engine();
index cdd9f01f465e463dc451b8f70eda24fd3fff1c69..973ca7f8a54f78824276bd142c86618eea4c55c7 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 934859c06e2c3b197e002b5a1275378d5b5a63de..e31b1564e9ec7ef22a351615d1595904d3d397f0 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 63dd8a4ac9e6e083fb8987f4eb39f36303685c40..0bb9ffa6da84c640a73a3ef959ce727532ff6ba0 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 4d11613229e8cf5fe1eea5c28a2f36d70308f2a5..dc0aacfc27db9808c77ca6eca5fa38f390408239 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
diff --git a/src/tX_glade_callbacks.cc b/src/tX_glade_callbacks.cc
new file mode 100644 (file)
index 0000000..f6a9410
--- /dev/null
@@ -0,0 +1,10 @@
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <gtk/gtk.h>
+
+#include "tX_glade_callbacks.h"
+#include "tX_glade_interface.h"
+#include "tX_glade_support.h"
+
diff --git a/src/tX_glade_callbacks.h b/src/tX_glade_callbacks.h
new file mode 100644 (file)
index 0000000..6fefc7c
--- /dev/null
@@ -0,0 +1,2 @@
+#include <gtk/gtk.h>
+
diff --git a/src/tX_glade_interface.cc b/src/tX_glade_interface.cc
new file mode 100644 (file)
index 0000000..95f07c9
--- /dev/null
@@ -0,0 +1,565 @@
+/*
+ * DO NOT EDIT THIS FILE - it is generated by Glade.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdio.h>
+
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtk.h>
+
+#include "tX_glade_callbacks.h"
+#include "tX_glade_interface.h"
+#include "tX_glade_support.h"
+
+#define GLADE_HOOKUP_OBJECT(component,widget,name) \
+  g_object_set_data_full (G_OBJECT (component), name, \
+    gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)
+
+#define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
+  g_object_set_data (G_OBJECT (component), name, widget)
+
+GtkWidget*
+create_tx_options (void)
+{
+  GtkWidget *tx_options;
+  GtkWidget *dialog_vbox1;
+  GtkWidget *notebook1;
+  GtkWidget *table4;
+  GtkWidget *label18;
+  GtkWidget *hbox2;
+  GtkWidget *oss_driver;
+  GSList *oss_driver_group = NULL;
+  GtkWidget *alsa_driver;
+  GtkWidget *jack_driver;
+  GtkWidget *label19;
+  GtkWidget *hbox3;
+  GtkWidget *measure_latency;
+  GtkWidget *label20;
+  GtkWidget *label1;
+  GtkWidget *table5;
+  GtkWidget *label21;
+  GtkWidget *label22;
+  GtkWidget *label23;
+  GtkWidget *label24;
+  GtkWidget *oss_audio_device;
+  GtkWidget *combo_entry2;
+  GtkObject *oss_buffers_adj;
+  GtkWidget *oss_buffers;
+  GtkWidget *oss_buffersize;
+  GtkWidget *oss_samplerate;
+  GtkWidget *combo_entry3;
+  GtkWidget *label15;
+  GtkWidget *empty_notebook_page;
+  GtkWidget *label16;
+  GtkWidget *label17;
+  GtkWidget *table1;
+  GtkWidget *label5;
+  GtkWidget *label6;
+  GtkWidget *label7;
+  GtkWidget *xinput_device;
+  GtkWidget *combo_entry1;
+  GtkWidget *mouse_speed;
+  GtkWidget *stop_sense_cycles;
+  GtkWidget *label4;
+  GtkWidget *table2;
+  GtkWidget *label8;
+  GtkWidget *label9;
+  GtkWidget *label10;
+  GtkWidget *label11;
+  GtkWidget *mainwin_tooltips;
+  GtkWidget *update_idle;
+  GtkWidget *update_delay;
+  GtkWidget *vumeter_decay;
+  GtkWidget *label14;
+  GtkWidget *startup_nagbox;
+  GtkWidget *label12;
+  GtkWidget *hbox1;
+  GtkWidget *buttons_text_and_icon;
+  GSList *buttons_text_and_icon_group = NULL;
+  GtkWidget *buttons_icon_only;
+  GtkWidget *buttons_text_only;
+  GtkWidget *label2;
+  GtkWidget *table3;
+  GtkWidget *label13;
+  GtkWidget *soundfile_editor;
+  GtkWidget *label3;
+  GtkWidget *dialog_action_area1;
+  GtkWidget *cancel;
+  GtkWidget *apply;
+  GtkWidget *okbutton1;
+  GtkTooltips *tooltips;
+
+  tooltips = gtk_tooltips_new ();
+
+  tx_options = gtk_dialog_new ();
+  gtk_window_set_title (GTK_WINDOW (tx_options), "terminatorX: Preferences");
+
+  dialog_vbox1 = GTK_DIALOG (tx_options)->vbox;
+  gtk_widget_show (dialog_vbox1);
+
+  notebook1 = gtk_notebook_new ();
+  gtk_widget_show (notebook1);
+  gtk_box_pack_start (GTK_BOX (dialog_vbox1), notebook1, TRUE, TRUE, 0);
+
+  table4 = gtk_table_new (2, 2, FALSE);
+  gtk_widget_show (table4);
+  gtk_container_add (GTK_CONTAINER (notebook1), table4);
+  gtk_container_set_border_width (GTK_CONTAINER (table4), 4);
+  gtk_table_set_row_spacings (GTK_TABLE (table4), 2);
+  gtk_table_set_col_spacings (GTK_TABLE (table4), 2);
+
+  label18 = gtk_label_new ("Use Driver:");
+  gtk_widget_show (label18);
+  gtk_table_attach (GTK_TABLE (table4), label18, 0, 1, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (label18), GTK_JUSTIFY_LEFT);
+  gtk_misc_set_alignment (GTK_MISC (label18), 0, 0.5);
+
+  hbox2 = gtk_hbox_new (FALSE, 5);
+  gtk_widget_show (hbox2);
+  gtk_table_attach (GTK_TABLE (table4), hbox2, 1, 2, 0, 1,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+
+  oss_driver = gtk_radio_button_new_with_mnemonic (NULL, "OSS");
+  gtk_widget_show (oss_driver);
+  gtk_box_pack_start (GTK_BOX (hbox2), oss_driver, FALSE, FALSE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (oss_driver), oss_driver_group);
+  oss_driver_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (oss_driver));
+
+  alsa_driver = gtk_radio_button_new_with_mnemonic (NULL, "ALSA");
+  gtk_widget_show (alsa_driver);
+  gtk_box_pack_start (GTK_BOX (hbox2), alsa_driver, FALSE, FALSE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (alsa_driver), oss_driver_group);
+  oss_driver_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (alsa_driver));
+
+  jack_driver = gtk_radio_button_new_with_mnemonic (NULL, "JACK");
+  gtk_widget_show (jack_driver);
+  gtk_box_pack_start (GTK_BOX (hbox2), jack_driver, FALSE, FALSE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (jack_driver), oss_driver_group);
+  oss_driver_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (jack_driver));
+
+  label19 = gtk_label_new ("Latency:");
+  gtk_widget_show (label19);
+  gtk_table_attach (GTK_TABLE (table4), label19, 0, 1, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (label19), GTK_JUSTIFY_LEFT);
+  gtk_misc_set_alignment (GTK_MISC (label19), 0, 0.5);
+
+  hbox3 = gtk_hbox_new (FALSE, 0);
+  gtk_widget_show (hbox3);
+  gtk_table_attach (GTK_TABLE (table4), hbox3, 1, 2, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+
+  measure_latency = gtk_button_new_with_mnemonic ("Measure");
+  gtk_widget_show (measure_latency);
+  gtk_box_pack_start (GTK_BOX (hbox3), measure_latency, FALSE, FALSE, 0);
+
+  label20 = gtk_label_new ("-- ms");
+  gtk_widget_show (label20);
+  gtk_box_pack_start (GTK_BOX (hbox3), label20, TRUE, TRUE, 0);
+  gtk_label_set_justify (GTK_LABEL (label20), GTK_JUSTIFY_LEFT);
+
+  label1 = gtk_label_new ("Audio");
+  gtk_widget_show (label1);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label1);
+  gtk_label_set_justify (GTK_LABEL (label1), GTK_JUSTIFY_LEFT);
+
+  table5 = gtk_table_new (4, 2, FALSE);
+  gtk_widget_show (table5);
+  gtk_container_add (GTK_CONTAINER (notebook1), table5);
+  gtk_container_set_border_width (GTK_CONTAINER (table5), 4);
+  gtk_table_set_row_spacings (GTK_TABLE (table5), 2);
+  gtk_table_set_col_spacings (GTK_TABLE (table5), 2);
+
+  label21 = gtk_label_new ("Audio Device:");
+  gtk_widget_show (label21);
+  gtk_table_attach (GTK_TABLE (table5), label21, 0, 1, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (label21), GTK_JUSTIFY_LEFT);
+  gtk_misc_set_alignment (GTK_MISC (label21), 0, 0.5);
+
+  label22 = gtk_label_new ("No. of Buffers:");
+  gtk_widget_show (label22);
+  gtk_table_attach (GTK_TABLE (table5), label22, 0, 1, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (label22), GTK_JUSTIFY_LEFT);
+  gtk_misc_set_alignment (GTK_MISC (label22), 0, 0.5);
+
+  label23 = gtk_label_new ("Buffersize (2^x):");
+  gtk_widget_show (label23);
+  gtk_table_attach (GTK_TABLE (table5), label23, 0, 1, 2, 3,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (label23), GTK_JUSTIFY_LEFT);
+  gtk_misc_set_alignment (GTK_MISC (label23), 0, 0.5);
+
+  label24 = gtk_label_new ("Samplerate (Hz):");
+  gtk_widget_show (label24);
+  gtk_table_attach (GTK_TABLE (table5), label24, 0, 1, 3, 4,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (label24), GTK_JUSTIFY_LEFT);
+  gtk_misc_set_alignment (GTK_MISC (label24), 0, 0.5);
+
+  oss_audio_device = gtk_combo_new ();
+  g_object_set_data (G_OBJECT (GTK_COMBO (oss_audio_device)->popwin),
+                     "GladeParentKey", oss_audio_device);
+  gtk_widget_show (oss_audio_device);
+  gtk_table_attach (GTK_TABLE (table5), oss_audio_device, 1, 2, 0, 1,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+
+  combo_entry2 = GTK_COMBO (oss_audio_device)->entry;
+  gtk_widget_show (combo_entry2);
+
+  oss_buffers_adj = gtk_adjustment_new (2, 2, 5, 1, 10, 10);
+  oss_buffers = gtk_spin_button_new (GTK_ADJUSTMENT (oss_buffers_adj), 1, 0);
+  gtk_widget_show (oss_buffers);
+  gtk_table_attach (GTK_TABLE (table5), oss_buffers, 1, 2, 1, 2,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+
+  oss_buffersize = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (5, 1, 16, 1, 1, 1)));
+  gtk_widget_show (oss_buffersize);
+  gtk_table_attach (GTK_TABLE (table5), oss_buffersize, 1, 2, 2, 3,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_scale_set_digits (GTK_SCALE (oss_buffersize), 0);
+
+  oss_samplerate = gtk_combo_new ();
+  g_object_set_data (G_OBJECT (GTK_COMBO (oss_samplerate)->popwin),
+                     "GladeParentKey", oss_samplerate);
+  gtk_widget_show (oss_samplerate);
+  gtk_table_attach (GTK_TABLE (table5), oss_samplerate, 1, 2, 3, 4,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+
+  combo_entry3 = GTK_COMBO (oss_samplerate)->entry;
+  gtk_widget_show (combo_entry3);
+
+  label15 = gtk_label_new ("Audio: OSS");
+  gtk_widget_show (label15);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), label15);
+  gtk_label_set_justify (GTK_LABEL (label15), GTK_JUSTIFY_LEFT);
+
+  empty_notebook_page = gtk_vbox_new (FALSE, 0);
+  gtk_widget_show (empty_notebook_page);
+  gtk_container_add (GTK_CONTAINER (notebook1), empty_notebook_page);
+
+  label16 = gtk_label_new ("Audio: ALSA");
+  gtk_widget_show (label16);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 2), label16);
+  gtk_label_set_justify (GTK_LABEL (label16), GTK_JUSTIFY_LEFT);
+
+  empty_notebook_page = gtk_vbox_new (FALSE, 0);
+  gtk_widget_show (empty_notebook_page);
+  gtk_container_add (GTK_CONTAINER (notebook1), empty_notebook_page);
+
+  label17 = gtk_label_new ("Audio: JACK");
+  gtk_widget_show (label17);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 3), label17);
+  gtk_label_set_justify (GTK_LABEL (label17), GTK_JUSTIFY_LEFT);
+
+  table1 = gtk_table_new (3, 2, FALSE);
+  gtk_widget_show (table1);
+  gtk_container_add (GTK_CONTAINER (notebook1), table1);
+  gtk_container_set_border_width (GTK_CONTAINER (table1), 4);
+  gtk_table_set_row_spacings (GTK_TABLE (table1), 2);
+  gtk_table_set_col_spacings (GTK_TABLE (table1), 2);
+
+  label5 = gtk_label_new ("XInput Device:");
+  gtk_widget_show (label5);
+  gtk_table_attach (GTK_TABLE (table1), label5, 0, 1, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (label5), GTK_JUSTIFY_LEFT);
+  gtk_misc_set_alignment (GTK_MISC (label5), 0, 0.5);
+
+  label6 = gtk_label_new ("Mouse Speed:");
+  gtk_widget_show (label6);
+  gtk_table_attach (GTK_TABLE (table1), label6, 0, 1, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (label6), GTK_JUSTIFY_LEFT);
+  gtk_misc_set_alignment (GTK_MISC (label6), 0, 0.5);
+
+  label7 = gtk_label_new ("Stop-Sense-Cycles:");
+  gtk_widget_show (label7);
+  gtk_table_attach (GTK_TABLE (table1), label7, 0, 1, 2, 3,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (label7), GTK_JUSTIFY_LEFT);
+  gtk_misc_set_alignment (GTK_MISC (label7), 0, 0.5);
+
+  xinput_device = gtk_combo_new ();
+  g_object_set_data (G_OBJECT (GTK_COMBO (xinput_device)->popwin),
+                     "GladeParentKey", xinput_device);
+  gtk_widget_show (xinput_device);
+  gtk_table_attach (GTK_TABLE (table1), xinput_device, 1, 2, 0, 1,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+
+  combo_entry1 = GTK_COMBO (xinput_device)->entry;
+  gtk_widget_show (combo_entry1);
+  gtk_tooltips_set_tip (tooltips, combo_entry1, "CAREFUL! Enable this *only* if you want to use an input device than your default X-Pointer (yes, your mouse ;). You have to select your desired device as well. Selecting the default mouse pointer will crash terminatorX so if you want to use that keep this option disabled.", NULL);
+
+  mouse_speed = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, -10, 10, 0.5, 0.1, 0.1)));
+  gtk_widget_show (mouse_speed);
+  gtk_table_attach (GTK_TABLE (table1), mouse_speed, 1, 2, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+
+  stop_sense_cycles = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (10, 1, 150, 5, 1, 1)));
+  gtk_widget_show (stop_sense_cycles);
+  gtk_table_attach (GTK_TABLE (table1), stop_sense_cycles, 1, 2, 2, 3,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_scale_set_digits (GTK_SCALE (stop_sense_cycles), 0);
+
+  label4 = gtk_label_new ("Input");
+  gtk_widget_show (label4);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 4), label4);
+  gtk_label_set_justify (GTK_LABEL (label4), GTK_JUSTIFY_LEFT);
+
+  table2 = gtk_table_new (6, 2, FALSE);
+  gtk_widget_show (table2);
+  gtk_container_add (GTK_CONTAINER (notebook1), table2);
+  gtk_container_set_border_width (GTK_CONTAINER (table2), 4);
+  gtk_table_set_row_spacings (GTK_TABLE (table2), 2);
+  gtk_table_set_col_spacings (GTK_TABLE (table2), 2);
+
+  label8 = gtk_label_new ("Main Window Tooltips:");
+  gtk_widget_show (label8);
+  gtk_table_attach (GTK_TABLE (table2), label8, 0, 1, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (label8), GTK_JUSTIFY_LEFT);
+  gtk_misc_set_alignment (GTK_MISC (label8), 0, 0.5);
+
+  label9 = gtk_label_new ("Update Idle (ms):");
+  gtk_widget_show (label9);
+  gtk_table_attach (GTK_TABLE (table2), label9, 0, 1, 3, 4,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (label9), GTK_JUSTIFY_LEFT);
+  gtk_misc_set_alignment (GTK_MISC (label9), 0, 0.5);
+
+  label10 = gtk_label_new ("Update Delay (cycles):");
+  gtk_widget_show (label10);
+  gtk_table_attach (GTK_TABLE (table2), label10, 0, 1, 4, 5,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (label10), GTK_JUSTIFY_LEFT);
+  gtk_misc_set_alignment (GTK_MISC (label10), 0, 0.5);
+
+  label11 = gtk_label_new ("VU Meter Decay:");
+  gtk_widget_show (label11);
+  gtk_table_attach (GTK_TABLE (table2), label11, 0, 1, 5, 6,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (label11), GTK_JUSTIFY_LEFT);
+  gtk_misc_set_alignment (GTK_MISC (label11), 0, 0.5);
+
+  mainwin_tooltips = gtk_check_button_new_with_mnemonic ("Enabled");
+  gtk_widget_show (mainwin_tooltips);
+  gtk_table_attach (GTK_TABLE (table2), mainwin_tooltips, 1, 2, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+
+  update_idle = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (11, 1, 100, 1, 10, 10)));
+  gtk_widget_show (update_idle);
+  gtk_table_attach (GTK_TABLE (table2), update_idle, 1, 2, 3, 4,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_scale_set_digits (GTK_SCALE (update_idle), 0);
+
+  update_delay = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 15, 1, 10, 10)));
+  gtk_widget_show (update_delay);
+  gtk_table_attach (GTK_TABLE (table2), update_delay, 1, 2, 4, 5,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+
+  vumeter_decay = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0.8, 0.8, 0.99, 0.01, 0.01, 0.001)));
+  gtk_widget_show (vumeter_decay);
+  gtk_table_attach (GTK_TABLE (table2), vumeter_decay, 1, 2, 5, 6,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+
+  label14 = gtk_label_new ("Startup-Nagbox:");
+  gtk_widget_show (label14);
+  gtk_table_attach (GTK_TABLE (table2), label14, 0, 1, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (label14), GTK_JUSTIFY_LEFT);
+  gtk_misc_set_alignment (GTK_MISC (label14), 0, 0.5);
+
+  startup_nagbox = gtk_check_button_new_with_mnemonic ("Enabled");
+  gtk_widget_show (startup_nagbox);
+  gtk_table_attach (GTK_TABLE (table2), startup_nagbox, 1, 2, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+
+  label12 = gtk_label_new ("Buttons:");
+  gtk_widget_show (label12);
+  gtk_table_attach (GTK_TABLE (table2), label12, 0, 1, 2, 3,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (label12), GTK_JUSTIFY_LEFT);
+  gtk_misc_set_alignment (GTK_MISC (label12), 0, 0.5);
+
+  hbox1 = gtk_hbox_new (FALSE, 5);
+  gtk_widget_show (hbox1);
+  gtk_table_attach (GTK_TABLE (table2), hbox1, 1, 2, 2, 3,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+
+  buttons_text_and_icon = gtk_radio_button_new_with_mnemonic (NULL, "Text + Icon");
+  gtk_widget_show (buttons_text_and_icon);
+  gtk_box_pack_start (GTK_BOX (hbox1), buttons_text_and_icon, FALSE, FALSE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (buttons_text_and_icon), buttons_text_and_icon_group);
+  buttons_text_and_icon_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (buttons_text_and_icon));
+
+  buttons_icon_only = gtk_radio_button_new_with_mnemonic (NULL, "Icon Only");
+  gtk_widget_show (buttons_icon_only);
+  gtk_box_pack_start (GTK_BOX (hbox1), buttons_icon_only, FALSE, FALSE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (buttons_icon_only), buttons_text_and_icon_group);
+  buttons_text_and_icon_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (buttons_icon_only));
+
+  buttons_text_only = gtk_radio_button_new_with_mnemonic (NULL, "Text Only");
+  gtk_widget_show (buttons_text_only);
+  gtk_box_pack_start (GTK_BOX (hbox1), buttons_text_only, FALSE, FALSE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (buttons_text_only), buttons_text_and_icon_group);
+  buttons_text_and_icon_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (buttons_text_only));
+
+  label2 = gtk_label_new ("User Interface");
+  gtk_widget_show (label2);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 5), label2);
+  gtk_label_set_justify (GTK_LABEL (label2), GTK_JUSTIFY_LEFT);
+
+  table3 = gtk_table_new (1, 2, FALSE);
+  gtk_widget_show (table3);
+  gtk_container_add (GTK_CONTAINER (notebook1), table3);
+  gtk_container_set_border_width (GTK_CONTAINER (table3), 4);
+  gtk_table_set_row_spacings (GTK_TABLE (table3), 2);
+  gtk_table_set_col_spacings (GTK_TABLE (table3), 2);
+
+  label13 = gtk_label_new ("Soundfile Editor:");
+  gtk_widget_show (label13);
+  gtk_table_attach (GTK_TABLE (table3), label13, 0, 1, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (label13), GTK_JUSTIFY_LEFT);
+  gtk_misc_set_alignment (GTK_MISC (label13), 0, 0.5);
+
+  soundfile_editor = gtk_entry_new ();
+  gtk_widget_show (soundfile_editor);
+  gtk_table_attach (GTK_TABLE (table3), soundfile_editor, 1, 2, 0, 1,
+                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+
+  label3 = gtk_label_new ("Misc");
+  gtk_widget_show (label3);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 6), label3);
+  gtk_label_set_justify (GTK_LABEL (label3), GTK_JUSTIFY_LEFT);
+
+  dialog_action_area1 = GTK_DIALOG (tx_options)->action_area;
+  gtk_widget_show (dialog_action_area1);
+  gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_END);
+
+  cancel = gtk_button_new_from_stock ("gtk-cancel");
+  gtk_widget_show (cancel);
+  gtk_dialog_add_action_widget (GTK_DIALOG (tx_options), cancel, GTK_RESPONSE_CANCEL);
+  GTK_WIDGET_SET_FLAGS (cancel, GTK_CAN_DEFAULT);
+
+  apply = gtk_button_new_from_stock ("gtk-apply");
+  gtk_widget_show (apply);
+  gtk_dialog_add_action_widget (GTK_DIALOG (tx_options), apply, GTK_RESPONSE_APPLY);
+  GTK_WIDGET_SET_FLAGS (apply, GTK_CAN_DEFAULT);
+
+  okbutton1 = gtk_button_new_from_stock ("gtk-ok");
+  gtk_widget_show (okbutton1);
+  gtk_dialog_add_action_widget (GTK_DIALOG (tx_options), okbutton1, GTK_RESPONSE_OK);
+  GTK_WIDGET_SET_FLAGS (okbutton1, GTK_CAN_DEFAULT);
+
+  /* Store pointers to all widgets, for use by lookup_widget(). */
+  GLADE_HOOKUP_OBJECT_NO_REF (tx_options, tx_options, "tx_options");
+  GLADE_HOOKUP_OBJECT_NO_REF (tx_options, dialog_vbox1, "dialog_vbox1");
+  GLADE_HOOKUP_OBJECT (tx_options, notebook1, "notebook1");
+  GLADE_HOOKUP_OBJECT (tx_options, table4, "table4");
+  GLADE_HOOKUP_OBJECT (tx_options, label18, "label18");
+  GLADE_HOOKUP_OBJECT (tx_options, hbox2, "hbox2");
+  GLADE_HOOKUP_OBJECT (tx_options, oss_driver, "oss_driver");
+  GLADE_HOOKUP_OBJECT (tx_options, alsa_driver, "alsa_driver");
+  GLADE_HOOKUP_OBJECT (tx_options, jack_driver, "jack_driver");
+  GLADE_HOOKUP_OBJECT (tx_options, label19, "label19");
+  GLADE_HOOKUP_OBJECT (tx_options, hbox3, "hbox3");
+  GLADE_HOOKUP_OBJECT (tx_options, measure_latency, "measure_latency");
+  GLADE_HOOKUP_OBJECT (tx_options, label20, "label20");
+  GLADE_HOOKUP_OBJECT (tx_options, label1, "label1");
+  GLADE_HOOKUP_OBJECT (tx_options, table5, "table5");
+  GLADE_HOOKUP_OBJECT (tx_options, label21, "label21");
+  GLADE_HOOKUP_OBJECT (tx_options, label22, "label22");
+  GLADE_HOOKUP_OBJECT (tx_options, label23, "label23");
+  GLADE_HOOKUP_OBJECT (tx_options, label24, "label24");
+  GLADE_HOOKUP_OBJECT (tx_options, oss_audio_device, "oss_audio_device");
+  GLADE_HOOKUP_OBJECT (tx_options, combo_entry2, "combo_entry2");
+  GLADE_HOOKUP_OBJECT (tx_options, oss_buffers, "oss_buffers");
+  GLADE_HOOKUP_OBJECT (tx_options, oss_buffersize, "oss_buffersize");
+  GLADE_HOOKUP_OBJECT (tx_options, oss_samplerate, "oss_samplerate");
+  GLADE_HOOKUP_OBJECT (tx_options, combo_entry3, "combo_entry3");
+  GLADE_HOOKUP_OBJECT (tx_options, label15, "label15");
+  GLADE_HOOKUP_OBJECT (tx_options, label16, "label16");
+  GLADE_HOOKUP_OBJECT (tx_options, label17, "label17");
+  GLADE_HOOKUP_OBJECT (tx_options, table1, "table1");
+  GLADE_HOOKUP_OBJECT (tx_options, label5, "label5");
+  GLADE_HOOKUP_OBJECT (tx_options, label6, "label6");
+  GLADE_HOOKUP_OBJECT (tx_options, label7, "label7");
+  GLADE_HOOKUP_OBJECT (tx_options, xinput_device, "xinput_device");
+  GLADE_HOOKUP_OBJECT (tx_options, combo_entry1, "combo_entry1");
+  GLADE_HOOKUP_OBJECT (tx_options, mouse_speed, "mouse_speed");
+  GLADE_HOOKUP_OBJECT (tx_options, stop_sense_cycles, "stop_sense_cycles");
+  GLADE_HOOKUP_OBJECT (tx_options, label4, "label4");
+  GLADE_HOOKUP_OBJECT (tx_options, table2, "table2");
+  GLADE_HOOKUP_OBJECT (tx_options, label8, "label8");
+  GLADE_HOOKUP_OBJECT (tx_options, label9, "label9");
+  GLADE_HOOKUP_OBJECT (tx_options, label10, "label10");
+  GLADE_HOOKUP_OBJECT (tx_options, label11, "label11");
+  GLADE_HOOKUP_OBJECT (tx_options, mainwin_tooltips, "mainwin_tooltips");
+  GLADE_HOOKUP_OBJECT (tx_options, update_idle, "update_idle");
+  GLADE_HOOKUP_OBJECT (tx_options, update_delay, "update_delay");
+  GLADE_HOOKUP_OBJECT (tx_options, vumeter_decay, "vumeter_decay");
+  GLADE_HOOKUP_OBJECT (tx_options, label14, "label14");
+  GLADE_HOOKUP_OBJECT (tx_options, startup_nagbox, "startup_nagbox");
+  GLADE_HOOKUP_OBJECT (tx_options, label12, "label12");
+  GLADE_HOOKUP_OBJECT (tx_options, hbox1, "hbox1");
+  GLADE_HOOKUP_OBJECT (tx_options, buttons_text_and_icon, "buttons_text_and_icon");
+  GLADE_HOOKUP_OBJECT (tx_options, buttons_icon_only, "buttons_icon_only");
+  GLADE_HOOKUP_OBJECT (tx_options, buttons_text_only, "buttons_text_only");
+  GLADE_HOOKUP_OBJECT (tx_options, label2, "label2");
+  GLADE_HOOKUP_OBJECT (tx_options, table3, "table3");
+  GLADE_HOOKUP_OBJECT (tx_options, label13, "label13");
+  GLADE_HOOKUP_OBJECT (tx_options, soundfile_editor, "soundfile_editor");
+  GLADE_HOOKUP_OBJECT (tx_options, label3, "label3");
+  GLADE_HOOKUP_OBJECT_NO_REF (tx_options, dialog_action_area1, "dialog_action_area1");
+  GLADE_HOOKUP_OBJECT (tx_options, cancel, "cancel");
+  GLADE_HOOKUP_OBJECT (tx_options, apply, "apply");
+  GLADE_HOOKUP_OBJECT (tx_options, okbutton1, "okbutton1");
+  GLADE_HOOKUP_OBJECT_NO_REF (tx_options, tooltips, "tooltips");
+
+  return tx_options;
+}
+
diff --git a/src/tX_glade_interface.h b/src/tX_glade_interface.h
new file mode 100644 (file)
index 0000000..ab7f80d
--- /dev/null
@@ -0,0 +1,5 @@
+/*
+ * DO NOT EDIT THIS FILE - it is generated by Glade.
+ */
+
+GtkWidget* create_tx_options (void);
diff --git a/src/tX_glade_support.cc b/src/tX_glade_support.cc
new file mode 100644 (file)
index 0000000..238a7d9
--- /dev/null
@@ -0,0 +1,144 @@
+/*
+ * DO NOT EDIT THIS FILE - it is generated by Glade.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdio.h>
+
+#include <gtk/gtk.h>
+
+#include "tX_glade_support.h"
+
+GtkWidget*
+lookup_widget                          (GtkWidget       *widget,
+                                        const gchar     *widget_name)
+{
+  GtkWidget *parent, *found_widget;
+
+  for (;;)
+    {
+      if (GTK_IS_MENU (widget))
+        parent = gtk_menu_get_attach_widget (GTK_MENU (widget));
+      else
+        parent = widget->parent;
+      if (!parent)
+        parent = (GtkWidget *) g_object_get_data (G_OBJECT (widget), "GladeParentKey");
+      if (parent == NULL)
+        break;
+      widget = parent;
+    }
+
+  found_widget = (GtkWidget*) g_object_get_data (G_OBJECT (widget),
+                                                 widget_name);
+  if (!found_widget)
+    g_warning ("Widget not found: %s", widget_name);
+  return found_widget;
+}
+
+static GList *pixmaps_directories = NULL;
+
+/* Use this function to set the directory containing installed pixmaps. */
+void
+add_pixmap_directory                   (const gchar     *directory)
+{
+  pixmaps_directories = g_list_prepend (pixmaps_directories,
+                                        g_strdup (directory));
+}
+
+/* This is an internally used function to find pixmap files. */
+static gchar*
+find_pixmap_file                       (const gchar     *filename)
+{
+  GList *elem;
+
+  /* We step through each of the pixmaps directory to find it. */
+  elem = pixmaps_directories;
+  while (elem)
+    {
+      gchar *pathname = g_strdup_printf ("%s%s%s", (gchar*)elem->data,
+                                         G_DIR_SEPARATOR_S, filename);
+      if (g_file_test (pathname, G_FILE_TEST_EXISTS))
+        return pathname;
+      g_free (pathname);
+      elem = elem->next;
+    }
+  return NULL;
+}
+
+/* This is an internally used function to create pixmaps. */
+GtkWidget*
+create_pixmap                          (GtkWidget       *widget,
+                                        const gchar     *filename)
+{
+  gchar *pathname = NULL;
+  GtkWidget *pixmap;
+
+  if (!filename || !filename[0])
+      return gtk_image_new ();
+
+  pathname = find_pixmap_file (filename);
+
+  if (!pathname)
+    {
+      g_warning ("Couldn't find pixmap file: %s", filename);
+      return gtk_image_new ();
+    }
+
+  pixmap = gtk_image_new_from_file (pathname);
+  g_free (pathname);
+  return pixmap;
+}
+
+/* This is an internally used function to create pixmaps. */
+GdkPixbuf*
+create_pixbuf                          (const gchar     *filename)
+{
+  gchar *pathname = NULL;
+  GdkPixbuf *pixbuf;
+  GError *error = NULL;
+
+  if (!filename || !filename[0])
+      return NULL;
+
+  pathname = find_pixmap_file (filename);
+
+  if (!pathname)
+    {
+      g_warning ("Couldn't find pixmap file: %s", filename);
+      return NULL;
+    }
+
+  pixbuf = gdk_pixbuf_new_from_file (pathname, &error);
+  if (!pixbuf)
+    {
+      fprintf (stderr, "Failed to load pixbuf file: %s: %s\n",
+               pathname, error->message);
+      g_error_free (error);
+    }
+  g_free (pathname);
+  return pixbuf;
+}
+
+/* This is used to set ATK action descriptions. */
+void
+glade_set_atk_action_description       (AtkAction       *action,
+                                        const gchar     *action_name,
+                                        const gchar     *description)
+{
+  gint n_actions, i;
+
+  n_actions = atk_action_get_n_actions (action);
+  for (i = 0; i < n_actions; i++)
+    {
+      if (!strcmp (atk_action_get_name (action, i), action_name))
+        atk_action_set_description (action, i, description);
+    }
+}
+
diff --git a/src/tX_glade_support.h b/src/tX_glade_support.h
new file mode 100644 (file)
index 0000000..2dea079
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * DO NOT EDIT THIS FILE - it is generated by Glade.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <gtk/gtk.h>
+
+/*
+ * Public Functions.
+ */
+
+/*
+ * This function returns a widget in a component created by Glade.
+ * Call it with the toplevel widget in the component (i.e. a window/dialog),
+ * or alternatively any widget in the component, and the name of the widget
+ * you want returned.
+ */
+GtkWidget*  lookup_widget              (GtkWidget       *widget,
+                                        const gchar     *widget_name);
+
+
+/* Use this function to set the directory containing installed pixmaps. */
+void        add_pixmap_directory       (const gchar     *directory);
+
+
+/*
+ * Private Functions.
+ */
+
+/* This is used to create the pixmaps used in the interface. */
+GtkWidget*  create_pixmap              (GtkWidget       *widget,
+                                        const gchar     *filename);
+
+/* This is used to create the pixbufs used in the interface. */
+GdkPixbuf*  create_pixbuf              (const gchar     *filename);
+
+/* This is used to set ATK action descriptions. */
+void        glade_set_atk_action_description (AtkAction       *action,
+                                              const gchar     *action_name,
+                                              const gchar     *description);
+
index 246d3b0194916d6ddf3f09825686058015e43f8c..5e33f2ef6fb40f9885aec3098fe8bfcf409488e3 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
@@ -29,6 +29,7 @@
        14 Jul 2002: switched to libxml instead of binary saving.
 */    
 
+#include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include "tX_types.h"
@@ -66,7 +67,11 @@ void set_global_defaults() {
        globals.no_gui = 0;
        globals.alternate_rc = 0;
        
+#ifdef USE_ALSA        
+       strcpy(globals.audio_device, "plughw:0,0");     
+#else  
        strcpy(globals.audio_device, "/dev/dsp");
+#endif 
        
        strcpy(globals.xinput_device, "");
        globals.xinput_enable=0;
@@ -109,10 +114,10 @@ void set_global_defaults() {
        strcpy(globals.file_editor, "");
                
 #ifdef USE_OSS
-       globals.audiodevice_type=TX_AUDIODEVICE_TYPE_OSS;               
+       globals.audiodevice_type=OSS;           
 #else
 #ifdef USE_ALSA
-       globals.audiodevice_type=TX_AUDIODEVICE_TYPE_ALSA;
+       globals.audiodevice_type=ALSA;
 #endif 
 #endif         
        globals.audiodevice_buffersize=4096;
index b9a129ed48fe873999dd79d4777a09eb34e0e67d..2d962fc9aba5a81ef3268672d401d7013201fc97 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
@@ -45,9 +45,6 @@ extern "C" {
 #define BUTTON_TYPE_TEXT 2
 #define BUTTON_TYPE_BOTH 3
 
-#define TX_AUDIODEVICE_TYPE_OSS 0
-#define TX_AUDIODEVICE_TYPE_ALSA 1
-
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -61,6 +58,11 @@ extern "C" {
 #define tX_error(fmt, args...); { fprintf(stderr, "* tX_error: "); fprintf(stderr, fmt , ## args); fprintf(stderr, "\n"); }
 #define tX_warning(fmt, args...); { fprintf(stderr, "+ tX_warning: "); fprintf(stderr, fmt , ## args); fprintf(stderr, "\n"); }
 
+typedef enum {
+       OSS =0,
+       ALSA = 1
+} tX_audiodevice_type;
+       
 typedef struct {
        char    audio_device[PATH_MAX];
        
@@ -121,7 +123,7 @@ typedef struct {
           the .terminatorX3rc.bin in sync.
        */
        
-       int audiodevice_type; // TX_AUDIODEVICE_TYPE_OSS etc.
+       tX_audiodevice_type audiodevice_type; // TX_AUDIODEVICE_TYPE_OSS etc.
        int audiodevice_buffersize; // buffer in samples
        
        /* OSS specific options */
index a650065b874c836bdaaa20d7f99f289458106a8e..b528d786bfe4637b060554ab59e95f4d1c73778b 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 6af60d19bd8eda011c3ab2269fdfb641e3e54229..3641407a8400ebd84dfff20680574a3c227bf3c8 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 9739025db05993c9d323c14a79e664b73970a14d..3080842a3be1eb7812bd81f701e0cae5a7c691b6 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 7cd0754a2c398f4a283cb795961eb9dfd2d7a9f6..c533cd18dd0818b1c2d0202afa0c8d2d6e518387 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index f018690077f1a30be98a4ec958fc16d92ea51eec..1af4e7daf94965ae10e50e0ab1829847099072f2 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 52a00ba633ecf94617a07427cc1137a3ef321da7..3d46fd118cf8209a3a8703d67194817d051441de 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 4015e8f24e23c6da80bd58f73eab15ea83b01806..f45c71938da3b6596d935e92addbe93271b4e535 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index daecee9dc63adff490b29b3e20c77143f43a84dd..8cf7ed17ac2ae67669006ce99f4a3f82e5b9f790 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 9e7d550e16caec9a780ca36a89a4af937ab104d6..54367e00fc4aa863500ec4096d55438341cf4b58 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index e22c1df279fa72f0b009777d3d3ac44b311efcf8..0c488a7a08101a5790902299cae8797bc29b0756 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 3174d4ae7c8f2bb053ff522314a9d2e749e1a820..255bc4fc0b743b15a3c833729b827704ebcca618 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index dfe03ae0286d1d8228b8906964ac7498d50d7d50..8b3b390c106bfc8e928b2306e16d99c7ac5e1a2c 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index d1d379a2a5ccec00485ac2e70ca3621ed6b0859f..7de8f55f9b2691b6353eebdd3c63dc917441a99a 100644 (file)
@@ -43,7 +43,8 @@ tX_midiin::tX_midiin()
 {
        
        int portid;
-
+       is_open=false;
+       
        if (snd_seq_open(&ALSASeqHandle, "default", SND_SEQ_OPEN_INPUT, 0) < 0) {
                tX_error("tX_midiin(): failed to open the default sequencer device.");
                return;
@@ -61,7 +62,9 @@ tX_midiin::tX_midiin()
        }
 
        snd_seq_nonblock( ALSASeqHandle, 1 );
-  
+       
+       is_open=true;
+
        tX_debug("tX_midiin(): sequencer successfully opened."); 
 }
 
@@ -74,7 +77,7 @@ tX_midiin::~tX_midiin()
 int tX_midiin::check_event()
 {
        snd_seq_event_t *ev;
-       
+               
        while( snd_seq_event_input(ALSASeqHandle, &ev) != -EAGAIN )
        {
 
index 903550b954747c6fa86cc922ccc2f6524c77c50b..72d2c347a68c9b2e61a7a2542a24b856986b97fd 100644 (file)
@@ -67,11 +67,16 @@ class tX_midiin
 {
        snd_seq_t *ALSASeqHandle;
        tX_midievent last_event;
-               
+       bool is_open;
+       
   public:
        tX_midiin();
        ~tX_midiin();
 
+       bool get_is_open() {
+               return is_open;
+       }
+       
        int check_event();
 
        void configure_bindings( vtt_class* );
index 3e4f7ac0fd398c036e9b0b892fbaeb70e33042f4..9e2ae2d80afaa645a99af0d970d7f75a21bd4625 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index f6000ea305ecb011ee3852e4f5759c8fed839c27..e6415e3f166d82ea0d54c0dde8c0c5f69f06dfc7 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index c4075c702b5ca7151c4a1d7737379d78b2e845d2..08a4262d057482dc6a768e7f4f8794925481c764 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index a7ec635448198bf6cd68eca169b8a1bcaffaaed8..29cb7caa86765415067bf0fee37ac86f2f85b21f 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index ea10e4839284fb111ec345be6e33815420f33690..964c9c454c663bfa51ee062a9fed60c889c23f0e 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index a68a1e0407b5531cce3454fc6509874c0f6fed00..0da2fadc3d3675cae4c4eb44450f9dc32999329b 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 685a8318635147090e60e54e2c6aca0f59d5e1fd..a10a97d52f7ef1c2261ff90bacfe5ec2a076bc87 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index ab33406969c5ff5cb3268030433a463a7ba052ef..45a83e25086cffc1c93ae18f9f045b3616f74b9e 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 3201afd6500db5883f6c8ad35b61f4f2ced45501..b2ae62553ac1cbeccf6f94ae5d914c4118ba2d6c 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index f90d1a4f401c00b95aba715e09ff97ccfb2fd54d..3b153134879031f9433ed3cb3d9625727e9d5fef 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index e03528adde753d0a8662a6fab3f6f488017c0489..ab170d00233c3f498ca42a5857bfcef58acf5c40 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 83570024665a60a99a581c80c2abff2d07aa7b45..5d9c0d8946c6950c7024bd848a23cb11d105157a 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
@@ -1721,6 +1721,7 @@ int vtt_class :: load(xmlDocPtr doc, xmlNodePtr node) {
                        restore_bool_ac("lowpass_panel_hidden", hidden, gui.lp_panel->hide(hidden));                    
                        restore_bool_ac("echo_panel_hidden", hidden, gui.ec_panel->hide(hidden));
                        restore_float_ac("audio_x_zoom", tmp, gui_set_audio_x_zoom(this,tmp));
+                       vg_adjust_zoom(gui.zoom, this);
                        
                        if (xmlStrcmp(cur->name, (xmlChar *) "fx")==0) {
                                xmlNodePtr fx=cur;
index 239d8c651b9148fc2420f9cc69f7d2c05af5f53d..36575659762fe60252e461580e0962a9ad6ee3bc 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 5351783ed2f2459159759ac4207433f10b19cb7f..93207587fec9a31dbefe04d6b98e281f09def94d 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 2f833028517d623bd7300a72e7e4cc85eda34045..fd6853de24a0109b1f4e5160e4f0ec7eb4cf7804 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 4870ec1a2987d5ee17566ee4eb1f2b025cd59c22..2b45ddadd33dc925eddc28183165bfa96dcc75a0 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
@@ -613,10 +613,8 @@ void vg_file_button_pressed(GtkWidget *wid, vtt_class *vtt) {
 
 void vg_adjust_zoom(GtkWidget *wid, vtt_class *vtt) {  
        GtkAdjustment *adj=gtk_range_get_adjustment(GTK_RANGE(vtt->gui.zoom));
-       gdouble real_value=99-adj->value;
-       
-       real_value/=100;
-       gtk_tx_set_zoom(GTK_TX(vtt->gui.display),  real_value);
+       printf("setting zoom %lf.\n", adj->value);
+       gtk_tx_set_zoom(GTK_TX(vtt->gui.display), adj->value/100.0);
 }
 
 static gchar* vg_format_zoom(GtkScale *scale, gdouble   value) {
@@ -734,7 +732,7 @@ void gui_connect_signals(vtt_class *vtt)
        connect_adj(ec_pan, ec_pan_changed);
        connect_adj(ec_volume, ec_volume_changed);      
        connect_range(zoom, vg_adjust_zoom);
-       connect_scale_format(zoom, vg_format_zoom);
+       //connect_scale_format(zoom, vg_format_zoom);
        connect_press_button(mouse_mapping, vg_mouse_mapping_pressed);
        connect_button(control_minimize, minimize_control_panel);
        connect_button(audio_minimize, minimize_audio_panel);
@@ -817,6 +815,10 @@ void build_vtt_gui(vtt_class *vtt)
        gtk_widget_show(g->midi_mapping);
        gui_set_tooltip(g->midi_mapping, "Determines what parameters should be bound to what MIDI events.");
        gtk_box_pack_start(GTK_BOX(tempbox), g->midi_mapping, WID_DYN);
+       
+       if (!engine->get_midi()->get_is_open()) {
+               gtk_widget_set_sensitive(g->midi_mapping, FALSE);
+       }
 #endif
 
        tempbox=gtk_hbox_new(FALSE, 2);
@@ -826,10 +828,12 @@ void build_vtt_gui(vtt_class *vtt)
        gtk_widget_show(g->display);    
        
        g->zoom=gtk_vscale_new_with_range(0,99.0,1.0);
+       gtk_range_set_inverted(GTK_RANGE(g->zoom), TRUE);
        gtk_scale_set_draw_value(GTK_SCALE(g->zoom), TRUE);
        gtk_scale_set_digits(GTK_SCALE(g->zoom), 0);
        gtk_scale_set_value_pos(GTK_SCALE(g->zoom), GTK_POS_BOTTOM);
-       gtk_adjustment_set_value(gtk_range_get_adjustment(GTK_RANGE(g->zoom)), 99);
+       gtk_adjustment_set_value(gtk_range_get_adjustment(GTK_RANGE(g->zoom)), 0);
+       
        gui_set_tooltip(g->zoom, "Set the zoom-level for the audio data display.");
        gtk_box_pack_start(GTK_BOX(tempbox), g->zoom, WID_FIX);
        gtk_widget_show(g->zoom);
@@ -1352,12 +1356,13 @@ f_prec gui_get_audio_x_zoom(vtt_class *vtt) {
        return gtk_tx_get_zoom(GTK_TX(vtt->gui.display));
 }
 
+/* Yes, this is yet another evil hack. Fix it :) */
 int vttgui_zoom_depth=0;
 
 extern void gui_set_audio_x_zoom(vtt_class *vtt, f_prec value) {
        if (vttgui_zoom_depth==0) {
                vttgui_zoom_depth=1;
-               gtk_range_set_value(GTK_RANGE(vtt->gui.zoom), value);
+               gtk_range_set_value(GTK_RANGE(vtt->gui.zoom), value*100.0);
                vttgui_zoom_depth=0;
        } else {
                gtk_tx_set_zoom(GTK_TX(vtt->gui.display), value);
index 875118a74a4d4de6d918e01cecbaac639ad40ed9..06401e2b90d94ddb431703de130611d0b16704ac 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
@@ -134,4 +134,5 @@ extern void cleanup_all_vtts();
 extern void update_all_vtts();
 extern void vg_enable_critical_buttons(int enable);
 extern void vg_init_all_non_seqpars();
+extern void vg_adjust_zoom(GtkWidget *wid, vtt_class *vtt);
 #endif
index d49423f26f989c8802b5a320f50282f182c8a416..62d936194c5621bcb1efbe4851828439f605d2b2 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 0ba8a670826dfb1147ce495df2dd4d55ecf1c731..19e0f747247700dd1b42181b1cb44d95e868fa65 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
index 97729af8154e40bdb52704984e3afe31d848545f..c5ae8b3ea9507303cd36c21ff751e02e65aa4408 100644 (file)
@@ -1,6 +1,6 @@
 /*
     terminatorX - realtime audio scratching software
-    Copyright (C) 1999-2002  Alexander König
+    Copyright (C) 1999-2003  Alexander König
  
     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
diff --git a/terminatorX.glade b/terminatorX.glade
new file mode 100644 (file)
index 0000000..ec23e61
--- /dev/null
@@ -0,0 +1,1218 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkDialog" id="tx_options">
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">terminatorX: Preferences</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="has_separator">True</property>
+
+  <child internal-child="vbox">
+    <widget class="GtkVBox" id="dialog-vbox1">
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">0</property>
+
+      <child internal-child="action_area">
+       <widget class="GtkHButtonBox" id="dialog-action_area1">
+         <property name="visible">True</property>
+         <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+         <child>
+           <widget class="GtkButton" id="cancel">
+             <property name="visible">True</property>
+             <property name="can_default">True</property>
+             <property name="can_focus">True</property>
+             <property name="label">gtk-cancel</property>
+             <property name="use_stock">True</property>
+             <property name="relief">GTK_RELIEF_NORMAL</property>
+             <property name="response_id">-6</property>
+           </widget>
+         </child>
+
+         <child>
+           <widget class="GtkButton" id="apply">
+             <property name="visible">True</property>
+             <property name="can_default">True</property>
+             <property name="can_focus">True</property>
+             <property name="label">gtk-apply</property>
+             <property name="use_stock">True</property>
+             <property name="relief">GTK_RELIEF_NORMAL</property>
+             <property name="response_id">-10</property>
+           </widget>
+         </child>
+
+         <child>
+           <widget class="GtkButton" id="okbutton1">
+             <property name="visible">True</property>
+             <property name="can_default">True</property>
+             <property name="can_focus">True</property>
+             <property name="label">gtk-ok</property>
+             <property name="use_stock">True</property>
+             <property name="relief">GTK_RELIEF_NORMAL</property>
+             <property name="response_id">-5</property>
+           </widget>
+         </child>
+       </widget>
+       <packing>
+         <property name="padding">0</property>
+         <property name="expand">False</property>
+         <property name="fill">True</property>
+         <property name="pack_type">GTK_PACK_END</property>
+       </packing>
+      </child>
+
+      <child>
+       <widget class="GtkNotebook" id="notebook1">
+         <property name="visible">True</property>
+         <property name="can_focus">True</property>
+         <property name="show_tabs">True</property>
+         <property name="show_border">True</property>
+         <property name="tab_pos">GTK_POS_TOP</property>
+         <property name="scrollable">False</property>
+         <property name="enable_popup">False</property>
+
+         <child>
+           <widget class="GtkTable" id="table4">
+             <property name="border_width">4</property>
+             <property name="visible">True</property>
+             <property name="n_rows">2</property>
+             <property name="n_columns">2</property>
+             <property name="homogeneous">False</property>
+             <property name="row_spacing">2</property>
+             <property name="column_spacing">2</property>
+
+             <child>
+               <widget class="GtkLabel" id="label18">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">Use Driver:</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">0</property>
+                 <property name="bottom_attach">1</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkHBox" id="hbox2">
+                 <property name="visible">True</property>
+                 <property name="homogeneous">False</property>
+                 <property name="spacing">5</property>
+
+                 <child>
+                   <widget class="GtkRadioButton" id="oss_driver">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="label" translatable="yes">OSS</property>
+                     <property name="use_underline">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="active">False</property>
+                     <property name="inconsistent">False</property>
+                     <property name="draw_indicator">True</property>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">False</property>
+                     <property name="fill">False</property>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkRadioButton" id="alsa_driver">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="label" translatable="yes">ALSA</property>
+                     <property name="use_underline">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="active">False</property>
+                     <property name="inconsistent">False</property>
+                     <property name="draw_indicator">True</property>
+                     <property name="group">oss_driver</property>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">False</property>
+                     <property name="fill">False</property>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkRadioButton" id="jack_driver">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="label" translatable="yes">JACK</property>
+                     <property name="use_underline">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="active">False</property>
+                     <property name="inconsistent">False</property>
+                     <property name="draw_indicator">True</property>
+                     <property name="group">oss_driver</property>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">False</property>
+                     <property name="fill">False</property>
+                   </packing>
+                 </child>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">0</property>
+                 <property name="bottom_attach">1</property>
+                 <property name="y_options">fill</property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkLabel" id="label19">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">Latency:</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">1</property>
+                 <property name="bottom_attach">2</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkHBox" id="hbox3">
+                 <property name="visible">True</property>
+                 <property name="homogeneous">False</property>
+                 <property name="spacing">0</property>
+
+                 <child>
+                   <widget class="GtkButton" id="measure_latency">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="label" translatable="yes">Measure</property>
+                     <property name="use_underline">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">False</property>
+                     <property name="fill">False</property>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkLabel" id="label20">
+                     <property name="visible">True</property>
+                     <property name="label" translatable="yes">-- ms</property>
+                     <property name="use_underline">False</property>
+                     <property name="use_markup">False</property>
+                     <property name="justify">GTK_JUSTIFY_LEFT</property>
+                     <property name="wrap">False</property>
+                     <property name="selectable">False</property>
+                     <property name="xalign">0.5</property>
+                     <property name="yalign">0.5</property>
+                     <property name="xpad">0</property>
+                     <property name="ypad">0</property>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
+                   </packing>
+                 </child>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">1</property>
+                 <property name="bottom_attach">2</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options">fill</property>
+               </packing>
+             </child>
+           </widget>
+           <packing>
+             <property name="tab_expand">False</property>
+             <property name="tab_fill">True</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkLabel" id="label1">
+             <property name="visible">True</property>
+             <property name="label" translatable="yes">Audio</property>
+             <property name="use_underline">False</property>
+             <property name="use_markup">False</property>
+             <property name="justify">GTK_JUSTIFY_LEFT</property>
+             <property name="wrap">False</property>
+             <property name="selectable">False</property>
+             <property name="xalign">0.5</property>
+             <property name="yalign">0.5</property>
+             <property name="xpad">0</property>
+             <property name="ypad">0</property>
+           </widget>
+           <packing>
+             <property name="type">tab</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkTable" id="table5">
+             <property name="border_width">4</property>
+             <property name="visible">True</property>
+             <property name="n_rows">4</property>
+             <property name="n_columns">2</property>
+             <property name="homogeneous">False</property>
+             <property name="row_spacing">2</property>
+             <property name="column_spacing">2</property>
+
+             <child>
+               <widget class="GtkLabel" id="label21">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">Audio Device:</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">0</property>
+                 <property name="bottom_attach">1</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkLabel" id="label22">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">No. of Buffers:</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">1</property>
+                 <property name="bottom_attach">2</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkLabel" id="label23">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">Buffersize (2^x):</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">2</property>
+                 <property name="bottom_attach">3</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkLabel" id="label24">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">Samplerate (Hz):</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">3</property>
+                 <property name="bottom_attach">4</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkCombo" id="oss_audio_device">
+                 <property name="visible">True</property>
+                 <property name="value_in_list">False</property>
+                 <property name="allow_empty">True</property>
+                 <property name="case_sensitive">False</property>
+                 <property name="enable_arrow_keys">True</property>
+                 <property name="enable_arrows_always">False</property>
+
+                 <child internal-child="entry">
+                   <widget class="GtkEntry" id="combo-entry2">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="editable">True</property>
+                     <property name="visibility">True</property>
+                     <property name="max_length">0</property>
+                     <property name="text" translatable="yes"></property>
+                     <property name="has_frame">True</property>
+                     <property name="invisible_char" translatable="yes">*</property>
+                     <property name="activates_default">False</property>
+                   </widget>
+                 </child>
+
+                 <child internal-child="list">
+                   <widget class="GtkList" id="combo-list2">
+                     <property name="visible">True</property>
+                     <property name="selection_mode">GTK_SELECTION_BROWSE</property>
+                   </widget>
+                 </child>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">0</property>
+                 <property name="bottom_attach">1</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkSpinButton" id="oss_buffers">
+                 <property name="visible">True</property>
+                 <property name="can_focus">True</property>
+                 <property name="climb_rate">1</property>
+                 <property name="digits">0</property>
+                 <property name="numeric">False</property>
+                 <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+                 <property name="snap_to_ticks">False</property>
+                 <property name="wrap">False</property>
+                 <property name="adjustment">2 2 5 1 10 10</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">1</property>
+                 <property name="bottom_attach">2</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkHScale" id="oss_buffersize">
+                 <property name="visible">True</property>
+                 <property name="can_focus">True</property>
+                 <property name="draw_value">True</property>
+                 <property name="value_pos">GTK_POS_TOP</property>
+                 <property name="digits">0</property>
+                 <property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
+                 <property name="inverted">False</property>
+                 <property name="adjustment">5 1 16 1 1 1</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">2</property>
+                 <property name="bottom_attach">3</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options">fill</property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkCombo" id="oss_samplerate">
+                 <property name="visible">True</property>
+                 <property name="value_in_list">False</property>
+                 <property name="allow_empty">True</property>
+                 <property name="case_sensitive">False</property>
+                 <property name="enable_arrow_keys">True</property>
+                 <property name="enable_arrows_always">False</property>
+
+                 <child internal-child="entry">
+                   <widget class="GtkEntry" id="combo-entry3">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="editable">True</property>
+                     <property name="visibility">True</property>
+                     <property name="max_length">0</property>
+                     <property name="text" translatable="yes"></property>
+                     <property name="has_frame">True</property>
+                     <property name="invisible_char" translatable="yes">*</property>
+                     <property name="activates_default">False</property>
+                   </widget>
+                 </child>
+
+                 <child internal-child="list">
+                   <widget class="GtkList" id="combo-list3">
+                     <property name="visible">True</property>
+                     <property name="selection_mode">GTK_SELECTION_BROWSE</property>
+                   </widget>
+                 </child>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">3</property>
+                 <property name="bottom_attach">4</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+           </widget>
+           <packing>
+             <property name="tab_expand">False</property>
+             <property name="tab_fill">True</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkLabel" id="label15">
+             <property name="visible">True</property>
+             <property name="label" translatable="yes">Audio: OSS</property>
+             <property name="use_underline">False</property>
+             <property name="use_markup">False</property>
+             <property name="justify">GTK_JUSTIFY_LEFT</property>
+             <property name="wrap">False</property>
+             <property name="selectable">False</property>
+             <property name="xalign">0.5</property>
+             <property name="yalign">0.5</property>
+             <property name="xpad">0</property>
+             <property name="ypad">0</property>
+           </widget>
+           <packing>
+             <property name="type">tab</property>
+           </packing>
+         </child>
+
+         <child>
+           <placeholder/>
+         </child>
+
+         <child>
+           <widget class="GtkLabel" id="label16">
+             <property name="visible">True</property>
+             <property name="label" translatable="yes">Audio: ALSA</property>
+             <property name="use_underline">False</property>
+             <property name="use_markup">False</property>
+             <property name="justify">GTK_JUSTIFY_LEFT</property>
+             <property name="wrap">False</property>
+             <property name="selectable">False</property>
+             <property name="xalign">0.5</property>
+             <property name="yalign">0.5</property>
+             <property name="xpad">0</property>
+             <property name="ypad">0</property>
+           </widget>
+           <packing>
+             <property name="type">tab</property>
+           </packing>
+         </child>
+
+         <child>
+           <placeholder/>
+         </child>
+
+         <child>
+           <widget class="GtkLabel" id="label17">
+             <property name="visible">True</property>
+             <property name="label" translatable="yes">Audio: JACK</property>
+             <property name="use_underline">False</property>
+             <property name="use_markup">False</property>
+             <property name="justify">GTK_JUSTIFY_LEFT</property>
+             <property name="wrap">False</property>
+             <property name="selectable">False</property>
+             <property name="xalign">0.5</property>
+             <property name="yalign">0.5</property>
+             <property name="xpad">0</property>
+             <property name="ypad">0</property>
+           </widget>
+           <packing>
+             <property name="type">tab</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkTable" id="table1">
+             <property name="border_width">4</property>
+             <property name="visible">True</property>
+             <property name="n_rows">3</property>
+             <property name="n_columns">2</property>
+             <property name="homogeneous">False</property>
+             <property name="row_spacing">2</property>
+             <property name="column_spacing">2</property>
+
+             <child>
+               <widget class="GtkLabel" id="label5">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">XInput Device:</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">0</property>
+                 <property name="bottom_attach">1</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkLabel" id="label6">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">Mouse Speed:</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">1</property>
+                 <property name="bottom_attach">2</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkLabel" id="label7">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">Stop-Sense-Cycles:</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">2</property>
+                 <property name="bottom_attach">3</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkCombo" id="xinput_device">
+                 <property name="visible">True</property>
+                 <property name="value_in_list">False</property>
+                 <property name="allow_empty">True</property>
+                 <property name="case_sensitive">False</property>
+                 <property name="enable_arrow_keys">True</property>
+                 <property name="enable_arrows_always">False</property>
+
+                 <child internal-child="entry">
+                   <widget class="GtkEntry" id="combo-entry1">
+                     <property name="visible">True</property>
+                     <property name="tooltip" translatable="yes">CAREFUL! Enable this *only* if you want to use an input device than your default X-Pointer (yes, your mouse ;). You have to select your desired device as well. Selecting the default mouse pointer will crash terminatorX so if you want to use that keep this option disabled.</property>
+                     <property name="can_focus">True</property>
+                     <property name="editable">True</property>
+                     <property name="visibility">True</property>
+                     <property name="max_length">0</property>
+                     <property name="text" translatable="yes"></property>
+                     <property name="has_frame">True</property>
+                     <property name="invisible_char" translatable="yes">*</property>
+                     <property name="activates_default">False</property>
+                   </widget>
+                 </child>
+
+                 <child internal-child="list">
+                   <widget class="GtkList" id="combo-list1">
+                     <property name="visible">True</property>
+                     <property name="selection_mode">GTK_SELECTION_BROWSE</property>
+                   </widget>
+                 </child>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">0</property>
+                 <property name="bottom_attach">1</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkHScale" id="mouse_speed">
+                 <property name="visible">True</property>
+                 <property name="can_focus">True</property>
+                 <property name="draw_value">True</property>
+                 <property name="value_pos">GTK_POS_TOP</property>
+                 <property name="digits">1</property>
+                 <property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
+                 <property name="inverted">False</property>
+                 <property name="adjustment">0 -10 10 0.5 0.1 0.1</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">1</property>
+                 <property name="bottom_attach">2</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options">fill</property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkHScale" id="stop_sense_cycles">
+                 <property name="visible">True</property>
+                 <property name="can_focus">True</property>
+                 <property name="draw_value">True</property>
+                 <property name="value_pos">GTK_POS_TOP</property>
+                 <property name="digits">0</property>
+                 <property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
+                 <property name="inverted">False</property>
+                 <property name="adjustment">10 1 150 5 1 1</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">2</property>
+                 <property name="bottom_attach">3</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options">fill</property>
+               </packing>
+             </child>
+           </widget>
+           <packing>
+             <property name="tab_expand">False</property>
+             <property name="tab_fill">True</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkLabel" id="label4">
+             <property name="visible">True</property>
+             <property name="label" translatable="yes">Input</property>
+             <property name="use_underline">False</property>
+             <property name="use_markup">False</property>
+             <property name="justify">GTK_JUSTIFY_LEFT</property>
+             <property name="wrap">False</property>
+             <property name="selectable">False</property>
+             <property name="xalign">0.5</property>
+             <property name="yalign">0.5</property>
+             <property name="xpad">0</property>
+             <property name="ypad">0</property>
+           </widget>
+           <packing>
+             <property name="type">tab</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkTable" id="table2">
+             <property name="border_width">4</property>
+             <property name="visible">True</property>
+             <property name="n_rows">6</property>
+             <property name="n_columns">2</property>
+             <property name="homogeneous">False</property>
+             <property name="row_spacing">2</property>
+             <property name="column_spacing">2</property>
+
+             <child>
+               <widget class="GtkLabel" id="label8">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">Main Window Tooltips:</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">1</property>
+                 <property name="bottom_attach">2</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkLabel" id="label9">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">Update Idle (ms):</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">3</property>
+                 <property name="bottom_attach">4</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkLabel" id="label10">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">Update Delay (cycles):</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">4</property>
+                 <property name="bottom_attach">5</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkLabel" id="label11">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">VU Meter Decay:</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">5</property>
+                 <property name="bottom_attach">6</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkCheckButton" id="mainwin_tooltips">
+                 <property name="visible">True</property>
+                 <property name="can_focus">True</property>
+                 <property name="label" translatable="yes">Enabled</property>
+                 <property name="use_underline">True</property>
+                 <property name="relief">GTK_RELIEF_NORMAL</property>
+                 <property name="active">False</property>
+                 <property name="inconsistent">False</property>
+                 <property name="draw_indicator">True</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">1</property>
+                 <property name="bottom_attach">2</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkHScale" id="update_idle">
+                 <property name="visible">True</property>
+                 <property name="can_focus">True</property>
+                 <property name="draw_value">True</property>
+                 <property name="value_pos">GTK_POS_TOP</property>
+                 <property name="digits">0</property>
+                 <property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
+                 <property name="inverted">False</property>
+                 <property name="adjustment">11 1 100 1 10 10</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">3</property>
+                 <property name="bottom_attach">4</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options">fill</property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkHScale" id="update_delay">
+                 <property name="visible">True</property>
+                 <property name="can_focus">True</property>
+                 <property name="draw_value">True</property>
+                 <property name="value_pos">GTK_POS_TOP</property>
+                 <property name="digits">1</property>
+                 <property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
+                 <property name="inverted">False</property>
+                 <property name="adjustment">0 0 15 1 10 10</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">4</property>
+                 <property name="bottom_attach">5</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options">fill</property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkHScale" id="vumeter_decay">
+                 <property name="visible">True</property>
+                 <property name="can_focus">True</property>
+                 <property name="draw_value">True</property>
+                 <property name="value_pos">GTK_POS_TOP</property>
+                 <property name="digits">1</property>
+                 <property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
+                 <property name="inverted">False</property>
+                 <property name="adjustment">0.8 0.8 0.99 0.01 0.01 0.001</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">5</property>
+                 <property name="bottom_attach">6</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options">fill</property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkLabel" id="label14">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">Startup-Nagbox:</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">0</property>
+                 <property name="bottom_attach">1</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkCheckButton" id="startup_nagbox">
+                 <property name="visible">True</property>
+                 <property name="can_focus">True</property>
+                 <property name="label" translatable="yes">Enabled</property>
+                 <property name="use_underline">True</property>
+                 <property name="relief">GTK_RELIEF_NORMAL</property>
+                 <property name="active">False</property>
+                 <property name="inconsistent">False</property>
+                 <property name="draw_indicator">True</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">0</property>
+                 <property name="bottom_attach">1</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkLabel" id="label12">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">Buttons:</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">2</property>
+                 <property name="bottom_attach">3</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkHBox" id="hbox1">
+                 <property name="visible">True</property>
+                 <property name="homogeneous">False</property>
+                 <property name="spacing">5</property>
+
+                 <child>
+                   <widget class="GtkRadioButton" id="buttons_text_and_icon">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="label" translatable="yes">Text + Icon</property>
+                     <property name="use_underline">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="active">False</property>
+                     <property name="inconsistent">False</property>
+                     <property name="draw_indicator">True</property>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">False</property>
+                     <property name="fill">False</property>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkRadioButton" id="buttons_icon_only">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="label" translatable="yes">Icon Only</property>
+                     <property name="use_underline">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="active">False</property>
+                     <property name="inconsistent">False</property>
+                     <property name="draw_indicator">True</property>
+                     <property name="group">buttons_text_and_icon</property>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">False</property>
+                     <property name="fill">False</property>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkRadioButton" id="buttons_text_only">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="label" translatable="yes">Text Only</property>
+                     <property name="use_underline">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="active">False</property>
+                     <property name="inconsistent">False</property>
+                     <property name="draw_indicator">True</property>
+                     <property name="group">buttons_text_and_icon</property>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">False</property>
+                     <property name="fill">False</property>
+                   </packing>
+                 </child>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">2</property>
+                 <property name="bottom_attach">3</property>
+                 <property name="y_options">fill</property>
+               </packing>
+             </child>
+           </widget>
+           <packing>
+             <property name="tab_expand">False</property>
+             <property name="tab_fill">True</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkLabel" id="label2">
+             <property name="visible">True</property>
+             <property name="label" translatable="yes">User Interface</property>
+             <property name="use_underline">False</property>
+             <property name="use_markup">False</property>
+             <property name="justify">GTK_JUSTIFY_LEFT</property>
+             <property name="wrap">False</property>
+             <property name="selectable">False</property>
+             <property name="xalign">0.5</property>
+             <property name="yalign">0.5</property>
+             <property name="xpad">0</property>
+             <property name="ypad">0</property>
+           </widget>
+           <packing>
+             <property name="type">tab</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkTable" id="table3">
+             <property name="border_width">4</property>
+             <property name="visible">True</property>
+             <property name="n_rows">1</property>
+             <property name="n_columns">2</property>
+             <property name="homogeneous">False</property>
+             <property name="row_spacing">2</property>
+             <property name="column_spacing">2</property>
+
+             <child>
+               <widget class="GtkLabel" id="label13">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">Soundfile Editor:</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">False</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">0</property>
+                 <property name="right_attach">1</property>
+                 <property name="top_attach">0</property>
+                 <property name="bottom_attach">1</property>
+                 <property name="x_options">fill</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkEntry" id="soundfile_editor">
+                 <property name="visible">True</property>
+                 <property name="can_focus">True</property>
+                 <property name="editable">True</property>
+                 <property name="visibility">True</property>
+                 <property name="max_length">0</property>
+                 <property name="text" translatable="yes"></property>
+                 <property name="has_frame">True</property>
+                 <property name="invisible_char" translatable="yes">*</property>
+                 <property name="activates_default">False</property>
+               </widget>
+               <packing>
+                 <property name="left_attach">1</property>
+                 <property name="right_attach">2</property>
+                 <property name="top_attach">0</property>
+                 <property name="bottom_attach">1</property>
+                 <property name="y_options"></property>
+               </packing>
+             </child>
+           </widget>
+           <packing>
+             <property name="tab_expand">False</property>
+             <property name="tab_fill">True</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkLabel" id="label3">
+             <property name="visible">True</property>
+             <property name="label" translatable="yes">Misc</property>
+             <property name="use_underline">False</property>
+             <property name="use_markup">False</property>
+             <property name="justify">GTK_JUSTIFY_LEFT</property>
+             <property name="wrap">False</property>
+             <property name="selectable">False</property>
+             <property name="xalign">0.5</property>
+             <property name="yalign">0.5</property>
+             <property name="xpad">0</property>
+             <property name="ypad">0</property>
+           </widget>
+           <packing>
+             <property name="type">tab</property>
+           </packing>
+         </child>
+       </widget>
+       <packing>
+         <property name="padding">0</property>
+         <property name="expand">True</property>
+         <property name="fill">True</property>
+       </packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>
diff --git a/terminatorX.gladep b/terminatorX.gladep
new file mode 100644 (file)
index 0000000..b6057bf
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-project SYSTEM "http://glade.gnome.org/glade-project-2.0.dtd">
+
+<glade-project>
+  <name>terminatorX</name>
+  <program_name>terminatorX</program_name>
+  <gnome_support>FALSE</gnome_support>
+  <gettext_support>FALSE</gettext_support>
+  <output_main_file>FALSE</output_main_file>
+  <output_support_files>FALSE</output_support_files>
+  <output_build_files>FALSE</output_build_files>
+  <backup_source_files>FALSE</backup_source_files>
+  <main_source_file>tX_glade_interface.cc</main_source_file>
+  <main_header_file>tX_glade_interface.h</main_header_file>
+  <handler_source_file>tX_glade_callbacks.cc</handler_source_file>
+  <handler_header_file>tX_glade_callbacks.h</handler_header_file>
+  <support_source_file>tX_glade_support.cc</support_source_file>
+  <support_header_file>tX_glade_support.h</support_header_file>
+</glade-project>