unofficial mirror of bug-guile@gnu.org 
 help / color / mirror / Atom feed
From: David Pirotte <david@altosw.be>
To: David Pirotte <david@altosw.be>
Cc: bug-guile@gnu.org, "Ludovic Courtès" <ludo@gnu.org>
Subject: Re: module system / (oop goops) / :duplicates (merge-generics) / bug?
Date: Mon, 29 Aug 2011 23:56:18 -0300	[thread overview]
Message-ID: <20110829235618.0a283a9f@rascar> (raw)
In-Reply-To: <20110829140518.4ad0c46a@rascar>

[-- Attachment #1: Type: text/plain, Size: 2166 bytes --]

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 <david@altosw.be> 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
> 
> 

[-- Attachment #2: mg-wgtk-0.scm --]
[-- Type: text/x-scheme, Size: 623 bytes --]


(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))


[-- Attachment #3: mg-wgtk-1.scm --]
[-- Type: text/x-scheme, Size: 477 bytes --]


(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))


[-- Attachment #4: mg-wgtk-2.scm --]
[-- Type: text/x-scheme, Size: 584 bytes --]


(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))


[-- Attachment #5: mg-wgtk-3.scm --]
[-- Type: text/x-scheme, Size: 1073 bytes --]


(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)


!#

[-- Attachment #6: mg-wgtk-4.scm --]
[-- Type: text/x-scheme, Size: 1039 bytes --]


(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)


!#

[-- Attachment #7: kise.exa.glade --]
[-- Type: application/x-glade, Size: 4796 bytes --]

  reply	other threads:[~2011-08-30  2:56 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-05 21:32 module system / (oop goops) / :duplicates (merge-generics) / bug? David Pirotte
2011-07-06 16:17 ` Ludovic Courtès
2011-07-06 19:22   ` David Pirotte
2011-07-07 11:37     ` Andy Wingo
2011-07-07 16:26       ` David Pirotte
2011-07-07 20:59         ` Andy Wingo
2011-07-08 17:05           ` David Pirotte
2011-07-09 10:02             ` Andy Wingo
2011-07-09 15:08               ` David Pirotte
2011-07-11 15:49                 ` Andy Wingo
2011-07-12  1:25                   ` David Pirotte
2011-08-18 11:01                     ` Andy Wingo
2011-08-19  5:40                       ` David Pirotte
2011-08-29 17:05                         ` David Pirotte
2011-08-30  2:56                           ` David Pirotte [this message]
2011-09-02 11:26                           ` Andy Wingo
2011-09-06 15:41                             ` David Pirotte
2011-08-03 12:28                   ` David Pirotte

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110829235618.0a283a9f@rascar \
    --to=david@altosw.be \
    --cc=bug-guile@gnu.org \
    --cc=ludo@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).