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,168 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtklabel.c -
5
+
6
+ $Author: ggc $
7
+ $Date: 2007/07/13 16:07:31 $
8
+
9
+ Copyright (C) 2002-2005 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_LABEL(RVAL2GOBJ(s)))
18
+
19
+ static VALUE
20
+ label_initialize(argc, argv, self)
21
+ int argc;
22
+ VALUE *argv;
23
+ VALUE self;
24
+ {
25
+ VALUE label, with_mnemonic;
26
+ GtkWidget* widget = NULL;
27
+
28
+ rb_scan_args(argc, argv, "02", &label, &with_mnemonic);
29
+ if (NIL_P(with_mnemonic) || ! RVAL2CBOOL(with_mnemonic)){
30
+ widget = gtk_label_new(NIL_P(label)?NULL:RVAL2CSTR(label));
31
+ } else {
32
+ widget = gtk_label_new_with_mnemonic(NIL_P(label)?NULL:RVAL2CSTR(label));
33
+ }
34
+
35
+ RBGTK_INITIALIZE(self, widget);
36
+ return Qnil;
37
+ }
38
+
39
+ static VALUE
40
+ label_set_text_only(self, text)
41
+ VALUE self, text;
42
+ {
43
+ gtk_label_set_text(_SELF(self), RVAL2CSTR(text));
44
+ return text;
45
+ }
46
+
47
+ static VALUE
48
+ label_set_text(argc, argv, self)
49
+ int argc;
50
+ VALUE *argv;
51
+ VALUE self;
52
+ {
53
+ VALUE label, with_mnemonic;
54
+
55
+ rb_scan_args(argc, argv, "02", &label, &with_mnemonic);
56
+ if (NIL_P(with_mnemonic) || ! RVAL2CBOOL(with_mnemonic)){
57
+ gtk_label_set_text(_SELF(self), RVAL2CSTR(label));
58
+ } else {
59
+ gtk_label_set_text_with_mnemonic(_SELF(self), RVAL2CSTR(label));
60
+ }
61
+ return self;
62
+ }
63
+
64
+ static VALUE
65
+ label_set_markup_only(self, text)
66
+ VALUE self, text;
67
+ {
68
+ gtk_label_set_markup(_SELF(self), RVAL2CSTR(text));
69
+ return text;
70
+ }
71
+
72
+ static VALUE
73
+ label_set_markup(argc, argv, self)
74
+ int argc;
75
+ VALUE *argv;
76
+ VALUE self;
77
+ {
78
+ VALUE str, with_mnemonic;
79
+ rb_scan_args(argc, argv, "02", &str, &with_mnemonic);
80
+
81
+ if (NIL_P(with_mnemonic) || ! RVAL2CBOOL(with_mnemonic)){
82
+ gtk_label_set_markup(_SELF(self), RVAL2CSTR(str));
83
+ } else {
84
+ gtk_label_set_markup_with_mnemonic(_SELF(self), RVAL2CSTR(str));
85
+ }
86
+ return self;
87
+ }
88
+
89
+ static VALUE
90
+ label_get_layout_offsets(self)
91
+ VALUE self;
92
+ {
93
+ gint x, y;
94
+ gtk_label_get_layout_offsets(_SELF(self), &x, &y);
95
+ return rb_ary_new3(2, INT2NUM(x), INT2NUM(y));
96
+ }
97
+
98
+ static VALUE
99
+ label_get_text(self)
100
+ VALUE self;
101
+ {
102
+ return CSTR2RVAL(gtk_label_get_text(_SELF(self)));
103
+ }
104
+
105
+ static VALUE
106
+ label_select_region(self, start_offset, end_offset)
107
+ VALUE self, start_offset, end_offset;
108
+ {
109
+ gtk_label_select_region(_SELF(self), NUM2INT(start_offset), NUM2INT(end_offset));
110
+ return self;
111
+ }
112
+
113
+ static VALUE
114
+ label_get_layout(self)
115
+ VALUE self;
116
+ {
117
+ return GOBJ2RVAL(gtk_label_get_layout(_SELF(self)));
118
+ }
119
+
120
+ static VALUE
121
+ label_get_selection_bounds(self)
122
+ VALUE self;
123
+ {
124
+ gint start, end;
125
+ gboolean ret = gtk_label_get_selection_bounds(_SELF(self), &start, &end);
126
+ return ret ? rb_ary_new3(2, INT2NUM(start), INT2NUM(end)) : Qnil;
127
+ }
128
+
129
+ /* Defined as Properties
130
+ gdouble gtk_label_get_angle (GtkLabel *label);
131
+ void gtk_label_set_angle (GtkLabel *label,
132
+ gdouble angle);
133
+ void gtk_label_set_ellipsize (GtkLabel *label,
134
+ PangoEllipsizeMode mode);
135
+ PangoEllipsizeMode gtk_label_get_ellipsize (GtkLabel *label);
136
+ void gtk_label_set_max_width_chars (GtkLabel *label,
137
+ gint n_chars);
138
+ gint gtk_label_get_max_width_chars (GtkLabel *label);
139
+
140
+ gboolean gtk_label_get_single_line_mode (GtkLabel *label);
141
+ void gtk_label_set_single_line_mode (GtkLabel *label,
142
+ gboolean single_line_mode);
143
+ void gtk_label_set_width_chars (GtkLabel *label,
144
+ gint n_chars);
145
+ gint gtk_label_get_width_chars (GtkLabel *label);
146
+ void gtk_label_set_line_wrap_mode (GtkLabel *label,
147
+ PangoWrapMode wrap_mode);
148
+ PangoWrapMode gtk_label_get_line_wrap_mode (GtkLabel *label);
149
+ */
150
+
151
+ void
152
+ Init_gtk_label()
153
+ {
154
+ VALUE gLabel = G_DEF_CLASS(GTK_TYPE_LABEL, "Label", mGtk);
155
+
156
+ rb_define_method(gLabel, "initialize", label_initialize, -1);
157
+ rb_define_method(gLabel, "text", label_get_text, 0);
158
+ rb_define_method(gLabel, "set_text", label_set_text, -1);
159
+ rb_define_method(gLabel, "text=", label_set_text_only, 1);
160
+ rb_define_method(gLabel, "set_markup", label_set_markup, -1);
161
+ rb_define_method(gLabel, "markup=", label_set_markup_only, 1);
162
+ rb_define_method(gLabel, "layout_offsets", label_get_layout_offsets, 0);
163
+ rb_define_method(gLabel, "select_region", label_select_region, 2);
164
+ rb_define_method(gLabel, "layout", label_get_layout, 0);
165
+ rb_define_method(gLabel, "selection_bounds", label_get_selection_bounds, 0);
166
+
167
+ G_DEF_SETTERS(gLabel);
168
+ }
@@ -0,0 +1,91 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtklayout.c -
5
+
6
+ $Author: mutoh $
7
+ $Date: 2003/02/01 16:46:23 $
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(self) (GTK_LAYOUT(RVAL2GOBJ(self)))
18
+ #define RVAL2ADJ(a) (GTK_ADJUSTMENT(RVAL2GOBJ(a)))
19
+
20
+ static VALUE
21
+ layout_initialize(argc, argv, self)
22
+ int argc;
23
+ VALUE *argv;
24
+ VALUE self;
25
+ {
26
+ VALUE hadjustment, vadjustment;
27
+ GtkWidget* layout;
28
+ rb_scan_args(argc, argv, "02", &hadjustment, &vadjustment);
29
+
30
+ layout = gtk_layout_new(
31
+ NIL_P(hadjustment) ? 0 : RVAL2ADJ(hadjustment),
32
+ NIL_P(vadjustment) ? 0 : RVAL2ADJ(vadjustment));
33
+
34
+ RBGTK_INITIALIZE(self, layout);
35
+ return Qnil;
36
+ }
37
+
38
+ static VALUE
39
+ layout_put(self, widget, x, y)
40
+ VALUE self, widget, x, y;
41
+ {
42
+ gtk_layout_put(_SELF(self), GTK_WIDGET(RVAL2GOBJ(widget)),
43
+ NUM2INT(x), NUM2INT(y));
44
+ return self;
45
+ }
46
+
47
+ static VALUE
48
+ layout_move(self, widget, x, y)
49
+ VALUE self, widget, x, y;
50
+ {
51
+ gtk_layout_move(_SELF(self), GTK_WIDGET(RVAL2GOBJ(widget)),
52
+ NUM2INT(x), NUM2INT(y));
53
+ return self;
54
+ }
55
+
56
+ static VALUE
57
+ layout_set_size(self, width, height)
58
+ VALUE self, width, height;
59
+ {
60
+ gtk_layout_set_size(_SELF(self), NUM2UINT(width), NUM2UINT(height));
61
+ return self;
62
+ }
63
+
64
+ static VALUE
65
+ layout_get_size(self)
66
+ VALUE self;
67
+ {
68
+ guint width, height;
69
+ gtk_layout_get_size(_SELF(self), &width, &height);
70
+ return rb_ary_new3(2, INT2NUM(width), INT2NUM(height));
71
+ }
72
+
73
+ static VALUE
74
+ layout_get_bin_window(self)
75
+ VALUE self;
76
+ {
77
+ return GOBJ2RVAL(_SELF(self)->bin_window);
78
+ }
79
+
80
+ void
81
+ Init_gtk_layout()
82
+ {
83
+ VALUE gLayout = G_DEF_CLASS(GTK_TYPE_LAYOUT, "Layout", mGtk);
84
+
85
+ rb_define_method(gLayout, "initialize", layout_initialize, -1);
86
+ rb_define_method(gLayout, "put", layout_put, 3);
87
+ rb_define_method(gLayout, "move", layout_move, 3);
88
+ rb_define_method(gLayout, "set_size", layout_set_size, 2);
89
+ rb_define_method(gLayout, "size", layout_get_size, 0);
90
+ rb_define_method(gLayout, "bin_window", layout_get_bin_window, 0);
91
+ }
@@ -0,0 +1,68 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtklinkbutton.c -
5
+
6
+ $Author: sakai $
7
+ $Date: 2007/07/08 03:00:49 $
8
+
9
+ Copyright (C) 2006 Masao Mutoh
10
+ ************************************************/
11
+
12
+ #include "global.h"
13
+
14
+ #if GTK_CHECK_VERSION(2,10,0)
15
+
16
+ #define _SELF(self) (GTK_LINK_BUTTON(RVAL2GOBJ(self)))
17
+
18
+ static VALUE
19
+ lb_initialize(argc, argv, self)
20
+ int argc;
21
+ VALUE *argv;
22
+ VALUE self;
23
+ {
24
+ VALUE uri, label;
25
+ GtkWidget *widget = NULL;
26
+
27
+ rb_scan_args(argc, argv, "11", &uri, &label);
28
+ if (NIL_P(label)){
29
+ widget = gtk_link_button_new(RVAL2CSTR(uri));
30
+ } else {
31
+ widget = gtk_link_button_new_with_label(RVAL2CSTR(uri), RVAL2CSTR(label));
32
+ }
33
+ RBGTK_INITIALIZE(self, widget);
34
+ return Qnil;
35
+ }
36
+
37
+ static void
38
+ link_func(button, link, func)
39
+ GtkLinkButton* button;
40
+ const gchar* link;
41
+ gpointer func;
42
+ {
43
+ rb_funcall((VALUE)func, id_call, 2, GOBJ2RVAL(button), CSTR2RVAL(link));
44
+ }
45
+
46
+ static VALUE
47
+ lb_set_uri_hook(self)
48
+ VALUE self;
49
+ {
50
+ VALUE func = rb_block_proc();
51
+ G_RELATIVE(self, func);
52
+ gtk_link_button_set_uri_hook((GtkLinkButtonUriFunc)link_func, (gpointer)func, (GDestroyNotify)NULL);
53
+ return self;
54
+ }
55
+ #endif
56
+
57
+ void
58
+ Init_gtk_link_button()
59
+ {
60
+ #if GTK_CHECK_VERSION(2,10,0)
61
+ VALUE button = G_DEF_CLASS(GTK_TYPE_LINK_BUTTON, "LinkButton", mGtk);
62
+
63
+ rb_define_method(button, "initialize", lb_initialize, -1);
64
+ rb_define_singleton_method(button, "set_uri_hook", lb_set_uri_hook, 0);
65
+
66
+ G_DEF_SETTERS(button);
67
+ #endif
68
+ }
@@ -0,0 +1,412 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkliststore.c -
5
+
6
+ $Author: ggc $
7
+ $Date: 2007/07/13 14:27:09 $
8
+
9
+ Copyright (C) 2002-2005 Masao Mutoh
10
+ ************************************************/
11
+
12
+ #include "global.h"
13
+
14
+ #define _SELF(s) (GTK_LIST_STORE(RVAL2GOBJ(s)))
15
+
16
+ static ID id_to_a, id_size;
17
+
18
+ static VALUE
19
+ lstore_initialize(argc, argv, self)
20
+ int argc;
21
+ VALUE* argv;
22
+ VALUE self;
23
+ {
24
+ gint cnt;
25
+ GtkListStore* store;
26
+ GType* buf;
27
+
28
+ if (argc == 0) rb_raise(rb_eArgError, "need more than 1 class type.");
29
+
30
+ buf = ALLOCA_N(GType, argc);
31
+ for (cnt = 0; cnt < argc; cnt++) {
32
+ buf[cnt] = CLASS2GTYPE(argv[cnt]);
33
+ }
34
+
35
+ store = gtk_list_store_newv(argc, buf);
36
+
37
+ G_INITIALIZE(self, store);
38
+
39
+ return Qnil;
40
+ }
41
+
42
+ static VALUE
43
+ lstore_set_column_types(argc, argv, self)
44
+ int argc;
45
+ VALUE* argv;
46
+ VALUE self;
47
+ {
48
+ gint cnt;
49
+ GType* buf;
50
+
51
+ if (argc == 0) rb_raise(rb_eArgError, "need more than 1 class type.");
52
+ buf = ALLOCA_N(GType, argc);
53
+ for (cnt = 0; cnt < argc; cnt++) {
54
+ buf[cnt] = CLASS2GTYPE(argv[cnt]);
55
+ }
56
+
57
+ gtk_list_store_set_column_types(_SELF(self), argc, buf);
58
+
59
+ return self;
60
+ }
61
+
62
+ static VALUE
63
+ lstore_set_value(self, iter, column, value)
64
+ VALUE self, iter, column, value;
65
+ {
66
+ GType gtype = gtk_tree_model_get_column_type(GTK_TREE_MODEL(RVAL2GOBJ(self)), NUM2INT(column));
67
+ GValue gval = {0,};
68
+ g_value_init(&gval, gtype);
69
+
70
+ rbgobj_rvalue_to_gvalue(value, &gval);
71
+
72
+ G_CHILD_ADD(self, iter);
73
+ G_CHILD_ADD(iter, value);
74
+
75
+ gtk_list_store_set_value(_SELF(self), RVAL2GTKTREEITER(iter), NUM2INT(column), &gval);
76
+
77
+ g_value_unset(&gval);
78
+ return self;
79
+ }
80
+
81
+ #if GTK_CHECK_VERSION(2, 12, 0)
82
+ typedef struct _ValuesInfo
83
+ {
84
+ gint i;
85
+ VALUE iter;
86
+ GtkTreeModel *model;
87
+ gint *g_columns;
88
+ GValue *g_values;
89
+ } ValuesInfo;
90
+
91
+ static int
92
+ collect_value(VALUE key, VALUE value, ValuesInfo *info)
93
+ {
94
+ GType g_type;
95
+ gint column;
96
+
97
+ column = NUM2INT(key);
98
+ info->g_columns[info->i] = column;
99
+ g_type = gtk_tree_model_get_column_type(info->model, column);
100
+ g_value_init(&(info->g_values[info->i]), g_type);
101
+ rbgobj_rvalue_to_gvalue(value, &(info->g_values[info->i]));
102
+ G_CHILD_ADD(info->iter, value);
103
+ info->i++;
104
+
105
+ return ST_CONTINUE;
106
+ }
107
+
108
+ static void
109
+ hash_to_values(VALUE hash, VALUE iter, GtkTreeModel *model,
110
+ gint *g_columns, GValue *g_values, gint length)
111
+ {
112
+ ValuesInfo info;
113
+
114
+ info.i = 0;
115
+ info.iter = iter;
116
+ info.model = model;
117
+ info.g_columns = g_columns;
118
+ info.g_values = g_values;
119
+ rb_hash_foreach(hash, collect_value, (VALUE)(&info));
120
+ }
121
+
122
+ static void
123
+ array_to_values(VALUE array, VALUE iter, GtkTreeModel *model,
124
+ gint *g_columns, GValue *g_values, gint length)
125
+ {
126
+ gint i;
127
+
128
+ for (i = 0; i < length; i++) {
129
+ GType g_type;
130
+
131
+ g_columns[i] = i;
132
+ g_type = gtk_tree_model_get_column_type(model, i);
133
+ g_value_init(&g_values[i], g_type);
134
+ rbgobj_rvalue_to_gvalue(RARRAY_PTR(array)[i], &g_values[i]);
135
+ G_CHILD_ADD(iter, RARRAY_PTR(array)[i]);
136
+ }
137
+ }
138
+
139
+ static VALUE
140
+ lstore_set_valuesv(VALUE self, VALUE iter, VALUE values)
141
+ {
142
+ GValue *g_values;
143
+ GtkListStore *store;
144
+ GtkTreeModel *model;
145
+ gint *g_columns;
146
+ gint i, length;
147
+
148
+ length = NUM2INT(rb_funcall(values, id_size, 0));
149
+ if (length == 0)
150
+ return self;
151
+
152
+ g_columns = ALLOCA_N(gint, length);
153
+ g_values = ALLOCA_N(GValue, length);
154
+ MEMZERO(g_values, GValue, length);
155
+
156
+ G_CHILD_ADD(self, iter);
157
+
158
+ store = _SELF(self);
159
+ model = GTK_TREE_MODEL(store);
160
+ if (RVAL2CBOOL(rb_obj_is_kind_of(values, rb_cHash))) {
161
+ hash_to_values(values, iter, model, g_columns, g_values, length);
162
+ }
163
+ else if (RVAL2CBOOL(rb_obj_is_kind_of(values, rb_cArray))) {
164
+ array_to_values(values, iter, model, g_columns, g_values, length);
165
+ }
166
+ else {
167
+ rb_raise(rb_eArgError, "must be array or hash of values");
168
+ }
169
+
170
+ gtk_list_store_set_valuesv(store, RVAL2GTKTREEITER(iter),
171
+ g_columns, g_values, length);
172
+
173
+ for (i = 0; i < length; i++)
174
+ g_value_unset(&g_values[i]);
175
+
176
+ return self;
177
+ }
178
+ #endif
179
+
180
+ /*
181
+ void gtk_tree_store_set (GtkTreeStore *tree_store,
182
+ GtkTreeIter *iter,
183
+ ...);
184
+
185
+ void gtk_tree_store_set_valist (GtkTreeStore *tree_store,
186
+ GtkTreeIter *iter,
187
+ va_list var_args);
188
+ */
189
+
190
+ static VALUE
191
+ lstore_remove(self, iter)
192
+ VALUE self, iter;
193
+ {
194
+ G_CHILD_REMOVE(self, iter);
195
+ #if GTK_CHECK_VERSION(2,2,0)
196
+ return CBOOL2RVAL(gtk_list_store_remove(_SELF(self), RVAL2GTKTREEITER(iter)));
197
+ #else
198
+ gtk_list_store_remove(_SELF(self), RVAL2GTKTREEITER(iter));
199
+ return Qtrue;
200
+ #endif
201
+ }
202
+
203
+ /*
204
+ Gtk::ListStore#insert(pos, val1 => 0, val2 => 2, ... )
205
+ */
206
+ static VALUE
207
+ lstore_insert(argc, argv, self)
208
+ int argc;
209
+ VALUE* argv;
210
+ VALUE self;
211
+ {
212
+ VALUE position, values, ret;
213
+ GtkTreeIter iter;
214
+ GtkListStore* store = _SELF(self);
215
+
216
+ rb_scan_args(argc, argv, "11", &position, &values);
217
+
218
+ if (NIL_P(values)){
219
+ gtk_list_store_insert(store, &iter, NUM2INT(position));
220
+ } else {
221
+ #if GTK_CHECK_VERSION(2,6,0)
222
+ gint cnt, n_values;
223
+ gint* columns;
224
+ GType gtype;
225
+ GValue* gvalues;
226
+ VALUE ary = rb_funcall(values, id_to_a, 0);
227
+
228
+ n_values = RARRAY_LEN(ary);
229
+
230
+ gvalues = g_new(GValue, n_values);
231
+ columns = g_new(gint, n_values);
232
+
233
+ for (cnt = 0; cnt < n_values; cnt++) {
234
+ Check_Type(RARRAY_PTR(ary)[cnt], T_ARRAY);
235
+ columns[cnt] = NUM2INT(RARRAY_PTR(RARRAY_PTR(ary)[cnt])[1]);
236
+ gtype = gtk_tree_model_get_column_type(GTK_TREE_MODEL(store), columns[cnt]);
237
+ gvalues[cnt].g_type = 0;
238
+ g_value_init(&gvalues[cnt], gtype);
239
+ rbgobj_rvalue_to_gvalue(RARRAY_PTR(RARRAY_PTR(ary)[cnt])[0], &gvalues[cnt]);
240
+ }
241
+
242
+ gtk_list_store_insert_with_valuesv(store, &iter, NUM2INT(position),
243
+ columns, gvalues, n_values);
244
+
245
+ for (cnt = 0; cnt < n_values; cnt++) {
246
+ g_value_unset(&gvalues[cnt]);
247
+ }
248
+ g_free(gvalues);
249
+ g_free(columns);
250
+ #else
251
+ gtk_list_store_insert(store, &iter, NUM2INT(position));
252
+ rb_warn("Ignored 2nd argument under this environment. Because it has been supported since GTK+-2.6. ");
253
+ #endif
254
+ }
255
+ iter.user_data3 = store;
256
+
257
+ ret = GTKTREEITER2RVAL(&iter);
258
+ G_CHILD_ADD(self, ret);
259
+ return ret;
260
+ }
261
+
262
+ static VALUE
263
+ lstore_insert_before(self, sibling)
264
+ VALUE self, sibling;
265
+ {
266
+ VALUE ret;
267
+ GtkTreeIter iter;
268
+ GtkListStore* model = _SELF(self);
269
+ gtk_list_store_insert_before(model, &iter, NIL_P(sibling) ? NULL : RVAL2GTKTREEITER(sibling));
270
+ iter.user_data3 = model;
271
+
272
+ ret = GTKTREEITER2RVAL(&iter);
273
+ G_CHILD_ADD(self, ret);
274
+ return ret;
275
+ }
276
+
277
+ static VALUE
278
+ lstore_insert_after(self, sibling)
279
+ VALUE self, sibling;
280
+ {
281
+ VALUE ret;
282
+ GtkTreeIter iter;
283
+ GtkListStore* model = _SELF(self);
284
+ gtk_list_store_insert_after(model, &iter, NIL_P(sibling) ? NULL : RVAL2GTKTREEITER(sibling));
285
+ iter.user_data3 = model;
286
+
287
+ ret = GTKTREEITER2RVAL(&iter);
288
+ G_CHILD_ADD(self, ret);
289
+ return ret;
290
+ }
291
+
292
+ static VALUE
293
+ lstore_prepend(self)
294
+ VALUE self;
295
+ {
296
+ VALUE ret;
297
+ GtkTreeIter iter;
298
+ GtkListStore* model = _SELF(self);
299
+ gtk_list_store_prepend(model, &iter);
300
+ iter.user_data3 = model;
301
+
302
+ ret = GTKTREEITER2RVAL(&iter);
303
+ G_CHILD_ADD(self, ret);
304
+ return ret;
305
+ }
306
+
307
+ static VALUE
308
+ lstore_append(self)
309
+ VALUE self;
310
+ {
311
+ VALUE ret;
312
+ GtkTreeIter iter;
313
+ GtkListStore* model = _SELF(self);
314
+ gtk_list_store_append(model, &iter);
315
+ iter.user_data3 = model;
316
+
317
+ ret = GTKTREEITER2RVAL(&iter);
318
+ G_CHILD_ADD(self, ret);
319
+ return ret;
320
+ }
321
+
322
+ static VALUE
323
+ lstore_clear(self)
324
+ VALUE self;
325
+ {
326
+ G_CHILD_REMOVE_ALL(self);
327
+ gtk_list_store_clear(_SELF(self));
328
+ return self;
329
+ }
330
+
331
+ #if GTK_CHECK_VERSION(2,2,0)
332
+ static VALUE
333
+ lstore_iter_is_valid(self, iter)
334
+ VALUE self, iter;
335
+ {
336
+ return (NIL_P(iter)) ? Qfalse :
337
+ CBOOL2RVAL(gtk_list_store_iter_is_valid(_SELF(self), RVAL2GTKTREEITER(iter)));
338
+ }
339
+
340
+ static VALUE
341
+ lstore_reorder(self, new_order)
342
+ VALUE self, new_order;
343
+ {
344
+ gint i;
345
+ gint len = RARRAY_LEN(new_order);
346
+ gint* gnew_order = g_new(gint, len);
347
+
348
+ for (i = 0; i < len; i++){
349
+ gnew_order[i] = NUM2INT(RARRAY_PTR(new_order)[i]);
350
+ }
351
+
352
+ gtk_list_store_reorder(_SELF(self), gnew_order);
353
+ g_free(gnew_order);
354
+ return self;
355
+ }
356
+ static VALUE
357
+ lstore_swap(self, iter1, iter2)
358
+ VALUE self, iter1, iter2;
359
+ {
360
+ gtk_list_store_swap(_SELF(self), RVAL2GTKTREEITER(iter1), RVAL2GTKTREEITER(iter2));
361
+ return self;
362
+ }
363
+ static VALUE
364
+ lstore_move_before(self, iter, position)
365
+ VALUE self, iter, position;
366
+ {
367
+ gtk_list_store_move_before(_SELF(self), RVAL2GTKTREEITER(iter),
368
+ NIL_P(position) ? NULL : RVAL2GTKTREEITER(position));
369
+ return self;
370
+ }
371
+ static VALUE
372
+ lstore_move_after(self, iter, position)
373
+ VALUE self, iter, position;
374
+ {
375
+ gtk_list_store_move_after(_SELF(self), RVAL2GTKTREEITER(iter),
376
+ NIL_P(position) ? NULL : RVAL2GTKTREEITER(position));
377
+ return self;
378
+ }
379
+ #endif
380
+
381
+ void
382
+ Init_gtk_list_store()
383
+ {
384
+ VALUE ls = G_DEF_CLASS(GTK_TYPE_LIST_STORE, "ListStore", mGtk);
385
+
386
+ id_to_a = rb_intern("to_a");
387
+ id_size = rb_intern("size");
388
+
389
+ rbgtk_register_treeiter_set_value_func(GTK_TYPE_LIST_STORE,
390
+ (rbgtkiter_set_value_func)&gtk_list_store_set_value);
391
+ rb_define_method(ls, "initialize", lstore_initialize, -1);
392
+ rb_define_method(ls, "set_column_types", lstore_set_column_types, -1);
393
+ rb_define_method(ls, "set_value", lstore_set_value, 3);
394
+ rb_define_method(ls, "remove", lstore_remove, 1);
395
+ rb_define_method(ls, "insert", lstore_insert, -1);
396
+ rb_define_method(ls, "insert_before", lstore_insert_before, 1);
397
+ rb_define_method(ls, "insert_after", lstore_insert_after, 1);
398
+ rb_define_method(ls, "prepend", lstore_prepend, 0);
399
+ rb_define_method(ls, "append", lstore_append, 0);
400
+ rb_define_method(ls, "clear", lstore_clear, 0);
401
+ #if GTK_CHECK_VERSION(2,2,0)
402
+ rb_define_method(ls, "iter_is_valid?", lstore_iter_is_valid, 1);
403
+ rb_define_method(ls, "reorder", lstore_reorder, 1);
404
+ rb_define_method(ls, "swap", lstore_swap, 2);
405
+ rb_define_method(ls, "move_before", lstore_move_before, 2);
406
+ rb_define_method(ls, "move_after", lstore_move_after, 2);
407
+ #endif
408
+ #if GTK_CHECK_VERSION(2, 12, 0)
409
+ rb_define_method(ls, "set_values", lstore_set_valuesv, 2);
410
+ #endif
411
+
412
+ }