Initial gtk3 port. Grabbing/Motion Event issues TBD.
authorAlexander Koenig <alex@lisas.de>
Mon, 17 Feb 2014 22:07:57 +0000 (23:07 +0100)
committerAlexander Koenig <alex@lisas.de>
Mon, 17 Feb 2014 22:07:57 +0000 (23:07 +0100)
22 files changed:
configure.ac
src/tX_dial.c
src/tX_dial.h
src/tX_dialog.cc
src/tX_extdial.cc
src/tX_flash.c
src/tX_flash.h
src/tX_loaddlg.cc
src/tX_mastergui.cc
src/tX_midiin.cc
src/tX_mouse.cc
src/tX_mouse.h
src/tX_panel.cc
src/tX_pbutton.cc
src/tX_seqpar.cc
src/tX_ui_callbacks.cc
src/tX_ui_callbacks.h
src/tX_ui_interface.cc
src/tX_ui_interface.h
src/tX_vttgui.cc
src/tX_widget.c
src/tX_widget.h

index 097486f3bebc539ba0d89973953babd46a9a6d3e..2796e6ca333e6e13d7b0c1ef71851f3b65f9b084 100644 (file)
@@ -123,27 +123,16 @@ AC_SEARCH_LIBS([dlclose], [dl])
 
 dnl Check for GTK
 
-AM_PATH_GTK_2_0(, [
-       GTK2_CFLAGS="$GTK_CFLAGS"
-       GTK2_LIBS="$GTK_LIBS"
-       gtk2="yes"
-       GTK2_VERSION="`$PKG_CONFIG --modversion gtk+-2.0`"], [ gtk2="yes" ]) 
-
-OPTION_GTK_VERSION="Version 2 - ($GTK2_VERSION)"
-vers=`echo $GTK2_VERSION | awk 'BEGIN {FS=".";} { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
-
-if test "$gtk2" = "no"; then
-       AC_MSG_ERROR([** couldn't find gtk+ > Version 2. Please upgrade (http://www.gtk.org). **])
-fi
-
-if test "$enable_startup" != "no"; then
-       AC_MSG_CHECKING([whether gtk+ does startup notification])
-       if test "$vers" -ge 2002000; then
-               AC_MSG_RESULT([yes])
-               AC_DEFINE_UNQUOTED([USE_STARTUP_NOTIFICATION], 1, [Use gtk+ statup notification.])
-       else
-               AC_MSG_RESULT([no])
-       fi
+AM_PATH_GTK_3_0(, [
+       GTK3_CFLAGS="$GTK_CFLAGS"
+       GTK3_LIBS="$GTK_LIBS"
+       gtk3="yes"
+       GTK3_VERSION="`$PKG_CONFIG --modversion gtk+-3.0`"], [ gtk3="yes" ]) 
+
+if test "$gtk3" = "yes"; then
+       AC_DEFINE_UNQUOTED([USE_STARTUP_NOTIFICATION], 1, [Use gtk+ statup notification.])
+else
+       AC_MSG_ERROR([** couldn't find gtk+ > Version 3. Please upgrade (http://www.gtk.org). **])
 fi
 
 dnl Checks for header files.
index 5fdc72ff4f2d8eb7114f98fd7f5859ec096a056f..53f76350788bd854c23b36069d14ca7cfc46fef8 100644 (file)
 
 static void gtk_tx_dial_class_init             (GtkTxDialClass *klass);
 static void gtk_tx_dial_init                   (GtkTxDial *tx_dial);
-static void gtk_tx_dial_destroy                        (GtkObject *object);
+static void gtk_tx_dial_destroy                        (GtkWidget *widget);
 static void gtk_tx_dial_realize                        (GtkWidget *widget);
-static void gtk_tx_dial_size_request   (GtkWidget *widget, GtkRequisition *requisition);
+
+static void gtk_tx_dial_get_preferred_width (GtkWidget *widget, gint *minimal_height, gint *natural_height);
+static void gtk_tx_dial_get_preferred_height (GtkWidget *widget, gint *minimal_height, gint *natural_height);
 static void gtk_tx_dial_size_allocate  (GtkWidget *widget, GtkAllocation *allocation);
-static gint gtk_tx_dial_expose                 (GtkWidget *widget, GdkEventExpose *event);
+static gboolean gtk_tx_dial_draw               (GtkWidget *widget, cairo_t* cairo);
 static gint gtk_tx_dial_button_press   (GtkWidget *widget, GdkEventButton *event);
 static gint gtk_tx_dial_button_release (GtkWidget *widget, GdkEventButton *event);
 static gint gtk_tx_dial_motion_notify  (GtkWidget *widget, GdkEventMotion *event);
-static gint gtk_tx_dial_timer                  (GtkTxDial *tx_dial);
 static void gtk_tx_dial_update_mouse   (GtkTxDial *tx_dial, gint x, gint y);
 static void gtk_tx_dial_update                 (GtkTxDial *tx_dial);
 static void gtk_tx_dial_adjustment_changed                     (GtkAdjustment *adjustment, gpointer data);
@@ -85,19 +86,18 @@ GType gtk_tx_dial_get_type ()
 
 static void gtk_tx_dial_class_init (GtkTxDialClass *class)
 {
-       GtkObjectClass *object_class;
        GtkWidgetClass *widget_class;
 
-       object_class = (GtkObjectClass*) class;
        widget_class = (GtkWidgetClass*) class;
 
        parent_class = (GtkWidgetClass*) g_type_class_peek (gtk_widget_get_type ());
 
-       object_class->destroy = gtk_tx_dial_destroy;
+       widget_class->destroy = gtk_tx_dial_destroy;
 
        widget_class->realize = gtk_tx_dial_realize;
-       widget_class->expose_event = gtk_tx_dial_expose;
-       widget_class->size_request = gtk_tx_dial_size_request;
+       widget_class->draw = gtk_tx_dial_draw;
+       widget_class->get_preferred_height = gtk_tx_dial_get_preferred_height;
+       widget_class->get_preferred_width = gtk_tx_dial_get_preferred_width;
        widget_class->size_allocate = gtk_tx_dial_size_allocate;
        widget_class->button_press_event = gtk_tx_dial_button_press;
        widget_class->button_release_event = gtk_tx_dial_button_release;
@@ -107,8 +107,6 @@ static void gtk_tx_dial_class_init (GtkTxDialClass *class)
 static void gtk_tx_dial_init (GtkTxDial *tx_dial)
 {
        tx_dial->button = 0;
-       tx_dial->policy = GTK_UPDATE_CONTINUOUS;
-       tx_dial->timer = 0;
 
        tx_dial->old_value = 0.0;
        tx_dial->old_lower = 0.0;
@@ -140,20 +138,20 @@ GtkWidget* gtk_tx_dial_new (GtkAdjustment *adjustment)
        return GTK_WIDGET (tx_dial);
 }
 
-static void gtk_tx_dial_destroy (GtkObject *object)
+static void gtk_tx_dial_destroy (GtkWidget *widget)
 {
        GtkTxDial *tx_dial;
 
-       g_return_if_fail (object != NULL);
-       g_return_if_fail (GTK_IS_TX_DIAL (object));
+       g_return_if_fail (widget != NULL);
+       g_return_if_fail (GTK_IS_TX_DIAL (widget));
        
-       tx_dial = GTK_TX_DIAL (object);
+       tx_dial = GTK_TX_DIAL (widget);
 
        if (tx_dial->adjustment)
                g_object_unref (G_OBJECT (tx_dial->adjustment));
        
-       if (GTK_OBJECT_CLASS (parent_class)->destroy)
-               (*GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+       if (GTK_WIDGET_CLASS (parent_class)->destroy)
+               (*GTK_WIDGET_CLASS (parent_class)->destroy) (widget);
 }
 
 GtkAdjustment* gtk_tx_dial_get_adjustment (GtkTxDial *tx_dial)
@@ -164,14 +162,6 @@ GtkAdjustment* gtk_tx_dial_get_adjustment (GtkTxDial *tx_dial)
        return tx_dial->adjustment;
 }
 
-void gtk_tx_dial_set_update_policy (GtkTxDial *tx_dial, GtkUpdateType policy)
-{
-       g_return_if_fail (tx_dial != NULL);
-       g_return_if_fail (GTK_IS_TX_DIAL (tx_dial));
-
-       tx_dial->policy = policy;
-}
-
 void gtk_tx_dial_set_adjustment (GtkTxDial *tx_dial, GtkAdjustment *adjustment)
 {
        g_return_if_fail (tx_dial != NULL);
@@ -227,20 +217,19 @@ static void gtk_tx_dial_realize (GtkWidget *widget)
                GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK |
                GDK_POINTER_MOTION_HINT_MASK;
        attributes.visual = gtk_widget_get_visual (widget);
-       attributes.colormap = gtk_widget_get_colormap (widget);
-       
-       attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+               
+       attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL;
        gtk_widget_set_window(widget, gdk_window_new(gtk_widget_get_parent_window(widget), &attributes, attributes_mask));
        
        gdk_window_set_user_data (gtk_widget_get_window(widget), widget);
-       gtk_widget_set_style(widget, gtk_style_attach (gtk_widget_get_style(widget), gtk_widget_get_window(widget)));
-       gtk_style_set_background (gtk_widget_get_style(widget), gtk_widget_get_window(widget), GTK_STATE_NORMAL);
+       gtk_style_context_set_background(gtk_widget_get_style_context(widget), gtk_widget_get_window(widget));
 }
 
-static void gtk_tx_dial_size_request(GtkWidget *widget, GtkRequisition *requisition)
-{
-       requisition->width = KNOB_SIZE;
-       requisition->height = KNOB_SIZE;
+static void gtk_tx_dial_get_preferred_width (GtkWidget *widget, gint *minimal_width, gint *natural_width) {
+       *minimal_width = *natural_width = KNOB_SIZE;
+}
+static void gtk_tx_dial_get_preferred_height (GtkWidget *widget, gint *minimal_height, gint *natural_height) {
+       *minimal_height = *natural_height = KNOB_SIZE;
 }
 
 static void gtk_tx_dial_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
@@ -264,7 +253,7 @@ static void gtk_tx_dial_size_allocate (GtkWidget *widget, GtkAllocation *allocat
        }
 }
 
-inline void gtk_tx_dial_draw (GtkTxDial *tx_dial, GtkWidget *widget)
+inline void gtk_tx_dial_do_draw (GtkTxDial *tx_dial, GtkWidget *widget, cairo_t *cr)
 {
        if (gtk_widget_is_drawable (widget)) {
 //             gdk_draw_pixbuf(gtk_widget_is_drawable (widget), 
@@ -274,27 +263,21 @@ inline void gtk_tx_dial_draw (GtkTxDial *tx_dial, GtkWidget *widget)
 //                             0, 0, tx_dial->xofs, tx_dial->yofs,
 //                                             KNOB_SIZE, KNOB_SIZE, GDK_RGB_DITHER_NORMAL, 0, 0);
 
-               cairo_t *cr = gdk_cairo_create (gtk_widget_get_window(widget));
                gdk_cairo_set_source_pixbuf (cr, knob_pixmaps[tx_dial->old_image], 0, 0);
                cairo_paint (cr);
-               cairo_destroy (cr);
        }                
 }
 
-static gint gtk_tx_dial_expose (GtkWidget *widget, GdkEventExpose *event)
+gboolean gtk_tx_dial_draw (GtkWidget *widget, cairo_t *cr)
 {
        GtkTxDial *tx_dial;
        
        g_return_val_if_fail (widget != NULL, FALSE);
        g_return_val_if_fail (GTK_IS_TX_DIAL (widget), FALSE);
-       g_return_val_if_fail (event != NULL, FALSE);
-       
-       if (event->count > 0)
-       return FALSE;
        
        tx_dial = GTK_TX_DIAL (widget);
        
-       gtk_tx_dial_draw(tx_dial, widget);
+       gtk_tx_dial_do_draw(tx_dial, widget, cr);
                  
        return FALSE;
 }
@@ -334,11 +317,7 @@ static gint gtk_tx_dial_button_release (GtkWidget *widget, GdkEventButton *event
                gtk_grab_remove (widget);
                tx_dial->button = 0;
                
-               if (tx_dial->policy == GTK_UPDATE_DELAYED)
-                       g_source_remove (tx_dial->timer);
-               
-               if ((tx_dial->policy != GTK_UPDATE_CONTINUOUS) &&
-                       (tx_dial->old_value != gtk_adjustment_get_value(tx_dial->adjustment)))
+               if ((tx_dial->old_value != gtk_adjustment_get_value(tx_dial->adjustment)))
                        g_signal_emit_by_name (G_OBJECT (tx_dial->adjustment),
                        "value_changed");
        }
@@ -363,7 +342,7 @@ static gint gtk_tx_dial_motion_notify (GtkWidget *widget, GdkEventMotion *event)
                y = event->y;
                
                if (event->is_hint || (event->window != gtk_widget_get_window(widget)))
-                       gdk_window_get_pointer (gtk_widget_get_window(widget), &x, &y, &mods);
+                       gdk_window_get_device_position(gtk_widget_get_window(widget), event->device, &x, &y, &mods);
                
                switch (tx_dial->button) {
                        case 1:
@@ -386,24 +365,11 @@ static gint gtk_tx_dial_motion_notify (GtkWidget *widget, GdkEventMotion *event)
        return FALSE;
 }
 
-static gint gtk_tx_dial_timer (GtkTxDial *tx_dial)
-{
-       g_return_val_if_fail (tx_dial != NULL, FALSE);
-       g_return_val_if_fail (GTK_IS_TX_DIAL (tx_dial), FALSE);
-       
-       if (tx_dial->policy == GTK_UPDATE_DELAYED)
-               g_signal_emit_by_name (G_OBJECT (tx_dial->adjustment),
-                                "value_changed");
-       
-       return FALSE;
-}
-
 static void gtk_tx_dial_update_mouse (GtkTxDial *tx_dial, gint x, gint y)
 {
        gdouble dx, dy, d;
        gfloat old_value, new_value;
-       gint image;
-       
+
        g_return_if_fail (tx_dial != NULL);
        g_return_if_fail (GTK_IS_TX_DIAL (tx_dial));
        
@@ -423,29 +389,13 @@ static void gtk_tx_dial_update_mouse (GtkTxDial *tx_dial, gint x, gint y)
        else if (new_value<tx_dial->old_lower) 
                new_value=tx_dial->old_lower;
        
+       printf("%f %f\n", old_value, new_value);
+       
        gtk_adjustment_set_value(tx_dial->adjustment, new_value);
        
-       if (gtk_adjustment_get_value(tx_dial->adjustment) != old_value) {
-               if (tx_dial->policy == GTK_UPDATE_CONTINUOUS)   {
-                       g_signal_emit_by_name (G_OBJECT (tx_dial->adjustment),
-                                  "value_changed");
-               } else {
-                       calc_image(gtk_adjustment_get_value(tx_dial->adjustment), image);
-               
-                       if (image!=tx_dial->old_image) {
-                               tx_dial->old_image=image;
-                               gtk_widget_queue_draw(GTK_WIDGET(tx_dial));
-                       }
-               
-                       if (tx_dial->policy == GTK_UPDATE_DELAYED) {
-                               if (tx_dial->timer)
-                                       g_source_remove (tx_dial->timer);
-               
-                                       tx_dial->timer = g_timeout_add (SCROLL_DELAY_LENGTH,
-                                                (GSourceFunc) gtk_tx_dial_timer,
-                                                (gpointer) tx_dial);
-                       }
-               }
+       if (gtk_adjustment_get_value(tx_dial->adjustment) != old_value) {       
+               g_signal_emit_by_name (G_OBJECT (tx_dial->adjustment),
+                          "value_changed");
        }
 }
 
index b093cf57002be912c29f5128d8015ec80fda0af2..4e4ee309fc62b5c31cf6b04e0c053d2eb6d00557 100644 (file)
@@ -30,8 +30,7 @@
 #endif
 
 #include <gdk/gdk.h>
-#include <gtk/gtkadjustment.h>
-#include <gtk/gtkwidget.h>
+#include <gtk/gtk.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -47,15 +46,9 @@ typedef struct _GtkTxDialClass   GtkTxDialClass;
 struct _GtkTxDial {
        GtkWidget widget;
        
-       /* update policy (GTK_UPDATE_[CONTINUOUS/DELAYED/DISCONTINUOUS]) */
-       guint policy : 2;
-       
        /* Button currently pressed or 0 if none */
        guint8 button;
        
-       /* ID of update timer, or 0 if none */
-       guint32 timer;
-       
        /* Old values from adjustment stored so we know when something changes */
        gfloat old_value;
        gfloat old_lower;
@@ -78,7 +71,7 @@ struct _GtkTxDialClass {
 GtkWidget* gtk_tx_dial_new (GtkAdjustment *adjustment);
 GType gtk_tx_dial_get_type (void);
 GtkAdjustment* gtk_tx_dial_get_adjustment (GtkTxDial *tx_dial);
-void gtk_tx_dial_set_update_policy (GtkTxDial *tx_dial, GtkUpdateType policy);
+
 void gtk_tx_dial_set_adjustment (GtkTxDial *tx_dial, GtkAdjustment *adjustment);
 
 #ifdef __cplusplus
index 4a5429dc03dc26b58dfdd3ddfef990d5db6c277d..cbb5db8ab8266d1ab5df8e06f3a9651b3bdaa92e 100644 (file)
@@ -177,7 +177,7 @@ void apply_options(GtkWidget *dialog) {
 #define WID_FIX FALSE, FALSE, 0
 
 #define my_new_subsec(s); \
-       separator=gtk_hseparator_new(); \
+       separator=gtk_separator_new(GTK_ORIENTATION_HORIZONTAL); \
        gtk_box_pack_start(GTK_BOX(vbox), separator, WID_DYN);\
        gtk_widget_show(separator); \
        label=gtk_label_new(s); \
@@ -191,7 +191,7 @@ void apply_options(GtkWidget *dialog) {
        gtk_widget_show(btn);
        
 
-#define begin_box(); box=gtk_hbox_new(FALSE, 5);
+#define begin_box(); box=gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
 
 #define begin_hom_box(); box=gtk_hbox_new(TRUE, 5);
 
@@ -503,8 +503,6 @@ void destroy_about()
 #define add_about_wid_fix(wid); gtk_box_pack_start(GTK_BOX(box), wid, WID_FIX); \
        gtk_widget_show(wid);
 
-GdkFont *GPL_font=NULL;
-
 void show_about(int nag)
 {
        GtkWidget *window;
@@ -535,8 +533,8 @@ void show_about(int nag)
        iwid = gtk_image_new_from_pixbuf(image);
        
        if (nag) {
-               GtkWidget *box=gtk_vbox_new(FALSE, 2);
-               GtkWidget *box2=gtk_hbox_new(FALSE, 2);
+               GtkWidget *box=gtk_box_new(GTK_ORIENTATION_VERTICAL, 2);
+               GtkWidget *box2=gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 2);
                GtkWidget *label;
                
                gtk_container_add(GTK_CONTAINER(window), box);
@@ -560,10 +558,10 @@ void show_about(int nag)
                gtk_window_set_decorated(GTK_WINDOW(window), FALSE);            
                gtk_widget_show(window);
        } else {
-               box=gtk_vbox_new(FALSE, 5);
+               box=gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
                add_about_wid_fix(iwid);
                
-               sep=gtk_hseparator_new();
+               sep=gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
                add_about_wid_fix(sep);
                
                label=gtk_label_new("This is "PACKAGE" release "VERSION".\nCopyright (C) 1999-2014 by Alexander K├Ânig <alex@lisas.de>");
@@ -571,11 +569,11 @@ void show_about(int nag)
                gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_CENTER);
                add_about_wid_fix(label);
 
-               sep=gtk_hseparator_new();
+               sep=gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
                add_about_wid_fix(sep);
 
                expander = gtk_expander_new("Build info");
-               GtkWidget *exbox=gtk_vbox_new(FALSE, 2);
+               GtkWidget *exbox=gtk_box_new(GTK_ORIENTATION_VERTICAL, 2);
                gtk_container_add(GTK_CONTAINER(expander), exbox);
                gtk_widget_show(exbox);
 
@@ -629,7 +627,7 @@ void show_about(int nag)
                add_about_wid_fix(expander);
 
 #ifdef         USE_SCHEDULER
-               sep=gtk_hseparator_new();
+               sep=gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
                gtk_widget_show(sep);
                gtk_container_add(GTK_CONTAINER(exbox), sep);
 
@@ -669,7 +667,7 @@ void show_about(int nag)
                gtk_container_add(GTK_CONTAINER(exbox), label);
 #endif
 
-               sep=gtk_hseparator_new();
+               sep=gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
                add_about_wid_fix(sep);
 
                expander = gtk_expander_new("License (GPL V2):");
@@ -699,7 +697,7 @@ void show_about(int nag)
                gtk_container_add(GTK_CONTAINER(expander), scroll);
                gtk_widget_show(scroll);                
                
-               sep=gtk_hseparator_new();
+               sep=gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
                add_about_wid_fix(sep);
 
                btn=gtk_button_new_with_label("Close");
index b586f06796796fc9fa41cca60b2447fd75684150..887f06a8ebaee8bd479803220d16443c11d91771 100644 (file)
@@ -59,10 +59,11 @@ tX_extdial :: tX_extdial(const char *l, GtkAdjustment *a, tX_seqpar * sp, bool t
        ignore_adj=0;
        
        eventbox=gtk_event_box_new();           
-       mainbox=gtk_vbox_new(FALSE,  text_below ? 5 : 0);
+       mainbox=gtk_box_new(GTK_ORIENTATION_VERTICAL,  text_below ? 5 : 0);
        gtk_container_add(GTK_CONTAINER(eventbox), mainbox);
        
-       subbox=gtk_hbox_new(TRUE, 0);
+       subbox=gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
+       gtk_box_set_homogeneous(GTK_BOX(subbox), TRUE);
        gtk_box_pack_start(GTK_BOX(subbox), dial, WID_FIX);
        gtk_box_pack_start(GTK_BOX(mainbox), subbox, WID_FIX);
        gtk_box_pack_start(GTK_BOX(text_below ? mainbox : subbox), entry, WID_DYN);
@@ -88,7 +89,6 @@ tX_extdial :: tX_extdial(const char *l, GtkAdjustment *a, tX_seqpar * sp, bool t
 
 tX_extdial :: ~tX_extdial()
 {
-       gtk_object_destroy(GTK_OBJECT(adj));
        gtk_widget_destroy(entry);
        gtk_widget_destroy(label);
        gtk_widget_destroy(dial);
index 5745837dfcf875fc6a781919995ade3c8893b7e6..98964c3f6b73818c4a67d6bfe4a2b17982b59cfc 100644 (file)
@@ -55,11 +55,13 @@ extern "C" {
 static void gtk_tx_flash_class_init (GtkTxFlashClass *);
 static void gtk_tx_flash_init (GtkTxFlash *tx_flash);
 GtkWidget* gtk_tx_flash_new ();
-static void gtk_tx_flash_destroy (GtkObject *object);
+static void gtk_tx_flash_destroy (GtkWidget *widget);
 static void gtk_tx_flash_realize (GtkWidget *widget);
-static void gtk_tx_flash_size_request (GtkWidget *widget, GtkRequisition *requisition);
+static void gtk_tx_flash_get_preferred_width (GtkWidget *widget, gint *minimal_height, gint *natural_height);
+static void gtk_tx_flash_get_preferred_height (GtkWidget *widget, gint *minimal_height, gint *natural_height);
+
 static void gtk_tx_flash_size_allocate (GtkWidget *widget, GtkAllocation *allocation);
-static gint gtk_tx_flash_expose (GtkWidget *widget, GdkEventExpose *event);
+static gboolean gtk_tx_flash_draw (GtkWidget *widget, cairo_t *cairo);
 
 /* Local data */
 
@@ -90,23 +92,21 @@ GType gtk_tx_flash_get_type ()
 
 static void gtk_tx_flash_class_init (GtkTxFlashClass *gclass)
 {
-       GtkObjectClass *object_class;
        GtkWidgetClass *widget_class;
        
-       object_class = (GtkObjectClass*) gclass;
        widget_class = (GtkWidgetClass*) gclass;
        
        parent_class = (GtkWidgetClass*) g_type_class_peek (gtk_widget_get_type ());
        
-       object_class->destroy = gtk_tx_flash_destroy;
+       widget_class->destroy = gtk_tx_flash_destroy;
        
        widget_class->realize = gtk_tx_flash_realize;
-       widget_class->expose_event = gtk_tx_flash_expose;
-       widget_class->size_request = gtk_tx_flash_size_request;
+       widget_class->draw = gtk_tx_flash_draw;
+       
+       widget_class->get_preferred_height = gtk_tx_flash_get_preferred_height;
+       widget_class->get_preferred_width = gtk_tx_flash_get_preferred_width;
+       
        widget_class->size_allocate = gtk_tx_flash_size_allocate;
-       //widget_class->button_press_event = gtk_tx_flash_button_press;
-       //widget_class->button_release_event = gtk_tx_flash_button_release;
-       //widget_class->motion_notify_event = gtk_tx_flash_motion_notify;
 }
 
 enum {
@@ -120,43 +120,30 @@ enum {
 
 /* c=a+(a-b)*x; */
 
-inline void mk_half(double s, GdkColor *a, GdkColor *b, GdkColor *c)
+inline void mk_half(double s, GdkRGBA *a, GdkRGBA *b, GdkRGBA *c)
 {
        c->red=a->red-(a->red-b->red)*s;
        c->green=a->green-(a->green-b->green)*s;
        c->blue=a->blue-(a->blue-b->blue)*s;
+       c->alpha=1.0;
 }
 
 void gtk_tx_flash_update_colors(GtkTxFlash *tx)
 {
-       int i;
-       
-       if (tx->colors_allocated) {
-               gdk_colormap_free_colors(gtk_widget_get_colormap(GTK_WIDGET(tx)), tx->colors, NO_COLS);
-       }
-       
-       gdk_color_parse(globals.vu_meter_bg, &tx->colors[COL_BG]);
-       gdk_color_parse(globals.vu_meter_loud, &tx->colors[COL_LOUD]);
-       gdk_color_parse(globals.vu_meter_normal, &tx->colors[COL_NORM]);        
+       gdk_rgba_parse(&tx->colors[COL_BG], globals.vu_meter_bg);
+       tx->colors[COL_BG].alpha = 1.0;
+       gdk_rgba_parse(&tx->colors[COL_LOUD], globals.vu_meter_loud);
+       tx->colors[COL_LOUD].alpha = 1.0;
+       gdk_rgba_parse(&tx->colors[COL_NORM], globals.vu_meter_normal);
+       tx->colors[COL_NORM].alpha = 1.0;
        mk_half(globals.vu_meter_border_intensity, &tx->colors[COL_BG], &tx->colors[COL_LOUD], &tx->colors[COL_LOUD_HALF]);
        mk_half(globals.vu_meter_border_intensity, &tx->colors[COL_BG], &tx->colors[COL_NORM], &tx->colors[COL_NORM_HALF]);
-
-       for (i=0; i<NO_COLS; i++) {
-               gdk_colormap_alloc_color(gtk_widget_get_colormap(GTK_WIDGET(tx)), &tx->colors[i], 0, 1);
-       }
-
-       tx->colors_allocated=1;
 }
 
 static void gtk_tx_flash_init (GtkTxFlash *tx_flash)
 {
-       GdkColormap *priv;
-       
        tx_flash->surface = NULL;
-       tx_flash->colors_allocated=0;
-       priv=gdk_colormap_new(gtk_widget_get_visual(GTK_WIDGET(tx_flash)), 6);
 
-       gtk_widget_set_colormap(GTK_WIDGET(tx_flash), priv);
        gtk_tx_flash_update_colors(tx_flash);
 }
 
@@ -169,19 +156,20 @@ GtkWidget* gtk_tx_flash_new ()
        return GTK_WIDGET (tx_flash);
 }
 
-static void gtk_tx_flash_destroy (GtkObject *object)
+static void gtk_tx_flash_destroy (GtkWidget *widget)
 {
-       g_return_if_fail (object != NULL);
-       g_return_if_fail (GTK_IS_TX_FLASH (object));
+       g_return_if_fail (widget != NULL);
+       g_return_if_fail (GTK_IS_TX_FLASH (widget));
        
-       if (GTK_OBJECT_CLASS (parent_class)->destroy)
-               (*GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+       if (GTK_WIDGET_CLASS (parent_class)->destroy)
+               (*GTK_WIDGET_CLASS (parent_class)->destroy) (widget);
 }
 
 static void gtk_tx_flash_realize (GtkWidget *widget)
 {
        GtkTxFlash *tx_flash;
        GdkWindowAttr attributes;
+       GtkStyleContext *context;
        gint attributes_mask;
        
        g_return_if_fail (widget != NULL);
@@ -202,28 +190,33 @@ static void gtk_tx_flash_realize (GtkWidget *widget)
        attributes.event_mask = gtk_widget_get_events (widget) | 
                GDK_EXPOSURE_MASK;
        attributes.visual = gtk_widget_get_visual (widget);
-       attributes.colormap = gtk_widget_get_colormap (widget);
-       attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+       attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL;
        
        gtk_widget_set_window(widget, gdk_window_new (gtk_widget_get_parent_window(widget), &attributes, attributes_mask));
-       gtk_widget_set_style(widget, gtk_style_attach (gtk_widget_get_style(widget), gtk_widget_get_window(widget)));
        
        gdk_window_set_user_data (gtk_widget_get_window(widget), widget);
-       gtk_style_set_background (gtk_widget_get_style(widget), gtk_widget_get_window(widget), GTK_STATE_NORMAL);
        
-               if (tx_flash->surface) {
+       context = gtk_widget_get_style_context(widget);
+       gtk_style_context_set_background(context, gtk_widget_get_window(widget));
+       
+       if (tx_flash->surface) {
                cairo_surface_destroy (tx_flash->surface);
        }
        
        tx_flash->surface = gdk_window_create_similar_surface (gtk_widget_get_window(widget), CAIRO_CONTENT_COLOR, allocation.width, allocation.height);
 }
 
-static void gtk_tx_flash_size_request(GtkWidget *widget, GtkRequisition *requisition)
+static void gtk_tx_flash_get_preferred_width (GtkWidget *widget, gint *minimal_width, gint *natural_width)
+{
+  *minimal_width = *natural_width = TX_FLASH_DEFAULT_SIZE_X;
+}
+
+static void gtk_tx_flash_get_preferred_height (GtkWidget *widget, gint *minimal_height, gint *natural_height)
 {
-       requisition->width = TX_FLASH_DEFAULT_SIZE_X;
-       requisition->height = TX_FLASH_DEFAULT_SIZE_Y;
+    *minimal_height = *natural_height = TX_FLASH_DEFAULT_SIZE_Y;
 }
 
+
 static void gtk_tx_flash_prepare(GtkWidget *widget)
 {
        GtkTxFlash *tx_flash;
@@ -278,11 +271,10 @@ static void gtk_tx_flash_size_allocate(GtkWidget *widget, GtkAllocation *allocat
        }
 }
 
-static void gtk_tx_flash_paint_yourself(GtkWidget *widget)
+static void gtk_tx_flash_paint_yourself(GtkWidget *widget, cairo_t *cr)
 {
        GtkTxFlash *tx_flash;
        GtkAllocation allocation;
-       cairo_t *cr;
        
        gint i, x11, x12,x21, x22, y, middle;
        int long_level;
@@ -290,19 +282,15 @@ static void gtk_tx_flash_paint_yourself(GtkWidget *widget)
        tx_flash = GTK_TX_FLASH (widget);
        gtk_widget_get_allocation(widget, &allocation);
        
-       cr = gdk_cairo_create (gtk_widget_get_window(widget));
        cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
        cairo_set_source_surface (cr, tx_flash->surface, 0, 0);
 
-       gdk_cairo_set_source_color (cr, &tx_flash->colors[COL_BG]);
-
-       //printf("%i, %i, %i, %i\n", area->x, area->y, area->width, area->height);
-
+       gdk_cairo_set_source_rgba (cr, &tx_flash->colors[COL_BG]);
        cairo_rectangle(cr, 0, 0, allocation.width, allocation.height);
        cairo_fill(cr);
        
        cairo_set_line_width(cr,1);
-       gdk_cairo_set_source_color (cr, &tx_flash->colors[COL_NORM_HALF]);      
+       gdk_cairo_set_source_rgba (cr, &tx_flash->colors[COL_NORM]);
        
        x12=DMINIX+S_MINIX;
        x21=allocation.width-1-x12;
@@ -315,7 +303,7 @@ static void gtk_tx_flash_paint_yourself(GtkWidget *widget)
                        long_level=1;
                } else if (i==tx_flash->red_level) {
                        long_level=1;
-                       gdk_cairo_set_source_color (cr, &tx_flash->colors[COL_LOUD_HALF]);      
+                       gdk_cairo_set_source_rgba (cr, &tx_flash->colors[COL_LOUD_HALF]);       
                } else if (i==tx_flash->levels) {
                        long_level=1;
                } else long_level=0;
@@ -343,21 +331,15 @@ static void gtk_tx_flash_paint_yourself(GtkWidget *widget)
                }
                cairo_stroke (cr);
        }
-       
-       cairo_destroy (cr);
 }
 
-static gint gtk_tx_flash_expose (GtkWidget *widget, GdkEventExpose *event)
+static gboolean gtk_tx_flash_draw(GtkWidget *widget, cairo_t *cr)
 {
        g_return_val_if_fail (widget != NULL, FALSE);
        g_return_val_if_fail (GTK_IS_TX_FLASH (widget), FALSE);
-       g_return_val_if_fail (event != NULL, FALSE);
-       
-       if (event->count > 0)
-               return FALSE;
        
        gtk_tx_flash_prepare(widget);
-       gtk_tx_flash_paint_yourself(widget);  
+       gtk_tx_flash_paint_yourself(widget, cr); 
        
        return FALSE;
 } 
@@ -395,7 +377,7 @@ static void gtk_tx_flash_set_channel_level(GtkTxFlash *tx_flash, f_prec new_valu
        cairo_set_line_width(cr,1);
        cairo_set_source_surface (cr, tx_flash->surface, 0, 0);
 
-       gdk_cairo_set_source_color (cr, &tx_flash->colors[COL_BG]);
+       gdk_cairo_set_source_rgba (cr, &tx_flash->colors[COL_BG]);
 
        // tX_msg("setting level: %5d for widget %08x channel %08x\n", new_level, tx_flash, channel);
        
@@ -411,7 +393,7 @@ static void gtk_tx_flash_set_channel_level(GtkTxFlash *tx_flash, f_prec new_valu
        
        if (tx_flash->max_cycles <= 0) {
                y=allocation.height-(DY+(channel->max)*DLEVEL);
-               gdk_cairo_set_source_color (cr, &tx_flash->colors[COL_BG]);
+               gdk_cairo_set_source_rgba (cr, &tx_flash->colors[COL_BG]);
                cairo_move_to (cr, channel->x1, y);
                cairo_line_to (cr, channel->x2, y);
                cairo_stroke (cr);
@@ -420,9 +402,9 @@ static void gtk_tx_flash_set_channel_level(GtkTxFlash *tx_flash, f_prec new_valu
                        channel->max--;
                        y+=DLEVEL;
                        if (channel->max>tx_flash->red_level) {
-                               gdk_cairo_set_source_color (cr, &tx_flash->colors[COL_LOUD]);
+                               gdk_cairo_set_source_rgba (cr, &tx_flash->colors[COL_LOUD]);
                        } else {
-                               gdk_cairo_set_source_color (cr, &tx_flash->colors[COL_NORM]);
+                               gdk_cairo_set_source_rgba (cr, &tx_flash->colors[COL_NORM]);
                        }
                        
                        cairo_move_to (cr, channel->x1, y);
@@ -439,12 +421,12 @@ static void gtk_tx_flash_set_channel_level(GtkTxFlash *tx_flash, f_prec new_valu
        }
        
        if (new_level>channel->last_level) {
-               gdk_cairo_set_source_color (cr, &tx_flash->colors[COL_NORM]);
+               gdk_cairo_set_source_rgba (cr, &tx_flash->colors[COL_NORM]);
                
                for (i=channel->last_level, y=allocation.height-(DY+channel->last_level*DLEVEL); i<=new_level; y-=DLEVEL, i++) {
                        if (!red) {
                                if (i>=tx_flash->red_level) {
-                                       gdk_cairo_set_source_color (cr, &tx_flash->colors[COL_LOUD]);
+                                       gdk_cairo_set_source_rgba (cr, &tx_flash->colors[COL_LOUD]);
                                        red=1;
                                }
                        }
@@ -453,7 +435,7 @@ static void gtk_tx_flash_set_channel_level(GtkTxFlash *tx_flash, f_prec new_valu
                        cairo_stroke (cr);
                }
        } else {
-               gdk_cairo_set_source_color (cr, &tx_flash->colors[COL_BG]);
+               gdk_cairo_set_source_rgba (cr, &tx_flash->colors[COL_BG]);
                
                if (channel->last_level==channel->max) {
                        i=channel->last_level-1;
@@ -485,7 +467,9 @@ gtk_tx_flash_clear (GtkWidget *widget)
        tx_flash->channel[1].last_level=0;
        tx_flash->max_cycles=0;
        
-       gtk_tx_flash_paint_yourself(widget);
+       cairo_t *cr = gdk_cairo_create (gtk_widget_get_window(widget));
+       gtk_tx_flash_paint_yourself(widget, cr);
+       cairo_destroy(cr);
 }
 
 #ifdef __cplusplus
index 33183788e489e10b70c40bcfa7a52024826cab23..2bf3c9f860b1c7e05a684702c51be401a662ffe4 100644 (file)
@@ -49,8 +49,7 @@ struct flash_channel {
 
 struct _GtkTxFlash {
        GtkWidget widget;
-       GdkColor colors[5];     
-       int colors_allocated;
+       GdkRGBA colors[5];      
        int levels;
        int red_level;
        f_prec level_value;
index 6f1049a56dcc164b54f65cdc89f21d7e9bfbde3d..ad1578d6dfb1cfd50444cb8e78b633f511cc892a 100644 (file)
@@ -54,7 +54,7 @@ gfloat ld_old_prog;
 
 int ld_create_loaddlg(int mode, int count)
 {
-       GtkWidget *vbox=gtk_vbox_new(0, 5);
+       GtkWidget *vbox=gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
        GtkWidget *dummy;
        
        if (ld_loaddlg) return 1;
@@ -80,7 +80,7 @@ int ld_create_loaddlg(int mode, int count)
                ld_multi_p=gtk_progress_bar_new();
                add_widget_fix(ld_multi_p);
                
-               dummy=gtk_hseparator_new();
+               dummy=gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
                add_widget_fix(dummy);
                
                ld_current=0;
index c1d38b03de8ebb1abd2ccbeaa4ed40738b542f08..2234e518a674b388903dc56f9639e2e38a029c15 100644 (file)
@@ -895,11 +895,11 @@ void sequencer_move(GtkWidget *wid, void *d)
        }
 }
 
-#define add_sep();     dummy=gtk_hseparator_new ();\
+#define add_sep();     dummy=gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);\
        gtk_box_pack_start(GTK_BOX(right_hbox), dummy, WID_FIX);\
        gtk_widget_show(dummy);\
 
-#define add_sep2();    dummy=gtk_hseparator_new ();\
+#define add_sep2();    dummy=gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);\
        gtk_box_pack_end(GTK_BOX(status_box), dummy, WID_FIX);\
        gtk_widget_show(dummy);\
 
@@ -1053,11 +1053,10 @@ void create_master_menu()
 {
        GtkWidget *menu_item;
        GtkWidget *sub_menu;
-       GtkWidget *label;
        
        GtkAccelGroup* accel_group=gtk_accel_group_new();
        gtk_window_add_accel_group(GTK_WINDOW(main_window), accel_group);
-       GtkStyle *style=gtk_widget_get_style(main_window);
+       GtkStyleContext *style_context=gtk_widget_get_style_context(main_window);
 
        const static GtkStockItem items[] = {
                        { (char *) "tX-open-audio", (char *)  "Load _Audio File", (GdkModifierType) 0, 0, NULL },
@@ -1071,17 +1070,17 @@ void create_master_menu()
        gtk_icon_factory_add_default(factory);
        
        gtk_stock_add (items, G_N_ELEMENTS (items));
-       GtkIconSet * icon_set =gtk_style_lookup_icon_set(style, GTK_STOCK_OPEN);
+       GtkIconSet * icon_set =gtk_style_context_lookup_icon_set(style_context, GTK_STOCK_OPEN);
        gtk_icon_factory_add(factory, "tX-open-audio", icon_set);
        gtk_icon_factory_add(factory, "tX-open-set", icon_set);
        
-       icon_set = gtk_style_lookup_icon_set(style, GTK_STOCK_NEW);
+       icon_set = gtk_style_context_lookup_icon_set(style_context, GTK_STOCK_NEW);
        gtk_icon_factory_add(factory, "tX-new", icon_set);
        
-       icon_set = gtk_style_lookup_icon_set(style, GTK_STOCK_SAVE);
+       icon_set = gtk_style_context_lookup_icon_set(style_context, GTK_STOCK_SAVE);
        gtk_icon_factory_add(factory, "tX-save", icon_set);
        
-       icon_set = gtk_style_lookup_icon_set(style, GTK_STOCK_SAVE_AS);
+       icon_set = gtk_style_context_lookup_icon_set(style_context, GTK_STOCK_SAVE_AS);
        gtk_icon_factory_add(factory, "tX-save-as", icon_set);
        
        /* FILE */
@@ -1143,7 +1142,7 @@ void create_master_menu()
        menu_item = gtk_menu_item_new_with_mnemonic("_Add Turntable");
        gtk_widget_show (menu_item);
        gtk_container_add (GTK_CONTAINER (sub_menu), menu_item);
-       gtk_widget_add_accelerator (menu_item, "activate", accel_group, GDK_A, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);    
+       gtk_widget_add_accelerator (menu_item, "activate", accel_group, GDK_KEY_A, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);        
        g_signal_connect(menu_item, "activate", (GCallback) new_table, NULL);
 
        menu_item = gtk_menu_item_new ();
@@ -1154,7 +1153,7 @@ void create_master_menu()
        menu_item = gtk_menu_item_new_with_mnemonic("Assign _Default MIDI Mappings");
        gtk_widget_show (menu_item);
        gtk_container_add (GTK_CONTAINER (sub_menu), menu_item);
-       gtk_widget_add_accelerator (menu_item, "activate", accel_group, GDK_M, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
+       gtk_widget_add_accelerator (menu_item, "activate", accel_group, GDK_KEY_M, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
 
 #ifdef USE_ALSA_MIDI_IN
        g_signal_connect(menu_item, "activate", G_CALLBACK(tX_midiin::auto_assign_midi_mappings), (void *) true);
@@ -1175,7 +1174,7 @@ void create_master_menu()
        menu_item = gtk_menu_item_new_with_mnemonic("_Clear MIDI Mappings");
        gtk_widget_show (menu_item);
        gtk_container_add (GTK_CONTAINER (sub_menu), menu_item);
-       gtk_widget_add_accelerator (menu_item, "activate", accel_group, GDK_C, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
+       gtk_widget_add_accelerator (menu_item, "activate", accel_group, GDK_KEY_C, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
 
 #ifdef USE_ALSA_MIDI_IN
        g_signal_connect(menu_item, "activate", G_CALLBACK(tX_midiin::clear_midi_mappings), (void *) true);
@@ -1190,7 +1189,7 @@ void create_master_menu()
 
        menu_item = gtk_check_menu_item_new_with_mnemonic("_Record Audio To Disk");
        rec_menu_item = menu_item;
-       gtk_widget_add_accelerator (menu_item, "activate", accel_group, GDK_R, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
+       gtk_widget_add_accelerator (menu_item, "activate", accel_group, GDK_KEY_R, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
        gtk_widget_show (menu_item);
        gtk_container_add (GTK_CONTAINER (sub_menu), menu_item);
        g_signal_connect(menu_item, "activate", (GCallback) tape_on, NULL);
@@ -1246,7 +1245,7 @@ void create_master_menu()
        gtk_container_add (GTK_CONTAINER (sub_menu), menu_item);
 
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_item), globals.fullscreen_enabled);
-       gtk_widget_add_accelerator (menu_item, "activate", accel_group, GDK_F11, (GdkModifierType) 0, GTK_ACCEL_VISIBLE);
+       gtk_widget_add_accelerator (menu_item, "activate", accel_group, GDK_KEY_F11, (GdkModifierType) 0, GTK_ACCEL_VISIBLE);
        g_signal_connect(menu_item, "activate", (GCallback) fullscreen_toggle, NULL);
        
        menu_item = gtk_menu_item_new ();
@@ -1263,7 +1262,6 @@ void create_master_menu()
        menu_item = gtk_menu_item_new_with_mnemonic ("_Help");
        gtk_widget_show (menu_item);
        gtk_container_add (GTK_CONTAINER (main_menubar), menu_item);
-       gtk_menu_item_set_right_justified(GTK_MENU_ITEM(menu_item), TRUE);
        
        sub_menu = gtk_menu_new ();
        gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), sub_menu);
@@ -1272,7 +1270,7 @@ void create_master_menu()
        gtk_widget_show (menu_item);
        gtk_container_add (GTK_CONTAINER (sub_menu), menu_item);
        g_signal_connect(menu_item, "activate", (GCallback) display_help, NULL);
-       gtk_widget_add_accelerator (menu_item, "activate", accel_group, GDK_F1, (GdkModifierType) 0, GTK_ACCEL_VISIBLE);
+       gtk_widget_add_accelerator (menu_item, "activate", accel_group, GDK_KEY_F1, (GdkModifierType) 0, GTK_ACCEL_VISIBLE);
 
        menu_item = gtk_menu_item_new_with_mnemonic ("_About");
        gtk_widget_show (menu_item);
@@ -1312,7 +1310,7 @@ void create_mastergui(int x, int y)
 
        gtk_widget_realize(main_window);
 
-       wrapbox=gtk_vbox_new(FALSE, 5);
+       wrapbox=gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
        gtk_container_add(GTK_CONTAINER(main_window), wrapbox);
        gtk_widget_show(wrapbox);
 
@@ -1320,8 +1318,10 @@ void create_mastergui(int x, int y)
        gtk_box_pack_start(GTK_BOX(wrapbox), main_menubar, WID_FIX);
        gtk_widget_show(main_menubar);
 
-       mother_of_all_boxen=gtk_vbox_new(FALSE, 5);
+       mother_of_all_boxen=gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
        gtk_container_set_border_width(GTK_CONTAINER(mother_of_all_boxen), 5);
+       gtk_widget_set_hexpand(mother_of_all_boxen, TRUE);
+       gtk_widget_set_vexpand(mother_of_all_boxen, TRUE);
        gtk_container_add(GTK_CONTAINER(wrapbox), mother_of_all_boxen);
        gtk_widget_show(mother_of_all_boxen);   
 
@@ -1333,19 +1333,19 @@ void create_mastergui(int x, int y)
        g_signal_connect(G_OBJECT(main_window), "key_press_event", G_CALLBACK(tx_mouse::key_press_wrap), &mouse);
        g_signal_connect(G_OBJECT(main_window), "key_release_event", G_CALLBACK(tx_mouse::key_release_wrap), &mouse);
        
-       main_vbox=gtk_hbox_new(FALSE, 5);
+       main_vbox=gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
        gtk_box_pack_start(GTK_BOX(mother_of_all_boxen), main_vbox, WID_DYN);
        gtk_widget_show(main_vbox);
        
-       left_hbox=gtk_vbox_new(FALSE, 5);
+       left_hbox=gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
        gtk_box_pack_start(GTK_BOX(main_vbox), left_hbox, WID_DYN);
        gtk_widget_show(left_hbox);
        
-       control_box=gtk_hbox_new(FALSE, 5);
+       control_box=gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
        gtk_box_pack_start(GTK_BOX(left_hbox), control_box, WID_FIX);
        gtk_widget_show(control_box);
        
-       dummy=gtk_hseparator_new();
+       dummy=gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
        gtk_box_pack_start(GTK_BOX(left_hbox), dummy, WID_FIX);
        gtk_widget_show(dummy);
 
@@ -1368,7 +1368,7 @@ void create_mastergui(int x, int y)
        gui_set_tooltip(grab_button, "Enter the mouse grab mode operation. Press <ESCAPE> to exit grab mode.");
        gtk_widget_show(grab_button);
 
-       dummy=gtk_vseparator_new();
+       dummy=gtk_separator_new(GTK_ORIENTATION_VERTICAL);
        gtk_box_pack_start(GTK_BOX(control_box), dummy, WID_FIX);
        gtk_widget_show(dummy);
     
@@ -1416,7 +1416,7 @@ void create_mastergui(int x, int y)
        dumadj=(GtkAdjustment*) gtk_adjustment_new(0, 0, 100, 0.1, 1, 1);
        seq_adj=dumadj;
        connect_adj(dumadj, sequencer_move, NULL);      
-       dummy=gtk_hscale_new(dumadj);
+       dummy=gtk_scale_new(GTK_ORIENTATION_HORIZONTAL, dumadj);
        gtk_widget_set_size_request(dummy, 65, 20);
        seq_slider=dummy;
        g_signal_connect(G_OBJECT(seq_slider), "button-release-event", (GCallback) seq_slider_released, NULL);
@@ -1426,32 +1426,33 @@ void create_mastergui(int x, int y)
        gtk_box_pack_start(GTK_BOX(control_box), dummy, WID_DYN);
        gtk_widget_show(dummy);
        
-       dummy=gtk_hbox_new(FALSE,2); //gtk_hpaned_new ();
+       dummy=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,2); //gtk_hpaned_new ();
        gtk_box_pack_start(GTK_BOX(left_hbox), dummy, WID_DYN);
        gtk_widget_show(dummy);
        
        tt_parent=dummy;
 
-    panel_bar=gtk_hbox_new(TRUE,0);
+    panel_bar=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,0);
+    gtk_box_set_homogeneous(GTK_BOX(panel_bar), TRUE);
        gtk_box_pack_start(GTK_BOX(left_hbox), panel_bar, WID_FIX);
 
-       control_parent=gtk_hbox_new(FALSE,4);
+       control_parent=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,4);
        gtk_box_pack_start(GTK_BOX(tt_parent), control_parent, WID_FIX);
        gtk_widget_show(control_parent);
 
-       dummy=gtk_vseparator_new();
+       dummy=gtk_separator_new(GTK_ORIENTATION_VERTICAL);
        gtk_box_pack_start(GTK_BOX(tt_parent), dummy, WID_FIX);
        gtk_widget_show(dummy);
 
-       audio_parent=gtk_vbox_new(FALSE,2);
+       audio_parent=gtk_box_new(GTK_ORIENTATION_VERTICAL,2);
        gtk_box_pack_start(GTK_BOX(tt_parent), audio_parent, WID_DYN);
        gtk_widget_show(audio_parent);
        
-       dummy=gtk_vseparator_new();
+       dummy=gtk_separator_new(GTK_ORIENTATION_VERTICAL);
        gtk_box_pack_start(GTK_BOX(main_vbox), dummy, WID_FIX);
        gtk_widget_show(dummy);
                
-       right_hbox=gtk_vbox_new(FALSE, 5);
+       right_hbox=gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
        gtk_box_pack_start(GTK_BOX(main_vbox), right_hbox, WID_FIX);
        gtk_widget_show(right_hbox);
 
@@ -1463,7 +1464,7 @@ void create_mastergui(int x, int y)
        gtk_box_pack_start(GTK_BOX(right_hbox), dummy, WID_FIX);
        gtk_widget_show(dummy); 
 
-       dummy=gtk_hseparator_new();
+       dummy=gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
        gtk_box_pack_start(GTK_BOX(right_hbox), dummy, WID_FIX);
        gtk_widget_show(dummy);
 
@@ -1481,20 +1482,20 @@ void create_mastergui(int x, int y)
        gtk_box_pack_start(GTK_BOX(right_hbox), pdial->get_widget(), WID_FIX);
        gui_set_tooltip(pdial->get_entry(), "Use this dial to adjust the master pitch (affecting *all* turntables).");
        
-       dummy=gtk_hseparator_new();
+       dummy=gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
        gtk_box_pack_start(GTK_BOX(right_hbox), dummy, WID_FIX);
        gtk_widget_show(dummy);
        
        /* Volume */
-       master_vol_box=gtk_hbox_new(FALSE, 5);
+       master_vol_box=gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
        gtk_box_pack_start(GTK_BOX(right_hbox), master_vol_box, WID_DYN);
-       gtk_widget_show(master_vol_box);        
+       gtk_widget_show(master_vol_box);
        
        dumadj=(GtkAdjustment*) gtk_adjustment_new(globals.volume, 0, 2, 0.01, 0.05, 0.000);
        volume_adj=dumadj;
 
-       connect_adj(dumadj, master_volume_changed, NULL);       
-       dummy=gtk_vscale_new(dumadj);
+       connect_adj(dumadj, master_volume_changed, NULL);
+       dummy=gtk_scale_new(GTK_ORIENTATION_VERTICAL, dumadj);
        gtk_range_set_inverted(GTK_RANGE(dummy), TRUE);
        gtk_scale_set_draw_value(GTK_SCALE(dummy), False);
        g_signal_connect(G_OBJECT(dummy), "button_press_event", (GCallback) tX_seqpar::tX_seqpar_press, &sp_master_volume);     
@@ -1513,11 +1514,11 @@ void create_mastergui(int x, int y)
        gtk_widget_show(dummy);
 
        /* STATUS BOX */ 
-       dummy=gtk_hseparator_new();
+       dummy=gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
        gtk_box_pack_start(GTK_BOX(right_hbox), dummy, WID_FIX);
        gtk_widget_show(dummy);
        
-       status_box=gtk_vbox_new(FALSE, 0);
+       status_box=gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
        gtk_box_pack_start(GTK_BOX(right_hbox), status_box, WID_FIX);
        gtk_widget_show(status_box);
        
@@ -1682,7 +1683,7 @@ void display_mastergui()
        fullscreen_setup();     
        top=gtk_widget_get_toplevel(main_window);
        top_window=GDK_WINDOW(gtk_widget_get_window(top));
-       x_window=GDK_WINDOW_XWINDOW(gtk_widget_get_window(top));
+       x_window=gdk_x11_window_get_xid(gtk_widget_get_window(top));
 }
 
 pid_t help_child=0;
index a2e1cd221b4653103ebdc2ffc443c3f327dab6e8..103bd804903afb68de70cad6440a928e0cef14bd 100644 (file)
@@ -233,7 +233,7 @@ tX_midiin::midi_binding_gui::midi_binding_gui ( GtkTreeModel* _model, tX_midiin*
        gtk_window_set_title (GTK_WINDOW (window), "Configure MIDI Bindings");
        gtk_window_set_default_size(GTK_WINDOW(window), 600, 260);
        
-       hbox1 = gtk_hbox_new (FALSE, 2);
+       hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 2);
        gtk_widget_show (hbox1);
        gtk_container_add (GTK_CONTAINER (window), hbox1);
        gtk_container_set_border_width(GTK_CONTAINER(hbox1), 4);
@@ -257,7 +257,7 @@ tX_midiin::midi_binding_gui::midi_binding_gui ( GtkTreeModel* _model, tX_midiin*
                                                                                           NULL );
        gtk_tree_view_set_headers_visible( GTK_TREE_VIEW(parameter_treeview), TRUE );
        
-       vbox1 = gtk_vbox_new (FALSE, 0);
+       vbox1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
        gtk_widget_show (vbox1);
        gtk_box_pack_start (GTK_BOX (hbox1), vbox1, FALSE, FALSE, 0);
        
index 704b93a873efbd39056238cfa06119c1516fa0a8..571051809c0942b3cb0d136adbbcbde10299439e 100644 (file)
 #include <X11/extensions/Xxf86dga.h>
 #endif
 
-#ifdef HAVE_X11_EXTENSIONS_XF86DGA_H
-#include <X11/extensions/xf86dga.h>
-#endif
-
 #include <gdk/gdkx.h>
 #include <gtk/gtk.h>
 
@@ -59,6 +55,9 @@ tx_mouse :: tx_mouse()
        xkey=(XKeyEvent *) &xev;
        xbut=(XButtonEvent *) &xev;
        
+       pointer = NULL;
+       keyboard = NULL;
+       
 #ifdef USE_DGA2
        xdgamot=(XDGAMotionEvent *) &xev;
        xdgakey=(XDGAKeyEvent *) &xev;
@@ -83,10 +82,13 @@ int tx_mouse :: grab()
        if (grabbed) return 0;
 
        warp_override=false;
-       dpy = gdk_x11_get_default_xdisplay();
-//     GdkDisplay* gdk_dpy = gdk_display_get_default();
-
-       if (!dpy/* && !gdk_dpy*/) {
+       
+       GdkWindow *window =  gtk_widget_get_window(main_window);
+       GdkDisplay* gdk_dpy = gdk_window_get_display(window);
+       GdkDeviceManager *device_manager = gdk_display_get_device_manager(gdk_dpy);
+       dpy = gdk_x11_display_get_xdisplay(gdk_dpy);
+       
+       if (!dpy && !gdk_dpy) {
                fputs("GrabMode Error: couldn't connect to XDisplay.", stderr);
                return(ENG_ERR_XOPEN);
        }
@@ -104,8 +106,8 @@ int tx_mouse :: grab()
 
        gtk_window_present(GTK_WINDOW(main_window));
 
-       savedEventMask = gdk_window_get_events(top_window);
-       GdkEventMask newEventMask = GdkEventMask ((int) savedEventMask |  GDK_POINTER_MOTION_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
+       savedEventMask = gdk_window_get_events(window);
+       GdkEventMask newEventMask = GdkEventMask ((int) savedEventMask | GDK_POINTER_MOTION_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
        gdk_window_set_events(top_window, newEventMask);
 
 //     if (globals.xinput_enable) {
@@ -116,10 +118,6 @@ int tx_mouse :: grab()
 //             }
 //     }
 
-//     GdkModifierType modifiers = (GdkModifierType)NULL;
-//     gtk_window_set_mnemonic_modifier(GTK_WINDOW(main_window), modifiers);
-//     gtk_window_set_mnemonics_visible(GTK_WINDOW(main_window), false);
-
        g_object_get (gtk_widget_get_settings (main_window), "gtk-auto-mnemonics", &enable_auto_mnemonics, NULL);
 
        if (enable_auto_mnemonics) {
@@ -127,7 +125,8 @@ int tx_mouse :: grab()
                g_object_set (gtk_widget_get_settings (main_window), "gtk-auto-mnemonics", off, NULL);
        }
 
-       GdkGrabStatus grab_status =gdk_pointer_grab(top_window, FALSE, GdkEventMask (GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK), NULL, NULL, GDK_CURRENT_TIME);
+       pointer = gdk_device_manager_get_client_pointer(device_manager);
+       GdkGrabStatus grab_status = gdk_device_grab(pointer, top_window, GDK_OWNERSHIP_NONE, FALSE, GdkEventMask (GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK), NULL, GDK_CURRENT_TIME);
 
        if (grab_status != GDK_GRAB_SUCCESS) {
                //reset_xinput();
@@ -136,10 +135,21 @@ int tx_mouse :: grab()
                return(-1);
        }       
        
-       grab_status = gdk_keyboard_grab(top_window, FALSE, GDK_CURRENT_TIME);
+       GList *list = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_MASTER);
+       for (GList *link = list; link != NULL; link = g_list_next (link)) {
+               GdkDevice *device = GDK_DEVICE (link->data);
+               
+               if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD)
+                       continue;
+
+               keyboard = device;
+               break;
+       }
+       
+       grab_status = gdk_device_grab(keyboard, top_window, GDK_OWNERSHIP_NONE, FALSE, GdkEventMask (GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK), NULL, GDK_CURRENT_TIME);
 
        if (grab_status != GDK_GRAB_SUCCESS) {
-               gdk_pointer_ungrab(GDK_CURRENT_TIME);
+               gdk_device_ungrab(pointer, GDK_CURRENT_TIME);
                //reset_xinput();
                //XCloseDisplay(dpy);
                //fputs("GrabMode Error: XGrabKeyboard failed.", stderr);
@@ -152,8 +162,8 @@ int tx_mouse :: grab()
 #else  
        if (!XF86DGADirectVideo(dpy,DefaultScreen(dpy),XF86DGADirectMouse)) {
 #endif
-               gdk_pointer_ungrab(GDK_CURRENT_TIME);
-               gdk_keyboard_ungrab(GDK_CURRENT_TIME);
+               gdk_device_ungrab(pointer, GDK_CURRENT_TIME);
+               gdk_device_ungrab(keyboard, GDK_CURRENT_TIME);
 
 //             reset_xinput();
 //             XCloseDisplay(dpy);
@@ -199,8 +209,8 @@ void tx_mouse :: ungrab()
        XF86DGADirectVideo(dpy,DefaultScreen(dpy),0);
 #endif 
 
-       gdk_keyboard_ungrab(GDK_CURRENT_TIME);
-       gdk_pointer_ungrab(GDK_CURRENT_TIME);
+       gdk_device_ungrab(keyboard, GDK_CURRENT_TIME);
+       gdk_device_ungrab(pointer, GDK_CURRENT_TIME);
 
        XAutoRepeatOn(dpy);
        
@@ -445,7 +455,6 @@ gboolean tx_mouse::button_press_wrap(GtkWidget *widget, GdkEventButton *eventBut
                }
                return TRUE;
        }
-
        return FALSE;
 }
 
index 91371771c9ffd071b562cc647e79a2b6d987f737..dd21aa2a54469def8828bec18cc9bd0f0202a1a6 100644 (file)
 #include <gdk/gdkkeysyms.h>
 #include <gtk/gtk.h>
 
-/* Use old gdk keys if the new ones are not yet defined */
-
-#ifndef GDK_KEY_Alt_L
-#define GDK_KEY_Alt_L GDK_Alt_L
-#endif
-#ifndef GDK_KEY_Alt_R
-#define GDK_KEY_Alt_R GDK_Alt_R
-#endif
-#ifndef GDK_KEY_BackSpace
-#define GDK_KEY_BackSpace GDK_BackSpace
-#endif
-#ifndef GDK_KEY_Control_L
-#define GDK_KEY_Control_L GDK_Control_L
-#endif
-#ifndef GDK_KEY_Control_R
-#define GDK_KEY_Control_R GDK_Control_R
-#endif
-#ifndef GDK_KEY_Escape
-#define GDK_KEY_Escape GDK_Escape
-#endif
-#ifndef GDK_KEY_f
-#define GDK_KEY_f GDK_f
-#endif
-#ifndef GDK_KEY_F1
-#define GDK_KEY_F1 GDK_F1
-#endif
-#ifndef GDK_KEY_F10
-#define GDK_KEY_F10 GDK_F10
-#endif
-#ifndef GDK_KEY_F11
-#define GDK_KEY_F11 GDK_F11
-#endif
-#ifndef GDK_KEY_F12
-#define GDK_KEY_F12 GDK_F12
-#endif
-#ifndef GDK_KEY_F2
-#define GDK_KEY_F2 GDK_F2
-#endif
-#ifndef GDK_KEY_F3
-#define GDK_KEY_F3 GDK_F3
-#endif
-#ifndef GDK_KEY_F4
-#define GDK_KEY_F4 GDK_F4
-#endif
-#ifndef GDK_KEY_F5
-#define GDK_KEY_F5 GDK_F5
-#endif
-#ifndef GDK_KEY_F6
-#define GDK_KEY_F6 GDK_F6
-#endif
-#ifndef GDK_KEY_F7
-#define GDK_KEY_F7 GDK_F7
-#endif
-#ifndef GDK_KEY_F8
-#define GDK_KEY_F8 GDK_F8
-#endif
-#ifndef GDK_KEY_F9
-#define GDK_KEY_F9 GDK_F9
-#endif
-#ifndef GDK_KEY_m
-#define GDK_KEY_m GDK_m
-#endif
-#ifndef GDK_KEY_Return
-#define GDK_KEY_Return GDK_Return
-#endif
-#ifndef GDK_KEY_s
-#define GDK_KEY_s GDK_s
-#endif
-#ifndef GDK_KEY_space
-#define GDK_KEY_space GDK_space
-#endif
-#ifndef GDK_KEY_Tab
-#define GDK_KEY_Tab GDK_Tab
-#endif
-#ifndef GDK_KEY_w
-#define GDK_KEY_w GDK_w
-#endif
-#ifndef GDK_KEY_space
-#define GDK_KEY_space GDK_space
-#endif
-
 class tx_mouse
 {
        XID OrgXPointer;
@@ -135,6 +54,9 @@ class tx_mouse
        guint last_button_press;
        guint last_button_release;
 
+       GdkDevice* pointer;
+       GdkDevice* keyboard;
+
 #ifdef USE_DGA2        
        XEvent xev_copy;
        XDGAButtonEvent *xdgabut;
index b036fe3d4e1865aa845bea434cf801f56867e8a8..582e632c5483e2534fb5413b8007a0bf894f5666 100644 (file)
@@ -71,7 +71,7 @@ tX_panel :: tX_panel (const char *name, GtkWidget *par)
        gtk_misc_set_alignment(GTK_MISC(labelbutton), 0, 0.5);
        tX_panel_make_label_bold(labelbutton);
  
-       button_box=gtk_hbox_new(FALSE, 5);
+       button_box=gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
               
        gtk_box_pack_start(GTK_BOX(button_box), pixmap_min, WID_FIX);
        gtk_box_pack_start(GTK_BOX(button_box), pixmap_max, WID_FIX);
@@ -80,10 +80,10 @@ tX_panel :: tX_panel (const char *name, GtkWidget *par)
        gtk_container_set_border_width(GTK_CONTAINER(button_box), 2);
        
        gtk_container_add (GTK_CONTAINER (minbutton), button_box);
-       mainbox=gtk_vbox_new(FALSE, 0);
+       mainbox=gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
        
-       topbox=gtk_hbox_new(FALSE, 0);
-       clientbox=gtk_vbox_new(FALSE, 0);
+       topbox=gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
+       clientbox=gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
        clientframe=gtk_frame_new((char *) NULL);
        gtk_container_set_border_width( GTK_CONTAINER(clientframe), 0);
        gtk_container_add(GTK_CONTAINER(clientframe), clientbox);
index c96e057ef9173a8aac06e8aeabce62c22533aee5..56bfffdf7f5becbf93f2afc450fdbb1c91faecd0 100644 (file)
@@ -84,7 +84,7 @@ GtkWidget *tx_xpm_label_box(tX_icon id, const gchar *label_text, GtkWidget **lab
                        return pixmapwid;
                        break;
                default:
-                       box1 = gtk_hbox_new (FALSE, 5);
+                       box1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
                        gtk_container_set_border_width (GTK_CONTAINER (box1), 2);
                        pixmapwid=tx_pixmap_widget(id);
                        gtk_box_pack_start (GTK_BOX (box1), pixmapwid, FALSE, FALSE, 0);
index 6344090f031f79c456c24ee748f243ad44b1c3f0..8808f141710719c9f29f4213804a6c995a5b321b 100644 (file)
@@ -993,7 +993,7 @@ void tX_seqpar_vttfx_int :: create_widget()
 
        *fx_value=min_value;
        myadj=GTK_ADJUSTMENT(gtk_adjustment_new(*fx_value, min_value, max_value, 1, 10, 0));
-       GtkWidget *box=gtk_vbox_new(FALSE, 2);
+       GtkWidget *box=gtk_box_new(GTK_ORIENTATION_VERTICAL, 2);
        
        tmpwid=gtk_spin_button_new(myadj,1.0,0);
        gtk_widget_show(tmpwid);
index e36c3431e89b5aea37041474954c4f5971b970cb..fe350f07e144cebb5a9dd6cf5e438fb1231606e5 100644 (file)
@@ -57,7 +57,7 @@ on_pref_ok_clicked                     (GtkButton       *button,
 
 
 void
-on_tx_options_destroy                  (GtkObject       *object,
+on_tx_options_destroy                  (GObject       *object,
                                         gpointer         user_data)
 {
        opt_dialog=NULL;
@@ -143,49 +143,32 @@ void
 color_clicked                          (GtkButton       *button,
                                         gpointer         user_data)
 {
-       GdkColor p;
-       GtkWidget *dialog=create_tX_color_selection();
-       GtkWidget *sel=lookup_widget(dialog, "color_selection");
+       GdkRGBA p;
+       GtkWidget *dialog=create_tX_color_chooser(gtk_widget_get_toplevel(GTK_WIDGET(button)));
+       GtkWidget *sel=lookup_widget(dialog, "tX_color_chooser");
        g_object_set_data(G_OBJECT(dialog), "Button", button);
        
-       gdk_color_parse((const char *) g_object_get_data(G_OBJECT(button), "Color"), &p);
-       gtk_color_selection_set_current_color(GTK_COLOR_SELECTION(sel), &p);
+       gdk_rgba_parse(&p, (const char *) g_object_get_data(G_OBJECT(button), "Color"));
+       gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(sel), &p);
        gtk_widget_show(dialog);
 }
 
-
 void
-on_color_selection_ok_clicked          (GtkButton       *button,
-                                        gpointer         user_data)
-{
-       char tmp[56];
-       char *col;
-       GdkColor p;
-       
-       GtkWidget *dialog=gtk_widget_get_parent(gtk_widget_get_parent(gtk_widget_get_parent(GTK_WIDGET(button))));
-       GtkWidget *c_but=(GtkWidget *) g_object_get_data(G_OBJECT(dialog), "Button");
-       
-       GtkWidget *sel=lookup_widget(dialog, "color_selection");
-       gtk_color_selection_get_current_color(GTK_COLOR_SELECTION(sel), &p);
-
-       col=(char *) g_object_get_data(G_OBJECT(c_but), "Color");
-       sprintf(col, "#%02X%02X%02X", p.red >> 8, p.green >> 8, p.blue >> 8);   
-       sprintf(tmp, "<span foreground=\"%s\"><b>%s</b></span>", col, col);
-       gtk_label_set_markup(GTK_LABEL(gtk_container_get_children(GTK_CONTAINER(c_but))->data), tmp);
-       
-       gtk_widget_destroy(dialog);
-}
-
-
-void
-on_color_selection_cancel_clicked      (GtkButton       *button,
-                                        gpointer         user_data)
+color_response (GtkDialog *dialog, gint       response_id, gpointer   user_data)
 {
-       gtk_widget_destroy(
-               gtk_widget_get_parent(
-                       gtk_widget_get_parent(
-                               gtk_widget_get_parent(GTK_WIDGET(button))
-                       )
-               )
-       );
+  if (response_id == GTK_RESPONSE_OK) {
+         char tmp[128];
+         char col[16];
+         GdkRGBA p;
+         
+         GtkWidget *c_but=(GtkWidget *) g_object_get_data(G_OBJECT(dialog), "Button");
+      gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (dialog), &p);
+      sprintf(col, "#%02X%02X%02X", (int) (p.red * 256.0),  (int) (p.green * 256.0), (int) (p.blue * 256.0));
+      
+      sprintf(tmp, "<span foreground=\"%s\"><b>%s</b></span>", col, col);
+      gtk_label_set_markup(GTK_LABEL(gtk_container_get_children(GTK_CONTAINER(c_but))->data), tmp);
+  }
+
+  gtk_widget_hide (GTK_WIDGET (dialog));
+  gtk_widget_destroy (GTK_WIDGET (dialog));
 }
index b3a5be9f84d7fd6145a1f3bfaa00c62bbc998a81..c70f116b0a2c214f5e2186708153ea9e55dccf7e 100644 (file)
@@ -1,7 +1,7 @@
 #include <gtk/gtk.h>
 
 void
-on_tx_options_destroy                  (GtkObject       *object,
+on_tx_options_destroy                  (GObject       *object,
                                         gpointer         user_data);
 
 void
@@ -37,9 +37,8 @@ color_clicked                          (GtkButton       *button,
                                         gpointer         user_data);
 
 void
-on_color_selection_ok_clicked          (GtkButton       *button,
+on_color_chooser_ok_clicked          (GtkButton       *button,
                                         gpointer         user_data);
 
-void
-on_color_selection_cancel_clicked      (GtkButton       *button,
-                                        gpointer         user_data);
+void 
+color_response (GtkDialog *dialog, gint response_id, gpointer user_data);
index 43d26b9f7f28d0bb04feccf1ce3d3af32ed8c3a0..d7aa644c88881d93dac8df69e52bfb754e22d63c 100644 (file)
@@ -34,12 +34,12 @@ create_tx_adjust (void)
   GtkWidget *dialog_vbox2;
   GtkWidget *vbox1;
   GtkWidget *label34;
-  GtkWidget *table7;
-  GtkObject *master_cycles_adj;
+  GtkWidget *grid7;
+  GtkAdjustment *master_cycles_adj;
   GtkWidget *master_cycles;
   GtkWidget *label36;
   GtkWidget *label35;
-  GtkObject *cycles_adj;
+  GtkAdjustment *cycles_adj;
   GtkWidget *cycles;
   GtkWidget *create_event;
   GtkWidget *dialog_action_area2;
@@ -52,7 +52,7 @@ create_tx_adjust (void)
   dialog_vbox2 = gtk_dialog_get_content_area(GTK_DIALOG (tx_adjust));
   gtk_widget_show (dialog_vbox2);
 
-  vbox1 = gtk_vbox_new (FALSE, 4);
+  vbox1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 4);
   gtk_widget_show (vbox1);
   gtk_box_pack_start (GTK_BOX (dialog_vbox2), vbox1, TRUE, TRUE, 0);
   gtk_container_set_border_width (GTK_CONTAINER (vbox1), 4);
@@ -62,37 +62,31 @@ create_tx_adjust (void)
   gtk_box_pack_start (GTK_BOX (vbox1), label34, FALSE, FALSE, 0);
   gtk_label_set_line_wrap (GTK_LABEL (label34), TRUE);
 
-  table7 = gtk_table_new (2, 2, FALSE);
-  gtk_widget_show (table7);
-  gtk_box_pack_start (GTK_BOX (vbox1), table7, TRUE, TRUE, 0);
-  gtk_table_set_col_spacings (GTK_TABLE (table7), 3);
+  grid7 = gtk_grid_new ();
+  gtk_widget_show (grid7);
+  gtk_box_pack_start (GTK_BOX (vbox1), grid7, TRUE, TRUE, 0);
+  gtk_grid_set_column_spacing (GTK_GRID (grid7), 3);
 
   master_cycles_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 0);
   master_cycles = gtk_spin_button_new (GTK_ADJUSTMENT (master_cycles_adj), 1, 0);
+  gtk_widget_set_hexpand(master_cycles, TRUE);
   gtk_widget_show (master_cycles);
-  gtk_table_attach (GTK_TABLE (table7), master_cycles, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid7), master_cycles, 1, 1, 1, 1);
   gtk_widget_set_tooltip_text(master_cycles, "Specify the number of loops for the master turntable.");
 
   label36 = gtk_label_new ("Loops of the master turntable:");
   gtk_widget_show (label36);
-  gtk_table_attach (GTK_TABLE (table7), label36, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid7), label36, 0, 1, 1, 1);
 
   label35 = gtk_label_new ("Loops of this turntable turntable:");
   gtk_widget_show (label35);
-  gtk_table_attach (GTK_TABLE (table7), label35, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid7), label35, 0, 0, 1, 1);
 
   cycles_adj = gtk_adjustment_new (1, 1, 100, 1, 10, 0);
   cycles = gtk_spin_button_new (GTK_ADJUSTMENT (cycles_adj), 1, 0);
+  gtk_widget_set_hexpand(cycles, TRUE);
   gtk_widget_show (cycles);
-  gtk_table_attach (GTK_TABLE (table7), cycles, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid7), cycles, 1, 0, 1, 1);
   gtk_widget_set_tooltip_text(cycles, "Specify the number of loops of _this_ turntable.");
 
   create_event = gtk_check_button_new_with_mnemonic ("Record a sequencer event");
@@ -118,7 +112,7 @@ create_tx_adjust (void)
   TX_UI_HOOKUP_OBJECT_NO_REF (tx_adjust, dialog_vbox2, "dialog_vbox2");
   TX_UI_HOOKUP_OBJECT (tx_adjust, vbox1, "vbox1");
   TX_UI_HOOKUP_OBJECT (tx_adjust, label34, "label34");
-  TX_UI_HOOKUP_OBJECT (tx_adjust, table7, "table7");
+  TX_UI_HOOKUP_OBJECT (tx_adjust, grid7, "grid7");
   TX_UI_HOOKUP_OBJECT (tx_adjust, master_cycles, "master_cycles");
   TX_UI_HOOKUP_OBJECT (tx_adjust, label36, "label36");
   TX_UI_HOOKUP_OBJECT (tx_adjust, label35, "label35");
@@ -137,7 +131,7 @@ create_tx_options (void)
   GtkWidget *tx_options;
   GtkWidget *dialog_vbox3;
   GtkWidget *notebook1;
-  GtkWidget *table4;
+  GtkWidget *grid4;
   GtkWidget *label18;
   GtkWidget *hbox2;
   GtkWidget *oss_driver;
@@ -147,18 +141,18 @@ create_tx_options (void)
   GtkWidget *use_realtime_label;
   GtkWidget *use_realtime;
   GtkWidget *label1;
-  GtkWidget *table5;
+  GtkWidget *grid5;
   GtkWidget *label21;
   GtkWidget *label22;
   GtkWidget *label23;
   GtkWidget *label24;
   GtkWidget *oss_audio_device;
-  GtkObject *oss_buffers_adj;
+  GtkAdjustment *oss_buffers_adj;
   GtkWidget *oss_buffers;
   GtkWidget *oss_buffersize;
   GtkWidget *oss_samplerate;
   GtkWidget *label15;
-  GtkWidget *table6;
+  GtkWidget *grid6;
   GtkWidget *label27;
   GtkWidget *label29;
   GtkWidget *label30;
@@ -170,7 +164,7 @@ create_tx_options (void)
   GtkWidget *label39;
   GtkWidget *alsa_free_hwstats;
   GtkWidget *label16;
-  GtkWidget *table1;
+  GtkWidget *grid1;
   GtkWidget *label5;
   GtkWidget *label6;
   GtkWidget *label7;
@@ -182,7 +176,7 @@ create_tx_options (void)
   GtkWidget *label37;
   GtkWidget *vtt_inertia;
   GtkWidget *label4;
-  GtkWidget *table2;
+  GtkWidget *grid2;
   GtkWidget *label8;
   GtkWidget *label9;
   GtkWidget *label10;
@@ -200,10 +194,10 @@ create_tx_options (void)
   GtkWidget *buttons_icon_only;
   GtkWidget *buttons_text_only;
   GtkWidget *label38;
-  GtkObject *filename_length_adj;
+  GtkAdjustment *filename_length_adj;
   GtkWidget *filename_length;
   GtkWidget *label2;
-  GtkWidget *table8;
+  GtkWidget *grid8;
   GtkWidget *label42;
   GtkWidget *label43;
   GtkWidget *label44;
@@ -217,7 +211,7 @@ create_tx_options (void)
   GtkWidget *wav_display_cursor;
   GtkWidget *wav_display_cursor_mute;
   GtkWidget *label41;
-  GtkWidget *table9;
+  GtkWidget *grid9;
   GtkWidget *label53;
   GtkWidget *label54;
   GtkWidget *label55;
@@ -227,7 +221,7 @@ create_tx_options (void)
   GtkWidget *vu_meter_normal;
   GtkWidget *vu_meter_loud;
   GtkWidget *label52;
-  GtkWidget *table3;
+  GtkWidget *grid3;
   GtkWidget *label13;
   GtkWidget *soundfile_editor;
   GtkWidget *label26;
@@ -261,26 +255,23 @@ create_tx_options (void)
   gtk_widget_show (notebook1);
   gtk_box_pack_start (GTK_BOX (dialog_vbox3), 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);
+  grid4 = gtk_grid_new ();
+  gtk_widget_show (grid4);
+  gtk_container_add (GTK_CONTAINER (notebook1), grid4);
+  gtk_container_set_border_width (GTK_CONTAINER (grid4), 4);
+  gtk_grid_set_row_spacing (GTK_GRID (grid4), 2);
+  gtk_grid_set_column_spacing (GTK_GRID (grid4), 2);
 
   label18 = gtk_label_new ("Driver:");
   gtk_widget_show (label18);
-  gtk_table_attach (GTK_TABLE (table4), label18, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid4), label18, 0, 0, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label18), 0, 0.5);
 
-  hbox2 = gtk_hbox_new (FALSE, 5);
+  hbox2 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 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);
-
+  gtk_grid_attach (GTK_GRID (grid4), hbox2, 1, 0, 1, 1);
+  gtk_widget_set_hexpand(hbox2, TRUE);
+  
   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);
@@ -304,63 +295,49 @@ create_tx_options (void)
 
   use_realtime_label = gtk_label_new ("Scheduling:");
   gtk_widget_show (use_realtime_label);
-  gtk_table_attach (GTK_TABLE (table4), use_realtime_label, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid4), use_realtime_label, 0, 1, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (use_realtime_label), 0, 0.5);
 
   use_realtime = gtk_check_button_new_with_mnemonic ("Use realtime scheduling where available");
   gtk_widget_show (use_realtime);
-  gtk_table_attach (GTK_TABLE (table4), use_realtime, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
-
+  gtk_grid_attach (GTK_GRID (grid4), use_realtime, 1, 1, 1, 1);
+  
   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);
 
-  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);
+  grid5 = gtk_grid_new ();
+  gtk_widget_show (grid5);
+  gtk_container_add (GTK_CONTAINER (notebook1), grid5);
+  gtk_container_set_border_width (GTK_CONTAINER (grid5), 4);
+  gtk_grid_set_row_spacing (GTK_GRID (grid5), 2);
+  gtk_grid_set_column_spacing (GTK_GRID (grid5), 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_grid_attach (GTK_GRID (grid5), label21, 0, 0, 1, 1);
   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_grid_attach (GTK_GRID (grid5), label22, 0, 1, 1, 1);
   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_grid_attach (GTK_GRID (grid5), label23, 0, 2, 1, 1);
   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_grid_attach (GTK_GRID (grid5), label24, 0, 3, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label24), 0, 0.5);
 
   oss_audio_device = gtk_combo_box_text_new ();
 //  g_object_set_data (G_OBJECT (GTK_COMBO_BOX (oss_audio_device)->popwin),
 //                     "tXUiParentKey", 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);
+  gtk_grid_attach (GTK_GRID (grid5), oss_audio_device, 1, 0, 1, 1);
 
   //combo_entry2 = GTK_COMBO (oss_audio_device)->entry;
   //gtk_widget_show (combo_entry2);
@@ -368,27 +345,23 @@ create_tx_options (void)
 
   oss_buffers_adj = gtk_adjustment_new (2, 2, 5, 1, 10, 0);
   oss_buffers = gtk_spin_button_new (GTK_ADJUSTMENT (oss_buffers_adj), 1, 0);
+  gtk_widget_set_hexpand(oss_buffers, TRUE);
   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);
+  gtk_grid_attach (GTK_GRID (grid5), oss_buffers, 1, 1, 1, 1);
   gtk_widget_set_tooltip_text(oss_buffers, "Sets the number of kernel level audio buffers. Actually most systems should run just fine with two.");
 
-  oss_buffersize = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (9, 8, 16, 1, 1, 1)));
+  oss_buffersize = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, GTK_ADJUSTMENT (gtk_adjustment_new (9, 8, 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_grid_attach (GTK_GRID (grid5), oss_buffersize, 1, 2, 1, 1);
   gtk_scale_set_value_pos (GTK_SCALE (oss_buffersize), GTK_POS_LEFT);
   gtk_scale_set_digits (GTK_SCALE (oss_buffersize), 0);
 
   oss_samplerate = gtk_combo_box_text_new ();
   //g_object_set_data (G_OBJECT (GTK_COMBO (oss_samplerate)->popwin),
                      //"tXUiParentKey", oss_samplerate);
+  gtk_widget_set_hexpand(oss_samplerate, TRUE);
   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);
+  gtk_grid_attach (GTK_GRID (grid5), oss_samplerate, 1, 3, 1, 1);
 
 //  combo_entry3 = GTK_COMBO (oss_samplerate)->entry;
 //  gtk_widget_show (combo_entry3);
@@ -398,41 +371,34 @@ create_tx_options (void)
   gtk_widget_show (label15);
   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), label15);
 
-  table6 = gtk_table_new (5, 2, FALSE);
-  gtk_widget_show (table6);
-  gtk_container_add (GTK_CONTAINER (notebook1), table6);
-  gtk_container_set_border_width (GTK_CONTAINER (table6), 4);
-  gtk_table_set_row_spacings (GTK_TABLE (table6), 2);
-  gtk_table_set_col_spacings (GTK_TABLE (table6), 2);
+  grid6 = gtk_grid_new ();
+  gtk_widget_show (grid6);
+  gtk_container_add (GTK_CONTAINER (notebook1), grid6);
+  gtk_container_set_border_width (GTK_CONTAINER (grid6), 4);
+  gtk_grid_set_row_spacing (GTK_GRID (grid6), 2);
+  gtk_grid_set_column_spacing (GTK_GRID (grid6), 2);
 
   label27 = gtk_label_new ("Audio Device:");
   gtk_widget_show (label27);
-  gtk_table_attach (GTK_TABLE (table6), label27, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid6), label27, 0, 0, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label27), 0, 0.5);
 
   label29 = gtk_label_new ("Period Time (ms):");
   gtk_widget_show (label29);
-  gtk_table_attach (GTK_TABLE (table6), label29, 0, 1, 2, 3,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid6), label29, 0, 2, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label29), 0, 0.5);
 
   label30 = gtk_label_new ("Samplerate (Hz):");
   gtk_widget_show (label30);
-  gtk_table_attach (GTK_TABLE (table6), label30, 0, 1, 3, 4,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid6), label30, 0, 3, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label30), 0, 0.5);
 
   alsa_audio_device = gtk_combo_box_text_new ();
 //  g_object_set_data (G_OBJECT (GTK_COMBO (alsa_audio_device)->popwin),
 //                     "tXUiParentKey", alsa_audio_device);
+  gtk_widget_set_hexpand(alsa_audio_device, TRUE);
   gtk_widget_show (alsa_audio_device);
-  gtk_table_attach (GTK_TABLE (table6), alsa_audio_device, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid6), alsa_audio_device, 1, 0, 1, 1);
 
 //  combo_entry4 = GTK_COMBO (alsa_audio_device)->entry;
 //  gtk_widget_show (combo_entry4);
@@ -440,232 +406,179 @@ create_tx_options (void)
   alsa_samplerate = gtk_combo_box_text_new ();
 //  g_object_set_data (G_OBJECT (GTK_COMBO (alsa_samplerate)->popwin),
 //                     "tXUiParentKey", alsa_samplerate);
+  gtk_widget_set_hexpand(alsa_samplerate, TRUE);
   gtk_widget_show (alsa_samplerate);
-  gtk_table_attach (GTK_TABLE (table6), alsa_samplerate, 1, 2, 3, 4,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid6), alsa_samplerate, 1, 3, 1, 1);
 
 //  combo_entry5 = GTK_COMBO (alsa_samplerate)->entry;
 //  gtk_widget_show (combo_entry5);
 
-  alsa_period_time = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (29, 10, 500, 1, 10, 10)));
+  alsa_period_time = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, GTK_ADJUSTMENT (gtk_adjustment_new (29, 10, 500, 1, 10, 10)));
   gtk_widget_show (alsa_period_time);
-  gtk_table_attach (GTK_TABLE (table6), alsa_period_time, 1, 2, 2, 3,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid6), alsa_period_time, 1, 2, 1, 1);
   gtk_scale_set_value_pos (GTK_SCALE (alsa_period_time), GTK_POS_LEFT);
   gtk_scale_set_digits (GTK_SCALE (alsa_period_time), 0);
 
   label32 = gtk_label_new ("Buffer Time (ms):");
   gtk_widget_show (label32);
-  gtk_table_attach (GTK_TABLE (table6), label32, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid6), label32, 0, 1, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label32), 0, 0.5);
 
-  alsa_buffer_time = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (69, 10, 500, 1, 10, 10)));
+  alsa_buffer_time = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, GTK_ADJUSTMENT (gtk_adjustment_new (69, 10, 500, 1, 10, 10)));
   gtk_widget_show (alsa_buffer_time);
-  gtk_table_attach (GTK_TABLE (table6), alsa_buffer_time, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid6), alsa_buffer_time, 1, 1, 1, 1);
   gtk_scale_set_value_pos (GTK_SCALE (alsa_buffer_time), GTK_POS_LEFT);
   gtk_scale_set_digits (GTK_SCALE (alsa_buffer_time), 0);
 
   label39 = gtk_label_new ("Free HWstats:");
   gtk_widget_show (label39);
-  gtk_table_attach (GTK_TABLE (table6), label39, 0, 1, 4, 5,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid6), label39, 0, 4, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label39), 0, 0.5);
 
   alsa_free_hwstats = gtk_check_button_new_with_mnemonic ("Enabled");
   gtk_widget_show (alsa_free_hwstats);
-  gtk_table_attach (GTK_TABLE (table6), alsa_free_hwstats, 1, 2, 4, 5,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid6), alsa_free_hwstats, 1, 4, 1, 1);
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (alsa_free_hwstats), TRUE);
 
   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);
 
-  table1 = gtk_table_new (5, 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);
+  grid1 = gtk_grid_new ();
+  gtk_widget_show (grid1);
+  gtk_container_add (GTK_CONTAINER (notebook1), grid1);
+  gtk_container_set_border_width (GTK_CONTAINER (grid1), 4);
+  gtk_grid_set_row_spacing (GTK_GRID (grid1), 2);
+  gtk_grid_set_column_spacing (GTK_GRID (grid1), 2);
 
   label5 = gtk_label_new ("XInput device:");
   gtk_widget_show (label5);
-  gtk_table_attach (GTK_TABLE (table1), label5, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid1), label5, 0, 1, 1, 1);
   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, 2, 3,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid1), label6, 0, 2, 1, 1);
   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, 3, 4,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid1), label7, 0, 3, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label7), 0, 0.5);
 
   xinput_device = gtk_combo_box_text_new ();
 //  g_object_set_data (G_OBJECT (GTK_COMBO (xinput_device)->popwin),
 //                     "tXUiParentKey", xinput_device);
+  gtk_widget_set_hexpand(xinput_device, TRUE);
   gtk_widget_show (xinput_device);
-  gtk_table_attach (GTK_TABLE (table1), xinput_device, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid1), xinput_device, 1, 1, 1, 1);
 
 //  combo_entry1 = GTK_COMBO (xinput_device)->entry;
 //  gtk_widget_show (combo_entry1);
   gtk_widget_set_tooltip_text(xinput_device, "Select the input device to use when XInput is enabled. Note: do not use this option if you plan on using your default device (standard mouse).");
 
-  mouse_speed = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, -10, 10, 0.5, 0.1, 0.1)));
+  mouse_speed = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, 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, 2, 3,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid1), mouse_speed, 1, 2, 1, 1);
   gtk_scale_set_value_pos (GTK_SCALE (mouse_speed), GTK_POS_LEFT);
 
-  stop_sense_cycles = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (80, 30, 250, 5, 1, 1)));
+  stop_sense_cycles = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, GTK_ADJUSTMENT (gtk_adjustment_new (80, 30, 250, 5, 1, 1)));
   gtk_widget_show (stop_sense_cycles);
-  gtk_table_attach (GTK_TABLE (table1), stop_sense_cycles, 1, 2, 3, 4,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid1), stop_sense_cycles, 1, 3, 1, 1);
   gtk_scale_set_value_pos (GTK_SCALE (stop_sense_cycles), GTK_POS_LEFT);
 
   label25 = gtk_label_new ("XInput:");
   gtk_widget_show (label25);
-  gtk_table_attach (GTK_TABLE (table1), label25, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid1), label25, 0, 0, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label25), 0, 0.5);
 
   xinput_enable = gtk_check_button_new_with_mnemonic ("Activate XInput support");
   gtk_widget_show (xinput_enable);
-  gtk_table_attach (GTK_TABLE (table1), xinput_enable, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid1), xinput_enable, 1, 0, 1, 1);
   gtk_widget_set_tooltip_text(xinput_enable, "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.");
 
   label37 = gtk_label_new ("Turntable inertia:");
   gtk_widget_show (label37);
-  gtk_table_attach (GTK_TABLE (table1), label37, 0, 1, 4, 5,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid1), label37, 0, 4, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label37), 0, 0.5);
 
-  vtt_inertia = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (11, 1, 310, 0.01, 1, 10)));
+  vtt_inertia = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, GTK_ADJUSTMENT (gtk_adjustment_new (11, 1, 310, 0.01, 1, 10)));
   gtk_widget_show (vtt_inertia);
-  gtk_table_attach (GTK_TABLE (table1), vtt_inertia, 1, 2, 4, 5,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid1), vtt_inertia, 1, 4, 1, 1);
   gtk_scale_set_value_pos (GTK_SCALE (vtt_inertia), GTK_POS_LEFT);
 
   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), 3), label4);
 
-  table2 = gtk_table_new (7, 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);
+  grid2 = gtk_grid_new ();
+  gtk_widget_show (grid2);
+  gtk_container_add (GTK_CONTAINER (notebook1), grid2);
+  gtk_container_set_border_width (GTK_CONTAINER (grid2), 4);
+  gtk_grid_set_row_spacing (GTK_GRID (grid2), 2);
+  gtk_grid_set_column_spacing (GTK_GRID (grid2), 2);
 
   label8 = gtk_label_new ("Tooltips:");
   gtk_widget_show (label8);
-  gtk_table_attach (GTK_TABLE (table2), label8, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid2), label8, 0, 1, 1, 1);
   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_grid_attach (GTK_GRID (grid2), label9, 0, 3, 1, 1);
   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_grid_attach (GTK_GRID (grid2), label10, 0, 4, 1, 1);
   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_grid_attach (GTK_GRID (grid2), label11, 0, 5, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label11), 0, 0.49);
 
   mainwin_tooltips = gtk_check_button_new_with_mnemonic ("Activate tooltips for the main wnidow");
   gtk_widget_show (mainwin_tooltips);
-  gtk_table_attach (GTK_TABLE (table2), mainwin_tooltips, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid2), mainwin_tooltips, 1, 1, 1, 1);
   gtk_widget_set_tooltip_text(mainwin_tooltips, "Enable tooltips for the terminatorX main window.");
 
-  update_idle = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (11, 6, 100, 1, 10, 10)));
+  update_idle = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, GTK_ADJUSTMENT (gtk_adjustment_new (11, 6, 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_grid_attach (GTK_GRID (grid2), update_idle, 1, 3, 1, 1);
   gtk_scale_set_value_pos (GTK_SCALE (update_idle), GTK_POS_LEFT);
   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)));
+  update_delay = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, 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);
+  gtk_grid_attach (GTK_GRID (grid2), update_delay, 1, 4, 1, 1);
   gtk_scale_set_value_pos (GTK_SCALE (update_delay), GTK_POS_LEFT);
 
-  vumeter_decay = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0.8, 0.8, 0.99, 0.01, 0.01, 0.001)));
+  vumeter_decay = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, 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);
+  gtk_grid_attach (GTK_GRID (grid2), vumeter_decay, 1, 5, 1, 1);
   gtk_scale_set_value_pos (GTK_SCALE (vumeter_decay), GTK_POS_LEFT);
   gtk_scale_set_digits (GTK_SCALE (vumeter_decay), 2);
 
   label14 = gtk_label_new ("Nagbox:");
   gtk_widget_show (label14);
-  gtk_table_attach (GTK_TABLE (table2), label14, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid2), label14, 0, 0, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label14), 0, 0.5);
 
   startup_nagbox = gtk_check_button_new_with_mnemonic ("Display nagbox on startup");
   gtk_widget_show (startup_nagbox);
-  gtk_table_attach (GTK_TABLE (table2), startup_nagbox, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid2), startup_nagbox, 1, 0, 1, 1);
   gtk_widget_set_tooltip_text(startup_nagbox, "Display nagbox on startup while loading data.");
 
   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_grid_attach (GTK_GRID (grid2), label12, 0, 2, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label12), 0, 0.5);
 
-  hbox1 = gtk_hbox_new (FALSE, 5);
+  hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
+  gtk_widget_set_hexpand(hbox1, TRUE);
   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);
+  gtk_grid_attach (GTK_GRID (grid2), hbox1, 1, 2, 1, 1);
 
   buttons_text_and_icon = gtk_radio_button_new_with_mnemonic (NULL, "Text + Icon");
   gtk_widget_show (buttons_text_and_icon);
@@ -687,288 +600,221 @@ create_tx_options (void)
 
   label38 = gtk_label_new ("Filename length:");
   gtk_widget_show (label38);
-  gtk_table_attach (GTK_TABLE (table2), label38, 0, 1, 6, 7,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid2), label38, 0, 6, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label38), 0, 0.5);
 
   filename_length_adj = gtk_adjustment_new (8, 3, 255, 1, 10, 0);
   filename_length = gtk_spin_button_new (GTK_ADJUSTMENT (filename_length_adj), 1, 0);
+  gtk_widget_set_hexpand(filename_length, TRUE);
   gtk_widget_show (filename_length);
-  gtk_table_attach (GTK_TABLE (table2), filename_length, 1, 2, 6, 7,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid2), filename_length, 1, 6, 1, 1);
 
   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), 4), label2);
 
-  table8 = gtk_table_new (6, 2, FALSE);
-  gtk_widget_show (table8);
-  gtk_container_add (GTK_CONTAINER (notebook1), table8);
-  gtk_table_set_row_spacings (GTK_TABLE (table8), 2);
-  gtk_table_set_col_spacings (GTK_TABLE (table8), 2);
+  grid8 = gtk_grid_new ();
+  gtk_widget_show (grid8);
+  gtk_container_add (GTK_CONTAINER (notebook1), grid8);
+  gtk_grid_set_row_spacing (GTK_GRID (grid8), 2);
+  gtk_grid_set_column_spacing (GTK_GRID (grid8), 2);
 
   label42 = gtk_label_new ("Background (focus):");
   gtk_widget_show (label42);
-  gtk_table_attach (GTK_TABLE (table8), label42, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid8), label42, 0, 0, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label42), 0, 0.5);
 
   label43 = gtk_label_new ("Background (no focus):");
   gtk_widget_show (label43);
-  gtk_table_attach (GTK_TABLE (table8), label43, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid8), label43, 0, 1, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label43), 0, 0.5);
 
   label44 = gtk_label_new ("Signal (focus):");
   gtk_widget_show (label44);
-  gtk_table_attach (GTK_TABLE (table8), label44, 0, 1, 2, 3,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid8), label44, 0, 2, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label44), 0, 0.5);
 
   label45 = gtk_label_new ("Signal (no focus):");
   gtk_widget_show (label45);
-  gtk_table_attach (GTK_TABLE (table8), label45, 0, 1, 3, 4,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid8), label45, 0, 3, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label45), 0, 0.5);
 
   label46 = gtk_label_new ("Cursor:");
   gtk_widget_show (label46);
-  gtk_table_attach (GTK_TABLE (table8), label46, 0, 1, 4, 5,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid8), label46, 0, 4, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label46), 0, 0.5);
 
   label47 = gtk_label_new ("Cursor (mute):");
   gtk_widget_show (label47);
-  gtk_table_attach (GTK_TABLE (table8), label47, 0, 1, 5, 6,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid8), label47, 0, 5, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label47), 0, 0.5);
 
   wav_display_bg_focus = gtk_button_new_with_mnemonic ("button1");
+  gtk_widget_set_hexpand(wav_display_bg_focus , TRUE);
   gtk_widget_show (wav_display_bg_focus);
-  gtk_table_attach (GTK_TABLE (table8), wav_display_bg_focus, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid8), wav_display_bg_focus, 1, 0, 1, 1);
 
   wav_display_bg_no_focus = gtk_button_new_with_mnemonic ("button2");
+  gtk_widget_set_hexpand(wav_display_bg_no_focus , TRUE);
   gtk_widget_show (wav_display_bg_no_focus);
-  gtk_table_attach (GTK_TABLE (table8), wav_display_bg_no_focus, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid8), wav_display_bg_no_focus, 1, 1, 1, 1);
 
   wav_display_fg_focus = gtk_button_new_with_mnemonic ("button3");
+  gtk_widget_set_hexpand(wav_display_fg_focus , TRUE);
   gtk_widget_show (wav_display_fg_focus);
-  gtk_table_attach (GTK_TABLE (table8), wav_display_fg_focus, 1, 2, 2, 3,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid8), wav_display_fg_focus, 1, 2, 1, 1);
 
   wav_display_fg_no_focus = gtk_button_new_with_mnemonic ("button4");
+  gtk_widget_set_hexpand(wav_display_fg_no_focus , TRUE);
   gtk_widget_show (wav_display_fg_no_focus);
-  gtk_table_attach (GTK_TABLE (table8), wav_display_fg_no_focus, 1, 2, 3, 4,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid8), wav_display_fg_no_focus, 1, 3, 1, 1);
 
   wav_display_cursor = gtk_button_new_with_mnemonic ("button5");
+  gtk_widget_set_hexpand(wav_display_cursor , TRUE);
   gtk_widget_show (wav_display_cursor);
-  gtk_table_attach (GTK_TABLE (table8), wav_display_cursor, 1, 2, 4, 5,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid8), wav_display_cursor, 1, 4, 1, 1);
 
   wav_display_cursor_mute = gtk_button_new_with_mnemonic ("button6");
+  gtk_widget_set_hexpand(wav_display_cursor_mute , TRUE);
   gtk_widget_show (wav_display_cursor_mute);
-  gtk_table_attach (GTK_TABLE (table8), wav_display_cursor_mute, 1, 2, 5, 6,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid8), wav_display_cursor_mute, 1, 5, 1, 1);
 
   label41 = gtk_label_new ("Audio Colors");
   gtk_widget_show (label41);
   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 5), label41);
 
-  table9 = gtk_table_new (4, 2, FALSE);
-  gtk_widget_show (table9);
-  gtk_container_add (GTK_CONTAINER (notebook1), table9);
-  gtk_container_set_border_width (GTK_CONTAINER (table9), 4);
-  gtk_table_set_row_spacings (GTK_TABLE (table9), 2);
-  gtk_table_set_col_spacings (GTK_TABLE (table9), 2);
+  grid9 = gtk_grid_new ();
+  gtk_widget_show (grid9);
+  gtk_container_add (GTK_CONTAINER (notebook1), grid9);
+  gtk_container_set_border_width (GTK_CONTAINER (grid9), 4);
+  gtk_grid_set_row_spacing (GTK_GRID (grid9), 2);
+  gtk_grid_set_column_spacing (GTK_GRID (grid9), 2);
 
   label53 = gtk_label_new ("Background:");
   gtk_widget_show (label53);
-  gtk_table_attach (GTK_TABLE (table9), label53, 0, 1, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid9), label53, 0, 0, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label53), 0, 0.5);
 
   label54 = gtk_label_new ("Regular Signal:");
   gtk_widget_show (label54);
-  gtk_table_attach (GTK_TABLE (table9), label54, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid9), label54, 0, 1, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label54), 0, 0.5);
 
   label55 = gtk_label_new ("Loud Signal:");
   gtk_widget_show (label55);
-  gtk_table_attach (GTK_TABLE (table9), label55, 0, 1, 2, 3,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid9), label55, 0, 2, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label55), 0, 0.5);
 
   label56 = gtk_label_new ("Scale Opacity:");
   gtk_widget_show (label56);
-  gtk_table_attach (GTK_TABLE (table9), label56, 0, 1, 3, 4,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid9), label56, 0, 3, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label56), 0, 0.5);
 
-  vu_meter_border_intensity = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0.07, 0, 1, 0.01, 0, 0)));
+  vu_meter_border_intensity = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL,  GTK_ADJUSTMENT (gtk_adjustment_new (0.07, 0, 1, 0.01, 0, 0)));
+  gtk_widget_set_hexpand(vu_meter_border_intensity, TRUE);
   gtk_widget_show (vu_meter_border_intensity);
-  gtk_table_attach (GTK_TABLE (table9), vu_meter_border_intensity, 1, 2, 3, 4,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (GTK_FILL), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid9), vu_meter_border_intensity, 1, 3, 1, 1);
   gtk_scale_set_value_pos (GTK_SCALE (vu_meter_border_intensity), GTK_POS_LEFT);
   gtk_scale_set_digits (GTK_SCALE (vu_meter_border_intensity), 2);
 
   vu_meter_bg = gtk_button_new_with_mnemonic ("button7");
   gtk_widget_show (vu_meter_bg);
-  gtk_table_attach (GTK_TABLE (table9), vu_meter_bg, 1, 2, 0, 1,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid9), vu_meter_bg, 1, 0, 1, 1);
 
   vu_meter_normal = gtk_button_new_with_mnemonic ("button8");
   gtk_widget_show (vu_meter_normal);
-  gtk_table_attach (GTK_TABLE (table9), vu_meter_normal, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid9), vu_meter_normal, 1, 1, 1, 1);
 
   vu_meter_loud = gtk_button_new_with_mnemonic ("button9");
   gtk_widget_show (vu_meter_loud);
-  gtk_table_attach (GTK_TABLE (table9), vu_meter_loud, 1, 2, 2, 3,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid9), vu_meter_loud, 1, 2, 1, 1);
 
   label52 = gtk_label_new ("VU Colors");
   gtk_widget_show (label52);
   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 6), label52);
 
-  table3 = gtk_table_new (8, 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);
+  grid3 = gtk_grid_new ();
+  gtk_widget_show (grid3);
+  gtk_container_add (GTK_CONTAINER (notebook1), grid3);
+  gtk_container_set_border_width (GTK_CONTAINER (grid3), 4);
+  gtk_grid_set_row_spacing (GTK_GRID (grid3), 2);
+  gtk_grid_set_column_spacing (GTK_GRID (grid3), 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_grid_attach (GTK_GRID (grid3), label13, 0, 0, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label13), 0, 0.5);
 
   soundfile_editor = gtk_entry_new ();
+  gtk_widget_set_hexpand(soundfile_editor, TRUE);
   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);
+  gtk_grid_attach (GTK_GRID (grid3), soundfile_editor, 1, 0, 1, 1);
   gtk_widget_set_tooltip_text(soundfile_editor, "Enter the command to run your favourite soundfile editor. It will be started when you choose \"Edit File\" from the turntable's file menu.");
 
   label26 = gtk_label_new ("Pre-listen:");
   gtk_widget_show (label26);
-  gtk_table_attach (GTK_TABLE (table3), label26, 0, 1, 3, 4,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid3), label26, 0, 3, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label26), 0, 0.5);
 
   prelisten_enabled = gtk_check_button_new_with_mnemonic ("Play audiofiles in file dialogs");
   gtk_widget_show (prelisten_enabled);
-  gtk_table_attach (GTK_TABLE (table3), prelisten_enabled, 1, 2, 3, 4,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid3), prelisten_enabled, 1, 3, 1, 1);
   gtk_widget_set_tooltip_text(prelisten_enabled, "When enabled soundfiles will be playedback when selected in a file dialog (before loading them).");
 
   label31 = gtk_label_new ("LADSPA RDF path:");
   gtk_widget_show (label31);
-  gtk_table_attach (GTK_TABLE (table3), label31, 0, 1, 1, 2,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid3), label31, 0, 1, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label31), 0, 0.5);
 
   ladspa_rdf_path = gtk_entry_new ();
   gtk_widget_show (ladspa_rdf_path);
-  gtk_table_attach (GTK_TABLE (table3), ladspa_rdf_path, 1, 2, 1, 2,
-                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid3), ladspa_rdf_path, 1, 1, 1, 1);
 
   label33 = gtk_label_new ("Compression:");
   gtk_widget_show (label33);
-  gtk_table_attach (GTK_TABLE (table3), label33, 0, 1, 2, 3,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid3), label33, 0, 2, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label33), 0, 0.5);
 
   compress_set_files = gtk_check_button_new_with_mnemonic ("Compress terminatorX set files");
   gtk_widget_show (compress_set_files);
-  gtk_table_attach (GTK_TABLE (table3), compress_set_files, 1, 2, 2, 3,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid3), compress_set_files, 1, 2, 1, 1);
 
   label40 = gtk_label_new ("MIDI:");
   gtk_widget_show (label40);
-  gtk_table_attach (GTK_TABLE (table3), label40, 0, 1, 4, 5,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid3), label40, 0, 4, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label40), 0, 0.5);
 
   reconnect_enabled = gtk_check_button_new_with_mnemonic ("Restore MIDI connections on startup");
   gtk_widget_show (reconnect_enabled);
-  gtk_table_attach (GTK_TABLE (table3), reconnect_enabled, 1, 2, 4, 5,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid3), reconnect_enabled, 1, 4, 1, 1);
   gtk_widget_set_tooltip_text(reconnect_enabled, "When enabled soundfiles will be playedback when selected in a file dialog (before loading them).");
 
   label57 = gtk_label_new ("Quit:");
   gtk_widget_show (label57);
-  gtk_table_attach (GTK_TABLE (table3), label57, 0, 1, 5, 6,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid3), label57, 0, 5, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label57), 0, 0.5);
 
   quit_confirm = gtk_check_button_new_with_mnemonic ("Ask for \"Quit\" confirmation");
   gtk_widget_show (quit_confirm);
-  gtk_table_attach (GTK_TABLE (table3), quit_confirm, 1, 2, 5, 6,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid3), quit_confirm, 1, 5, 1, 1);
 
   label58 = gtk_label_new ("Plugins:");
   gtk_widget_show (label58);
-  gtk_table_attach (GTK_TABLE (table3), label58, 0, 1, 6, 7,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid3), label58, 0, 6, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label58), 0, 0.5);
 
   label59 = gtk_label_new ("");
   gtk_widget_show (label59);
-  gtk_table_attach (GTK_TABLE (table3), label59, 0, 1, 7, 8,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid3), label59, 0, 7, 1, 1);
   gtk_misc_set_alignment (GTK_MISC (label59), 0, 0.5);
 
   verbose_plugin_loading = gtk_check_button_new_with_mnemonic ("Verbose plugin loading");
   gtk_widget_show (verbose_plugin_loading);
-  gtk_table_attach (GTK_TABLE (table3), verbose_plugin_loading, 1, 2, 6, 7,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid3), verbose_plugin_loading, 1, 6, 1, 1);
 
   force_nonrt_plugins = gtk_check_button_new_with_mnemonic ("Force loading of \"non-RT\" plugins ");
   gtk_widget_show (force_nonrt_plugins);
-  gtk_table_attach (GTK_TABLE (table3), force_nonrt_plugins, 1, 2, 7, 8,
-                    (GtkAttachOptions) (GTK_FILL),
-                    (GtkAttachOptions) (0), 0, 0);
+  gtk_grid_attach (GTK_GRID (grid3), force_nonrt_plugins, 1, 7, 1, 1);
 
   label3 = gtk_label_new ("Misc");
   gtk_widget_show (label3);
@@ -1002,34 +848,34 @@ create_tx_options (void)
                     NULL);
   g_signal_connect_swapped ((gpointer) alsa_buffer_time, "value_changed",
                             G_CALLBACK (on_alsa_buffer_time_value_changed),
-                            GTK_OBJECT (alsa_period_time));
+                            G_OBJECT (alsa_period_time));
   g_signal_connect_swapped ((gpointer) wav_display_bg_focus, "clicked",
                             G_CALLBACK (color_clicked),
-                            GTK_OBJECT (wav_display_bg_focus));
+                            G_OBJECT (wav_display_bg_focus));
   g_signal_connect_swapped ((gpointer) wav_display_bg_no_focus, "clicked",
                             G_CALLBACK (color_clicked),
-                            GTK_OBJECT (wav_display_bg_no_focus));
+                            G_OBJECT (wav_display_bg_no_focus));
   g_signal_connect_swapped ((gpointer) wav_display_fg_focus, "clicked",
                             G_CALLBACK (color_clicked),
-                            GTK_OBJECT (wav_display_fg_focus));
+                            G_OBJECT (wav_display_fg_focus));
   g_signal_connect_swapped ((gpointer) wav_display_fg_no_focus, "clicked",
                             G_CALLBACK (color_clicked),
-                            GTK_OBJECT (wav_display_fg_no_focus));
+                            G_OBJECT (wav_display_fg_no_focus));
   g_signal_connect_swapped ((gpointer) wav_display_cursor, "clicked",
                             G_CALLBACK (color_clicked),
-                            GTK_OBJECT (wav_display_cursor));
+                            G_OBJECT (wav_display_cursor));
   g_signal_connect_swapped ((gpointer) wav_display_cursor_mute, "clicked",
                             G_CALLBACK (color_clicked),
-                            GTK_OBJECT (wav_display_cursor_mute));
+                            G_OBJECT (wav_display_cursor_mute));
   g_signal_connect_swapped ((gpointer) vu_meter_bg, "clicked",
                             G_CALLBACK (color_clicked),
-                            GTK_OBJECT (vu_meter_bg));
+                            G_OBJECT (vu_meter_bg));
   g_signal_connect_swapped ((gpointer) vu_meter_normal, "clicked",
                             G_CALLBACK (color_clicked),
-                            GTK_OBJECT (vu_meter_normal));
+                            G_OBJECT (vu_meter_normal));
   g_signal_connect_swapped ((gpointer) vu_meter_loud, "clicked",
                             G_CALLBACK (color_clicked),
-                            GTK_OBJECT (vu_meter_loud));
+                            G_OBJECT (vu_meter_loud));
   g_signal_connect ((gpointer) pref_reset, "clicked",
                     G_CALLBACK (on_pref_reset_clicked),
                     NULL);
@@ -1047,7 +893,7 @@ create_tx_options (void)
   TX_UI_HOOKUP_OBJECT_NO_REF (tx_options, tx_options, "tx_options");
   TX_UI_HOOKUP_OBJECT_NO_REF (tx_options, dialog_vbox3, "dialog_vbox3");
   TX_UI_HOOKUP_OBJECT (tx_options, notebook1, "notebook1");
-  TX_UI_HOOKUP_OBJECT (tx_options, table4, "table4");
+  TX_UI_HOOKUP_OBJECT (tx_options, grid4, "grid4");
   TX_UI_HOOKUP_OBJECT (tx_options, label18, "label18");
   TX_UI_HOOKUP_OBJECT (tx_options, hbox2, "hbox2");
   TX_UI_HOOKUP_OBJECT (tx_options, oss_driver, "oss_driver");
@@ -1056,7 +902,7 @@ create_tx_options (void)
   TX_UI_HOOKUP_OBJECT (tx_options, use_realtime_label, "use_realtime_label");
   TX_UI_HOOKUP_OBJECT (tx_options, use_realtime, "use_realtime");
   TX_UI_HOOKUP_OBJECT (tx_options, label1, "label1");
-  TX_UI_HOOKUP_OBJECT (tx_options, table5, "table5");
+  TX_UI_HOOKUP_OBJECT (tx_options, grid5, "grid5");
   TX_UI_HOOKUP_OBJECT (tx_options, label21, "label21");
   TX_UI_HOOKUP_OBJECT (tx_options, label22, "label22");
   TX_UI_HOOKUP_OBJECT (tx_options, label23, "label23");
@@ -1066,7 +912,7 @@ create_tx_options (void)
   TX_UI_HOOKUP_OBJECT (tx_options, oss_buffersize, "oss_buffersize");
   TX_UI_HOOKUP_OBJECT (tx_options, oss_samplerate, "oss_samplerate");
   TX_UI_HOOKUP_OBJECT (tx_options, label15, "label15");
-  TX_UI_HOOKUP_OBJECT (tx_options, table6, "table6");
+  TX_UI_HOOKUP_OBJECT (tx_options, grid6, "grid6");
   TX_UI_HOOKUP_OBJECT (tx_options, label27, "label27");
   TX_UI_HOOKUP_OBJECT (tx_options, label29, "label29");
   TX_UI_HOOKUP_OBJECT (tx_options, label30, "label30");
@@ -1078,7 +924,7 @@ create_tx_options (void)
   TX_UI_HOOKUP_OBJECT (tx_options, label39, "label39");
   TX_UI_HOOKUP_OBJECT (tx_options, alsa_free_hwstats, "alsa_free_hwstats");
   TX_UI_HOOKUP_OBJECT (tx_options, label16, "label16");
-  TX_UI_HOOKUP_OBJECT (tx_options, table1, "table1");
+  TX_UI_HOOKUP_OBJECT (tx_options, grid1, "grid1");
   TX_UI_HOOKUP_OBJECT (tx_options, label5, "label5");
   TX_UI_HOOKUP_OBJECT (tx_options, label6, "label6");
   TX_UI_HOOKUP_OBJECT (tx_options, label7, "label7");
@@ -1090,7 +936,7 @@ create_tx_options (void)
   TX_UI_HOOKUP_OBJECT (tx_options, label37, "label37");
   TX_UI_HOOKUP_OBJECT (tx_options, vtt_inertia, "vtt_inertia");
   TX_UI_HOOKUP_OBJECT (tx_options, label4, "label4");
-  TX_UI_HOOKUP_OBJECT (tx_options, table2, "table2");
+  TX_UI_HOOKUP_OBJECT (tx_options, grid2, "grid2");
   TX_UI_HOOKUP_OBJECT (tx_options, label8, "label8");
   TX_UI_HOOKUP_OBJECT (tx_options, label9, "label9");
   TX_UI_HOOKUP_OBJECT (tx_options, label10, "label10");
@@ -1109,7 +955,7 @@ create_tx_options (void)
   TX_UI_HOOKUP_OBJECT (tx_options, label38, "label38");
   TX_UI_HOOKUP_OBJECT (tx_options, filename_length, "filename_length");
   TX_UI_HOOKUP_OBJECT (tx_options, label2, "label2");
-  TX_UI_HOOKUP_OBJECT (tx_options, table8, "table8");
+  TX_UI_HOOKUP_OBJECT (tx_options, grid8, "grid8");
   TX_UI_HOOKUP_OBJECT (tx_options, label42, "label42");
   TX_UI_HOOKUP_OBJECT (tx_options, label43, "label43");
   TX_UI_HOOKUP_OBJECT (tx_options, label44, "label44");
@@ -1123,7 +969,7 @@ create_tx_options (void)
   TX_UI_HOOKUP_OBJECT (tx_options, wav_display_cursor, "wav_display_cursor");
   TX_UI_HOOKUP_OBJECT (tx_options, wav_display_cursor_mute, "wav_display_cursor_mute");
   TX_UI_HOOKUP_OBJECT (tx_options, label41, "label41");
-  TX_UI_HOOKUP_OBJECT (tx_options, table9, "table9");
+  TX_UI_HOOKUP_OBJECT (tx_options, grid9, "grid9");
   TX_UI_HOOKUP_OBJECT (tx_options, label53, "label53");
   TX_UI_HOOKUP_OBJECT (tx_options, label54, "label54");
   TX_UI_HOOKUP_OBJECT (tx_options, label55, "label55");
@@ -1133,7 +979,7 @@ create_tx_options (void)
   TX_UI_HOOKUP_OBJECT (tx_options, vu_meter_normal, "vu_meter_normal");
   TX_UI_HOOKUP_OBJECT (tx_options, vu_meter_loud, "vu_meter_loud");
   TX_UI_HOOKUP_OBJECT (tx_options, label52, "label52");
-  TX_UI_HOOKUP_OBJECT (tx_options, table3, "table3");
+  TX_UI_HOOKUP_OBJECT (tx_options, grid3, "grid3");
   TX_UI_HOOKUP_OBJECT (tx_options, label13, "label13");
   TX_UI_HOOKUP_OBJECT (tx_options, soundfile_editor, "soundfile_editor");
   TX_UI_HOOKUP_OBJECT (tx_options, label26, "label26");
@@ -1183,7 +1029,7 @@ create_tx_del_mode (void)
   dialog_vbox4 = gtk_dialog_get_content_area(GTK_DIALOG (tx_del_mode));
   gtk_widget_show (dialog_vbox4);
 
-  vbox2 = gtk_vbox_new (FALSE, 2);
+  vbox2 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 2);
   gtk_widget_show (vbox2);
   gtk_box_pack_start (GTK_BOX (dialog_vbox4), vbox2, TRUE, TRUE, 0);
   gtk_container_set_border_width (GTK_CONTAINER (vbox2), 4);
@@ -1192,11 +1038,11 @@ create_tx_del_mode (void)
   gtk_widget_show (delmode_label);
   gtk_box_pack_start (GTK_BOX (vbox2), delmode_label, TRUE, FALSE, 0);
 
-  hbox3 = gtk_hbox_new (FALSE, 0);
+  hbox3 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
   gtk_widget_show (hbox3);
   gtk_box_pack_start (GTK_BOX (vbox2), hbox3, TRUE, FALSE, 0);
 
-  vbox3 = gtk_vbox_new (FALSE, 0);
+  vbox3 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
   gtk_widget_show (vbox3);
   gtk_box_pack_start (GTK_BOX (hbox3), vbox3, TRUE, FALSE, 0);
 
@@ -1271,7 +1117,7 @@ create_tX_midilearn (void)
   dialog_vbox5 = gtk_dialog_get_content_area(GTK_DIALOG (tX_midilearn));
   gtk_widget_show (dialog_vbox5);
 
-  vbox4 = gtk_vbox_new (FALSE, 0);
+  vbox4 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
   gtk_widget_show (vbox4);
   gtk_box_pack_start (GTK_BOX (dialog_vbox5), vbox4, TRUE, TRUE, 0);
   gtk_container_set_border_width (GTK_CONTAINER (vbox4), 4);
@@ -1300,52 +1146,22 @@ create_tX_midilearn (void)
 }
 
 GtkWidget*
-create_tX_color_selection (void)
+create_tX_color_chooser (GtkWidget *parent)
 {
-  GtkWidget *tX_color_selection;
-  GtkWidget *ok_button1;
-  GtkWidget *cancel_button1;
-  GtkWidget *help_button1;
-  GtkWidget *color_selection;
+  GtkWidget *tX_color_chooser;
   GValue value = { 0, };
   g_value_init(&value, GTK_TYPE_WIDGET);
 
-  tX_color_selection = gtk_color_selection_dialog_new ("Select Color");
-  gtk_window_set_resizable (GTK_WINDOW (tX_color_selection), FALSE);
-
-  g_object_get_property(G_OBJECT(tX_color_selection), "ok-button", &value);
-  ok_button1 = GTK_WIDGET(g_value_get_object(&value));
-  gtk_widget_show (ok_button1);
-  gtk_widget_set_can_default(ok_button1, TRUE);
-
-  g_object_get_property(G_OBJECT(tX_color_selection), "cancel-button", &value);
-  cancel_button1 = GTK_WIDGET(g_value_get_object(&value));
-  gtk_widget_show (cancel_button1);
-  gtk_widget_set_can_default(cancel_button1, TRUE);
-
-  g_object_get_property(G_OBJECT(tX_color_selection), "help-button", &value);
-  help_button1 = GTK_WIDGET(g_value_get_object(&value));
-  gtk_widget_show (help_button1);
-  gtk_widget_set_can_default(help_button1, TRUE);
-
-  color_selection = gtk_color_selection_dialog_get_color_selection (GTK_COLOR_SELECTION_DIALOG(tX_color_selection));
-  gtk_widget_show (color_selection);
-  gtk_color_selection_set_has_opacity_control (GTK_COLOR_SELECTION (color_selection), FALSE);
+  tX_color_chooser = gtk_color_chooser_dialog_new ("Select Color", GTK_WINDOW(parent));
+  gtk_window_set_resizable (GTK_WINDOW (tX_color_chooser), FALSE);
+  
+  gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(tX_color_chooser), FALSE);   
 
-  g_signal_connect ((gpointer) ok_button1, "clicked",
-                    G_CALLBACK (on_color_selection_ok_clicked),
-                    NULL);
-  g_signal_connect ((gpointer) cancel_button1, "clicked",
-                    G_CALLBACK (on_color_selection_cancel_clicked),
-                    NULL);
+  g_signal_connect(tX_color_chooser, "response", G_CALLBACK(color_response), NULL);
 
   /* Store pointers to all widgets, for use by lookup_widget(). */
-  TX_UI_HOOKUP_OBJECT_NO_REF (tX_color_selection, tX_color_selection, "tX_color_selection");
-  TX_UI_HOOKUP_OBJECT_NO_REF (tX_color_selection, ok_button1, "ok_button1");
-  TX_UI_HOOKUP_OBJECT_NO_REF (tX_color_selection, cancel_button1, "cancel_button1");
-  TX_UI_HOOKUP_OBJECT_NO_REF (tX_color_selection, help_button1, "help_button1");
-  TX_UI_HOOKUP_OBJECT_NO_REF (tX_color_selection, color_selection, "color_selection");
-
-  return tX_color_selection;
+  TX_UI_HOOKUP_OBJECT_NO_REF (tX_color_chooser, tX_color_chooser, "tX_color_chooser");
+  
+  return tX_color_chooser;
 }
 
index 9bffa4126bf35517c1f2cd9809a046311da3ac13..c01d3e90e7c424bf80af87016ee22ee705f29dcf 100644 (file)
@@ -7,4 +7,4 @@ GtkWidget* create_tx_adjust (void);
 GtkWidget* create_tx_options (void);
 GtkWidget* create_tx_del_mode (void);
 GtkWidget* create_tX_midilearn (void);
-GtkWidget* create_tX_color_selection (void);
+GtkWidget* create_tX_color_chooser (GtkWidget *parentS);
index d5eb9d87dde0e91c503fc8db5554a7b77abd4122..9066e818cdd3e6c0601e4911fa46a9dc1dd619a5 100644 (file)
@@ -638,7 +638,7 @@ static gint fx_button_pressed(GtkWidget *wid, GdkEventButton *event, vtt_class *
 
        LADSPA_Class::set_current_vtt(vtt);
 
-       if (g->ladspa_menu) gtk_object_destroy(GTK_OBJECT(g->ladspa_menu));
+       if (g->ladspa_menu) gtk_widget_destroy(GTK_WIDGET(g->ladspa_menu));
        g->ladspa_menu=LADSPA_Class::get_ladspa_menu();
        gtk_menu_popup (GTK_MENU(g->ladspa_menu), NULL, NULL, NULL, NULL, 0, 0);
 
@@ -654,7 +654,7 @@ static gint stereo_fx_button_pressed(GtkWidget *wid, GdkEventButton *event, vtt_
 
        LADSPA_Class::set_current_vtt(vtt);
 
-       if (g->ladspa_menu) gtk_object_destroy(GTK_OBJECT(g->ladspa_menu));
+       if (g->ladspa_menu) gtk_widget_destroy(GTK_WIDGET(g->ladspa_menu));
        g->ladspa_menu=LADSPA_Class::get_stereo_ladspa_menu();
        gtk_menu_popup (GTK_MENU(g->ladspa_menu), NULL, NULL, NULL, NULL, 0, 0);
 
@@ -782,14 +782,15 @@ void build_vtt_gui(vtt_class *vtt)
        g->ladspa_menu=NULL;
 
        /* Building Audio Box */
-       g->audio_box=gtk_vbox_new(FALSE,2);
+       g->audio_box=gtk_box_new(GTK_ORIENTATION_VERTICAL,2);
        gtk_widget_show(g->audio_box);
        
-       tempbox2=gtk_hbox_new(FALSE,2);
+       tempbox2=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,2);
        gtk_widget_show(tempbox2);
        gtk_box_pack_start(GTK_BOX(g->audio_box), tempbox2, WID_FIX);
        
-       tempbox=gtk_hbox_new(TRUE,2);
+       tempbox=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,2);
+       gtk_box_set_homogeneous(GTK_BOX(tempbox), TRUE);
        gtk_widget_show(tempbox);
        gtk_box_pack_start(GTK_BOX(tempbox2), tempbox, WID_DYN);
 
@@ -829,13 +830,13 @@ void build_vtt_gui(vtt_class *vtt)
        }
 #endif
 
-       tempbox=gtk_hbox_new(FALSE, 2);
+       tempbox=gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 2);
 
        g->display=gtk_tx_new(vtt->buffer, vtt->samples_in_buffer);
        gtk_box_pack_start(GTK_BOX(tempbox), g->display, WID_DYN);
        gtk_widget_show(g->display);    
        
-       g->zoom=gtk_vscale_new_with_range(0,99.0,1.0);
+       g->zoom=gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL, 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);
@@ -851,10 +852,10 @@ void build_vtt_gui(vtt_class *vtt)
        
        /* Building Control Box */
        
-       g->control_box=gtk_vbox_new(FALSE,2);
+       g->control_box=gtk_box_new(GTK_ORIENTATION_VERTICAL,2);
        gtk_widget_show(g->control_box);
 
-       tempbox2=gtk_hbox_new(FALSE, 2);
+       tempbox2=gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 2);
        gtk_widget_show(tempbox2);
        gtk_box_pack_start(GTK_BOX(g->control_box), tempbox2, WID_FIX);
 
@@ -876,9 +877,12 @@ void build_vtt_gui(vtt_class *vtt)
        gtk_widget_show(g->scrolled_win);
        gtk_box_pack_start(GTK_BOX(g->control_box), g->scrolled_win, WID_DYN);
                                    
-       g->control_subbox=gtk_vbox_new(FALSE,0);
-       gtk_scrolled_window_add_with_viewport (
-                   GTK_SCROLLED_WINDOW (g->scrolled_win), g->control_subbox);
+       g->control_subbox=gtk_box_new(GTK_ORIENTATION_VERTICAL,0);
+#if GTK_CHECK_VERSION(3,8,0)
+       gtk_container_add(GTK_CONTAINER(g->scrolled_win), g->control_subbox);
+#else
+       gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(g->scrolled_win), g->control_subbox);
+#endif
        gtk_widget_show(g->control_subbox);
                   
 
@@ -890,9 +894,10 @@ void build_vtt_gui(vtt_class *vtt)
        g->name = gtk_entry_new();
        gtk_entry_set_max_length(GTK_ENTRY(g->name), 256);
        gtk_entry_set_text(GTK_ENTRY(g->name), vtt->name);
+       gtk_entry_set_width_chars(GTK_ENTRY(g->name), 10);
        p->add_client_widget(g->name);
        gui_set_tooltip(g->name, "Enter the turntable's name here.");
-       gtk_widget_set_size_request(g->name, 40, -1);
+       //gtk_widget_set_size_request(g->name, 40, -1);
 
        g->del=gtk_button_new_with_label("Delete");
        gui_set_tooltip(g->del, "Click here to annihilate this turntable. All events recorded for this turntable will be erased, too.");
@@ -947,7 +952,7 @@ void build_vtt_gui(vtt_class *vtt)
 
        gtk_box_pack_start(GTK_BOX(g->control_subbox), p->get_widget(), WID_FIX);
        
-       g->fx_box=gtk_vbox_new(FALSE,0);
+       g->fx_box=gtk_box_new(GTK_ORIENTATION_VERTICAL,0);
        gtk_box_pack_start(GTK_BOX(g->control_subbox), g->fx_box, WID_FIX);
        gtk_widget_show(g->fx_box);
        
@@ -1027,7 +1032,7 @@ void build_vtt_gui(vtt_class *vtt)
 
        gtk_box_pack_start(GTK_BOX(g->fx_box), p->get_widget(), WID_FIX);
        
-       g->stereo_fx_box=gtk_vbox_new(FALSE, 0);
+       g->stereo_fx_box=gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
        gtk_box_pack_start(GTK_BOX(g->control_subbox), g->stereo_fx_box, WID_FIX);
        gtk_widget_show(g->stereo_fx_box);
        
@@ -1040,11 +1045,11 @@ void build_vtt_gui(vtt_class *vtt)
 
        /* Output */
        
-       tempbox=gtk_hbox_new(FALSE,2);
+       tempbox=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,2);
        gtk_widget_show(tempbox);
        gtk_box_pack_end(GTK_BOX(g->control_box), tempbox, WID_FIX);
        
-       tempbox2=gtk_vbox_new(FALSE,0);
+       tempbox2=gtk_box_new(GTK_ORIENTATION_VERTICAL,0);
        gtk_widget_show(tempbox2);
        gtk_box_pack_start(GTK_BOX(tempbox), tempbox2, WID_FIX);
        
@@ -1060,7 +1065,7 @@ void build_vtt_gui(vtt_class *vtt)
        gtk_box_pack_start(GTK_BOX(tempbox2), g->pand->get_widget(), WID_FIX);
        gui_set_tooltip(g->pand->get_entry(), "Specifies the position of this turntable within the stereo spectrum: -1 -> left, 0-> center, 1->right.");
 
-       tempbox3=gtk_hbox_new(FALSE,2);
+       tempbox3=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,2);
        gtk_widget_show(tempbox3);
 
        g->mute=gtk_check_button_new_with_label("M");
@@ -1077,12 +1082,12 @@ void build_vtt_gui(vtt_class *vtt)
 
        gtk_box_pack_start(GTK_BOX(tempbox2), tempbox3, WID_FIX);
 
-       tempbox2=gtk_hbox_new(FALSE,0);
+       tempbox2=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,0);
        gtk_widget_show(tempbox2);
        gtk_box_pack_start(GTK_BOX(tempbox), tempbox2, WID_FIX);
        
        g->volume=GTK_ADJUSTMENT(gtk_adjustment_new(2.0-vtt->rel_volume, 0, 2, 0.01, 0.01, 0.01));
-       dummy=gtk_vscale_new(GTK_ADJUSTMENT(g->volume)); 
+       dummy=gtk_scale_new(GTK_ORIENTATION_VERTICAL, GTK_ADJUSTMENT(g->volume)); 
        gtk_scale_set_draw_value(GTK_SCALE(dummy), False);
        gui_set_tooltip(dummy, "Adjust this turntable's volume.");
        g_signal_connect(G_OBJECT(dummy), "button_press_event", (GCallback) tX_seqpar::tX_seqpar_press, &vtt->sp_volume);       
@@ -1092,7 +1097,7 @@ void build_vtt_gui(vtt_class *vtt)
 
        g->flash=gtk_tx_flash_new();
        gtk_box_pack_start(GTK_BOX(tempbox2), g->flash, WID_FIX);
-       gtk_widget_show(g->flash);              
+       gtk_widget_show(g->flash);
 
        gui_connect_signals(vtt);
        
@@ -1138,7 +1143,7 @@ GtkWidget *vg_create_fx_bar(vtt_class *vtt, vtt_fx *effect, int showdel)
        GtkWidget *pixmap;
        GtkWidget *button;
        
-       box=gtk_hbox_new(FALSE,0);
+       box=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,0);
 
        if (showdel) {
                button=gtk_button_new();
index ef92f46a695c1e8c68d52b6c2862c2b59b3fc877..f2ce31b527a528b93b41283033aaccd48b7ce07f 100644 (file)
 static void gtk_tx_class_init(GtkTxClass *);
 static void gtk_tx_init(GtkTx * tx);
 GtkWidget *gtk_tx_new(int16_t * wavdata, int wavsamples);
-static void gtk_tx_destroy(GtkObject * object);
+static void gtk_tx_destroy(GtkWidget * widget);
 void gtk_tx_set_data(GtkTx * tx, int16_t * wavdata, int wavsamples);
 static void gtk_tx_realize(GtkWidget * widget);
-static void gtk_tx_size_request(GtkWidget * widget, GtkRequisition * requisition);
+
+static void gtk_tx_get_preferred_width (GtkWidget *widget, gint *minimal_height, gint *natural_height);
+static void gtk_tx_get_preferred_height (GtkWidget *widget, gint *minimal_height, gint *natural_height);
+
 static void gtk_tx_size_allocate(GtkWidget * widget, GtkAllocation * allocation);
-static gint gtk_tx_expose(GtkWidget * widget, GdkEventExpose * event);
+static gboolean gtk_tx_draw(GtkWidget * widget, cairo_t *cr);
 static void gtk_tx_update(GtkTx * tx);
 static void gtk_tx_prepare(GtkWidget * widget);
 
@@ -80,19 +83,18 @@ GType gtk_tx_get_type() {
 }
 
 static void gtk_tx_class_init(GtkTxClass * gclass) {
-       GtkObjectClass *object_class;
        GtkWidgetClass *widget_class;
        
-       object_class = (GtkObjectClass *) gclass;
        widget_class = (GtkWidgetClass *) gclass;
        
        parent_class = (GtkWidgetClass *) g_type_class_peek(gtk_widget_get_type());
        
-       object_class->destroy = gtk_tx_destroy;
+       widget_class->destroy = gtk_tx_destroy;
        
        widget_class->realize = gtk_tx_realize;
-       widget_class->expose_event = gtk_tx_expose;
-       widget_class->size_request = gtk_tx_size_request;
+       widget_class->draw = gtk_tx_draw;
+       widget_class->get_preferred_height = gtk_tx_get_preferred_height;
+       widget_class->get_preferred_width = gtk_tx_get_preferred_width;
        widget_class->size_allocate = gtk_tx_size_allocate;
 //     widget_class->button_press_event = gtk_tx_button_press;
 //     widget_class->button_release_event = gtk_tx_button_release;
@@ -108,44 +110,32 @@ static void gtk_tx_class_init(GtkTxClass * gclass) {
 
 void gtk_tx_update_colors(GtkTx *tx)
 {
-       int i;
-       
-       if (tx->colors_allocated) {
-               gdk_colormap_free_colors(gtk_widget_get_colormap(GTK_WIDGET(tx)), tx->colors, 6);
-       }
-       
-       gdk_color_parse(globals.wav_display_bg_focus, &tx->colors[COL_BG_FOCUS]);
-       gdk_color_parse(globals.wav_display_bg_no_focus, &tx->colors[COL_BG_NO_FOCUS]);
-       
-       gdk_color_parse(globals.wav_display_fg_focus, &tx->colors[COL_FG_FOCUS]);
-       gdk_color_parse(globals.wav_display_fg_no_focus, &tx->colors[COL_FG_NO_FOCUS]);
-       
-       gdk_color_parse(globals.wav_display_cursor, &tx->colors[COL_CURSOR]);
-       gdk_color_parse(globals.wav_display_cursor_mute, &tx->colors[COL_CURSOR_MUTE]);
-       
-       for (i=0; i<6; i++) {
-               gdk_colormap_alloc_color(gtk_widget_get_colormap(GTK_WIDGET(tx)), &tx->colors[i], 0, 1);
-       }
-
-       tx->colors_allocated=1;
+       gdk_rgba_parse(&tx->colors[COL_BG_FOCUS], globals.wav_display_bg_focus);
+       tx->colors[COL_BG_FOCUS].alpha=1.0;
+       gdk_rgba_parse(&tx->colors[COL_BG_NO_FOCUS], globals.wav_display_bg_no_focus);
+       tx->colors[COL_BG_NO_FOCUS].alpha=1.0;
+       
+       gdk_rgba_parse(&tx->colors[COL_FG_FOCUS], globals.wav_display_fg_focus);
+       tx->colors[COL_FG_FOCUS].alpha=1.0;
+       gdk_rgba_parse(&tx->colors[COL_FG_NO_FOCUS], globals.wav_display_fg_no_focus);
+       tx->colors[COL_FG_NO_FOCUS].alpha=1.0;
+       
+       gdk_rgba_parse(&tx->colors[COL_CURSOR], globals.wav_display_cursor);
+       tx->colors[COL_CURSOR].alpha=1.0;
+       gdk_rgba_parse(&tx->colors[COL_CURSOR_MUTE], globals.wav_display_cursor_mute);
+       tx->colors[COL_CURSOR_MUTE].alpha=1.0;
 }
 
 
 static void gtk_tx_init(GtkTx * tx) {
-       GdkColormap *priv;
-
        tx->disp_data = NULL;
        tx->data = NULL;
-       tx->colors_allocated=0;
        tx->samples = 0;
        tx->do_showframe = 0;
 #ifdef USE_DISPLAY_NORMALIZE
        tx->max_value=-1;
 #endif
        
-       priv = gdk_colormap_new(gtk_widget_get_visual(GTK_WIDGET(tx)), 6);
-       gtk_widget_set_colormap(GTK_WIDGET(tx), priv);
-
        memset(tx->colors, 0, sizeof(tx->colors));
        
        gtk_tx_update_colors(tx);
@@ -178,17 +168,17 @@ GtkWidget *gtk_tx_new(int16_t * wavdata, int wavsamples) {
        return GTK_WIDGET(tx);
 }
 
-static void gtk_tx_destroy(GtkObject * object) {
+static void gtk_tx_destroy(GtkWidget * widget) {
        GtkTx *tx;
-       g_return_if_fail(object != NULL);
-       g_return_if_fail(GTK_IS_TX(object));
+       g_return_if_fail(widget != NULL);
+       g_return_if_fail(GTK_IS_TX(widget));
 
-       tx=GTK_TX(object);
+       tx=GTK_TX(widget);
        
        if (tx->disp_data) { free(tx->disp_data); tx->disp_data=NULL; }
        
-       if (GTK_OBJECT_CLASS(parent_class)->destroy) {
-               (*GTK_OBJECT_CLASS(parent_class)->destroy) (object);
+       if (GTK_WIDGET_CLASS(parent_class)->destroy) {
+               (*GTK_WIDGET_CLASS(parent_class)->destroy) (widget);
        }       
 }
 
@@ -229,15 +219,13 @@ static void gtk_tx_realize(GtkWidget * widget) {
        attributes.window_type = GDK_WINDOW_CHILD;
        attributes.event_mask = gtk_widget_get_events(widget) | GDK_EXPOSURE_MASK;
        attributes.visual = gtk_widget_get_visual(widget);
-       attributes.colormap = gtk_widget_get_colormap(widget);
-       attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+       attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL;
 
        gtk_widget_set_window(widget, gdk_window_new(gtk_widget_get_parent_window(widget), &attributes, attributes_mask));
-       gtk_widget_set_style(widget, gtk_style_attach(gtk_widget_get_style(widget), gtk_widget_get_window(widget)));
 
        gdk_window_set_user_data(gtk_widget_get_window(widget), widget);
 
-       gtk_style_set_background(gtk_widget_get_style(widget), gtk_widget_get_window(widget), GTK_STATE_NORMAL);
+       gtk_style_context_set_background(gtk_widget_get_style_context(widget), gtk_widget_get_window(widget));
        
        if (tx->surface) {
                cairo_surface_destroy (tx->surface);
@@ -246,9 +234,14 @@ static void gtk_tx_realize(GtkWidget * widget) {
        tx->surface = gdk_window_create_similar_surface (gtk_widget_get_window(widget), CAIRO_CONTENT_COLOR, allocation.width, allocation.height);
 }
 
-static void gtk_tx_size_request(GtkWidget * widget, GtkRequisition * requisition) {
-       requisition->width = TX_DEFAULT_SIZE_X;
-       requisition->height = TX_DEFAULT_SIZE_Y;
+static void gtk_tx_get_preferred_width (GtkWidget *widget, gint *minimal_width, gint *natural_width)
+{
+  *minimal_width = *natural_width = TX_DEFAULT_SIZE_X;
+}
+
+static void gtk_tx_get_preferred_height (GtkWidget *widget, gint *minimal_height, gint *natural_height)
+{
+    *minimal_height = *natural_height = TX_DEFAULT_SIZE_Y;
 }
 
 static void gtk_tx_prepare(GtkWidget * widget) {
@@ -265,14 +258,10 @@ static void gtk_tx_prepare(GtkWidget * widget) {
        tx = GTK_TX(widget);
        
        GtkAllocation allocation;
-       GdkColor midColor;
+       GdkRGBA midColor;
        gboolean fg = (tx->current_fg == tx->audio_colors_focus);
        
        if (tx->audio_colors_focus) { 
-               // deallocate colors with old tx->yc value
-               gdk_colormap_free_colors(gtk_widget_get_colormap(GTK_WIDGET(tx)), tx->audio_colors_focus, tx->yc);
-               gdk_colormap_free_colors(gtk_widget_get_colormap(GTK_WIDGET(tx)), tx->audio_colors_nofocus, tx->yc);
-               
                free(tx->audio_colors_focus); 
                free(tx->audio_colors_nofocus); 
                
@@ -289,8 +278,8 @@ static void gtk_tx_prepare(GtkWidget * widget) {
        
        // allocate colors
        
-       tx->audio_colors_focus = (GdkColor *) malloc(tx->yc * sizeof(GdkColor));
-       tx->audio_colors_nofocus = (GdkColor *) malloc(tx->yc * sizeof(GdkColor));
+       tx->audio_colors_focus = (GdkRGBA *) malloc(tx->yc * sizeof(GdkRGBA));
+       tx->audio_colors_nofocus = (GdkRGBA *) malloc(tx->yc * sizeof(GdkRGBA));
        
        success = (gboolean *) malloc(tx->yc * sizeof(gboolean));
 
@@ -305,10 +294,9 @@ static void gtk_tx_prepare(GtkWidget * widget) {
                
                tx->audio_colors_nofocus[color].red = midColor.red + dist*(tx->colors[COL_FG_NO_FOCUS].red - midColor.red);
                tx->audio_colors_nofocus[color].green = midColor.green + dist*(tx->colors[COL_FG_NO_FOCUS].green - midColor.green);
-               tx->audio_colors_nofocus[color].blue = midColor.blue + dist*(tx->colors[COL_FG_NO_FOCUS].blue - midColor.blue);         
+               tx->audio_colors_nofocus[color].blue = midColor.blue + dist*(tx->colors[COL_FG_NO_FOCUS].blue - midColor.blue);
+               tx->audio_colors_nofocus[color].alpha = 1.0;
        }
-       gdk_colormap_alloc_colors(gtk_widget_get_colormap(GTK_WIDGET(tx)), tx->audio_colors_nofocus, tx->yc, 0, 1, success);
-       
        // focus colors
 
        midColor.red = tx->colors[COL_BG_FOCUS].red + (tx->colors[COL_FG_FOCUS].red - tx->colors[COL_BG_FOCUS].red) / 4;
@@ -320,9 +308,9 @@ static void gtk_tx_prepare(GtkWidget * widget) {
                
                tx->audio_colors_focus[color].red = midColor.red + dist*(tx->colors[COL_FG_FOCUS].red - midColor.red);
                tx->audio_colors_focus[color].green = midColor.green + dist*(tx->colors[COL_FG_FOCUS].green - midColor.green);
-               tx->audio_colors_focus[color].blue = midColor.blue + dist*(tx->colors[COL_FG_FOCUS].blue - midColor.blue);              
+               tx->audio_colors_focus[color].blue = midColor.blue + dist*(tx->colors[COL_FG_FOCUS].blue - midColor.blue);
+               tx->audio_colors_focus[color].alpha = 1.0;
        }
-       gdk_colormap_alloc_colors(gtk_widget_get_colormap(GTK_WIDGET(tx)), tx->audio_colors_focus, tx->yc, 0, 1, success);
        
        if (fg) {
                tx->current_fg = tx->audio_colors_focus;
@@ -423,42 +411,33 @@ static void gtk_tx_size_allocate(GtkWidget * widget, GtkAllocation * allocation)
 #define min(a,b) ((a) < (b) ? (a) : (b))
 #define max(a,b) ((a) > (b) ? (a) : (b))
 
-static gint gtk_tx_expose(GtkWidget * widget, GdkEventExpose * event) {
+static gboolean gtk_tx_draw(GtkWidget * widget, cairo_t *cr) {
        GtkTx *tx;
        gint x;
-       GdkRectangle *area;
-       cairo_t *cr;
+       GdkRectangle area;
        
        g_return_val_if_fail(widget != NULL, FALSE);
        g_return_val_if_fail(GTK_IS_TX(widget), FALSE);
-       g_return_val_if_fail(event != NULL, FALSE);
-
-/*     if (event->count > 0) { 
-               fprintf(stderr, "Ignoring %i expose events.\n", event->count);
-               return FALSE;
-       }*/
-
-       area=&event->area;
 
+       gdk_cairo_get_clip_rectangle(cr, &area);
+       
        tx = GTK_TX(widget);
-       cr = gdk_cairo_create (gtk_widget_get_window(widget));
+       
        cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
        cairo_set_source_surface (cr, tx->surface, 0, 0);
        cairo_set_line_width(cr,1);
 
-       gdk_cairo_set_source_color (cr, tx->current_bg);
+       gdk_cairo_set_source_rgba (cr, tx->current_bg);
 
-       //printf("%i, %i, %i, %i\n", area->x, area->y, area->width, area->height);
-
-       cairo_rectangle(cr, area->x, area->y, area->width, area->height);
+       cairo_rectangle(cr, area.x, area.y, area.width, area.height);
        cairo_fill(cr);
 
        if (tx->disp_data) {
-               int max_x=area->x+area->width+1;
+               int max_x=area.x+area.width+1;
 
-           for (x =area->x; x < max_x; x++) {
+           for (x =area.x; x < max_x; x++) {
                        int dy = tx->disp_data[tx->display_x_offset+x];
-                       gdk_cairo_set_source_color (cr, &tx->current_fg[dy]);
+                       gdk_cairo_set_source_rgba (cr, &tx->current_fg[dy]);
                        cairo_move_to (cr, x, tx->yc - dy);
                        cairo_line_to (cr, x, tx->yc + dy+1);
                        cairo_stroke (cr);
@@ -467,14 +446,12 @@ static gint gtk_tx_expose(GtkWidget * widget, GdkEventExpose * event) {
                GtkAllocation allocation;
                gtk_widget_get_allocation(widget, &allocation);
                
-               gdk_cairo_set_source_color (cr, tx->current_fg);
+               gdk_cairo_set_source_rgba (cr, tx->current_fg);
                cairo_move_to (cr, 0, tx->yc);
                cairo_line_to (cr, allocation.width, tx->yc);
                cairo_stroke (cr);
        }
        
-       cairo_destroy (cr);
-
        return FALSE;
 }
 
@@ -531,14 +508,14 @@ void gtk_tx_update_pos_display(GtkTx * tx, int sample, int mute) {
        cairo_set_line_width(cr,1);
        
        if (x >= 0) {
-               gdk_cairo_set_source_color (cr, tx->current_bg);
+               gdk_cairo_set_source_rgba (cr, tx->current_bg);
                
                cairo_move_to (cr, x, 0);
                cairo_line_to (cr, x, ymax);
                cairo_stroke (cr);
                
            y = tx->disp_data[x+tx->display_x_offset];
-           gdk_cairo_set_source_color (cr, &tx->current_fg[y]);
+           gdk_cairo_set_source_rgba (cr, &tx->current_fg[y]);
            
                cairo_move_to (cr, x, yc + y);
                cairo_line_to (cr, x, yc - y+1);
@@ -587,15 +564,15 @@ void gtk_tx_update_pos_display(GtkTx * tx, int sample, int mute) {
 
        x = current_pos_x;
 
-       if (mute) gdk_cairo_set_source_color(cr, &tx->colors[COL_CURSOR_MUTE]);
-       else gdk_cairo_set_source_color(cr, &tx->colors[COL_CURSOR]);
+       if (mute) gdk_cairo_set_source_rgba(cr, &tx->colors[COL_CURSOR_MUTE]);
+       else gdk_cairo_set_source_rgba(cr, &tx->colors[COL_CURSOR]);
 
        cairo_move_to (cr, x, 0);
        cairo_line_to (cr, x, ymax);
        cairo_stroke (cr);
        
-       cairo_destroy(cr);
-               
+       cairo_destroy (cr);
+       
        if (force_draw) {
                gtk_widget_queue_draw_area(widget, 0, 0, allocation.width, allocation.height);
        }
index 288a3d4c1aba89704704d0cccaf79812d34b6c69..5e5997d849ce245956f28e97fcff8a86c6d4e851 100644 (file)
@@ -24,7 +24,7 @@
 #ifndef __GTK_TX_H__
 #define __GTK_TX_H__
 #include <gdk/gdk.h>
-#include <gtk/gtkwidget.h>
+#include <gtk/gtk.h>
 
 #include "tX_types.h"
 
@@ -53,13 +53,13 @@ struct _GtkTx {
        int16_t *data;
        int samples;
        
-       GdkColor colors[6];
+       GdkRGBA colors[6];
        
-       GdkColor *current_fg;
-       GdkColor *current_bg;
+       GdkRGBA *current_fg;
+       GdkRGBA *current_bg;
        
-       GdkColor *audio_colors_focus;
-       GdkColor *audio_colors_nofocus;
+       GdkRGBA *audio_colors_focus;
+       GdkRGBA *audio_colors_nofocus;
        
        int spp;
        int yc;
@@ -76,8 +76,6 @@ struct _GtkTx {
 
        int display_width;
        int display_x_offset;
-       
-       int colors_allocated;
 
 #ifdef USE_DISPLAY_NORMALIZE
        f_prec max_value;