This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: adding widgets to guile-gtk



Mariu,

Thanks for your help. It's going well -

I have got all the steps you mentioned working in a Makefile.

With a bit of hacking I can get the library compiled, the bindings in guile
 done, and the whole lot loaded into a running image, and call one of the 'C'
 functions which returns a widget !

i.e. :

guile> (use-modules (toolkits jgwm))
adding missing type `GdkOverlapType'.
adding missing type `GdkWMDecoration'.
adding missing type `GdkWMFunction'.
adding missing type `GdkGC'.
adding missing type `GtkOrientation'.
adding missing type `GtkToolbarStyle'.
adding missing type `GtkToolbarChildType'.
adding missing type `GtkButtonBoxStyle'.
adding missing type `GtkTreeViewMode'.
adding missing type `GtkSpinButtonUpdatePolicy'.
adding missing type `GtkCellType'.
guile> (jgwm-root-new 46)
#<JgwmRoot 87d90>
guile> (jgwm-client-new 46)
#<JgwmClient 11d260>

I'm happy about that but the problems are :

I am using my own library prefix - jgwm. Unfortunately build-guile-gtk does the
 following :

1. puts a call to sgtk_init_jgwm_defs in my guile-jgwm.c file with no
 corresponding extern declaration (the function is in jgwm-glue.c

2. puts a call to  sgtk_register_type_infos(type_infos) in this function without
 defining the argument or the function

3 By adding the extern and commenting out the function call I can get the
 library built but when I try to use gtk fn-ality after using my module I get
 the following : 

guile> (use-modules (toolkits jgwm))
adding missing type `GdkOverlapType'.
adding missing type `GdkWMDecoration'.
adding missing type `GdkWMFunction'.
adding missing type `GdkGC'.
adding missing type `GtkOrientation'.
adding missing type `GtkToolbarStyle'.
adding missing type `GtkToolbarChildType'.
adding missing type `GtkButtonBoxStyle'.
adding missing type `GtkTreeViewMode'.
adding missing type `GtkSpinButtonUpdatePolicy'.
adding missing type `GtkCellType'.
guile> gtk-window-new
ERROR: In expression gtk-window-new:
ERROR: Unbound variable: gtk-window-new
ABORT: (misc-error)

Type "(backtrace)" to get more information.

I have a file called jgwm.scm which contains the following :


(define-module (toolkits jgwm)
  :use-module (toolkits gtk))

;; Merge the C stubs from their own module

(define (merge-exports module interface)
  (let ((mod-i (module-public-interface module)))
    (module-for-each (lambda (sym var)
               (module-add! mod-i sym var))
             interface)))

(merge-exports (current-module)
           (or (resolve-interface '(toolkits jgwmstubs))
           (error "jgwmstubs module not found")))


This is all copied from guile-gtk

It seems that none of the gtk module stuff is registered - although it has been
 loaded and something was called to generate all the messages at the beginning.

Just loading the gtk module in a fresh image is OK :

guile> (use-modules (toolkits gtk))
adding missing type `GdkOverlapType'.
adding missing type `GdkWMDecoration'.
adding missing type `GdkWMFunction'.
adding missing type `GdkGC'.
adding missing type `GtkOrientation'.
adding missing type `GtkToolbarStyle'.
adding missing type `GtkToolbarChildType'.
adding missing type `GtkButtonBoxStyle'.
adding missing type `GtkTreeViewMode'.
adding missing type `GtkSpinButtonUpdatePolicy'.
adding missing type `GtkCellType'.
guile> gtk-window-new
#<primitive-procedure gtk-window-new>


Any ideas what is going on ?

Any help would really be appreciated - I am so close now I can almost touch it -
 but I have gone as far as I can without more help.


Thanks for your time,



Jules