gtk2 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. data/ChangeLog +6664 -0
  2. data/README +33 -0
  3. data/Rakefile +71 -0
  4. data/extconf.rb +116 -0
  5. data/src/global.h +33 -0
  6. data/src/init.c +39 -0
  7. data/src/lib/gtk2.rb +13 -0
  8. data/src/lib/gtk2/base.rb +95 -0
  9. data/src/makeinits.rb +57 -0
  10. data/src/makekeysyms.rb +5 -0
  11. data/src/rbgdk.c +395 -0
  12. data/src/rbgdk.h +50 -0
  13. data/src/rbgdkatom.c +122 -0
  14. data/src/rbgdkcairo.c +100 -0
  15. data/src/rbgdkcolor.c +151 -0
  16. data/src/rbgdkcolormap.c +142 -0
  17. data/src/rbgdkconst.c +29 -0
  18. data/src/rbgdkconversions.h +18 -0
  19. data/src/rbgdkcursor.c +115 -0
  20. data/src/rbgdkdevice.c +235 -0
  21. data/src/rbgdkdisplay.c +634 -0
  22. data/src/rbgdkdisplaymanager.c +50 -0
  23. data/src/rbgdkdragcontext.c +280 -0
  24. data/src/rbgdkdraw.c +487 -0
  25. data/src/rbgdkevent.c +1020 -0
  26. data/src/rbgdkgc.c +456 -0
  27. data/src/rbgdkgeometry.c +272 -0
  28. data/src/rbgdkimage.c +155 -0
  29. data/src/rbgdkinput.c +70 -0
  30. data/src/rbgdkkeymap.c +153 -0
  31. data/src/rbgdkkeysyms.h +2174 -0
  32. data/src/rbgdkkeyval.c +105 -0
  33. data/src/rbgdkpango.c +171 -0
  34. data/src/rbgdkpangorenderer.c +132 -0
  35. data/src/rbgdkpixbuf.c +178 -0
  36. data/src/rbgdkpixmap.c +255 -0
  37. data/src/rbgdkproperty.c +342 -0
  38. data/src/rbgdkrectangle.c +146 -0
  39. data/src/rbgdkregion.c +242 -0
  40. data/src/rbgdkrgb.c +197 -0
  41. data/src/rbgdkscreen.c +535 -0
  42. data/src/rbgdkselection.c +161 -0
  43. data/src/rbgdkthreads.c +68 -0
  44. data/src/rbgdktimecoord.c +118 -0
  45. data/src/rbgdkvisual.c +273 -0
  46. data/src/rbgdkwindow.c +1302 -0
  47. data/src/rbgdkwindowattr.c +213 -0
  48. data/src/rbgdkx11.c +256 -0
  49. data/src/rbgtk.c +93 -0
  50. data/src/rbgtk.h +121 -0
  51. data/src/rbgtkaboutdialog.c +195 -0
  52. data/src/rbgtkaccelerator.c +78 -0
  53. data/src/rbgtkaccelgroup.c +216 -0
  54. data/src/rbgtkaccelgroupentry.c +85 -0
  55. data/src/rbgtkaccelkey.c +116 -0
  56. data/src/rbgtkaccellabel.c +46 -0
  57. data/src/rbgtkaccelmap.c +162 -0
  58. data/src/rbgtkaccessible.c +29 -0
  59. data/src/rbgtkaction.c +277 -0
  60. data/src/rbgtkactiongroup.c +377 -0
  61. data/src/rbgtkadjustment.c +153 -0
  62. data/src/rbgtkalignment.c +71 -0
  63. data/src/rbgtkallocation.c +171 -0
  64. data/src/rbgtkarrow.c +47 -0
  65. data/src/rbgtkaspectframe.c +46 -0
  66. data/src/rbgtkassistant.c +230 -0
  67. data/src/rbgtkbbox.c +47 -0
  68. data/src/rbgtkbin.c +31 -0
  69. data/src/rbgtkbindingset.c +192 -0
  70. data/src/rbgtkborder.c +80 -0
  71. data/src/rbgtkbox.c +142 -0
  72. data/src/rbgtkbuildable.c +115 -0
  73. data/src/rbgtkbuilder.c +154 -0
  74. data/src/rbgtkbutton.c +151 -0
  75. data/src/rbgtkcalendar.c +159 -0
  76. data/src/rbgtkcelleditable.c +49 -0
  77. data/src/rbgtkcelllayout.c +144 -0
  78. data/src/rbgtkcellrenderer.c +139 -0
  79. data/src/rbgtkcellrendereraccel.c +42 -0
  80. data/src/rbgtkcellrenderercombo.c +37 -0
  81. data/src/rbgtkcellrendererpixbuf.c +33 -0
  82. data/src/rbgtkcellrendererprogress.c +37 -0
  83. data/src/rbgtkcellrendererspin.c +38 -0
  84. data/src/rbgtkcellrenderertext.c +45 -0
  85. data/src/rbgtkcellrenderertoggle.c +32 -0
  86. data/src/rbgtkcellview.c +134 -0
  87. data/src/rbgtkcheckbutton.c +55 -0
  88. data/src/rbgtkcheckmenuitem.c +56 -0
  89. data/src/rbgtkclipboard.c +473 -0
  90. data/src/rbgtkcolorbutton.c +63 -0
  91. data/src/rbgtkcolorsel.c +175 -0
  92. data/src/rbgtkcolorselectiondialog.c +72 -0
  93. data/src/rbgtkcombo.c +117 -0
  94. data/src/rbgtkcombobox.c +240 -0
  95. data/src/rbgtkcomboboxentry.c +60 -0
  96. data/src/rbgtkconst.c +163 -0
  97. data/src/rbgtkcontainer.c +776 -0
  98. data/src/rbgtkconversions.h +26 -0
  99. data/src/rbgtkcurve.c +105 -0
  100. data/src/rbgtkdialog.c +244 -0
  101. data/src/rbgtkdrag.c +436 -0
  102. data/src/rbgtkdrawingarea.c +31 -0
  103. data/src/rbgtkeditable.c +152 -0
  104. data/src/rbgtkentry.c +161 -0
  105. data/src/rbgtkentrycompletion.c +167 -0
  106. data/src/rbgtkeventbox.c +31 -0
  107. data/src/rbgtkexpander.c +67 -0
  108. data/src/rbgtkfilechooser.c +403 -0
  109. data/src/rbgtkfilechooserbutton.c +72 -0
  110. data/src/rbgtkfilechooserdialog.c +58 -0
  111. data/src/rbgtkfilechooserwidget.c +50 -0
  112. data/src/rbgtkfilefilter.c +139 -0
  113. data/src/rbgtkfilesel.c +155 -0
  114. data/src/rbgtkfixed.c +72 -0
  115. data/src/rbgtkfontbutton.c +69 -0
  116. data/src/rbgtkfontselection.c +30 -0
  117. data/src/rbgtkfontselectiondialog.c +106 -0
  118. data/src/rbgtkframe.c +64 -0
  119. data/src/rbgtkgamma.c +47 -0
  120. data/src/rbgtkhandlebox.c +42 -0
  121. data/src/rbgtkhbbox.c +31 -0
  122. data/src/rbgtkhbox.c +38 -0
  123. data/src/rbgtkhpaned.c +31 -0
  124. data/src/rbgtkhruler.c +31 -0
  125. data/src/rbgtkhscale.c +45 -0
  126. data/src/rbgtkhscrollbar.c +38 -0
  127. data/src/rbgtkhseparator.c +30 -0
  128. data/src/rbgtkiconfactory.c +80 -0
  129. data/src/rbgtkiconinfo.c +118 -0
  130. data/src/rbgtkiconset.c +87 -0
  131. data/src/rbgtkiconsize.c +90 -0
  132. data/src/rbgtkiconsource.c +176 -0
  133. data/src/rbgtkicontheme.c +309 -0
  134. data/src/rbgtkiconview.c +351 -0
  135. data/src/rbgtkimage.c +152 -0
  136. data/src/rbgtkimagemenuitem.c +52 -0
  137. data/src/rbgtkimcontext.c +134 -0
  138. data/src/rbgtkimcontextsimple.c +48 -0
  139. data/src/rbgtkimmulticontext.c +38 -0
  140. data/src/rbgtkinits.c +473 -0
  141. data/src/rbgtkinputdialog.c +30 -0
  142. data/src/rbgtkinvisible.c +68 -0
  143. data/src/rbgtkitem.c +51 -0
  144. data/src/rbgtkitemfactory.c +312 -0
  145. data/src/rbgtklabel.c +168 -0
  146. data/src/rbgtklayout.c +91 -0
  147. data/src/rbgtklinkbutton.c +68 -0
  148. data/src/rbgtkliststore.c +412 -0
  149. data/src/rbgtkmacros.h +26 -0
  150. data/src/rbgtkmain.c +532 -0
  151. data/src/rbgtkmenu.c +272 -0
  152. data/src/rbgtkmenubar.c +48 -0
  153. data/src/rbgtkmenuitem.c +171 -0
  154. data/src/rbgtkmenushell.c +128 -0
  155. data/src/rbgtkmenutoolbutton.c +74 -0
  156. data/src/rbgtkmessagedialog.c +102 -0
  157. data/src/rbgtkmisc.c +63 -0
  158. data/src/rbgtknotebook.c +484 -0
  159. data/src/rbgtkobject.c +186 -0
  160. data/src/rbgtkoptionmenu.c +65 -0
  161. data/src/rbgtkpagesetup.c +196 -0
  162. data/src/rbgtkpagesetupunixdialog.c +80 -0
  163. data/src/rbgtkpaned.c +114 -0
  164. data/src/rbgtkpapersize.c +186 -0
  165. data/src/rbgtkplug.c +84 -0
  166. data/src/rbgtkprintcontext.c +124 -0
  167. data/src/rbgtkprinter.c +155 -0
  168. data/src/rbgtkprintjob.c +151 -0
  169. data/src/rbgtkprintoperation.c +152 -0
  170. data/src/rbgtkprintoperationpreview.c +54 -0
  171. data/src/rbgtkprintsettings.c +794 -0
  172. data/src/rbgtkprintunixdialog.c +98 -0
  173. data/src/rbgtkprogress.c +21 -0
  174. data/src/rbgtkprogressbar.c +72 -0
  175. data/src/rbgtkradioaction.c +102 -0
  176. data/src/rbgtkradiobutton.c +83 -0
  177. data/src/rbgtkradiomenuitem.c +115 -0
  178. data/src/rbgtkradiotoolbutton.c +99 -0
  179. data/src/rbgtkrange.c +98 -0
  180. data/src/rbgtkrc.c +228 -0
  181. data/src/rbgtkrcstyle.c +184 -0
  182. data/src/rbgtkrecentaction.c +52 -0
  183. data/src/rbgtkrecentchooser.c +276 -0
  184. data/src/rbgtkrecentchooserdialog.c +59 -0
  185. data/src/rbgtkrecentchoosermenu.c +55 -0
  186. data/src/rbgtkrecentchooserwidget.c +45 -0
  187. data/src/rbgtkrecentdata.c +152 -0
  188. data/src/rbgtkrecentfilter.c +180 -0
  189. data/src/rbgtkrecentfilterinfo.c +197 -0
  190. data/src/rbgtkrecentinfo.c +232 -0
  191. data/src/rbgtkrecentmanager.c +164 -0
  192. data/src/rbgtkruler.c +82 -0
  193. data/src/rbgtkscale.c +47 -0
  194. data/src/rbgtkscalebutton.c +115 -0
  195. data/src/rbgtkscrollbar.c +21 -0
  196. data/src/rbgtkscrolledwindow.c +160 -0
  197. data/src/rbgtkselection.c +171 -0
  198. data/src/rbgtkselectiondata.c +333 -0
  199. data/src/rbgtkseparator.c +21 -0
  200. data/src/rbgtkseparatormenuitem.c +28 -0
  201. data/src/rbgtkseparatortoolitem.c +40 -0
  202. data/src/rbgtksettings.c +225 -0
  203. data/src/rbgtksizegroup.c +74 -0
  204. data/src/rbgtksocket.c +72 -0
  205. data/src/rbgtkspinbutton.c +138 -0
  206. data/src/rbgtkstatusbar.c +90 -0
  207. data/src/rbgtkstatusicon.c +120 -0
  208. data/src/rbgtkstock.c +264 -0
  209. data/src/rbgtkstyle.c +722 -0
  210. data/src/rbgtktable.c +190 -0
  211. data/src/rbgtktargetlist.c +148 -0
  212. data/src/rbgtktearoffmenuitem.c +30 -0
  213. data/src/rbgtktextappearance.c +173 -0
  214. data/src/rbgtktextattributes.c +209 -0
  215. data/src/rbgtktextbuffer.c +993 -0
  216. data/src/rbgtktextchild.c +49 -0
  217. data/src/rbgtktextiter.c +553 -0
  218. data/src/rbgtktextmark.c +87 -0
  219. data/src/rbgtktexttag.c +66 -0
  220. data/src/rbgtktexttagtable.c +94 -0
  221. data/src/rbgtktextview.c +351 -0
  222. data/src/rbgtktoggleaction.c +76 -0
  223. data/src/rbgtktogglebutton.c +84 -0
  224. data/src/rbgtktoggletoolbutton.c +70 -0
  225. data/src/rbgtktoolbar.c +373 -0
  226. data/src/rbgtktoolbutton.c +75 -0
  227. data/src/rbgtktoolitem.c +184 -0
  228. data/src/rbgtktooltip.c +76 -0
  229. data/src/rbgtktooltips.c +107 -0
  230. data/src/rbgtktreedragdest.c +19 -0
  231. data/src/rbgtktreedragsource.c +19 -0
  232. data/src/rbgtktreeiter.c +259 -0
  233. data/src/rbgtktreemodel.c +256 -0
  234. data/src/rbgtktreemodelfilter.c +214 -0
  235. data/src/rbgtktreemodelsort.c +113 -0
  236. data/src/rbgtktreepath.c +195 -0
  237. data/src/rbgtktreerowreference.c +168 -0
  238. data/src/rbgtktreeselection.c +235 -0
  239. data/src/rbgtktreesortable.c +127 -0
  240. data/src/rbgtktreestore.c +379 -0
  241. data/src/rbgtktreeview.c +881 -0
  242. data/src/rbgtktreeviewcolumn.c +331 -0
  243. data/src/rbgtkuimanager.c +210 -0
  244. data/src/rbgtkvbbox.c +31 -0
  245. data/src/rbgtkvbox.c +38 -0
  246. data/src/rbgtkviewport.c +33 -0
  247. data/src/rbgtkvolumebutton.c +36 -0
  248. data/src/rbgtkvpaned.c +31 -0
  249. data/src/rbgtkvruler.c +30 -0
  250. data/src/rbgtkvscale.c +45 -0
  251. data/src/rbgtkvscrollbar.c +38 -0
  252. data/src/rbgtkvseparator.c +30 -0
  253. data/src/rbgtkwidget.c +1414 -0
  254. data/src/rbgtkwindow.c +822 -0
  255. data/src/rbgtkwindowgroup.c +48 -0
  256. data/test/gtk-test-utils.rb +15 -0
  257. data/test/run-test.rb +30 -0
  258. data/test/test_gc.rb +25 -0
  259. data/test/test_gdk.rb +18 -0
  260. data/test/test_gdk_color.rb +10 -0
  261. data/test/test_gdk_display.rb +37 -0
  262. data/test/test_gdk_event.rb +11 -0
  263. data/test/test_gdk_gc.rb +7 -0
  264. data/test/test_gdk_keymap.rb +8 -0
  265. data/test/test_gdk_pango.rb +9 -0
  266. data/test/test_gdk_selection_data.rb +17 -0
  267. data/test/test_gdk_window.rb +29 -0
  268. data/test/test_gdk_window_attribute.rb +9 -0
  269. data/test/test_gtk_about_dialog.rb +14 -0
  270. data/test/test_gtk_buildable.rb +66 -0
  271. data/test/test_gtk_builder.rb +188 -0
  272. data/test/test_gtk_entry.rb +18 -0
  273. data/test/test_gtk_icon_theme.rb +30 -0
  274. data/test/test_gtk_image.rb +8 -0
  275. data/test/test_gtk_list_store.rb +65 -0
  276. data/test/test_gtk_menu_item.rb +13 -0
  277. data/test/test_gtk_rc_style.rb +14 -0
  278. data/test/test_gtk_tree_path.rb +20 -0
  279. data/test/test_gtk_unix_print.rb +14 -0
  280. data/test/test_gtk_widget.rb +32 -0
  281. metadata +393 -0
@@ -0,0 +1,272 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkmenu.c -
5
+
6
+ $Author: ggc $
7
+ $Date: 2007/07/13 16:07:31 $
8
+
9
+ Copyright (C) 2002-2006 Ruby-GNOME2 Project Team
10
+ Copyright (C) 1998-2000 Yukihiro Matsumoto,
11
+ Daisuke Kanda,
12
+ Hiroshi Igarashi
13
+ ************************************************/
14
+
15
+ #include "global.h"
16
+
17
+ #define _SELF(self) (GTK_MENU(RVAL2GOBJ(self)))
18
+ #define RVAL2WIDGET(w) (GTK_WIDGET(RVAL2GOBJ(w)))
19
+
20
+ static VALUE
21
+ menu_initialize(self)
22
+ VALUE self;
23
+ {
24
+ RBGTK_INITIALIZE(self, gtk_menu_new());
25
+ return Qnil;
26
+ }
27
+
28
+ #if GTK_CHECK_VERSION(2,2,0)
29
+ static VALUE
30
+ menu_set_screen(self, screen)
31
+ VALUE self, screen;
32
+ {
33
+ gtk_menu_set_screen(_SELF(self), GDK_SCREEN(RVAL2GOBJ(screen)));
34
+ return self;
35
+ }
36
+ #endif
37
+
38
+ static VALUE
39
+ menu_reorder_child(self, child, position)
40
+ VALUE self, child, position;
41
+ {
42
+ gtk_menu_reorder_child(_SELF(self), GTK_WIDGET(RVAL2GOBJ(child)),
43
+ NUM2INT(position));
44
+ return self;
45
+ }
46
+
47
+ #if GTK_CHECK_VERSION(2,4,0)
48
+ static VALUE
49
+ menu_attach(self, child, left_attach, right_attach, top_attach, bottom_attach)
50
+ VALUE self, child, left_attach, right_attach, top_attach, bottom_attach;
51
+ {
52
+ gtk_menu_attach(_SELF(self), GTK_WIDGET(RVAL2GOBJ(child)),
53
+ NUM2UINT(left_attach), NUM2UINT(right_attach),
54
+ NUM2UINT(top_attach), NUM2UINT(bottom_attach));
55
+ return self;
56
+ }
57
+ #endif
58
+
59
+ static void
60
+ menu_pos_func(menu, px, py, push_in, data)
61
+ GtkMenu *menu;
62
+ gint *px, *py;
63
+ gboolean *push_in;
64
+ gpointer data;
65
+ {
66
+ VALUE arr = rb_funcall((VALUE)data, id_call, 4, GOBJ2RVAL(menu),
67
+ INT2FIX(*px), INT2FIX(*py),
68
+ CBOOL2RVAL(*push_in));
69
+
70
+ if (TYPE(arr) == T_ARRAY && (RARRAY_LEN(arr) == 2 || RARRAY_LEN(arr) == 3)){
71
+ *px = NUM2INT(RARRAY_PTR(arr)[0]);
72
+ *py = NUM2INT(RARRAY_PTR(arr)[1]);
73
+ if (RARRAY_LEN(arr) == 3)
74
+ *push_in = RVAL2CBOOL(RARRAY_PTR(arr)[2]);
75
+ } else {
76
+ rb_raise(rb_eArgError, "block should return [x, y, push_in]");
77
+ }
78
+ }
79
+
80
+ /* the proc should return [x, y, push_in] */
81
+ static VALUE
82
+ menu_popup(self, pshell, pitem, button, activate_time)
83
+ VALUE self, pshell, pitem, button, activate_time;
84
+ {
85
+ GtkWidget *gpshell = NULL;
86
+ GtkWidget *gpitem = NULL;
87
+ GtkMenuPositionFunc pfunc = NULL;
88
+ gpointer data = NULL;
89
+ VALUE func;
90
+
91
+ if (rb_block_given_p()) {
92
+ func = rb_block_proc();
93
+ pfunc = (GtkMenuPositionFunc)menu_pos_func;
94
+ data = (gpointer)func;
95
+ G_RELATIVE(self, func);
96
+ }
97
+ if (!NIL_P(pshell)){
98
+ gpshell = RVAL2WIDGET(pshell);
99
+ }
100
+ if (!NIL_P(pitem)) {
101
+ gpitem = RVAL2WIDGET(pitem);
102
+ }
103
+
104
+ gtk_menu_popup(_SELF(self), gpshell, gpitem,
105
+ pfunc, data, NUM2UINT(button),
106
+ NUM2UINT(activate_time));
107
+ return self;
108
+ }
109
+
110
+ static VALUE
111
+ menu_set_accel_group(self, accel_group)
112
+ VALUE self, accel_group;
113
+ {
114
+ gtk_menu_set_accel_group(_SELF(self),
115
+ GTK_ACCEL_GROUP(RVAL2GOBJ(accel_group)));
116
+ return self;
117
+ }
118
+
119
+ static VALUE
120
+ menu_get_accel_group(self)
121
+ VALUE self;
122
+ {
123
+ return GOBJ2RVAL(gtk_menu_get_accel_group(_SELF(self)));
124
+ }
125
+
126
+ static VALUE
127
+ menu_set_accel_path(self, accel_path)
128
+ VALUE self, accel_path;
129
+ {
130
+ gtk_menu_set_accel_path(_SELF(self), RVAL2CSTR(accel_path));
131
+ return self;
132
+ }
133
+
134
+ static VALUE
135
+ menu_get_tearoff_state(self)
136
+ VALUE self;
137
+ {
138
+ return CBOOL2RVAL(gtk_menu_get_tearoff_state(_SELF(self)));
139
+ }
140
+
141
+ static VALUE
142
+ menu_popdown(self)
143
+ VALUE self;
144
+ {
145
+ gtk_menu_popdown(_SELF(self));
146
+ return self;
147
+ }
148
+
149
+ static VALUE
150
+ menu_reposition(self)
151
+ VALUE self;
152
+ {
153
+ gtk_menu_reposition(_SELF(self));
154
+ return self;
155
+ }
156
+
157
+ static VALUE
158
+ menu_get_active(self)
159
+ VALUE self;
160
+ {
161
+ GtkWidget *mitem = gtk_menu_get_active(_SELF(self));
162
+
163
+ return (mitem == NULL) ? Qnil : GOBJ2RVAL(mitem);
164
+ }
165
+
166
+ static VALUE
167
+ menu_set_active(self, active)
168
+ VALUE self, active;
169
+ {
170
+ gtk_menu_set_active(_SELF(self), NUM2INT(active));
171
+ return self;
172
+ }
173
+
174
+ static VALUE
175
+ menu_set_tearoff_state(self, torn_off)
176
+ VALUE self, torn_off;
177
+ {
178
+ gtk_menu_set_tearoff_state(_SELF(self), RVAL2CBOOL(torn_off));
179
+ return self;
180
+ }
181
+
182
+ static VALUE menu_detacher;
183
+ static void
184
+ detach_func(attach_widget, menu)
185
+ GtkWidget* attach_widget;
186
+ GtkMenu* menu;
187
+ {
188
+ rb_funcall((VALUE)menu_detacher, id_call, 2,
189
+ GOBJ2RVAL(attach_widget), GOBJ2RVAL(menu));
190
+ }
191
+
192
+ static VALUE
193
+ menu_attach_to_widget(self, attach_widget)
194
+ VALUE self, attach_widget;
195
+ {
196
+ menu_detacher = rb_block_proc();
197
+ G_RELATIVE(self, menu_detacher);
198
+ gtk_menu_attach_to_widget(_SELF(self),
199
+ GTK_WIDGET(RVAL2GOBJ(attach_widget)),
200
+ (GtkMenuDetachFunc)detach_func);
201
+ return self;
202
+ }
203
+
204
+ static VALUE
205
+ menu_detach(self)
206
+ VALUE self;
207
+ {
208
+ gtk_menu_detach(_SELF(self));
209
+ return self;
210
+ }
211
+
212
+ static VALUE
213
+ menu_get_attach_widget(self)
214
+ VALUE self;
215
+ {
216
+ return GOBJ2RVAL(gtk_menu_get_attach_widget(_SELF(self)));
217
+ }
218
+
219
+ #if GTK_CHECK_VERSION(2,6,0)
220
+ static VALUE
221
+ menu_s_get_for_attach_widget(self, widget)
222
+ VALUE self, widget;
223
+ {
224
+ /* Owned by GTK+ */
225
+ return GLIST2ARY(gtk_menu_get_for_attach_widget(GTK_WIDGET(RVAL2GOBJ(widget))));
226
+ }
227
+ #endif
228
+
229
+ #if GTK_CHECK_VERSION(2,4,0)
230
+ static VALUE
231
+ menu_set_monitor(self, monitor_num)
232
+ VALUE self, monitor_num;
233
+ {
234
+ gtk_menu_set_monitor(_SELF(self), NUM2INT(monitor_num));
235
+ return self;
236
+ }
237
+ #endif
238
+ void
239
+ Init_gtk_menu()
240
+ {
241
+ VALUE gMenu = G_DEF_CLASS(GTK_TYPE_MENU, "Menu", mGtk);
242
+
243
+ rb_define_method(gMenu, "initialize", menu_initialize, 0);
244
+ #if GTK_CHECK_VERSION(2,2,0)
245
+ rb_define_method(gMenu, "set_screen", menu_set_screen, 1);
246
+ #endif
247
+ rb_define_method(gMenu, "reorder_child", menu_reorder_child, 2);
248
+ #if GTK_CHECK_VERSION(2,4,0)
249
+ rb_define_method(gMenu, "attach", menu_attach, 5);
250
+ #endif
251
+ rb_define_method(gMenu, "popup", menu_popup, 4);
252
+ rb_define_method(gMenu, "popdown", menu_popdown, 0);
253
+ rb_define_method(gMenu, "reposition", menu_reposition, 0);
254
+ rb_define_method(gMenu, "set_accel_group", menu_set_accel_group, 1);
255
+ rb_define_method(gMenu, "accel_group", menu_get_accel_group, 0);
256
+ rb_define_method(gMenu, "set_accel_path", menu_set_accel_path, 1);
257
+ rb_define_method(gMenu, "tearoff_state?", menu_get_tearoff_state, 0);
258
+ rb_define_method(gMenu, "active", menu_get_active, 0);
259
+ rb_define_method(gMenu, "set_active", menu_set_active, 1);
260
+ rb_define_method(gMenu, "set_tearoff_state", menu_set_tearoff_state, 1);
261
+ rb_define_method(gMenu, "detach", menu_detach, 0);
262
+ rb_define_method(gMenu, "attach_widget", menu_get_attach_widget, 0);
263
+ #if GTK_CHECK_VERSION(2,6,0)
264
+ rb_define_singleton_method(gMenu, "get_for_attach_widget", menu_s_get_for_attach_widget, 1);
265
+ #endif
266
+ rb_define_method(gMenu, "attach_to_widget", menu_attach_to_widget, 1);
267
+ #if GTK_CHECK_VERSION(2,4,0)
268
+ rb_define_method(gMenu, "set_monitor", menu_set_monitor, 1);
269
+ #endif
270
+
271
+ G_DEF_SETTERS(gMenu);
272
+ }
@@ -0,0 +1,48 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkmenubar.c -
5
+
6
+ $Author: mutoh $
7
+ $Date: 2005/09/18 02:42:01 $
8
+
9
+ Copyright (C) 2002,2003 Ruby-GNOME2 Project Team
10
+ Copyright (C) 1998-2000 Yukihiro Matsumoto,
11
+ Daisuke Kanda,
12
+ Hiroshi Igarashi
13
+ ************************************************/
14
+
15
+ #include "global.h"
16
+
17
+ static VALUE
18
+ mbar_initialize(self)
19
+ VALUE self;
20
+ {
21
+ RBGTK_INITIALIZE(self, gtk_menu_bar_new());
22
+ return Qnil;
23
+ }
24
+
25
+ /* Defined as property
26
+ void gtk_menu_bar_set_pack_direction (GtkMenuBar *menubar,
27
+ GtkPackDirection pack_dir);
28
+ GtkPackDirection gtk_menu_bar_get_pack_direction
29
+ (GtkMenuBar *menubar);
30
+ void gtk_menu_bar_set_child_pack_direction
31
+ (GtkMenuBar *menubar,
32
+ GtkPackDirection child_pack_dir);
33
+ GtkPackDirection gtk_menu_bar_get_child_pack_direction
34
+ (GtkMenuBar *menubar);
35
+ */
36
+
37
+ void
38
+ Init_gtk_menu_bar()
39
+ {
40
+ VALUE gMenuBar = G_DEF_CLASS(GTK_TYPE_MENU_BAR, "MenuBar", mGtk);
41
+ rb_define_method(gMenuBar, "initialize", mbar_initialize, 0);
42
+
43
+ #if GTK_CHECK_VERSION(2,8,0)
44
+ /* GtkPackDirection */
45
+ G_DEF_CLASS(GTK_TYPE_PACK_DIRECTION, "PackDirection", gMenuBar);
46
+ G_DEF_CONSTANTS(gMenuBar, GTK_TYPE_PACK_DIRECTION, "GTK_");
47
+ #endif
48
+ }
@@ -0,0 +1,171 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkmenuitem.c -
5
+
6
+ $Author: ggc $
7
+ $Date: 2007/07/13 16:07:31 $
8
+
9
+ Copyright (C) 2002,2003 Ruby-GNOME2 Project Team
10
+ Copyright (C) 1998-2000 Yukihiro Matsumoto,
11
+ Daisuke Kanda,
12
+ Hiroshi Igarashi
13
+ ************************************************/
14
+
15
+ #include "global.h"
16
+
17
+ #define _SELF(s) (GTK_MENU_ITEM(RVAL2GOBJ(s)))
18
+
19
+ static VALUE
20
+ mitem_initialize(argc, argv, self)
21
+ int argc;
22
+ VALUE *argv;
23
+ VALUE self;
24
+ {
25
+ const gchar *label = NULL;
26
+ VALUE rb_label, use_underline;
27
+ GtkWidget *widget = NULL;
28
+
29
+ rb_scan_args(argc, argv, "02", &rb_label, &use_underline);
30
+
31
+ if (!NIL_P(rb_label))
32
+ label = RVAL2CSTR(rb_label);
33
+ if (label) {
34
+ if (NIL_P(use_underline) || RVAL2CBOOL(use_underline)) {
35
+ widget = gtk_menu_item_new_with_mnemonic(label);
36
+ } else {
37
+ widget = gtk_menu_item_new_with_label(label);
38
+ }
39
+ } else {
40
+ widget = gtk_menu_item_new();
41
+ }
42
+
43
+ RBGTK_INITIALIZE(self, widget);
44
+ return Qnil;
45
+ }
46
+
47
+ static VALUE
48
+ mitem_set_right_justified(self, right_justified)
49
+ VALUE self, right_justified;
50
+ {
51
+ gtk_menu_item_set_right_justified(_SELF(self), RVAL2CBOOL(right_justified));
52
+ return self;
53
+ }
54
+
55
+ static VALUE
56
+ mitem_set_submenu(self, child)
57
+ VALUE self, child;
58
+ {
59
+ GtkMenuItem *item;
60
+ GtkWidget *submenu;
61
+
62
+ item = _SELF(self);
63
+ submenu = gtk_menu_item_get_submenu(item);
64
+ if (submenu)
65
+ G_CHILD_REMOVE(self, GOBJ2RVAL(submenu));
66
+
67
+ gtk_menu_item_set_submenu(item, GTK_WIDGET(RVAL2GOBJ(child)));
68
+ G_CHILD_ADD(self, child);
69
+ return self;
70
+ }
71
+
72
+ static VALUE
73
+ mitem_set_accel_path(self, accel_path)
74
+ VALUE self, accel_path;
75
+ {
76
+ gtk_menu_item_set_accel_path(_SELF(self), RVAL2CSTR(accel_path));
77
+ return self;
78
+ }
79
+
80
+ static VALUE
81
+ mitem_remove_submenu(self)
82
+ VALUE self;
83
+ {
84
+ GtkMenuItem *item;
85
+ GtkWidget *submenu;
86
+
87
+ item = _SELF(self);
88
+ submenu = gtk_menu_item_get_submenu(item);
89
+ gtk_menu_item_remove_submenu(item);
90
+ if (submenu)
91
+ G_CHILD_REMOVE(self, GOBJ2RVAL(submenu));
92
+
93
+ return self;
94
+ }
95
+
96
+ static VALUE
97
+ mitem_select(self)
98
+ VALUE self;
99
+ {
100
+ gtk_menu_item_select(_SELF(self));
101
+ return self;
102
+ }
103
+
104
+ static VALUE
105
+ mitem_deselect(self)
106
+ VALUE self;
107
+ {
108
+ gtk_menu_item_deselect(_SELF(self));
109
+ return self;
110
+ }
111
+
112
+ static VALUE
113
+ mitem_activate(self)
114
+ VALUE self;
115
+ {
116
+ gtk_menu_item_activate(_SELF(self));
117
+ return self;
118
+ }
119
+
120
+ static VALUE
121
+ mitem_toggle_size_request(self)
122
+ VALUE self;
123
+ {
124
+ gint requisition;
125
+ gtk_menu_item_toggle_size_request(_SELF(self), &requisition);
126
+ return INT2NUM(requisition);
127
+ }
128
+
129
+ static VALUE
130
+ mitem_toggle_size_allocate(self, allocation)
131
+ VALUE self, allocation;
132
+ {
133
+ gtk_menu_item_toggle_size_allocate(_SELF(self), NUM2INT(allocation));
134
+ return self;
135
+ }
136
+
137
+ static VALUE
138
+ mitem_get_right_justified(self)
139
+ VALUE self;
140
+ {
141
+ return CBOOL2RVAL(gtk_menu_item_get_right_justified(_SELF(self)));
142
+ }
143
+
144
+ static VALUE
145
+ mitem_get_submenu(self)
146
+ VALUE self;
147
+ {
148
+ GtkWidget* submenu = gtk_menu_item_get_submenu(_SELF(self));
149
+ return submenu ? GOBJ2RVAL(submenu) : Qnil;
150
+ }
151
+
152
+ void
153
+ Init_gtk_menu_item()
154
+ {
155
+ VALUE gMenuItem = G_DEF_CLASS(GTK_TYPE_MENU_ITEM, "MenuItem", mGtk);
156
+
157
+ rb_define_method(gMenuItem, "initialize", mitem_initialize, -1);
158
+ rb_define_method(gMenuItem, "set_right_justified", mitem_set_right_justified, 1);
159
+ rb_define_method(gMenuItem, "set_submenu", mitem_set_submenu, 1);
160
+ rb_define_method(gMenuItem, "set_accel_path", mitem_set_accel_path, 1);
161
+ rb_define_method(gMenuItem, "remove_submenu", mitem_remove_submenu, 0);
162
+ rb_define_method(gMenuItem, "select", mitem_select, 0);
163
+ rb_define_method(gMenuItem, "deselect", mitem_deselect, 0);
164
+ rb_define_method(gMenuItem, "activate", mitem_activate, 0);
165
+ rb_define_method(gMenuItem, "toggle_size_request", mitem_toggle_size_request, 0);
166
+ rb_define_method(gMenuItem, "toggle_size_allocate", mitem_toggle_size_allocate, 1);
167
+ rb_define_method(gMenuItem, "right_justified?", mitem_get_right_justified, 0);
168
+ rb_define_method(gMenuItem, "submenu", mitem_get_submenu, 0);
169
+
170
+ G_DEF_SETTERS(gMenuItem);
171
+ }