root / trunk / linux / gtkmisc.cpp

Revision 725, 6.5 kB (checked in by leo, 6 months ago)

Linux compile fixes.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
Line 
1//
2// Small functions to help with GTK
3//
4
5#include <gtk/gtk.h>
6#include <gdk/gdkx.h>
7#include <string.h>
8#include "gtkmisc.h"
9#include "globals.h"
10#include "project.h"
11//#include "pixmenu.h"
12#include "gtktools.h"
13
14// =============================================================================
15// Pixmap functions
16
17#include "pixmaps/vports01.xpm"
18#include "pixmaps/vports02.xpm"
19#include "pixmaps/vports03.xpm"
20#include "pixmaps/vports04.xpm"
21#include "pixmaps/vports05.xpm"
22#include "pixmaps/vports06.xpm"
23#include "pixmaps/vports07.xpm"
24#include "pixmaps/vports08.xpm"
25#include "pixmaps/vports09.xpm"
26#include "pixmaps/vports10.xpm"
27#include "pixmaps/vports11.xpm"
28#include "pixmaps/vports12.xpm"
29#include "pixmaps/vports13.xpm"
30#include "pixmaps/vports14.xpm"
31
32// Load a pixmap file from the disk
33void load_pixmap (const char* filename, GdkPixmap** gdkpixmap, GdkBitmap** mask)
34{
35  struct { const char* name; const char** data; } table[14] =
36  {
37    { "vports01.xpm", vports01 },
38    { "vports02.xpm", vports02 },
39    { "vports03.xpm", vports03 },
40    { "vports04.xpm", vports04 },
41    { "vports05.xpm", vports05 },
42    { "vports06.xpm", vports06 },
43    { "vports07.xpm", vports07 },
44    { "vports08.xpm", vports08 },
45    { "vports09.xpm", vports09 },
46    { "vports10.xpm", vports10 },
47    { "vports11.xpm", vports11 },
48    { "vports12.xpm", vports12 },
49    { "vports13.xpm", vports13 },
50    { "vports14.xpm", vports14 },
51  };
52
53  *gdkpixmap = NULL;
54  for (int i = 0; i < 14; i++)
55    if (strcmp (table[i].name, filename) == 0)
56    {
57      *gdkpixmap = gdk_pixmap_create_from_xpm_d (GDK_ROOT_PARENT(), mask, NULL, (gchar**)table[i].data);
58      break;
59    }
60
61  if (*gdkpixmap == NULL)
62  {
63    const char *dummy[] = { "1 1 1 1", "  c None", " " };
64    *gdkpixmap = gdk_pixmap_create_from_xpm_d (GDK_ROOT_PARENT(), mask, NULL, (gchar**)dummy);
65  }
66}
67
68// Load an xpm file and return a pixmap widget.
69GtkWidget* create_pixmap(const char* filename)
70{
71  GdkPixmap *gdkpixmap;
72  GdkBitmap *mask;
73  GtkWidget *pixmap;
74 
75  load_pixmap (filename, &gdkpixmap, &mask);
76  pixmap = gtk_pixmap_new (gdkpixmap, mask);
77  gtk_widget_show (pixmap);
78 
79  gdk_pixmap_unref (gdkpixmap);
80  gdk_pixmap_unref (mask);
81 
82  return pixmap;
83}
84
85// =============================================================================
86// Menu stuff
87
88GtkWidget* menu_separator (GtkWidget *menu)
89{
90  GtkWidget *menu_item = gtk_menu_item_new ();
91  gtk_menu_append (GTK_MENU (menu), menu_item);
92  gtk_widget_set_sensitive (menu_item, FALSE);
93  gtk_widget_show (menu_item);
94  return menu_item;
95}
96
97GtkWidget* menu_tearoff (GtkWidget *menu)
98{
99  GtkWidget *menu_item = gtk_tearoff_menu_item_new ();
100  gtk_menu_append (GTK_MENU (menu), menu_item);
101  //  gtk_widget_set_sensitive (menu_item, FALSE);
102  gtk_widget_show (menu_item);
103  return menu_item;
104}
105 
106GtkWidget* create_sub_menu(GtkWidget* bar, const char* label, GtkAccelGroup* accel)
107{
108  GtkWidget *item, *menu;
109
110  item = gtk_menu_item_new_with_mnemonic(label);
111  gtk_widget_show (item);
112  gtk_container_add (GTK_CONTAINER (bar), item);
113
114  menu = gtk_menu_new ();
115  gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu);
116
117  return menu;
118}
119
120GtkWidget* create_menu_in_menu(GtkWidget* menu, const char* label, GtkAccelGroup* accel)
121{
122  GtkWidget *item, *submenu;
123
124  item = gtk_menu_item_new_with_mnemonic(label);
125  gtk_widget_show (item);
126  gtk_container_add (GTK_CONTAINER (menu), item);
127
128  submenu = gtk_menu_new ();
129  gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu);
130
131  return submenu;
132}
133
134GtkWidget* create_menu_item(GtkWidget* menu, const char* label, GtkAccelGroup* menu_accel,
135                GtkSignalFunc func, GtkObject* window, int id, const char* data)
136{
137  GtkWidget *item;
138
139  item = gtk_menu_item_new_with_mnemonic (label);
140  gtk_widget_show (item);
141  gtk_container_add (GTK_CONTAINER (menu), item);
142  gtk_signal_connect (GTK_OBJECT (item), "activate", GTK_SIGNAL_FUNC (func), GINT_TO_POINTER (id));
143
144  if (data != NULL)
145    gtk_object_set_data (window, data, item);
146
147  return item;
148}
149
150GtkWidget* create_pixmap_menu_item(GtkWidget* menu, const char* label, const char** pixmap, GtkAccelGroup* menu_accel,
151                                   GtkSignalFunc func, GtkObject* window, int id, const char* data)
152{
153  GtkWidget *item, *pixmap_widget;
154
155  item = gtk_image_menu_item_new_with_mnemonic(label);
156
157  pixmap_widget = new_pixmap (GTK_WIDGET (window), pixmap);
158  gtk_widget_show (pixmap_widget);
159  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), pixmap_widget);
160
161  gtk_widget_show (item);
162  gtk_container_add (GTK_CONTAINER (menu), item);
163  gtk_signal_connect (GTK_OBJECT (item), "activate", GTK_SIGNAL_FUNC (func), GINT_TO_POINTER (id));
164
165  if (data != NULL)
166    gtk_object_set_data (window, data, item);
167
168  return item;
169}
170
171GtkWidget* create_check_menu_item(GtkWidget* menu, const char* label, GtkAccelGroup* menu_accel,
172                  GtkSignalFunc func, GtkObject* window, int id, const char* data)
173{
174  GtkWidget *item;
175
176  item = gtk_check_menu_item_new_with_mnemonic(label);
177  gtk_widget_show (item);
178  gtk_container_add (GTK_CONTAINER (menu), item);
179  gtk_signal_connect (GTK_OBJECT (item), "activate", GTK_SIGNAL_FUNC (func), GINT_TO_POINTER (id));
180
181  if (data != NULL)
182    gtk_object_set_data (window, data, item);
183
184  return item;
185}
186
187GtkWidget* create_radio_menu_item(GtkWidget* menu, GtkWidget* last, const char* label,
188                  GtkAccelGroup* menu_accel, GtkSignalFunc func,
189                  GtkObject* window, int id, const char* data)
190{
191  GtkWidget *item;
192  GSList *group = NULL;
193
194  if (last != NULL)
195    group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (last));
196  item = gtk_radio_menu_item_new_with_mnemonic(group, label);
197  gtk_widget_show (item);
198  gtk_container_add (GTK_CONTAINER (menu), item);
199  gtk_signal_connect (GTK_OBJECT (item), "activate", GTK_SIGNAL_FUNC (func), GINT_TO_POINTER (id));
200
201  if (data != NULL)
202    gtk_object_set_data (window, data, item);
203
204  return item;
205}
206
207GtkWidget* create_radio_menu_pixmap(GtkWidget* menu, GtkWidget* last, const char *filename,
208                    GtkAccelGroup* menu_accel, GtkSignalFunc func,
209                    GtkObject* window, int id, const char* data)
210{
211  GtkWidget *item, *pixmap;
212  GSList *group = NULL;
213
214  if (last != NULL)
215    group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (last));
216
217  item = gtk_radio_menu_item_new (group);
218  gtk_widget_show (item);
219  gtk_container_add (GTK_CONTAINER (menu), item);
220  gtk_signal_connect (GTK_OBJECT (item), "activate", GTK_SIGNAL_FUNC (func), GINT_TO_POINTER (id));
221
222  pixmap = create_pixmap (filename);
223  gtk_container_add (GTK_CONTAINER (item), pixmap);
224
225  if (data != NULL)
226    gtk_object_set_data (window, data, item);
227
228  return item;
229}
Note: See TracBrowser for help on using the browser.