049911ca0d51c33f65b3a16b681da49f081436f6
[terminatorX.git] / src / tX_pbutton.cc
1 /*
2     terminatorX - realtime audio scratching software
3     Copyright (C) 1999-2002  Alexander K├Ânig
4  
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 2 of the License, or
8     (at your option) any later version.
9  
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14  
15     You should have received a copy of the GNU General Public License
16     along with this program; if not, write to the Free Software
17     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  
19     File: tX_pbutton.cc
20  
21     Description: This implements the pixmaped buttons - based on
22                  gtk+ tutorial.
23
24 */
25
26 #include <gtk/gtk.h>
27 #include <stdio.h>
28 #include "tX_mastergui.h"
29 #include "tX_global.h"
30
31 #include "gui_icons/tx_audioengine.xpm"
32 #include "gui_icons/tx_power.xpm"
33 #include "gui_icons/tx_grab.xpm"
34 #include "gui_icons/tx_smaller_logo.xpm"
35 #include "gui_icons/tx_sequencer.xpm"
36 #include "gui_icons/tx_play.xpm"
37 #include "gui_icons/tx_stop.xpm"
38 #include "gui_icons/tx_record.xpm"
39 #include "gui_icons/tx_wave.xpm"
40 #include "gui_icons/tx_reload.xpm"
41 #include "gui_icons/tx_minimize.xpm"
42 #include "gui_icons/tX_fx_up.xpm"
43 #include "gui_icons/tX_fx_down.xpm"
44 #include "gui_icons/tX_fx_close.xpm"
45
46 gchar ** tx_icons[]={ tx_audioengine_xpm, tx_power_xpm, tx_grab_xpm, tx_smaller_logo_xpm,
47                       tx_sequencer_xpm, tx_play_xpm, tx_stop_xpm, tx_record_xpm, 
48                       tx_wave_xpm, tx_reload_xpm, tx_minimize_xpm,
49                       tX_fx_up_xpm, tX_fx_down_xpm, tX_fx_close_xpm };
50
51 GtkWidget *tx_pixmap_widget(int icon_id)
52 {
53     GtkWidget *pixmapwid;
54     GdkPixmap *pixmap;
55     GdkBitmap *mask;
56     GtkStyle *style;
57
58         // printf("id: %i, addr: %08x\n", icon_id, tx_icons[icon_id]);
59
60     /* Get the style of the button to get the
61      * background color. */
62     style = gtk_widget_get_style(main_window);
63
64     /* Now on to the xpm stuff */
65     pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask,
66                                          &style->bg[GTK_STATE_NORMAL],
67                                          (gchar **) tx_icons[icon_id]);
68     pixmapwid = gtk_pixmap_new (pixmap, mask);
69
70     return pixmapwid;
71 }
72
73 GtkWidget *tx_xpm_label_box(int icon_id, gchar *label_text )
74 {
75     GtkWidget *box1;
76     GtkWidget *label;
77     GtkWidget *pixmapwid;
78
79     /* Create box for xpm and label */
80     box1 = gtk_hbox_new (FALSE, 0);
81     gtk_container_set_border_width (GTK_CONTAINER (box1), 2);
82
83
84     if (globals.button_type != BUTTON_TYPE_TEXT)
85     {
86             pixmapwid=tx_pixmap_widget(icon_id);
87             gtk_box_pack_start (GTK_BOX (box1), pixmapwid, FALSE, FALSE, 3);
88             gtk_widget_show(pixmapwid);
89     }
90
91     if (globals.button_type != BUTTON_TYPE_ICON)
92     {
93             label = gtk_label_new (label_text);
94             gtk_box_pack_start (GTK_BOX (box1), label, FALSE, FALSE, 3);
95             gtk_widget_show(label); 
96     }
97
98     return(box1);
99 }
100
101 GtkWidget *tx_xpm_button_new(int icon_id, char *label, int toggle)
102 {
103         GtkWidget *box;
104         GtkWidget *button;
105         
106         if (toggle) button=gtk_toggle_button_new();
107         else button=gtk_button_new();
108         
109         box=tx_xpm_label_box(icon_id, label);
110         gtk_widget_show(box);
111         gtk_container_add (GTK_CONTAINER (button), box);                
112         
113         return(button);
114 }
115