Some code:
less gtkdraw2.jl
using Gtk
> using Cairo
>
> type GtkDrawingAreaK <: Gtk.GtkDrawingArea # NOT an @GType
> handle::Ptr{GObject}
>
> function GtkDrawingAreaK(w=-1, h=-1)
> da = ccall((:gtk_drawing_area_new,Gtk.libgtk),Ptr{GObject},())
>
> ccall((:gtk_widget_set_size_request,Gtk.libgtk),Void,(Ptr{GObject},Int32,Int32),
>
> da, w, h)
> widget = new(da)
>
> signal_connect(canvas_on_draw_event,widget,"draw",Cint,(Ptr{Void},))
> gc_ref(widget)
> end
> end
>
> function
> canvas_on_draw_event(::Ptr{GObject},cc::Ptr{Void},widget::GtkCanvas) # cc
> is a Cairo context
> ccall((:cairo_set_source_surface,Cairo._jl_libcairo), Void,
> (Ptr{Void},Ptr{Void},Float64,Float64), cc, widget.back.ptr, 0, 0)
> ccall((:cairo_paint,Cairo._jl_libcairo),Void, (Ptr{Void},), cc)
> int32(false)
> end
>
>
run as
julia> include("gtkdraw2.jl")
canvas_on_draw_event (generic function with 1 method)
julia> GtkDrawingAreaK(30,30)
ERROR: function is not yet c-callable
in signal_connect at /home/lobi/.julia/v0.3/Gtk/src/GLib/signals.jl:24
in GtkDrawingAreaK at /home/lobi/juliarepo/gtkdraw2.jl:11
for anyone wondering where the cfunction is, it's inside signal_connect
(see Gtk/src/signals.jl)