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.
- data/ChangeLog +6664 -0
- data/README +33 -0
- data/Rakefile +71 -0
- data/extconf.rb +116 -0
- data/src/global.h +33 -0
- data/src/init.c +39 -0
- data/src/lib/gtk2.rb +13 -0
- data/src/lib/gtk2/base.rb +95 -0
- data/src/makeinits.rb +57 -0
- data/src/makekeysyms.rb +5 -0
- data/src/rbgdk.c +395 -0
- data/src/rbgdk.h +50 -0
- data/src/rbgdkatom.c +122 -0
- data/src/rbgdkcairo.c +100 -0
- data/src/rbgdkcolor.c +151 -0
- data/src/rbgdkcolormap.c +142 -0
- data/src/rbgdkconst.c +29 -0
- data/src/rbgdkconversions.h +18 -0
- data/src/rbgdkcursor.c +115 -0
- data/src/rbgdkdevice.c +235 -0
- data/src/rbgdkdisplay.c +634 -0
- data/src/rbgdkdisplaymanager.c +50 -0
- data/src/rbgdkdragcontext.c +280 -0
- data/src/rbgdkdraw.c +487 -0
- data/src/rbgdkevent.c +1020 -0
- data/src/rbgdkgc.c +456 -0
- data/src/rbgdkgeometry.c +272 -0
- data/src/rbgdkimage.c +155 -0
- data/src/rbgdkinput.c +70 -0
- data/src/rbgdkkeymap.c +153 -0
- data/src/rbgdkkeysyms.h +2174 -0
- data/src/rbgdkkeyval.c +105 -0
- data/src/rbgdkpango.c +171 -0
- data/src/rbgdkpangorenderer.c +132 -0
- data/src/rbgdkpixbuf.c +178 -0
- data/src/rbgdkpixmap.c +255 -0
- data/src/rbgdkproperty.c +342 -0
- data/src/rbgdkrectangle.c +146 -0
- data/src/rbgdkregion.c +242 -0
- data/src/rbgdkrgb.c +197 -0
- data/src/rbgdkscreen.c +535 -0
- data/src/rbgdkselection.c +161 -0
- data/src/rbgdkthreads.c +68 -0
- data/src/rbgdktimecoord.c +118 -0
- data/src/rbgdkvisual.c +273 -0
- data/src/rbgdkwindow.c +1302 -0
- data/src/rbgdkwindowattr.c +213 -0
- data/src/rbgdkx11.c +256 -0
- data/src/rbgtk.c +93 -0
- data/src/rbgtk.h +121 -0
- data/src/rbgtkaboutdialog.c +195 -0
- data/src/rbgtkaccelerator.c +78 -0
- data/src/rbgtkaccelgroup.c +216 -0
- data/src/rbgtkaccelgroupentry.c +85 -0
- data/src/rbgtkaccelkey.c +116 -0
- data/src/rbgtkaccellabel.c +46 -0
- data/src/rbgtkaccelmap.c +162 -0
- data/src/rbgtkaccessible.c +29 -0
- data/src/rbgtkaction.c +277 -0
- data/src/rbgtkactiongroup.c +377 -0
- data/src/rbgtkadjustment.c +153 -0
- data/src/rbgtkalignment.c +71 -0
- data/src/rbgtkallocation.c +171 -0
- data/src/rbgtkarrow.c +47 -0
- data/src/rbgtkaspectframe.c +46 -0
- data/src/rbgtkassistant.c +230 -0
- data/src/rbgtkbbox.c +47 -0
- data/src/rbgtkbin.c +31 -0
- data/src/rbgtkbindingset.c +192 -0
- data/src/rbgtkborder.c +80 -0
- data/src/rbgtkbox.c +142 -0
- data/src/rbgtkbuildable.c +115 -0
- data/src/rbgtkbuilder.c +154 -0
- data/src/rbgtkbutton.c +151 -0
- data/src/rbgtkcalendar.c +159 -0
- data/src/rbgtkcelleditable.c +49 -0
- data/src/rbgtkcelllayout.c +144 -0
- data/src/rbgtkcellrenderer.c +139 -0
- data/src/rbgtkcellrendereraccel.c +42 -0
- data/src/rbgtkcellrenderercombo.c +37 -0
- data/src/rbgtkcellrendererpixbuf.c +33 -0
- data/src/rbgtkcellrendererprogress.c +37 -0
- data/src/rbgtkcellrendererspin.c +38 -0
- data/src/rbgtkcellrenderertext.c +45 -0
- data/src/rbgtkcellrenderertoggle.c +32 -0
- data/src/rbgtkcellview.c +134 -0
- data/src/rbgtkcheckbutton.c +55 -0
- data/src/rbgtkcheckmenuitem.c +56 -0
- data/src/rbgtkclipboard.c +473 -0
- data/src/rbgtkcolorbutton.c +63 -0
- data/src/rbgtkcolorsel.c +175 -0
- data/src/rbgtkcolorselectiondialog.c +72 -0
- data/src/rbgtkcombo.c +117 -0
- data/src/rbgtkcombobox.c +240 -0
- data/src/rbgtkcomboboxentry.c +60 -0
- data/src/rbgtkconst.c +163 -0
- data/src/rbgtkcontainer.c +776 -0
- data/src/rbgtkconversions.h +26 -0
- data/src/rbgtkcurve.c +105 -0
- data/src/rbgtkdialog.c +244 -0
- data/src/rbgtkdrag.c +436 -0
- data/src/rbgtkdrawingarea.c +31 -0
- data/src/rbgtkeditable.c +152 -0
- data/src/rbgtkentry.c +161 -0
- data/src/rbgtkentrycompletion.c +167 -0
- data/src/rbgtkeventbox.c +31 -0
- data/src/rbgtkexpander.c +67 -0
- data/src/rbgtkfilechooser.c +403 -0
- data/src/rbgtkfilechooserbutton.c +72 -0
- data/src/rbgtkfilechooserdialog.c +58 -0
- data/src/rbgtkfilechooserwidget.c +50 -0
- data/src/rbgtkfilefilter.c +139 -0
- data/src/rbgtkfilesel.c +155 -0
- data/src/rbgtkfixed.c +72 -0
- data/src/rbgtkfontbutton.c +69 -0
- data/src/rbgtkfontselection.c +30 -0
- data/src/rbgtkfontselectiondialog.c +106 -0
- data/src/rbgtkframe.c +64 -0
- data/src/rbgtkgamma.c +47 -0
- data/src/rbgtkhandlebox.c +42 -0
- data/src/rbgtkhbbox.c +31 -0
- data/src/rbgtkhbox.c +38 -0
- data/src/rbgtkhpaned.c +31 -0
- data/src/rbgtkhruler.c +31 -0
- data/src/rbgtkhscale.c +45 -0
- data/src/rbgtkhscrollbar.c +38 -0
- data/src/rbgtkhseparator.c +30 -0
- data/src/rbgtkiconfactory.c +80 -0
- data/src/rbgtkiconinfo.c +118 -0
- data/src/rbgtkiconset.c +87 -0
- data/src/rbgtkiconsize.c +90 -0
- data/src/rbgtkiconsource.c +176 -0
- data/src/rbgtkicontheme.c +309 -0
- data/src/rbgtkiconview.c +351 -0
- data/src/rbgtkimage.c +152 -0
- data/src/rbgtkimagemenuitem.c +52 -0
- data/src/rbgtkimcontext.c +134 -0
- data/src/rbgtkimcontextsimple.c +48 -0
- data/src/rbgtkimmulticontext.c +38 -0
- data/src/rbgtkinits.c +473 -0
- data/src/rbgtkinputdialog.c +30 -0
- data/src/rbgtkinvisible.c +68 -0
- data/src/rbgtkitem.c +51 -0
- data/src/rbgtkitemfactory.c +312 -0
- data/src/rbgtklabel.c +168 -0
- data/src/rbgtklayout.c +91 -0
- data/src/rbgtklinkbutton.c +68 -0
- data/src/rbgtkliststore.c +412 -0
- data/src/rbgtkmacros.h +26 -0
- data/src/rbgtkmain.c +532 -0
- data/src/rbgtkmenu.c +272 -0
- data/src/rbgtkmenubar.c +48 -0
- data/src/rbgtkmenuitem.c +171 -0
- data/src/rbgtkmenushell.c +128 -0
- data/src/rbgtkmenutoolbutton.c +74 -0
- data/src/rbgtkmessagedialog.c +102 -0
- data/src/rbgtkmisc.c +63 -0
- data/src/rbgtknotebook.c +484 -0
- data/src/rbgtkobject.c +186 -0
- data/src/rbgtkoptionmenu.c +65 -0
- data/src/rbgtkpagesetup.c +196 -0
- data/src/rbgtkpagesetupunixdialog.c +80 -0
- data/src/rbgtkpaned.c +114 -0
- data/src/rbgtkpapersize.c +186 -0
- data/src/rbgtkplug.c +84 -0
- data/src/rbgtkprintcontext.c +124 -0
- data/src/rbgtkprinter.c +155 -0
- data/src/rbgtkprintjob.c +151 -0
- data/src/rbgtkprintoperation.c +152 -0
- data/src/rbgtkprintoperationpreview.c +54 -0
- data/src/rbgtkprintsettings.c +794 -0
- data/src/rbgtkprintunixdialog.c +98 -0
- data/src/rbgtkprogress.c +21 -0
- data/src/rbgtkprogressbar.c +72 -0
- data/src/rbgtkradioaction.c +102 -0
- data/src/rbgtkradiobutton.c +83 -0
- data/src/rbgtkradiomenuitem.c +115 -0
- data/src/rbgtkradiotoolbutton.c +99 -0
- data/src/rbgtkrange.c +98 -0
- data/src/rbgtkrc.c +228 -0
- data/src/rbgtkrcstyle.c +184 -0
- data/src/rbgtkrecentaction.c +52 -0
- data/src/rbgtkrecentchooser.c +276 -0
- data/src/rbgtkrecentchooserdialog.c +59 -0
- data/src/rbgtkrecentchoosermenu.c +55 -0
- data/src/rbgtkrecentchooserwidget.c +45 -0
- data/src/rbgtkrecentdata.c +152 -0
- data/src/rbgtkrecentfilter.c +180 -0
- data/src/rbgtkrecentfilterinfo.c +197 -0
- data/src/rbgtkrecentinfo.c +232 -0
- data/src/rbgtkrecentmanager.c +164 -0
- data/src/rbgtkruler.c +82 -0
- data/src/rbgtkscale.c +47 -0
- data/src/rbgtkscalebutton.c +115 -0
- data/src/rbgtkscrollbar.c +21 -0
- data/src/rbgtkscrolledwindow.c +160 -0
- data/src/rbgtkselection.c +171 -0
- data/src/rbgtkselectiondata.c +333 -0
- data/src/rbgtkseparator.c +21 -0
- data/src/rbgtkseparatormenuitem.c +28 -0
- data/src/rbgtkseparatortoolitem.c +40 -0
- data/src/rbgtksettings.c +225 -0
- data/src/rbgtksizegroup.c +74 -0
- data/src/rbgtksocket.c +72 -0
- data/src/rbgtkspinbutton.c +138 -0
- data/src/rbgtkstatusbar.c +90 -0
- data/src/rbgtkstatusicon.c +120 -0
- data/src/rbgtkstock.c +264 -0
- data/src/rbgtkstyle.c +722 -0
- data/src/rbgtktable.c +190 -0
- data/src/rbgtktargetlist.c +148 -0
- data/src/rbgtktearoffmenuitem.c +30 -0
- data/src/rbgtktextappearance.c +173 -0
- data/src/rbgtktextattributes.c +209 -0
- data/src/rbgtktextbuffer.c +993 -0
- data/src/rbgtktextchild.c +49 -0
- data/src/rbgtktextiter.c +553 -0
- data/src/rbgtktextmark.c +87 -0
- data/src/rbgtktexttag.c +66 -0
- data/src/rbgtktexttagtable.c +94 -0
- data/src/rbgtktextview.c +351 -0
- data/src/rbgtktoggleaction.c +76 -0
- data/src/rbgtktogglebutton.c +84 -0
- data/src/rbgtktoggletoolbutton.c +70 -0
- data/src/rbgtktoolbar.c +373 -0
- data/src/rbgtktoolbutton.c +75 -0
- data/src/rbgtktoolitem.c +184 -0
- data/src/rbgtktooltip.c +76 -0
- data/src/rbgtktooltips.c +107 -0
- data/src/rbgtktreedragdest.c +19 -0
- data/src/rbgtktreedragsource.c +19 -0
- data/src/rbgtktreeiter.c +259 -0
- data/src/rbgtktreemodel.c +256 -0
- data/src/rbgtktreemodelfilter.c +214 -0
- data/src/rbgtktreemodelsort.c +113 -0
- data/src/rbgtktreepath.c +195 -0
- data/src/rbgtktreerowreference.c +168 -0
- data/src/rbgtktreeselection.c +235 -0
- data/src/rbgtktreesortable.c +127 -0
- data/src/rbgtktreestore.c +379 -0
- data/src/rbgtktreeview.c +881 -0
- data/src/rbgtktreeviewcolumn.c +331 -0
- data/src/rbgtkuimanager.c +210 -0
- data/src/rbgtkvbbox.c +31 -0
- data/src/rbgtkvbox.c +38 -0
- data/src/rbgtkviewport.c +33 -0
- data/src/rbgtkvolumebutton.c +36 -0
- data/src/rbgtkvpaned.c +31 -0
- data/src/rbgtkvruler.c +30 -0
- data/src/rbgtkvscale.c +45 -0
- data/src/rbgtkvscrollbar.c +38 -0
- data/src/rbgtkvseparator.c +30 -0
- data/src/rbgtkwidget.c +1414 -0
- data/src/rbgtkwindow.c +822 -0
- data/src/rbgtkwindowgroup.c +48 -0
- data/test/gtk-test-utils.rb +15 -0
- data/test/run-test.rb +30 -0
- data/test/test_gc.rb +25 -0
- data/test/test_gdk.rb +18 -0
- data/test/test_gdk_color.rb +10 -0
- data/test/test_gdk_display.rb +37 -0
- data/test/test_gdk_event.rb +11 -0
- data/test/test_gdk_gc.rb +7 -0
- data/test/test_gdk_keymap.rb +8 -0
- data/test/test_gdk_pango.rb +9 -0
- data/test/test_gdk_selection_data.rb +17 -0
- data/test/test_gdk_window.rb +29 -0
- data/test/test_gdk_window_attribute.rb +9 -0
- data/test/test_gtk_about_dialog.rb +14 -0
- data/test/test_gtk_buildable.rb +66 -0
- data/test/test_gtk_builder.rb +188 -0
- data/test/test_gtk_entry.rb +18 -0
- data/test/test_gtk_icon_theme.rb +30 -0
- data/test/test_gtk_image.rb +8 -0
- data/test/test_gtk_list_store.rb +65 -0
- data/test/test_gtk_menu_item.rb +13 -0
- data/test/test_gtk_rc_style.rb +14 -0
- data/test/test_gtk_tree_path.rb +20 -0
- data/test/test_gtk_unix_print.rb +14 -0
- data/test/test_gtk_widget.rb +32 -0
- metadata +393 -0
data/src/rbgtkprinter.c
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
|
2
|
+
/************************************************
|
|
3
|
+
|
|
4
|
+
rbgtkprinter.c -
|
|
5
|
+
|
|
6
|
+
$Author: sakai $
|
|
7
|
+
$Date: 2007/07/08 03:00:49 $
|
|
8
|
+
|
|
9
|
+
Copyright (C) 2006 Ruby-GNOME2 Project Team
|
|
10
|
+
************************************************/
|
|
11
|
+
|
|
12
|
+
#include "global.h"
|
|
13
|
+
|
|
14
|
+
#ifdef HAVE_GTK_UNIX_PRINT
|
|
15
|
+
#include <gtk/gtkprinter.h>
|
|
16
|
+
|
|
17
|
+
#ifndef GTK_TYPE_PRINT_BACKEND
|
|
18
|
+
#define GTK_TYPE_PRINT_BACKEND (gtk_print_backend_get_type ())
|
|
19
|
+
#define GTK_PRINT_BACKEND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_PRINT_BACKEND, GtkPrintBackend))
|
|
20
|
+
GType gtk_print_backend_get_type (void) G_GNUC_CONST;
|
|
21
|
+
#endif
|
|
22
|
+
|
|
23
|
+
#define _SELF(s) (GTK_PRINTER(RVAL2GOBJ(s)))
|
|
24
|
+
|
|
25
|
+
static VALUE
|
|
26
|
+
p_initialize(VALUE self, VALUE name, VALUE backend, VALUE rb_virtual)
|
|
27
|
+
{
|
|
28
|
+
GtkPrinter *printer;
|
|
29
|
+
|
|
30
|
+
printer = gtk_printer_new(RVAL2CSTR(name),
|
|
31
|
+
GTK_PRINT_BACKEND(RVAL2GOBJ(backend)),
|
|
32
|
+
RVAL2CBOOL(rb_virtual));
|
|
33
|
+
|
|
34
|
+
G_INITIALIZE(self, printer);
|
|
35
|
+
return Qnil;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* Defined as properties
|
|
39
|
+
gboolean gtk_printer_accepts_ps (GtkPrinter *printer);
|
|
40
|
+
gboolean gtk_printer_accepts_pdf (GtkPrinter *printer);
|
|
41
|
+
GtkPrintBackend* gtk_printer_get_backend (GtkPrinter *printer);
|
|
42
|
+
const gchar* gtk_printer_get_icon_name (GtkPrinter *printer);
|
|
43
|
+
gboolean gtk_printer_is_virtual (GtkPrinter *printer);
|
|
44
|
+
const gchar* gtk_printer_get_name (GtkPrinter *printer);
|
|
45
|
+
const gchar* gtk_printer_get_state_message (GtkPrinter *printer);
|
|
46
|
+
const gchar* gtk_printer_get_location (GtkPrinter *printer);
|
|
47
|
+
gint gtk_printer_get_job_count (GtkPrinter *printer);
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
static VALUE
|
|
51
|
+
p_get_description(VALUE self)
|
|
52
|
+
{
|
|
53
|
+
return CSTR2RVAL(gtk_printer_get_description(_SELF(self)));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
static VALUE
|
|
57
|
+
p_is_active(VALUE self)
|
|
58
|
+
{
|
|
59
|
+
return CBOOL2RVAL(gtk_printer_is_default(_SELF(self)));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
static VALUE
|
|
63
|
+
p_is_default(VALUE self)
|
|
64
|
+
{
|
|
65
|
+
return CBOOL2RVAL(gtk_printer_is_default(_SELF(self)));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
static VALUE
|
|
69
|
+
p_compare(VALUE self, VALUE other)
|
|
70
|
+
{
|
|
71
|
+
if (rb_obj_is_kind_of(other, GTYPE2CLASS(GTK_TYPE_PRINTER))){
|
|
72
|
+
return INT2NUM(gtk_printer_compare(_SELF(self), _SELF(other)));
|
|
73
|
+
} else {
|
|
74
|
+
rb_raise(rb_eTypeError, "%s isn't a kind of Gtk::Printer", rb_class2name(other));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
struct callback_arg
|
|
79
|
+
{
|
|
80
|
+
VALUE callback;
|
|
81
|
+
int argc;
|
|
82
|
+
VALUE *argv;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
static VALUE
|
|
86
|
+
invoke_callback(VALUE data)
|
|
87
|
+
{
|
|
88
|
+
struct callback_arg *arg = (struct callback_arg *)data;
|
|
89
|
+
|
|
90
|
+
return rb_funcall2(arg->callback, id_call, arg->argc, arg->argv);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
static gboolean
|
|
94
|
+
each_printer(GtkPrinter *printer, gpointer data)
|
|
95
|
+
{
|
|
96
|
+
VALUE result;
|
|
97
|
+
VALUE argv[1];
|
|
98
|
+
struct callback_arg arg;
|
|
99
|
+
|
|
100
|
+
argv[0] = GOBJ2RVAL(printer);
|
|
101
|
+
|
|
102
|
+
arg.callback = (VALUE)data;
|
|
103
|
+
arg.argc = 1;
|
|
104
|
+
arg.argv = argv;
|
|
105
|
+
|
|
106
|
+
result = G_PROTECT_CALLBACK(invoke_callback, &arg);
|
|
107
|
+
return NIL_P(rb_errinfo()) ? TRUE : RVAL2CBOOL(result);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
static void
|
|
111
|
+
remove_callback_reference(gpointer data)
|
|
112
|
+
{
|
|
113
|
+
VALUE callback = (VALUE)data;
|
|
114
|
+
G_CHILD_REMOVE(mGtk, callback);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
static VALUE
|
|
118
|
+
p_s_enumerate_printers(int argc, VALUE *argv, VALUE self)
|
|
119
|
+
{
|
|
120
|
+
VALUE wait, block;
|
|
121
|
+
rb_scan_args(argc, argv, "01", &wait);
|
|
122
|
+
|
|
123
|
+
block = rb_block_proc();
|
|
124
|
+
G_CHILD_ADD(mGtk, block);
|
|
125
|
+
gtk_enumerate_printers(each_printer, (gpointer)block,
|
|
126
|
+
remove_callback_reference, RVAL2CBOOL(wait));
|
|
127
|
+
|
|
128
|
+
return self;
|
|
129
|
+
}
|
|
130
|
+
#endif
|
|
131
|
+
|
|
132
|
+
void
|
|
133
|
+
Init_gtk_printer()
|
|
134
|
+
{
|
|
135
|
+
#ifdef HAVE_GTK_UNIX_PRINT
|
|
136
|
+
VALUE gPrinter = G_DEF_CLASS(GTK_TYPE_PRINTER, "Printer", mGtk);
|
|
137
|
+
rb_include_module(gPrinter, rb_mComparable);
|
|
138
|
+
|
|
139
|
+
G_DEF_CLASS(GTK_TYPE_PRINT_BACKEND, "PrintBackend", mGtk);
|
|
140
|
+
|
|
141
|
+
rb_define_singleton_method(gPrinter, "each", p_s_enumerate_printers, -1);
|
|
142
|
+
|
|
143
|
+
rb_define_method(gPrinter, "initialize", p_initialize, 3);
|
|
144
|
+
rb_define_method(gPrinter, "description", p_get_description, 0);
|
|
145
|
+
rb_define_method(gPrinter, "active?", p_is_active, 0);
|
|
146
|
+
rb_define_method(gPrinter, "default?", p_is_default, 0);
|
|
147
|
+
rb_define_method(gPrinter, "<=>", p_compare, 1);
|
|
148
|
+
|
|
149
|
+
G_DEF_CLASS3("GtkPrintBackendCups", "PrintBackendCups", mGtk);
|
|
150
|
+
G_DEF_CLASS3("GtkPrintBackendFile", "PrintBackendFile", mGtk);
|
|
151
|
+
G_DEF_CLASS3("GtkPrintBackendLpr", "PrintBackendLpr", mGtk);
|
|
152
|
+
|
|
153
|
+
G_DEF_SETTERS(gPrinter);
|
|
154
|
+
#endif
|
|
155
|
+
}
|
data/src/rbgtkprintjob.c
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
|
2
|
+
/************************************************
|
|
3
|
+
|
|
4
|
+
rbgtkprintjob.c -
|
|
5
|
+
|
|
6
|
+
$Author: sakai $
|
|
7
|
+
$Date: 2007/07/08 03:00:49 $
|
|
8
|
+
|
|
9
|
+
Copyright (C) 2006 Ruby-GNOME2 Project Team
|
|
10
|
+
************************************************/
|
|
11
|
+
|
|
12
|
+
#include "global.h"
|
|
13
|
+
|
|
14
|
+
#ifdef HAVE_GTK_UNIX_PRINT
|
|
15
|
+
#include <gtk/gtkprintjob.h>
|
|
16
|
+
#ifndef GTK_TYPE_PRINT_CAPABILITIES
|
|
17
|
+
# define GTK_TYPE_PRINT_CAPABILITIES (gtk_print_capabilities_get_type())
|
|
18
|
+
#endif
|
|
19
|
+
|
|
20
|
+
#ifdef HAVE_RB_CAIRO_H
|
|
21
|
+
# include <rb_cairo.h>
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
#define _SELF(s) (GTK_PRINT_JOB(RVAL2GOBJ(s)))
|
|
25
|
+
|
|
26
|
+
static VALUE gPrintJob;
|
|
27
|
+
|
|
28
|
+
static VALUE
|
|
29
|
+
pj_initialize(VALUE self, VALUE title, VALUE printer,
|
|
30
|
+
VALUE settings, VALUE page_setup)
|
|
31
|
+
{
|
|
32
|
+
GtkPrintJob *job;
|
|
33
|
+
|
|
34
|
+
job = gtk_print_job_new(RVAL2CSTR(title),
|
|
35
|
+
GTK_PRINTER(RVAL2GOBJ(printer)),
|
|
36
|
+
GTK_PRINT_SETTINGS(RVAL2GOBJ(settings)),
|
|
37
|
+
GTK_PAGE_SETUP(RVAL2GOBJ(page_setup)));
|
|
38
|
+
|
|
39
|
+
G_INITIALIZE(self, job);
|
|
40
|
+
return Qnil;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* Defined as properties.
|
|
44
|
+
GtkPrintSettings* gtk_print_job_get_settings
|
|
45
|
+
(GtkPrintJob *job);
|
|
46
|
+
GtkPrinter* gtk_print_job_get_printer (GtkPrintJob *job);
|
|
47
|
+
const gchar* gtk_print_job_get_title (GtkPrintJob *job);
|
|
48
|
+
void gtk_print_job_set_track_print_status
|
|
49
|
+
(GtkPrintJob *job,
|
|
50
|
+
gboolean track_status);
|
|
51
|
+
gboolean gtk_print_job_get_track_print_status
|
|
52
|
+
(GtkPrintJob *job);
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
static VALUE
|
|
56
|
+
pj_get_status(VALUE self)
|
|
57
|
+
{
|
|
58
|
+
return GENUM2RVAL(gtk_print_job_get_status(_SELF(self)), GTK_TYPE_PRINT_STATUS);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
static VALUE
|
|
62
|
+
pj_set_source_file(VALUE self, VALUE filename)
|
|
63
|
+
{
|
|
64
|
+
GError *error = NULL;
|
|
65
|
+
gboolean result;
|
|
66
|
+
|
|
67
|
+
result = gtk_print_job_set_source_file(_SELF(self), RVAL2CSTR(filename),
|
|
68
|
+
&error);
|
|
69
|
+
|
|
70
|
+
if (!result)
|
|
71
|
+
RAISE_GERROR(error);
|
|
72
|
+
|
|
73
|
+
return Qnil;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
#ifdef HAVE_RB_CAIRO_H
|
|
77
|
+
static VALUE
|
|
78
|
+
pj_get_surface(VALUE self)
|
|
79
|
+
{
|
|
80
|
+
cairo_surface_t *surface;
|
|
81
|
+
GError *error = NULL;
|
|
82
|
+
|
|
83
|
+
surface = gtk_print_job_get_surface(_SELF(self), &error);
|
|
84
|
+
if (error)
|
|
85
|
+
RAISE_GERROR(error);
|
|
86
|
+
return CRSURFACE2RVAL(surface);
|
|
87
|
+
}
|
|
88
|
+
#endif
|
|
89
|
+
|
|
90
|
+
struct callback_arg
|
|
91
|
+
{
|
|
92
|
+
VALUE callback;
|
|
93
|
+
VALUE job;
|
|
94
|
+
GError* error;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
static VALUE
|
|
98
|
+
invoke_callback(VALUE data)
|
|
99
|
+
{
|
|
100
|
+
struct callback_arg *arg = (struct callback_arg *)data;
|
|
101
|
+
|
|
102
|
+
if (arg->error) RAISE_GERROR(arg->error);
|
|
103
|
+
rb_funcall(arg->callback, id_call, 1, arg->job);
|
|
104
|
+
return Qnil;
|
|
105
|
+
}
|
|
106
|
+
static void
|
|
107
|
+
complete_func(GtkPrintJob *job, gpointer data, GError *error)
|
|
108
|
+
{
|
|
109
|
+
struct callback_arg arg;
|
|
110
|
+
|
|
111
|
+
arg.callback = (VALUE)data;
|
|
112
|
+
arg.job = GOBJ2RVAL(job);
|
|
113
|
+
arg.error = error;
|
|
114
|
+
G_PROTECT_CALLBACK(invoke_callback, &arg);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
static void
|
|
118
|
+
remove_callback_reference(gpointer data)
|
|
119
|
+
{
|
|
120
|
+
G_CHILD_REMOVE(gPrintJob, (VALUE)data);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
static VALUE
|
|
124
|
+
pj_send(VALUE self)
|
|
125
|
+
{
|
|
126
|
+
VALUE block = rb_block_proc();
|
|
127
|
+
G_CHILD_ADD(gPrintJob, block);
|
|
128
|
+
gtk_print_job_send(_SELF(self), complete_func, (gpointer)block,
|
|
129
|
+
remove_callback_reference);
|
|
130
|
+
return self;
|
|
131
|
+
}
|
|
132
|
+
#endif
|
|
133
|
+
|
|
134
|
+
void
|
|
135
|
+
Init_gtk_print_job()
|
|
136
|
+
{
|
|
137
|
+
#ifdef HAVE_GTK_UNIX_PRINT
|
|
138
|
+
gPrintJob = G_DEF_CLASS(GTK_TYPE_PRINT_JOB, "PrintJob", mGtk);
|
|
139
|
+
G_DEF_CLASS(GTK_TYPE_PRINT_CAPABILITIES, "PrintCapabilities", mGtk);
|
|
140
|
+
|
|
141
|
+
rb_define_method(gPrintJob, "initialize", pj_initialize, 4);
|
|
142
|
+
rb_define_method(gPrintJob, "status", pj_get_status, 0);
|
|
143
|
+
rb_define_method(gPrintJob, "set_source_file", pj_set_source_file, 1);
|
|
144
|
+
#ifdef HAVE_RB_CAIRO_H
|
|
145
|
+
rb_define_method(gPrintJob, "surface", pj_get_surface, 0);
|
|
146
|
+
#endif
|
|
147
|
+
rb_define_method(gPrintJob, "send", pj_send, 0);
|
|
148
|
+
|
|
149
|
+
G_DEF_SETTERS(gPrintJob);
|
|
150
|
+
#endif
|
|
151
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
|
2
|
+
/************************************************
|
|
3
|
+
|
|
4
|
+
rbgtkprintoperation.c -
|
|
5
|
+
|
|
6
|
+
$Author: sakai $
|
|
7
|
+
$Date: 2007/07/08 03:00:49 $
|
|
8
|
+
|
|
9
|
+
Copyright (C) 2006 Ruby-GNOME2 Project Team
|
|
10
|
+
************************************************/
|
|
11
|
+
|
|
12
|
+
#include "global.h"
|
|
13
|
+
|
|
14
|
+
#if GTK_CHECK_VERSION(2,10,0)
|
|
15
|
+
#define _SELF(s) (GTK_PRINT_OPERATION(RVAL2GOBJ(s)))
|
|
16
|
+
|
|
17
|
+
static VALUE gPrintOperation;
|
|
18
|
+
|
|
19
|
+
static VALUE
|
|
20
|
+
po_initialize(VALUE self)
|
|
21
|
+
{
|
|
22
|
+
G_INITIALIZE(self, gtk_print_operation_new());
|
|
23
|
+
return Qnil;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
static VALUE
|
|
27
|
+
po_run(int argc, VALUE *argv, VALUE self)
|
|
28
|
+
{
|
|
29
|
+
VALUE action, parent, rb_result;
|
|
30
|
+
GtkPrintOperationResult result;
|
|
31
|
+
GError *error = NULL;
|
|
32
|
+
|
|
33
|
+
rb_scan_args(argc, argv, "11", &action, &parent);
|
|
34
|
+
|
|
35
|
+
result = gtk_print_operation_run(_SELF(self),
|
|
36
|
+
RVAL2GENUM(action, GTK_TYPE_PRINT_OPERATION_ACTION),
|
|
37
|
+
RVAL2GOBJ(parent), &error);
|
|
38
|
+
|
|
39
|
+
rb_result = GENUM2RVAL(result, GTK_TYPE_PRINT_OPERATION_RESULT);
|
|
40
|
+
if (rb_block_given_p()) {
|
|
41
|
+
return rb_yield(rb_result);
|
|
42
|
+
} else {
|
|
43
|
+
if (result == GTK_PRINT_OPERATION_RESULT_ERROR)
|
|
44
|
+
RAISE_GERROR(error);
|
|
45
|
+
return rb_result;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
static VALUE
|
|
50
|
+
po_get_error(VALUE self)
|
|
51
|
+
{
|
|
52
|
+
GError *error = NULL;
|
|
53
|
+
gtk_print_operation_get_error(_SELF(self), &error);
|
|
54
|
+
return error ? rbgerr_gerror2exception(error) : Qnil;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
static VALUE
|
|
58
|
+
po_is_finished(VALUE self)
|
|
59
|
+
{
|
|
60
|
+
return CBOOL2RVAL(gtk_print_operation_is_finished(_SELF(self)));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
static VALUE
|
|
64
|
+
po_cancel(VALUE self)
|
|
65
|
+
{
|
|
66
|
+
gtk_print_operation_cancel(_SELF(self));
|
|
67
|
+
return self;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
struct callback_arg
|
|
71
|
+
{
|
|
72
|
+
VALUE callback;
|
|
73
|
+
VALUE page_setup;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
static VALUE
|
|
77
|
+
invoke_callback(VALUE arg_)
|
|
78
|
+
{
|
|
79
|
+
struct callback_arg *arg = (struct callback_arg *)arg_;
|
|
80
|
+
return rb_funcall(arg->callback, id_call, 1, arg->page_setup);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
static void
|
|
84
|
+
page_setup_done_cb(GtkPageSetup *page_setup, gpointer data)
|
|
85
|
+
{
|
|
86
|
+
VALUE callback = (VALUE)data;
|
|
87
|
+
struct callback_arg arg;
|
|
88
|
+
|
|
89
|
+
G_CHILD_UNSET(gPrintOperation, rb_intern("setup_done_cb"));
|
|
90
|
+
|
|
91
|
+
arg.callback = callback;
|
|
92
|
+
arg.page_setup = GOBJ2RVAL(page_setup);
|
|
93
|
+
|
|
94
|
+
G_PROTECT_CALLBACK(invoke_callback, &arg);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
static VALUE
|
|
98
|
+
po_run_page_setup_dialog(int argc, VALUE *argv, VALUE self)
|
|
99
|
+
{
|
|
100
|
+
VALUE parent, page_setup, settings;
|
|
101
|
+
rb_scan_args(argc, argv, "03", &parent, &page_setup, &settings);
|
|
102
|
+
|
|
103
|
+
if (rb_block_given_p()) {
|
|
104
|
+
volatile VALUE func = rb_block_proc();
|
|
105
|
+
G_CHILD_SET(gPrintOperation, rb_intern("setup_done_cb"), func);
|
|
106
|
+
gtk_print_run_page_setup_dialog_async(RVAL2GOBJ(parent),
|
|
107
|
+
RVAL2GOBJ(page_setup),
|
|
108
|
+
RVAL2GOBJ(settings),
|
|
109
|
+
page_setup_done_cb,
|
|
110
|
+
(gpointer)func);
|
|
111
|
+
return Qnil;
|
|
112
|
+
} else {
|
|
113
|
+
return GOBJ2RVALU(gtk_print_run_page_setup_dialog(RVAL2GOBJ(parent),
|
|
114
|
+
RVAL2GOBJ(page_setup),
|
|
115
|
+
RVAL2GOBJ(settings)));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
#endif
|
|
119
|
+
|
|
120
|
+
void
|
|
121
|
+
Init_gtk_print_operation()
|
|
122
|
+
{
|
|
123
|
+
#if GTK_CHECK_VERSION(2,10,0)
|
|
124
|
+
gPrintOperation = G_DEF_CLASS(GTK_TYPE_PRINT_OPERATION, "PrintOperation", mGtk);
|
|
125
|
+
|
|
126
|
+
G_DEF_ERROR(GTK_PRINT_ERROR, "PrintError", mGtk, rb_eRuntimeError,
|
|
127
|
+
GTK_TYPE_PRINT_ERROR);
|
|
128
|
+
|
|
129
|
+
rb_define_method(gPrintOperation, "initialize", po_initialize, 0);
|
|
130
|
+
rb_define_method(gPrintOperation, "run", po_run, -1);
|
|
131
|
+
rb_define_method(gPrintOperation, "error", po_get_error, 0);
|
|
132
|
+
rb_define_method(gPrintOperation, "finished?", po_is_finished, 0);
|
|
133
|
+
rb_define_method(gPrintOperation, "cancel", po_cancel, 0);
|
|
134
|
+
|
|
135
|
+
rb_define_singleton_method(gPrintOperation, "run_page_setup_dialog",
|
|
136
|
+
po_run_page_setup_dialog, -1);
|
|
137
|
+
|
|
138
|
+
/* GtkPrintStatus */
|
|
139
|
+
G_DEF_CLASS(GTK_TYPE_PRINT_STATUS, "Status", gPrintOperation);
|
|
140
|
+
G_DEF_CONSTANTS(gPrintOperation, GTK_TYPE_PRINT_STATUS, "GTK_PRINT_");
|
|
141
|
+
|
|
142
|
+
/* GtkPrintOperationAction */
|
|
143
|
+
G_DEF_CLASS(GTK_TYPE_PRINT_OPERATION_ACTION,"Action", gPrintOperation);
|
|
144
|
+
G_DEF_CONSTANTS(gPrintOperation, GTK_TYPE_PRINT_OPERATION_ACTION, "GTK_PRINT_OPERATION_");
|
|
145
|
+
|
|
146
|
+
/* GtkPrintOperationResult */
|
|
147
|
+
G_DEF_CLASS(GTK_TYPE_PRINT_OPERATION_RESULT, "Result", gPrintOperation);
|
|
148
|
+
G_DEF_CONSTANTS(gPrintOperation, GTK_TYPE_PRINT_OPERATION_RESULT, "GTK_PRINT_OPERATION_");
|
|
149
|
+
|
|
150
|
+
G_DEF_SETTERS(gPrintOperation);
|
|
151
|
+
#endif
|
|
152
|
+
}
|