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)


Reply via email to