Hi again,
I reply to myself too :)
I realized while I was in a cafe without internet :) that I forgot to attach a
[simplified] glade file. I took this 'opportunity' to edit both mg-wgtk-3 and
mg-wgtk-4 so that there is one global to change to perform in these 2 files ...
So I decided to attach the all example set again, and the glade file, to
facilitate
the work of who ever would like to try and debug ...
-> 'you' may forget the previous email, use the attachments of this
one and the text below
Sorry about this,
Cheers,
David
;; --
Le Mon, 29 Aug 2011 14:05:18 -0300,
David Pirotte <[email protected]> a écrit :
> Hi Andy,
> Ludovic,
>
> > > I fixed it!
> >
> > Thank you very much! The examples I sent earlier now all work, but I still
> > have a
> > problem ...
>
> I finally could reproduce the problem and wrote an example you can run 'in
> the cafe
> without internet' :) [hopefully]
>
> in addition to the comments here below, please note that these examples
> further differs from previous 'versions' I sent in the passed in the
> sense
> that they now also use (gnome glade)
>
> If you drop the attached somewhere in your %load-path, then you can try the
> following 2 tests, one which [here] produces a segfault and the other which
> works fine. The only 'important' difference between these 2 tests is
> expressed by
> diff mg-wgtk-0 mg-wgtk-1:
>
> mg-wgtk-0 defines and export an additional slot which is named
> glade-file
> [which is then used by mg-wgtk-3 ...]
>
> This should or crash guile or produce an error [the behavior of guile itself
> is not
> systematic [here], but it always 'fails':
>
> mg-wgtk-3 uses mg-wgtk-0
> mg-wgtk-2
>
> guile-gnome-2
> (use-modules (mg-wgtk-3))
> (letstry)
> -> Top level dialog: #<<gtk-window> a2bbbc0>
> Printing dialog: Segmentation fault
>
>
> This will work fine:
>
> mg-wgtk-4 uses mg-wgtk-1
> mg-wgtk-2
> guile-gnome-2
> (use-modules (mg-wgtk-4))
> (letstry)
> -> Top level dialog: #<<gtk-window> 8b86c30>
> Printing dialog: #<<gtk-dialog> 8b89110>
>
>
> Many thanks,
> David
>
>
(define-module (mg-wgtk-0)
:use-module (oop goops)
:use-module (gnome gobject)
:use-module (gnome glade)
:use-module (gnome gtk)
:export (<tl-widget>
glade-file
dialog
make-tl-widget
))
(define-class <tl-widget> ()
(glade-file :accessor glade-file :init-keyword :glade-file :init-value #f)
(dialog :accessor dialog :init-keyword :dialog :init-value #f))
(define (make-tl-widget glade-f)
(let* ((xmlc (glade-xml-new glade-f #f "kise"))
(tl-widget (make <tl-widget>
:glade-file glade-f
;; :xml-code xmlc
:dialog (get-widget xmlc "kise"))))
tl-widget))
(define-module (mg-wgtk-1)
:use-module (oop goops)
:use-module (gnome gobject)
:use-module (gnome glade)
:use-module (gnome gtk)
:export (<tl-widget>
dialog
make-tl-widget
))
(define-class <tl-widget> ()
(dialog :accessor dialog :init-keyword :dialog :init-value #f))
(define (make-tl-widget glade-f)
(let* ((xmlc (glade-xml-new glade-f #f "kise"))
(tl-widget (make <tl-widget>
:dialog (get-widget xmlc "kise"))))
tl-widget))
(define-module (mg-wgtk-2)
:use-module (oop goops)
:use-module (gnome gobject)
:use-module (gnome glade)
:use-module (gnome gtk)
:export (<p-widget>
dialog
make-p-widget
))
(define-class <p-widget> ()
;; (xml-code :accessor xml-code :init-keyword :xml-code :init-value #f)
(dialog :accessor dialog :init-keyword :dialog :init-value #f))
(define (make-p-widget parent glade-f)
(let* ((xmlc (glade-xml-new glade-f #f "kp/dialog"))
(p-widget (make <p-widget>
;; :xml-code xmlc
:dialog (get-widget xmlc "kp/dialog"))))
p-widget))
(define-module (mg-wgtk-3)
:use-module (ice-9 format)
:use-module (oop goops)
:use-module (gnome gobject)
:use-module (gnome gtk)
:use-module (mg-wgtk-0)
:use-module (mg-wgtk-2)
:duplicates (merge-generics
replace
warn-override-core
warn
last)
:export (letstry
))
;; you'll have to edit this before to run, according
;; to where you will have saved 'kise.exa.glade'
(define *glade-file* "/usr/alto/projects/kise/glade/kise.exa.glade")
(define (letstry)
(let* ((tl (make-tl-widget *glade-file*))
(p (make-p-widget (dialog tl) (glade-file tl))))
(format #t "Top level dialog: ~S~%" (dialog tl))
(format #t "Printing dialog: ~S~%" (dialog p))))
#!
(use-modules (macros push))
(push! "/usr/local/share/guile/alto/2.0/tests"
%load-path)
(use-modules (mg-wgtk-3))
(letstry)
;;;
;;; 2. using glade in mg-gtk-2 as well
;;;
(use-modules (mg-wgtk-3))
,m (mg-wgtk-3)
(define tl (make-tl-widget *glade-file*))
(define p (make-p-widget (dialog tl)
(glade-file tl)))
(dialog tl)
(dialog p)
!#
(define-module (mg-wgtk-4)
:use-module (ice-9 format)
:use-module (oop goops)
:use-module (gnome gobject)
:use-module (gnome gtk)
:use-module (mg-wgtk-1)
:use-module (mg-wgtk-2)
:duplicates (merge-generics
replace
warn-override-core
warn
last)
:export (letstry
))
;; you'll have to edit this before to run, according
;; to where you will have saved 'kise.exa.glade'
(define *glade-file* "/usr/alto/projects/kise/glade/kise.exa.glade")
(define (letstry)
(let* ((tl (make-tl-widget *glade-file*))
(p (make-p-widget (dialog tl)
*glade-file*)))
(format #t "Top level dialog: ~S~%" (dialog tl))
(format #t "Printing dialog: ~S~%" (dialog p))))
#!
(use-modules (macros push))
(push! "/usr/local/share/guile/alto/2.0/tests"
%load-path)
(use-modules (mg-wgtk-4))
(letstry)
;;;
;;;
;;;
(use-modules (mg-wgtk-4))
,m (mg-wgtk-4)
(define tl (make-tl-widget *glade-file*))
(define p (make-p-widget (dialog tl)
*glade-file*))
(dialog tl)
(dialog p)
!#
kise.exa.glade
Description: application/glade
