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
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) ])
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)
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
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
/*
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
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();
/*
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
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()
fd=0;
blocksize=0;
- return(0);
+ return 0;
}
tX_audiodevice_oss :: tX_audiodevice_oss()
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
/*
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:
#ifdef USE_ALSA
class tX_audiodevice_alsa : public tX_audiodevice
-{
+{
+ snd_pcm_t *pcm_handle;
+
public:
virtual int open();
virtual int close();
/*
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
/*
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
/*
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
/*
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
/*
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
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"
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;
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;
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();
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);
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);
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: "
/*
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
/*
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
/*
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
/*
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
is created on startup and kept alive until termination
*/
+#include <config.h>
#include "tX_types.h"
#include "tX_engine.h"
#include "tX_audiodevice.h"
}
#ifdef USE_ALSA_MIDI_IN
- midi->check_event();
+ if (midi->get_is_open()) midi->check_event();
#endif
/* Playback the audio... */
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:
/*
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
#ifdef USE_ALSA_MIDI_IN
tX_midiin *midi;
+ tX_midiin *get_midi() { return midi; }
#endif
tX_engine();
/*
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
/*
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
/*
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
/*
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
--- /dev/null
+#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"
+
--- /dev/null
+#include <gtk/gtk.h>
+
--- /dev/null
+/*
+ * 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;
+}
+
--- /dev/null
+/*
+ * DO NOT EDIT THIS FILE - it is generated by Glade.
+ */
+
+GtkWidget* create_tx_options (void);
--- /dev/null
+/*
+ * 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);
+ }
+}
+
--- /dev/null
+/*
+ * 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);
+
/*
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
14 Jul 2002: switched to libxml instead of binary saving.
*/
+#include <config.h>
#include <stdio.h>
#include <stdlib.h>
#include "tX_types.h"
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;
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;
/*
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 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
#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];
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 */
/*
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
/*
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
/*
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
/*
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
/*
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
/*
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
/*
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
/*
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
/*
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
/*
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
/*
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
/*
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
{
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;
}
snd_seq_nonblock( ALSASeqHandle, 1 );
-
+
+ is_open=true;
+
tX_debug("tX_midiin(): sequencer successfully opened.");
}
int tX_midiin::check_event()
{
snd_seq_event_t *ev;
-
+
while( snd_seq_event_input(ALSASeqHandle, &ev) != -EAGAIN )
{
{
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* );
/*
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
/*
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
/*
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
/*
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
/*
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
/*
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
/*
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
/*
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
/*
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
/*
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
/*
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
/*
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
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;
/*
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
/*
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
/*
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
/*
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
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) {
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);
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);
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);
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);
/*
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
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
/*
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
/*
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
/*
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
--- /dev/null
+<?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>
--- /dev/null
+<?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>