From bat@ip.pt Tue Sep 30 20:17:44 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp.isp.novis.pt (onyx.ip.pt [195.23.92.252]) by mail.gnome.org (Postfix) with ESMTP id 6538518C09 for ; Tue, 30 Sep 2003 20:17:44 -0400 (EDT) Received: (qmail 5967 invoked from network); 1 Oct 2003 00:17:55 -0000 Received: from unknown (HELO apolo) (bat@[195.23.98.190]) (envelope-sender ) by mail.isp.novis.pt (qmail-ldap-1.03) with SMTP for ; 1 Oct 2003 00:17:55 -0000 Message-ID: <006e01c387b1$3c3b8280$0301a8c0@apolo> From: "Bruno Tavares" To: Subject: thank you guys... Date: Wed, 1 Oct 2003 01:16:18 +0100 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_006B_01C387B9.9DB80C10" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1158 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: This is a multi-part message in MIME format. ------=_NextPart_000_006B_01C387B9.9DB80C10 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable I've been trying to migrate my app from perl-Gtk to perl-Gtk2 for the = last month. With all your help and pacience i finally did it. The page is http://syndigator.sourceforge.net/syndigator-gtk2/ You can also add this project to your "perl-gtk2 apps" list. Now i'm just watting for the .. erms... perl-Gtk2-Html widget to = complete the port. Thank you. ------=_NextPart_000_006B_01C387B9.9DB80C10 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
I've been trying to = migrate my app=20 from perl-Gtk to perl-Gtk2 for the last month.
With all your help and = pacience i=20 finally did it.
The page is http://syndig= ator.sourceforge.net/syndigator-gtk2/
 
You can also add this = project to your=20 "perl-gtk2 apps" list.
 
Now i'm just watting = for the ..=20 erms... perl-Gtk2-Html widget to complete the port.
 
Thank = you.
------=_NextPart_000_006B_01C387B9.9DB80C10-- From alas@widomaker.com Tue Sep 30 20:28:24 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from webmail.widomaker.com (webmail.widomaker.com [204.17.220.4]) by mail.gnome.org (Postfix) with ESMTP id A21E218ABF for ; Tue, 30 Sep 2003 20:28:24 -0400 (EDT) Received: from webmail.widomaker.com (localhost [127.0.0.1]) by webmail.widomaker.com (8.12.9/8.12.9) with ESMTP id h910RHjF028726 for ; Tue, 30 Sep 2003 20:27:17 -0400 (EDT) (envelope-from alas@widomaker.com) Received: (from nobody@localhost) by webmail.widomaker.com (8.12.9/8.12.9/Submit) id h910RH2s028725 for gtk-perl-list@gnome.org; Tue, 30 Sep 2003 20:27:17 -0400 (EDT) X-Authentication-Warning: webmail.widomaker.com: nobody set sender to alas@widomaker.com using -f To: gtk-perl-list@gnome.org Subject: Re: question about packaging Message-ID: <1064968037.3f7a1f6581b8a@webmail.widomaker.com> Date: Tue, 30 Sep 2003 20:27:17 -0400 (EDT) From: Chas Owens References: <20030930115311.380b5986.j.g.karssenberg@student.utwente.nl> <3F7A184B.7090406@teyandei.net> In-Reply-To: <3F7A184B.7090406@teyandei.net> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit User-Agent: IMP/PHP IMAP webmail program 2.2.6 X-Originating-IP: 199.244.214.30 X-Webmail: Report abuse to abuse@widomaker.com Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Quoting James Curbo : > I like the idea of the __DATA__ approach though, especally if you just > have one glade file. (although there is that multi-data-section module.. > can't remember what it's called right now though) Inline::Files? You really don't need multiple glade files though. The second argument of Gtk2::GladeXML->new() is the name of the widget to start from. You can have many different windows in one file and open each one in it's turn: $glade1 = Gtk2::GladeXML->new_from_memory($xml, 'main_window'); $glade2 = Gtk2::GladeXML->new_from_memory($xml, 'preferences'); $glade3 = Gtk2::GladeXML->new_from_memory($xml, 'results'); From scott@asofyet.org Tue Sep 30 20:57:12 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from gollum.dreamhost.com (gollum.dreamhost.com [66.33.209.16]) by mail.gnome.org (Postfix) with ESMTP id BD60F18159 for ; Tue, 30 Sep 2003 20:57:12 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by gollum.dreamhost.com (Postfix) with ESMTP id 8B3165B7E1; Tue, 30 Sep 2003 17:57:24 -0700 (PDT) Date: Tue, 30 Sep 2003 20:57:37 -0400 Subject: Re: windows binary? Content-Type: text/plain; charset=US-ASCII; format=flowed Mime-Version: 1.0 (Apple Message framework v552) Cc: gtk-perl-list@gnome.org To: Tom Cross From: muppet In-Reply-To: <1064958298.16146.19.camel@meridian.kendeco.com> Message-Id: <401E56DB-F3AA-11D7-82CF-000A9580E5E0@asofyet.org> Content-Transfer-Encoding: 7bit X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Tuesday, September 30, 2003, at 05:44 PM, Tom Cross wrote: > I've been playing around a bit with perl-GTK2 (love it BTW) and was > just > handed a project which SCREAMS for perl-GTK2 but on win32. I know > there > are plans on releasing win32 binaries with 1.00 release. I'm just > wondering if there is somewhere I can get a preliminary package to > start > testing with? erm... a technicality: likely not *with* the 1.00 release, but there will be win32 binaries of 1.00. is there anybody who has experience creating activestate PPM packages from XS modules? i have had no success creating binary PPM packages of the modules on win32. the last time i tried was a month or two ago, and the results were that i could create a set of PPMs that looked okay but failed to install correctly. i have no idea what was wrong, and haven't had the time to mess with it since. gavin was looking at making an installer-type binary dist, but the dropline gtk binaries for 2.2.x had lots and lots of symbols that appeared to be compiled in, but missing from the exports list, and therefore not available at link time; this caused some extreme pain and suffering, which caused him to give up. the 2.4.x binaries i grabbed the other day appear to have fixed most of those missing symbols, and have instead a new set. :-( but, anyway, gavin -- interested in having another go at it? marc told me he had no problem using tml's gtk binaries with stuff straight from gtk2-perl's cvs (i.e., none of the patching i have to do with the dropline binaries). i haven't tried this, mostly because of inertia and lack of time. -- muppet From phoenix@sandwich.net Wed Oct 1 00:57:20 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from pioneer (adsl-209.142.189.150-rb.spt.centurytel.net [209.142.189.150]) by mail.gnome.org (Postfix) with ESMTP id 15C25181B4 for ; Wed, 1 Oct 2003 00:57:20 -0400 (EDT) Received: from james by pioneer with local (Exim 3.36 #1 (Debian)) id 1A4Z3K-0000WI-00; Tue, 30 Sep 2003 23:57:30 -0500 Subject: Re: question about packaging From: James Curbo Reply-To: james@teyandei.net To: Chas Owens Cc: gtk perl mailing list In-Reply-To: <1064968037.3f7a1f6581b8a@webmail.widomaker.com> References: <20030930115311.380b5986.j.g.karssenberg@student.utwente.nl> <3F7A184B.7090406@teyandei.net> <1064968037.3f7a1f6581b8a@webmail.widomaker.com> Content-Type: text/plain Content-Transfer-Encoding: 7bit Message-Id: <1064984250.1969.0.camel@pioneer> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.4 Date: Tue, 30 Sep 2003 23:57:30 -0500 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Tue, 2003-09-30 at 19:27, Chas Owens wrote: > Quoting James Curbo : > > > I like the idea of the __DATA__ approach though, especally if you just > > have one glade file. (although there is that multi-data-section module.. > > can't remember what it's called right now though) > > > Inline::Files? You really don't need multiple glade files though. The second > argument of Gtk2::GladeXML->new() is the name of the widget to start from. You > can have many different windows in one file and open each one in it's turn: > > $glade1 = Gtk2::GladeXML->new_from_memory($xml, 'main_window'); > $glade2 = Gtk2::GladeXML->new_from_memory($xml, 'preferences'); > $glade3 = Gtk2::GladeXML->new_from_memory($xml, 'results'); This is true, and very useful. I only mentioned it because I had seen other programs (not necessarily Perl) use multiple glade files (gnumeric springs to mind) James From nelis@brabys.co.za Wed Oct 1 06:56:52 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from brabys.co.za (postoffice.brabys.co.za [192.96.48.13]) by mail.gnome.org (Postfix) with ESMTP id 044A81812A for ; Wed, 1 Oct 2003 06:56:51 -0400 (EDT) Received: from [192.96.48.37] (proxy-inner.brabys.co.za [192.96.48.11]) by brabys.co.za (8.12.0/8.12.0) with ESMTP id h91Au8cp022851 for ; Wed, 1 Oct 2003 12:56:08 +0200 Subject: Glib-1.00rc3 make test fails From: Nelis Lamprecht Reply-To: nelis@brabys.co.za To: Gtk-Perl-List Content-Type: text/plain Message-Id: <1065005767.16009.136.camel@enigma.8ball.co.za> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.4 Date: Wed, 01 Oct 2003 12:56:07 +0200 Content-Transfer-Encoding: 7bit X-MailScanner: Found to be clean Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Hi People, I'm new to the Gtk scene and have been going through the tutorials and sample code for Gtk Perl. I would now like to move on and use Gtk2-Perl but I'm having problems installing it. ExtUtils installed fine but I'm getting the following error when running a make test on Glib: enigma# make test PERL_DL_NONLAZY=1 /usr/local/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/1....NOK 1# Failed test (t/1.t at line 16) # Tried to use 'Glib'. # Error: Can't load '/usr/home/nelis/downloads/development/new/Glib-1.00rc3/blib/arch/auto/Glib/Glib.so' for module Glib: /usr/local/lib/libgthread-2.0.so.200: Undefined symbol "pthread_mutex_lock" at /usr/local/lib/perl5/5.8.0/mach/DynaLoader.pm line 229. I assume the rest of the errors that follow are as a result of the above. I have the following versions of Glib installed: glib-1.2.10_10 glib-2.2.3 I'm running Gnome2.4 on FreeBSD 4.8 Stable. I've tried googling for this but couldn't come up with anything positive. Any help would be appreciated. Thanks, Nelis From calle@cyberpomo.com Wed Oct 1 07:12:07 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from ulthar.bisexualmenace.org (ulthar.bisexualmenace.org [213.150.130.171]) by mail.gnome.org (Postfix) with SMTP id 843B1184F4 for ; Wed, 1 Oct 2003 07:12:06 -0400 (EDT) Received: (qmail 90166 invoked by uid 1001); 1 Oct 2003 11:12:18 -0000 To: Gtk-Perl-List Subject: Re: Glib-1.00rc3 make test fails References: <1065005767.16009.136.camel@enigma.8ball.co.za> From: Calle Dybedahl Organization: Not much Date: Wed, 01 Oct 2003 13:12:18 +0200 In-Reply-To: <1065005767.16009.136.camel@enigma.8ball.co.za> (Nelis Lamprecht's message of "Wed, 01 Oct 2003 12:56:07 +0200") Message-ID: <864qyt43fx.fsf@ulthar.bisexualmenace.org> User-Agent: Gnus/5.1002 (Gnus v5.10.2) XEmacs/21.4 (Reasonable Discussion, berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: >>>>> "Nelis" == Nelis Lamprecht writes: > I'm running Gnome2.4 on FreeBSD 4.8 Stable. I've tried googling for > this but couldn't come up with anything positive. Any help would be > appreciated. Add "disable-threadsafe" to the command-line when you run Makefile.PL and it'll compile and, as far as I've been able to determine, work. -- Calle Dybedahl Maintainer of the Blake's 7 mailing list. Mail for info. From nelis@brabys.co.za Wed Oct 1 07:52:10 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from brabys.co.za (postoffice.brabys.co.za [192.96.48.13]) by mail.gnome.org (Postfix) with ESMTP id 53D0F182AF for ; Wed, 1 Oct 2003 07:52:09 -0400 (EDT) Received: from [192.96.48.37] (proxy-inner.brabys.co.za [192.96.48.11]) by brabys.co.za (8.12.0/8.12.0) with ESMTP id h91Bq1cp009994 for ; Wed, 1 Oct 2003 13:52:01 +0200 Subject: Gnome2-0.36 make fails From: Nelis Lamprecht Reply-To: nelis@brabys.co.za To: Gtk-Perl-List Content-Type: text/plain Message-Id: <1065009120.16009.148.camel@enigma.8ball.co.za> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.4 Date: Wed, 01 Oct 2003 13:52:01 +0200 Content-Transfer-Encoding: 7bit X-MailScanner: Found to be clean Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Hi, Thanks to Calle Dybedahl for answering my previous thread I successfully compiled and installed Glib-1.00rc3 and Gtk2-1.00rc3. I am now getting the following error when running a make on Gnome2-0.36: \" -o xs/GnomeScores.o -DPIC -fPIC "-I/usr/local/lib/perl5/5.8.0/mach/CORE" xs/GnomeScores.c GnomeScores.xs: In function `XS_Gnome2__Scores_new': GnomeScores.xs:78: syntax error before `*' GnomeScores.xs:80: `b' undeclared (first use in this function) GnomeScores.xs:80: (Each undeclared identifier is reported only once GnomeScores.xs:80: for each function it appears in.) GnomeScores.xs:91: syntax error before `*' GnomeScores.xs:93: `c' undeclared (first use in this function) *** Error code 1 Stop in /usr/home/nelis/downloads/development/new/Gnome2-0.36. Any help is much appreciated. This is on Gnome2.4/FreeBSD 4.8 Stable. Regards, Nelis From ady@aoe6.net Wed Oct 1 08:40:16 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.aoe6.com (unknown [62.90.35.150]) by mail.gnome.org (Postfix) with ESMTP id 724001833A for ; Wed, 1 Oct 2003 08:40:15 -0400 (EDT) Content-class: urn:content-classes:message Subject: Documentation Date: Wed, 1 Oct 2003 15:41:23 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Message-ID: <5C819BF0FD6A0641966922A5079A11420317BF@mail.aoe6.com> X-MS-Has-Attach: X-MimeOLE: Produced By Microsoft Exchange V6.5.6944.0 X-MS-TNEF-Correlator: Thread-Topic: Documentation Thread-Index: AcOHuk3z+klhl4ecR0yhhIAKpWE1lwAZy48A From: "Ady Shimony" To: Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Hi Any updated tutorial/references for Gtk2-perl? I had found only Gtk1 stuff... Thanks, Ady. From pagaltzis@gmx.de Wed Oct 1 09:04:24 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.gmx.net (mail.gmx.de [213.165.64.20]) by mail.gnome.org (Postfix) with SMTP id D5BF818E58 for ; Wed, 1 Oct 2003 09:04:23 -0400 (EDT) Received: (qmail 14119 invoked by uid 65534); 1 Oct 2003 13:04:35 -0000 Received: from xdsl-195-14-206-181.netcologne.de (EHLO klangraum) (195.14.206.181) by mail.gmx.net (mp023) with SMTP; 01 Oct 2003 15:04:35 +0200 X-Authenticated: #163624 Received: (qmail 1063 invoked by uid 1000); 1 Oct 2003 13:02:39 -0000 Date: Wed, 1 Oct 2003 15:02:39 +0200 From: "A. Pagaltzis" To: gtk-perl-list@gnome.org Subject: Re: Documentation Message-ID: <20031001130239.GA1033@klangraum> Mail-Followup-To: gtk-perl-list@gnome.org References: <5C819BF0FD6A0641966922A5079A11420317BF@mail.aoe6.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5C819BF0FD6A0641966922A5079A11420317BF@mail.aoe6.com> User-Agent: Mutt/1.4i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: * Ady Shimony [2003-10-01 12:41]: > Any updated tutorial/references for Gtk2-perl? The Gtk2 (C API) docs at apply to about 98%. How they translate to Gtk2-Perl is described in ``perldoc Gtk2::api''. All the POD as well as a tutorial can also be found online on the project's pages at . -- Regards, Aristotle "If you can't laugh at yourself, you don't take life seriously enough." From j.g.karssenberg@student.utwente.nl Wed Oct 1 09:16:48 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from netlx014.civ.utwente.nl (netlx014.civ.utwente.nl [130.89.1.88]) by mail.gnome.org (Postfix) with ESMTP id 4D3491817E for ; Wed, 1 Oct 2003 09:16:48 -0400 (EDT) Received: from Captain (pardus-larus.student.utwente.nl [130.89.162.38]) by netlx014.civ.utwente.nl (8.11.7/HKD) with SMTP id h91DGv011842 for ; Wed, 1 Oct 2003 15:16:57 +0200 Date: Wed, 1 Oct 2003 15:19:50 +0200 From: Jaap Karssenberg To: gtk-perl-list@gnome.org Subject: Custom widget with GladeXML Message-Id: <20031001151950.6024209d.j.g.karssenberg@student.utwente.nl> X-Mailer: Sylpheed version 0.9.5claws (GTK+ 1.2.10; i686-pc-linux-gnu) X-Operating-System: Gentoo GNU/Linux X-Face: "v{-bpe?1p2m|Je=04fRKRU3r_u46st:$k=UF[?DH7FEX9(W=d1a4w9:%kXx;v#"({6w,fp(Xpz}BNuW!^"6Z`Xhi#ftaVCoG7T}S>dpie1HyhN)A$NPbG6xELWy|bt\ Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-UTwente-MailScanner-Information: Scanned by MailScanner. Contact helpdesk@ITBE.utwente.nl for more information. X-UTwente-MailScanner: Found to be clean Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: In order to load xpm data from memory I inserted a custom widget into glade that should create the image and substitute it. Now I don't understand in which namespace GladeXML looks for the create_function, I tried several things and it just keeps saying: (test.pl:2353): libglade-WARNING **: could not find widget creation function I tried oputting the function in the namespace where the xml object is created, in the namespace where signals are connected from, in "Custom::" and even in "Gtk2::GladeXML::" -- no luck whatsoever :(( Anyone who knows how to fix this ? -- ) ( Jaap Karssenberg || Pardus [Larus] : : http://pardus-larus.student.utwente.nl/~pardus ) \ / ( ",.*'*.," Proud owner of "Perl6 Essentials" 1st edition :) From rwmcfa1@neces.com Wed Oct 1 09:47:47 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smeagol.dreamhost.com (unknown [66.33.209.5]) by mail.gnome.org (Postfix) with ESMTP id A476618380 for ; Wed, 1 Oct 2003 09:47:47 -0400 (EDT) Received: from beta.local (12-222-230-66.client.insightBB.com [12.222.230.66]) by smeagol.dreamhost.com (Postfix) with ESMTP id 7D194238F5; Wed, 1 Oct 2003 06:47:59 -0700 (PDT) Subject: Re: Custom widget with GladeXML From: Ross McFarland To: Jaap Karssenberg Cc: Gtk-Perl-List In-Reply-To: <20031001151950.6024209d.j.g.karssenberg@student.utwente.nl> References: <20031001151950.6024209d.j.g.karssenberg@student.utwente.nl> Content-Type: text/plain Message-Id: <1065016075.28641.31.camel@beta.local> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Wed, 01 Oct 2003 09:47:55 -0400 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Wed, 2003-10-01 at 09:19, Jaap Karssenberg wrote: > In order to load xpm data from memory I inserted a custom widget into > glade that should create the image and substitute it. > > Now I don't understand in which namespace GladeXML looks for the > create_function, I tried several things and it just keeps saying: > > (test.pl:2353): libglade-WARNING **: could not find widget creation > function > > I tried oputting the function in the namespace where the xml object is > created, in the namespace where signals are connected from, in > "Custom::" and even in "Gtk2::GladeXML::" -- no luck whatsoever :(( > > Anyone who knows how to fix this ? this would probably be a good faq topic, the custom widget stuff in glade, especially doing the xpm from data stuff, someone post a good concise answer and i'll put it up in the faq, or tell you how to. there's probably several other glade related faq entries that could be made. anyone interested in creating faq fodder (entries) or howto/intro/article/docs etc. let me know, the more the merrier. -rm From j.g.karssenberg@student.utwente.nl Wed Oct 1 10:19:14 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from netlx050.vf.utwente.nl (netlx050.vf.utwente.nl [192.87.17.19]) by mail.gnome.org (Postfix) with ESMTP id 41B3919016 for ; Wed, 1 Oct 2003 10:19:14 -0400 (EDT) Received: from Captain (pardus-larus.student.utwente.nl [130.89.162.38]) by netlx050.vf.utwente.nl (8.11.7/HKD) with SMTP id h91EJJ306074 for ; Wed, 1 Oct 2003 16:19:19 +0200 Date: Wed, 1 Oct 2003 16:22:08 +0200 From: Jaap Karssenberg To: "gtk-perl-list@gnome.org" Subject: Fw: Custom widget with GladeXML Message-Id: <20031001162208.33f7755d.j.g.karssenberg@student.utwente.nl> X-Mailer: Sylpheed version 0.9.5claws (GTK+ 1.2.10; i686-pc-linux-gnu) X-Operating-System: Gentoo GNU/Linux X-Face: "v{-bpe?1p2m|Je=04fRKRU3r_u46st:$k=UF[?DH7FEX9(W=d1a4w9:%kXx;v#"({6w,fp(Xpz}BNuW!^"6Z`Xhi#ftaVCoG7T}S>dpie1HyhN)A$NPbG6xELWy|bt\ Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-UTwente-MailScanner-Information: Scanned by MailScanner. Contact helpdesk@ITBE.utwente.nl for more information. X-UTwente-MailScanner: Found to be clean Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Didn't see CC header so forwarding it. Begin forwarded message: On Wed, 01 Oct 2003 10:11:30 -0400 (EDT) Chas Owens wrote: : : Unfortunatly the custom widget building code looks broken[1]. I am : working on it now. When it is finished you will use it like this: : : use Gtk2; : use Gtk2::GladeXML; : : Gtk2->init; : : Gtk2::GladeXML->set_custom_handler(\&custom_handler); : : my $glade = Gtk2::GladeXML->new('file.galde'); : : Gtk2->main; : : sub custom_handler { : my $glade = shift; #the current gladexml object : my $func_name = shift; #the name of the widget creation : function my $name = shift; #the name of the widget : my $str1 = shift; #the args : my $str2 = shift; : my $int1 = shift; : my $int2 = shift; : : #you can either build everything here and return a widget or : #you can farm the work out like this: : return eval "$func_name(\$glade,\$name,\$str1,\$str2,\$int1, : \$int2)"; : } : : sub create_some_widget { : my $glade = shift; #the current gladexml object : my $name = shift; #the name of the widget : my $str1 = shift; #the args : my $str2 = shift; : my $int1 = shift; : my $int2 = shift; : : #create some widget : } : : : 1. It appears as if the POPs in glade_custom_widget is getting the : Gtk2::GladeXML object instead of return from the sub. Muppet or Ross, : can you help shed any light on this. I hacked on it all night (I had : to teach myself about Perl stack handling) and still can't see what is : wrong. The code is roughly the same as what Gtk-Perl did and it : (Gtk::GladeXML) worked. Here is some psuedocode of what I think : should occur: : : user calls Gtk2::GladeXML->set_custom_handler(\&func); : : the bindings stick @_ into a static AV so that the next function can : find it and registers a C function glade_custom_widget with the real : glade_set_custom_handler. : : The user calls Gtk2::GladeXML->new() with a glade file that has custom : widgets in it. : : libglade calls the registered C function (glade_custom_widget) : : The C function glade_custom_widget calls the perl function named in : the first element of the static AV saved earlier with the arguments : passed to it followed by the rest of the static AV. It then returns : the return of the perl sub (it should be a Gtk2::Widget). : : Everything is fine up to that last bit. I get the warning: : : invalid cast from 'GladeXML' to 'GtkObject' : : So it sounds to me like a stack pointer mismanagement issue, but I : can't find anything that looks out of place. : -- ) ( Jaap Karssenberg || Pardus [Larus] : : http://pardus-larus.student.utwente.nl/~pardus ) \ / ( ",.*'*.," Proud owner of "Perl6 Essentials" 1st edition :) From bosteins@broadpark.no Wed Oct 1 10:37:58 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.broadpark.no (mail.broadpark.no [217.13.4.2]) by mail.gnome.org (Postfix) with ESMTP id 66DBE1826A for ; Wed, 1 Oct 2003 10:37:58 -0400 (EDT) Received: from broadpark.no (169.80-203-5.nextgentel.com [80.203.5.169]) by mail.broadpark.no (Postfix) with ESMTP id AC76D791E9 for ; Wed, 1 Oct 2003 16:38:10 +0200 (MEST) Message-ID: <3F7AE69F.4000908@broadpark.no> Date: Wed, 01 Oct 2003 16:37:19 +0200 From: =?ISO-8859-1?Q?Bjarne_Steinsb=F8?= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 X-Accept-Language: en-us, en MIME-Version: 1.0 To: gtk-perl-list@gnome.org Subject: Subclassing Gtk2::CellRenderer Content-Type: multipart/mixed; boundary="------------050009000703090505090004" Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: This is a multi-part message in MIME format. --------------050009000703090505090004 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Background: I want to create a custom cell renderer for TreeView to allow cells to be editable by using something that might look like an OptionMenu or a Combo. Since I'm new to Gtk, I (try to) start off by doing nothing, i.e. implement my own renderer that inherits everything from an existing renderer. The point is to get to grips with the basics of GObject inheritance etc. So, I made a few small changes to the (1.0rc3) example "simplelist.pl" (please see attached diff), and implemented a basically empty class (please see attached "MyRenderer.pm"). So far so good. The printf's seem to indicate that stuff is routed through my class and since the example still works, it looks as if I'm on the correct track. Next step is to try to override a method, and just delegate the handling to the parent class. The Gtk documentation shows that a "GtkCellRenderer" class (the superclass of "GtkCellRendererText", which again is the class that "MyRenderer" inherits from) should have a "gtk_cell_renderer_render" method, called whenever the cell needs to be rendered. Looks good as a test case, this method will obviously be the crux of the matter when going back to what I eventually would like to do. A method invocation in GObject is just a signal, right? So I should override the proper signal name in order to let my own routine handle this method. However, when I try to install an overridden method (uncommenting line 7 in "MyRenderer.pm") the way I think method overriding is to be done, I get an error message saying "can't override class closure for unknown signal render at ...". Where am I going wrong? Bjarne --------------050009000703090505090004 Content-Type: text/plain; name="diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="diff" *** /usr/src/Gtk2-perl/Gtk2-1.00rc3/examples/simplelist.pl Fri Sep 26 01:26:33 2003 --- simplelist.pl Wed Oct 1 15:03:23 2003 *************** *** 29,30 **** --- 29,32 ---- + use MyRenderer; + # add a new type of column that reverses the text that's in a scalar *************** *** 33,35 **** type => 'Glib::Scalar', ! renderer => 'Gtk2::CellRendererText', attr => sub { --- 35,37 ---- type => 'Glib::Scalar', ! renderer => 'MyRenderer', attr => sub { *************** *** 84,85 **** --- 86,91 ---- $scwin->add ($slist); + printf STDERR "Renderer for column 5 is %s\n", + $slist->get_column (5)->get_cell_renderers; + printf STDERR "Renderer for column 6 is %s\n", + $slist->get_column (6)->get_cell_renderers; --------------050009000703090505090004 Content-Type: text/plain; name="MyRenderer.pm" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="MyRenderer.pm" package Gtk2::CellRendererText::MyRenderer; use strict; use Gtk2; use Glib::Object::Subclass Gtk2::CellRendererText::, signals => { render => \&do_render, # get_size => \&do_get_size, }, properties => [ ], ; # Overridden render sub do_render { my $self = shift; print STDERR "MyRenderer::render called\n"; $self->signal_chain_from_overridden; } sub do_get_size { my $self = shift; print STDERR "MyRenderer::get_size called\n"; $self->signal_chain_from_overridden; } sub INIT_INSTANCE { my $self = shift; print STDERR "MyRenderer::INIT_INSTANCE called\n"; printf STDERR "Type of self = %s\n", $self; } 1; --------------050009000703090505090004-- From alas@widomaker.com Wed Oct 1 10:43:45 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from webmail.widomaker.com (webmail.widomaker.com [204.17.220.4]) by mail.gnome.org (Postfix) with ESMTP id 481861831D for ; Wed, 1 Oct 2003 10:43:45 -0400 (EDT) Received: from webmail.widomaker.com (localhost [127.0.0.1]) by webmail.widomaker.com (8.12.9/8.12.9) with ESMTP id h91EgijF030245; Wed, 1 Oct 2003 10:42:44 -0400 (EDT) (envelope-from alas@widomaker.com) Received: (from nobody@localhost) by webmail.widomaker.com (8.12.9/8.12.9/Submit) id h91Egi0H030244; Wed, 1 Oct 2003 10:42:44 -0400 (EDT) X-Authentication-Warning: webmail.widomaker.com: nobody set sender to alas@widomaker.com using -f To: Jaap Karssenberg Subject: Re: Fw: Custom widget with GladeXML Message-ID: <1065019364.3f7ae7e4485b5@webmail.widomaker.com> Date: Wed, 01 Oct 2003 10:42:44 -0400 (EDT) From: Chas Owens Cc: "gtk-perl-list@gnome.org" References: <20031001162208.33f7755d.j.g.karssenberg@student.utwente.nl> In-Reply-To: <20031001162208.33f7755d.j.g.karssenberg@student.utwente.nl> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit User-Agent: IMP/PHP IMAP webmail program 2.2.6 X-Originating-IP: 199.244.214.30 X-Webmail: Report abuse to abuse@widomaker.com Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: > : So it sounds to me like a stack pointer mismanagement issue, but I > : can't find anything that looks out of place. > : Should we be using GPerlCallback instead of mucking about with the stack ourselves? I am going to try adapting the code in GtkContainer.xs to what i think I need in GladeXML.xs and see how far I can get before someone stops me or my brain explodes (offically 26 hours awake now). From bosteins@broadpark.no Wed Oct 1 10:51:03 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.broadpark.no (mail.broadpark.no [217.13.4.2]) by mail.gnome.org (Postfix) with ESMTP id C8D3918471 for ; Wed, 1 Oct 2003 10:51:02 -0400 (EDT) Received: from broadpark.no (169.80-203-5.nextgentel.com [80.203.5.169]) by mail.broadpark.no (Postfix) with ESMTP id 48E07790ED; Wed, 1 Oct 2003 16:51:15 +0200 (MEST) Message-ID: <3F7AE9B0.3090604@broadpark.no> Date: Wed, 01 Oct 2003 16:50:24 +0200 From: =?ISO-8859-1?Q?Bjarne_Steinsb=F8?= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 X-Accept-Language: en-us, en MIME-Version: 1.0 To: =?ISO-8859-1?Q?Bjarne_Steinsb=F8?= Cc: gtk-perl-list@gnome.org Subject: Re: Subclassing Gtk2::CellRenderer References: <3F7AE69F.4000908@broadpark.no> In-Reply-To: <3F7AE69F.4000908@broadpark.no> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Sh*t. I kept trying new stuff while writing the email, the attachments only got attached at the "send" button, so the text, the diff and the module are now out of sync. I've edited this mail to make it consistent again (inline attachments this time...) so please disregard the original mail. Bjarne Bjarne Steinsbø wrote: > Background: I want to create a custom cell renderer for TreeView to > allow cells to be editable by using something that might look like an > OptionMenu or a Combo. > > Since I'm new to Gtk, I (try to) start off by doing nothing, i.e. > implement my own renderer that inherits everything from an existing > renderer. The point is to get to grips with the basics of GObject > inheritance etc. > > So, I made a few small changes to the (1.0rc3) example "simplelist.pl" > (please see attached diff), and implemented a basically empty class > (please see attached "MyRenderer.pm"). So far so good. The printf's > seem to indicate that stuff is routed through my class and since the > example still works, it looks as if I'm on the correct track. > > Next step is to try to override a method, and just delegate the > handling to the parent class. The Gtk documentation shows that a > "GtkCellRenderer" class (the superclass of "GtkCellRendererText", > which again is the class that "MyRenderer" inherits from) should have > a "gtk_cell_renderer_render" method, called whenever the cell needs to > be rendered. Looks good as a test case, this method will obviously > be the crux of the matter when going back to what I eventually would > like to do. > > A method invocation in GObject is just a signal, right? So I should > override the proper signal name in order to let my own routine handle > this method. > > However, when I try to install an overridden method (uncommenting line > 7 in "MyRenderer.pm") the way I think method overriding is to be done, > I get an error message saying "can't override class closure for > unknown signal render at ...". Where am I going wrong? > > Bjarne > >------------------------------------------------------------------------ > >*** /usr/src/Gtk2-perl/Gtk2-1.00rc3/examples/simplelist.pl Fri Sep 26 01:26:33 2003 >--- simplelist.pl Wed Oct 1 15:03:23 2003 >*************** >*** 29,30 **** >--- 29,32 ---- > >+ use MyRenderer; >+ > # add a new type of column that reverses the text that's in a scalar >*************** >*** 33,35 **** > type => 'Glib::Scalar', >! renderer => 'Gtk2::CellRendererText', > attr => sub { >--- 35,37 ---- > type => 'Glib::Scalar', >! renderer => 'MyRenderer', > attr => sub { >*************** >*** 84,85 **** >--- 86,91 ---- > $scwin->add ($slist); >+ printf STDERR "Renderer for column 5 is %s\n", >+ $slist->get_column (5)->get_cell_renderers; >+ printf STDERR "Renderer for column 6 is %s\n", >+ $slist->get_column (6)->get_cell_renderers; > > > >------------------------------------------------------------------------ > >package MyRenderer; >use strict; >use Gtk2; > >use Glib::Object::Subclass Gtk2::CellRendererText::, > signals => { ># render => \&do_render, ># get_size => \&do_get_size, > }, > properties => [ ], >; > ># Overridden render >sub do_render { > my $self = shift; > print STDERR "MyRenderer::render called\n"; > $self->signal_chain_from_overridden; >} > >sub do_get_size { > my $self = shift; > print STDERR "MyRenderer::get_size called\n"; > $self->signal_chain_from_overridden; >} > >sub INIT_INSTANCE { > my $self = shift; > print STDERR "MyRenderer::INIT_INSTANCE called\n"; > printf STDERR "Type of self = %s\n", $self; >} > >1; > > From j.g.karssenberg@student.utwente.nl Wed Oct 1 12:26:12 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from netlx010.civ.utwente.nl (netlx010.civ.utwente.nl [130.89.1.92]) by mail.gnome.org (Postfix) with ESMTP id 075E618264 for ; Wed, 1 Oct 2003 12:26:12 -0400 (EDT) Received: from Captain (pardus-larus.student.utwente.nl [130.89.162.38]) by netlx010.civ.utwente.nl (8.11.4/HKD) with SMTP id h91GQL100464 for ; Wed, 1 Oct 2003 18:26:21 +0200 Date: Wed, 1 Oct 2003 18:29:15 +0200 From: Jaap Karssenberg To: gtk-perl-list@gnome.org Subject: Re: Custom widget with GladeXML Message-Id: <20031001182915.4b6d28ff.j.g.karssenberg@student.utwente.nl> In-Reply-To: <20031001162208.33f7755d.j.g.karssenberg@student.utwente.nl> References: <20031001162208.33f7755d.j.g.karssenberg@student.utwente.nl> X-Mailer: Sylpheed version 0.9.5claws (GTK+ 1.2.10; i686-pc-linux-gnu) X-Operating-System: Gentoo GNU/Linux X-Face: "v{-bpe?1p2m|Je=04fRKRU3r_u46st:$k=UF[?DH7FEX9(W=d1a4w9:%kXx;v#"({6w,fp(Xpz}BNuW!^"6Z`Xhi#ftaVCoG7T}S>dpie1HyhN)A$NPbG6xELWy|bt\ Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-UTwente-MailScanner-Information: Scanned by MailScanner. Contact helpdesk@ITBE.utwente.nl for more information. X-UTwente-MailScanner: Found to be clean Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: The following line causes the following error Gtk2::GladeXML->set_custom_handler(\&custom_handler); Can't locate auto/Gtk2/GladeXML/set_custom_.al in @INC (@INC contains: .... ) Is it correct that it searches for "set_custom_.al" instead of "set_custom_handler.al" ?? Anyway I'll escape the custom code for now. -- ) ( Jaap Karssenberg || Pardus [Larus] : : http://pardus-larus.student.utwente.nl/~pardus ) \ / ( ",.*'*.," Proud owner of "Perl6 Essentials" 1st edition :) From scott@asofyet.org Wed Oct 1 12:35:31 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from gollum.dreamhost.com (unknown [66.33.209.16]) by mail.gnome.org (Postfix) with ESMTP id 2D90918DA1 for ; Wed, 1 Oct 2003 12:35:31 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by gollum.dreamhost.com (Postfix) with ESMTP id B491C5B7AE; Wed, 1 Oct 2003 09:35:42 -0700 (PDT) Date: Wed, 1 Oct 2003 12:35:57 -0400 Subject: Re: Custom widget with GladeXML Content-Type: text/plain; charset=US-ASCII; format=flowed Mime-Version: 1.0 (Apple Message framework v552) Cc: gtk-perl-list@gnome.org To: Jaap Karssenberg From: muppet In-Reply-To: <20031001182915.4b6d28ff.j.g.karssenberg@student.utwente.nl> Message-Id: <559CCBB8-F42D-11D7-82CF-000A9580E5E0@asofyet.org> Content-Transfer-Encoding: 7bit X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Wednesday, October 1, 2003, at 12:29 PM, Jaap Karssenberg wrote: > Can't locate auto/Gtk2/GladeXML/set_custom_.al in @INC (@INC > contains: .... ) > > Is it correct that it searches for "set_custom_.al" instead of > "set_custom_handler.al" ?? i'm not sure whether it's correct, but it's a sure sign that the function doesn't exist. i've seen it for many moons, and invariably means that an xsub is spelled wrong or nor implemented. -- muppet From alas@widomaker.com Wed Oct 1 12:35:35 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from webmail.widomaker.com (webmail.widomaker.com [204.17.220.4]) by mail.gnome.org (Postfix) with ESMTP id DACB318DA1 for ; Wed, 1 Oct 2003 12:35:34 -0400 (EDT) Received: from webmail.widomaker.com (localhost [127.0.0.1]) by webmail.widomaker.com (8.12.9/8.12.9) with ESMTP id h91GYZjF030581; Wed, 1 Oct 2003 12:34:35 -0400 (EDT) (envelope-from alas@widomaker.com) Received: (from nobody@localhost) by webmail.widomaker.com (8.12.9/8.12.9/Submit) id h91GYYLx030580; Wed, 1 Oct 2003 12:34:34 -0400 (EDT) X-Authentication-Warning: webmail.widomaker.com: nobody set sender to alas@widomaker.com using -f To: Jaap Karssenberg Subject: Re: Custom widget with GladeXML Message-ID: <1065026074.3f7b021ae25b8@webmail.widomaker.com> Date: Wed, 01 Oct 2003 12:34:34 -0400 (EDT) From: Chas Owens Cc: gtk-perl mailing list References: <20031001162208.33f7755d.j.g.karssenberg@student.utwente.nl> <20031001182915.4b6d28ff.j.g.karssenberg@student.utwente.nl> In-Reply-To: <20031001182915.4b6d28ff.j.g.karssenberg@student.utwente.nl> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit User-Agent: IMP/PHP IMAP webmail program 2.2.6 X-Originating-IP: 199.244.214.30 X-Webmail: Report abuse to abuse@widomaker.com Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Quoting Jaap Karssenberg : > > The following line causes the following error > > Gtk2::GladeXML->set_custom_handler(\&custom_handler); > > Can't locate auto/Gtk2/GladeXML/set_custom_.al in @INC (@INC > contains: .... ) > > Is it correct that it searches for "set_custom_.al" instead of > "set_custom_handler.al" ?? Anyway I'll escape the custom code for now. > > -- > ) ( Jaap Karssenberg || Pardus [Larus] > : : http://pardus-larus.student.utwente.nl/~pardus > ) \ / ( > ",.*'*.," Proud owner of "Perl6 Essentials" 1st edition :) Yeah, you have to remove the glade_ from glade_set_custom_handler in GladeXML.xs. There are many problems with the custom widget code at the moment. I am trying to iron them out. From scott@asofyet.org Wed Oct 1 12:46:25 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from gollum.dreamhost.com (unknown [66.33.209.16]) by mail.gnome.org (Postfix) with ESMTP id 617A718A78 for ; Wed, 1 Oct 2003 12:46:25 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by gollum.dreamhost.com (Postfix) with ESMTP id 3F9E55B7AE; Wed, 1 Oct 2003 09:46:37 -0700 (PDT) Date: Wed, 1 Oct 2003 12:46:52 -0400 Subject: Re: Fw: Custom widget with GladeXML Content-Type: text/plain; charset=US-ASCII; format=flowed Mime-Version: 1.0 (Apple Message framework v552) Cc: "gtk-perl-list@gnome.org" To: Chas Owens From: muppet In-Reply-To: <1065019364.3f7ae7e4485b5@webmail.widomaker.com> Message-Id: Content-Transfer-Encoding: 7bit X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Wednesday, October 1, 2003, at 10:42 AM, Chas Owens wrote: >> : So it sounds to me like a stack pointer mismanagement issue, but I >> : can't find anything that looks out of place. >> : > > Should we be using GPerlCallback instead of mucking about with the > stack > ourselves? I am going to try adapting the code in GtkContainer.xs to > what i > think I need in GladeXML.xs and see how far I can get before someone > stops me or > my brain explodes (offically 26 hours awake now). it should absolutely be using GPerlCallback and/or GPerlClosure. from my initial once-over[1] it looks like it's using the old gtk-perl-style callbacks which accept a list for user data, but sometimes pushes all the elements onto the stack and sometimes pushes only one, and appears in most cases to leak the AV after all. it should be fixed to use the Glib module's utilities or at least its style, for consistency. the global custom_args hack should not be necessary -- that's what the user_data argument and GPerlCallback are for. now, it may be quite a trick figuring out how to trigger the proper destruction of the callback objects, since no destroy notifiers are included; possibly the callback should be placed into object data of the object to which it is connected (with g_object_set_data_full). as for why POPs returns what was on the beginning of the stack before... i have no clue. the code looks right --- PUSHMARK, load the stack, commit the new stack with PUTBACK, call_sv, read the mangled stack with SPAGAIN, and POPs... that should read from the end. i don't get it. [1] i admit, i've never looked at this code before. i have next to no idea what's going on with libglade, so i've never had occasion to touch it. -- muppet From kaffeetisch@web.de Wed Oct 1 12:51:17 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp.web.de (smtp01.web.de [217.72.192.180]) by mail.gnome.org (Postfix) with ESMTP id 8126918EC1 for ; Wed, 1 Oct 2003 12:51:17 -0400 (EDT) Received: from [217.230.252.227] (helo=6-allhosts) by smtp.web.de with esmtp (WEB.DE 4.99 #448) id 1A4kCH-0006u6-00 for gtk-perl-list@gnome.org; Wed, 01 Oct 2003 18:51:30 +0200 Subject: Re: Gnome2-0.36 make fails From: Torsten Schoenfeld To: Gtk-Perl-List In-Reply-To: <1065009120.16009.148.camel@enigma.8ball.co.za> References: <1065009120.16009.148.camel@enigma.8ball.co.za> Content-Type: text/plain Message-Id: <1065027090.17680.8.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Wed, 01 Oct 2003 18:51:30 +0200 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Wed, 2003-10-01 at 13:52, Nelis Lamprecht wrote: > I am now getting the following error when running a make on Gnome2-0.36: That specific error has been solved and the fix is in CVS. Thanks for the hint, -Torsten From rwmcfa1@neces.com Wed Oct 1 13:02:59 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smeagol.dreamhost.com (unknown [66.33.209.5]) by mail.gnome.org (Postfix) with ESMTP id C573B181C7 for ; Wed, 1 Oct 2003 13:02:59 -0400 (EDT) Received: from beta.local (12-222-230-66.client.insightBB.com [12.222.230.66]) by smeagol.dreamhost.com (Postfix) with ESMTP id BD40A23AAF for ; Wed, 1 Oct 2003 10:03:10 -0700 (PDT) Subject: Re: Fw: Custom widget with GladeXML From: Ross McFarland To: Gtk-Perl-List In-Reply-To: References: Content-Type: text/plain Message-Id: <1065027789.28641.50.camel@beta.local> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Wed, 01 Oct 2003 13:03:10 -0400 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Wed, 2003-10-01 at 12:46, muppet wrote: > [1] i admit, i've never looked at this code before. i have next to no > idea what's going on with libglade, so i've never had occasion to touch > it. [1.1] i've been trying to tell people that i just copied what was in gtk-perl and that glade needs a maintainer that knows glade. obviously this issue has nothing to do with callback methodologies, but i didn't spend any time looking at it. i did the gladexml module in about an hour and that mainly consisted of copying the code and getting it to compile. the only other things i changed where where the api had been modified/added to/etc. at the time i didn't realize it would be nearly as popular as it has turned out to be. chas said he was looking into all this so by default he's now the maintainer :-) -rm From alas@widomaker.com Wed Oct 1 13:08:16 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from webmail.widomaker.com (webmail.widomaker.com [204.17.220.4]) by mail.gnome.org (Postfix) with ESMTP id AC8DA181C7 for ; Wed, 1 Oct 2003 13:08:16 -0400 (EDT) Received: from webmail.widomaker.com (localhost [127.0.0.1]) by webmail.widomaker.com (8.12.9/8.12.9) with ESMTP id h91H7HjF030637; Wed, 1 Oct 2003 13:07:17 -0400 (EDT) (envelope-from alas@widomaker.com) Received: (from nobody@localhost) by webmail.widomaker.com (8.12.9/8.12.9/Submit) id h91H7HPw030636; Wed, 1 Oct 2003 13:07:17 -0400 (EDT) X-Authentication-Warning: webmail.widomaker.com: nobody set sender to alas@widomaker.com using -f To: Ross McFarland Subject: Re: Fw: Custom widget with GladeXML Message-ID: <1065028037.3f7b09c5347a0@webmail.widomaker.com> Date: Wed, 01 Oct 2003 13:07:17 -0400 (EDT) From: Chas Owens Cc: Gtk-Perl-List References: <1065027789.28641.50.camel@beta.local> In-Reply-To: <1065027789.28641.50.camel@beta.local> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit User-Agent: IMP/PHP IMAP webmail program 2.2.6 X-Originating-IP: 199.244.214.30 X-Webmail: Report abuse to abuse@widomaker.com Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Quoting Ross McFarland : > On Wed, 2003-10-01 at 12:46, muppet wrote: > > [1] i admit, i've never looked at this code before. i have next to no > > > idea what's going on with libglade, so i've never had occasion to > touch > > it. > > [1.1] i've been trying to tell people that i just copied what was in > gtk-perl and that glade needs a maintainer that knows glade. obviously > this issue has nothing to do with callback methodologies, but i didn't > spend any time looking at it. Yeah, that is why I am banging my head against it now. > i did the gladexml module in about an hour and that mainly consisted > of copying the code and getting it to compile. the only other things i > changed where where the api had been modified/added to/etc. > at the time i didn't realize it would be nearly as popular as it has > turned out to be. > > chas said he was looking into all this so by default he's now the > maintainer :-) > > -rm I had been planning on taking up the mantle as soon as I got my laptop out of the grave (it was undead -- living of other laptops batteries). my laptop is fixed, therefore I have no more excuses. From j.g.karssenberg@student.utwente.nl Wed Oct 1 15:35:20 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from netlx050.vf.utwente.nl (netlx050.vf.utwente.nl [192.87.17.19]) by mail.gnome.org (Postfix) with ESMTP id 2C4A11830C for ; Wed, 1 Oct 2003 15:35:20 -0400 (EDT) Received: from Captain (pardus-larus.student.utwente.nl [130.89.162.38]) by netlx050.vf.utwente.nl (8.11.7/HKD) with SMTP id h91JZS309055 for ; Wed, 1 Oct 2003 21:35:28 +0200 Date: Wed, 1 Oct 2003 21:38:22 +0200 From: Jaap Karssenberg To: gtk-perl-list@gnome.org Subject: SimpleList->new_from_treeview Message-Id: <20031001213822.36b617b2.j.g.karssenberg@student.utwente.nl> X-Mailer: Sylpheed version 0.9.5claws (GTK+ 1.2.10; i686-pc-linux-gnu) X-Operating-System: Gentoo GNU/Linux X-Face: "v{-bpe?1p2m|Je=04fRKRU3r_u46st:$k=UF[?DH7FEX9(W=d1a4w9:%kXx;v#"({6w,fp(Xpz}BNuW!^"6Z`Xhi#ftaVCoG7T}S>dpie1HyhN)A$NPbG6xELWy|bt\ Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-UTwente-MailScanner-Information: Scanned by MailScanner. Contact helpdesk@ITBE.utwente.nl for more information. X-UTwente-MailScanner: Found to be clean Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: I noticed that new_from_treeview doesn't complain when the treeview arg doesn't exist - cost me half a day bug hunting :(( Maybe an argument check could be inserted ? -- ) ( Jaap Karssenberg || Pardus [Larus] : : http://pardus-larus.student.utwente.nl/~pardus ) \ / ( ",.*'*.," Proud owner of "Perl6 Essentials" 1st edition :) From scott@asofyet.org Wed Oct 1 18:34:43 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smaug.dreamhost.com (unknown [66.33.209.15]) by mail.gnome.org (Postfix) with ESMTP id B602C187A1 for ; Wed, 1 Oct 2003 18:34:43 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by smaug.dreamhost.com (Postfix) with ESMTP id 9D0145B81E; Wed, 1 Oct 2003 15:34:55 -0700 (PDT) Date: Wed, 1 Oct 2003 18:35:11 -0400 Subject: Re: SimpleList->new_from_treeview Content-Type: text/plain; charset=US-ASCII; format=flowed Mime-Version: 1.0 (Apple Message framework v552) Cc: gtk-perl-list@gnome.org To: Jaap Karssenberg From: muppet In-Reply-To: <20031001213822.36b617b2.j.g.karssenberg@student.utwente.nl> Message-Id: <84585CFF-F45F-11D7-82CF-000A9580E5E0@asofyet.org> Content-Transfer-Encoding: 7bit X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Wednesday, October 1, 2003, at 03:38 PM, Jaap Karssenberg wrote: > I noticed that new_from_treeview doesn't complain when the treeview arg > doesn't exist - cost me half a day bug hunting :(( > Maybe an argument check could be inserted ? if you supply undef for the widget, it creates a new one. that's a side effect of the way it's implemented --- ->new is now a call to ->new_from_treeview. perhaps they both need to be error-checking front ends to a constructor? ah. i had documented the fact that undef results in a new widget being created, but apparently that documentation didn't make it into cvs. sorry about that. -- muppet From pagaltzis@gmx.de Wed Oct 1 19:04:19 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.gmx.net (imap.gmx.net [213.165.64.20]) by mail.gnome.org (Postfix) with SMTP id 1FCC31830B for ; Wed, 1 Oct 2003 19:04:19 -0400 (EDT) Received: (qmail 3352 invoked by uid 65534); 1 Oct 2003 23:04:31 -0000 Received: from xdsl-195-14-206-181.netcologne.de (EHLO klangraum) (195.14.206.181) by mail.gmx.net (mp007) with SMTP; 02 Oct 2003 01:04:31 +0200 X-Authenticated: #163624 Received: (qmail 4964 invoked by uid 1000); 1 Oct 2003 23:03:05 -0000 Date: Thu, 2 Oct 2003 01:03:05 +0200 From: "A. Pagaltzis" To: gtk-perl-list@gnome.org Subject: Re: SimpleList->new_from_treeview Message-ID: <20031001230305.GA4947@klangraum> Mail-Followup-To: gtk-perl-list@gnome.org References: <20031001213822.36b617b2.j.g.karssenberg@student.utwente.nl> <84585CFF-F45F-11D7-82CF-000A9580E5E0@asofyet.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <84585CFF-F45F-11D7-82CF-000A9580E5E0@asofyet.org> User-Agent: Mutt/1.4i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: * muppet [2003-10-01 22:35]: > > I noticed that new_from_treeview doesn't complain when the > > treeview arg doesn't exist - cost me half a day bug hunting > > :(( Maybe an argument check could be inserted ? > > if you supply undef for the widget, it creates a new one. I'm not sure whether he's talking about passing undef or passing nothing at all. That's two different conditions there. -- Regards, Aristotle "If you can't laugh at yourself, you don't take life seriously enough." From j.g.karssenberg@student.utwente.nl Wed Oct 1 19:29:09 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from netlx010.civ.utwente.nl (netlx010.civ.utwente.nl [130.89.1.92]) by mail.gnome.org (Postfix) with ESMTP id B30A918238 for ; Wed, 1 Oct 2003 19:29:08 -0400 (EDT) Received: from Captain (pardus-larus.student.utwente.nl [130.89.162.38]) by netlx010.civ.utwente.nl (8.11.4/HKD) with SMTP id h91NTG123123 for ; Thu, 2 Oct 2003 01:29:16 +0200 Date: Thu, 2 Oct 2003 01:32:09 +0200 From: Jaap Karssenberg To: gtk-perl-list@gnome.org Subject: Re: SimpleList->new_from_treeview Message-Id: <20031002013209.67407f5d.j.g.karssenberg@student.utwente.nl> In-Reply-To: <20031001230305.GA4947@klangraum> References: <20031001213822.36b617b2.j.g.karssenberg@student.utwente.nl> <84585CFF-F45F-11D7-82CF-000A9580E5E0@asofyet.org> <20031001230305.GA4947@klangraum> X-Mailer: Sylpheed version 0.9.5claws (GTK+ 1.2.10; i686-pc-linux-gnu) X-Operating-System: Gentoo GNU/Linux X-Face: "v{-bpe?1p2m|Je=04fRKRU3r_u46st:$k=UF[?DH7FEX9(W=d1a4w9:%kXx;v#"({6w,fp(Xpz}BNuW!^"6Z`Xhi#ftaVCoG7T}S>dpie1HyhN)A$NPbG6xELWy|bt\ Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-UTwente-MailScanner-Information: Scanned by MailScanner. Contact helpdesk@ITBE.utwente.nl for more information. X-UTwente-MailScanner: Found to be clean Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Thu, 2 Oct 2003 01:03:05 +0200 A. Pagaltzis wrote: : * muppet [2003-10-01 22:35]: : > > I noticed that new_from_treeview doesn't complain when the : > > treeview arg doesn't exist - cost me half a day bug hunting : > > :(( Maybe an argument check could be inserted ? : > : > if you supply undef for the widget, it creates a new one. : : I'm not sure whether he's talking about passing undef or passing : nothing at all. That's two different conditions there. The point is that due to a typo I passed undef both unintended, but automaticly assuming that new_from_treeview doesn't work without a treeview I never double checked it. I think it to be good practice to make constructors like this throw an exception when they get undef. -- ) ( Jaap Karssenberg || Pardus [Larus] : : http://pardus-larus.student.utwente.nl/~pardus ) \ / ( ",.*'*.," Proud owner of "Perl6 Essentials" 1st edition :) From rwmcfa1@neces.com Wed Oct 1 19:36:43 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smeagol.dreamhost.com (unknown [66.33.209.5]) by mail.gnome.org (Postfix) with ESMTP id 3BF1B18118 for ; Wed, 1 Oct 2003 19:36:43 -0400 (EDT) Received: from beta.local (12-222-230-66.client.insightBB.com [12.222.230.66]) by smeagol.dreamhost.com (Postfix) with ESMTP id D044023A30 for ; Wed, 1 Oct 2003 16:36:51 -0700 (PDT) Subject: Re: SimpleList->new_from_treeview From: Ross McFarland To: Gtk-Perl-List In-Reply-To: <20031001230305.GA4947@klangraum> References: <20031001213822.36b617b2.j.g.karssenberg@student.utwente.nl> <84585CFF-F45F-11D7-82CF-000A9580E5E0@asofyet.org> <20031001230305.GA4947@klangraum> Content-Type: text/plain Message-Id: <1065051411.10307.30.camel@beta.local> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Wed, 01 Oct 2003 19:36:51 -0400 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Wed, 2003-10-01 at 19:03, A. Pagaltzis wrote: > I'm not sure whether he's talking about passing undef or passing > nothing at all. That's two different conditions there. not really in perl, when you're using shift anyway. sub foo { my $bar = shift; } foo (); foo (undef); in either case bar would be undef. that's the way the code is working in simplelist right now. -rm From pagaltzis@gmx.de Thu Oct 2 03:43:38 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.gmx.net (imap.gmx.net [213.165.64.20]) by mail.gnome.org (Postfix) with SMTP id 8321A180EE for ; Thu, 2 Oct 2003 03:43:37 -0400 (EDT) Received: (qmail 14387 invoked by uid 65534); 2 Oct 2003 07:43:49 -0000 Received: from xdsl-195-14-223-160.netcologne.de (EHLO klangraum) (195.14.223.160) by mail.gmx.net (mp007) with SMTP; 02 Oct 2003 09:43:49 +0200 X-Authenticated: #163624 Received: (qmail 1323 invoked by uid 1000); 2 Oct 2003 07:42:54 -0000 Date: Thu, 2 Oct 2003 09:42:54 +0200 From: "A. Pagaltzis" To: Gtk-Perl-List Subject: Re: SimpleList->new_from_treeview Message-ID: <20031002074254.GA1313@klangraum> Mail-Followup-To: Gtk-Perl-List References: <20031001213822.36b617b2.j.g.karssenberg@student.utwente.nl> <84585CFF-F45F-11D7-82CF-000A9580E5E0@asofyet.org> <20031001230305.GA4947@klangraum> <1065051411.10307.30.camel@beta.local> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1065051411.10307.30.camel@beta.local> User-Agent: Mutt/1.4i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: * Ross McFarland [2003-10-02 06:19]: > not really in perl, when you're using shift anyway. I know, but you can check @_ in scalar context. > sub foo > { croak "Need one parameter" if @_ != 1; > my $bar = shift; > } > > foo (); > foo (undef); -- Regards, Aristotle "If you can't laugh at yourself, you don't take life seriously enough." From scott@asofyet.org Thu Oct 2 03:53:58 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smeagol.dreamhost.com (smeagol.dreamhost.com [66.33.209.5]) by mail.gnome.org (Postfix) with ESMTP id CC8C518ED0 for ; Thu, 2 Oct 2003 03:53:58 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by smeagol.dreamhost.com (Postfix) with ESMTP id 4E4B623A5F; Thu, 2 Oct 2003 00:54:08 -0700 (PDT) Date: Thu, 2 Oct 2003 03:54:23 -0400 Subject: Re: Subclassing Gtk2::CellRenderer Content-Type: text/plain; charset=ISO-8859-1; format=flowed Mime-Version: 1.0 (Apple Message framework v552) Cc: gtk-perl-list@gnome.org To: =?ISO-8859-1?Q?Bjarne_Steinsb=F8?= From: muppet In-Reply-To: <3F7AE9B0.3090604@broadpark.no> Message-Id: Content-Transfer-Encoding: quoted-printable X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Wednesday, October 1, 2003, at 10:50 AM, Bjarne Steinsb=F8 wrote: > A method invocation in GObject is just a signal, right? So I should=20= > override the proper signal name in order to let my own routine handle=20= > this method. i wish it was just that simple. yes, the only way to do proper virtual overrides from perl is to supply=20= a new handler for an existing signal. this is because of some really=20 strange things about how GObject is implemented, and the fact that we=20 can't find the struct offset for every method *and* its call signature=20= without a lot of extra work. but this only works if the method you want to override has a signal=20 associated with it. according to teh body of GtkCellRendererClass in=20 gtkcellrenderer.h, it's just a vtable --- the function pointers aren't=20= associated with signals. so... > However, when I try to install an overridden method (uncommenting line=20= > 7 in "MyRenderer.pm") the way I think method overriding is to be done,=20= > I get an error message saying "can't override class closure for=20 > unknown signal render at ...". Where am I going wrong? well, you aren't going wrong, there just is no signal associated with=20 that method. now to be perfectly honest, the render method would be called a *lot*,=20= so they probably assume that you'd have to be insane to want to=20 implement that in a non-c or c++ language. given that i can't see a=20 way to attach a widget to the treeview and you'll probably wind up=20 rendering something that looks like an optionmenu by hand, i can't say=20= that i really fault them for that assumption. if you don't mind having a little bit of extra XS for your custom=20 cellrenderer, i think you can pull it off a little more easily by=20 mixing C and perl. sorry. -- muppet From bosteins@broadpark.no Thu Oct 2 07:44:49 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.broadpark.no (mail.broadpark.no [217.13.4.2]) by mail.gnome.org (Postfix) with ESMTP id 6A66B18686 for ; Thu, 2 Oct 2003 07:44:49 -0400 (EDT) Received: from broadpark.no (169.80-203-5.nextgentel.com [80.203.5.169]) by mail.broadpark.no (Postfix) with ESMTP id B78DD79A01; Thu, 2 Oct 2003 13:44:23 +0200 (MEST) Message-ID: <3F7C0F66.4020102@broadpark.no> Date: Thu, 02 Oct 2003 13:43:34 +0200 From: =?ISO-8859-1?Q?Bjarne_Steinsb=F8?= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 X-Accept-Language: en-us, en MIME-Version: 1.0 To: muppet Cc: gtk-perl-list@gnome.org Subject: Re: Subclassing Gtk2::CellRenderer References: In-Reply-To: Content-Type: multipart/mixed; boundary="------------010802040404030405030803" Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: This is a multi-part message in MIME format. --------------010802040404030405030803 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Thanks a lot, muppet. You're confirming my most pessimistic suspicions. I took at quick look at the xs code (and even some gtk+ code) and I'm now starting to get a glimmer of understanding (and appreciation) of the magic that goes on to make the perl interface work so well as it does. Still, wouldn't it be nice to be able to do anything you can do in C in perl as well? Not necessarily making it simple to do in perl, but at least possible? Some additional magic during code generation, maybe? Exposing in special-purpose perl classes what you're doing your best to hide in the normal case? muppet wrote: > > On Wednesday, October 1, 2003, at 10:50 AM, Bjarne Steinsbø wrote: > >> A method invocation in GObject is just a signal, right? So I should >> override the proper signal name in order to let my own routine handle >> this method. > > > i wish it was just that simple. Yepp, that's where I went wrong, allright. Reality is never as simple as you think it is after just a few days exposure to a new system/job/API/whatever... > now to be perfectly honest, the render method would be called a *lot*, > so they probably assume that you'd have to be insane to want to > implement that in a non-c or c++ language. given that i can't see a > way to attach a widget to the treeview and you'll probably wind up > rendering something that looks like an optionmenu by hand, i can't say > that i really fault them for that assumption. An optionmenu shouldn't really be that hard to render in the normal case, it's just a string and a pixmap. It's the editing phase that's complicated. But I see your point. The elegant way to extend the treeview would be to allow widgets in the cells, much like a gnome canvas or (just saw this in the docs, really neat!) in a Combo. And yes, it would hurt performance, which is probably one of the reasons they didn't put it in. > if you don't mind having a little bit of extra XS for your custom > cellrenderer, i think you can pull it off a little more easily by > mixing C and perl. Since it's not simple to do, I'll probably implement the functionality some other way, at least initially. Probably a popup when the user clicks in a column of a certain type. I'll probably sub-class the widget and hide it down there, so that I can come back and change the implementation at a later stage, if and when I want to do it properly. Bjarne P.S. I think I stumbled across a typo in the xs documentation for Glib. Please see attached diff. --------------010802040404030405030803 Content-Type: text/plain; name="GType.xs.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="GType.xs.diff" *** /usr/src/Gtk2-perl/Glib-1.00rc3/GType.xs Fri Sep 26 01:26:32 2003 --- GType.xs Thu Oct 2 12:55:29 2003 *************** *** 453,455 **** ! =item GType gperl_type_from_package (GType gtype) --- 453,455 ---- ! =item GType gperl_package_from_type (GType gtype) --------------010802040404030405030803-- From rwmcfa1@neces.com Thu Oct 2 08:16:35 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smeagol.dreamhost.com (smeagol.dreamhost.com [66.33.209.5]) by mail.gnome.org (Postfix) with ESMTP id BCD231814A for ; Thu, 2 Oct 2003 08:16:35 -0400 (EDT) Received: from beta.local (12-222-230-66.client.insightBB.com [12.222.230.66]) by smeagol.dreamhost.com (Postfix) with ESMTP id A5C3323A17; Thu, 2 Oct 2003 05:16:47 -0700 (PDT) Subject: Re: Subclassing Gtk2::CellRenderer From: Ross McFarland To: Bjarne =?ISO-8859-1?Q?Steinsb=F8?= Cc: Gtk-Perl-List In-Reply-To: <3F7C0F66.4020102@broadpark.no> References: <3F7C0F66.4020102@broadpark.no> Content-Type: text/plain; charset=ISO-8859-1 Message-Id: <1065097006.10307.35.camel@beta.local> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Thu, 02 Oct 2003 08:16:46 -0400 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Thu, 2003-10-02 at 07:43, Bjarne Steinsbø wrote: > Thanks a lot, muppet. You're confirming my most pessimistic > suspicions. I took at quick look at the xs code (and even some gtk+ > code) and I'm now starting to get a glimmer of understanding (and > appreciation) of the magic that goes on to make the perl interface work > so well as it does. > > Still, wouldn't it be nice to be able to do anything you can do in C in > perl as well? Not necessarily making it simple to do in perl, but at > least possible? Some additional magic during code generation, maybe? > Exposing in special-purpose perl classes what you're doing your best to > hide in the normal case? you might want to look around and see if anyone has already got code for what you're looking for. it seems like a reasonable common thing to do. either way you could totally implement the code in an XS files so you wouldn't have to deal with the issues of installing a separate C library and the wrappers for it. all of the C implementation would just go up at the top, then a module line and the wrappers. in theory it shouldn't be that hard to do, since you could use the existing combo widget, but once again that's theory. -rm From pagaltzis@gmx.de Thu Oct 2 08:50:44 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.gmx.net (mail.gmx.de [213.165.64.20]) by mail.gnome.org (Postfix) with SMTP id 8BB2C181DC for ; Thu, 2 Oct 2003 08:50:43 -0400 (EDT) Received: (qmail 19085 invoked by uid 65534); 2 Oct 2003 12:50:55 -0000 Received: from xdsl-195-14-223-160.netcologne.de (EHLO klangraum) (195.14.223.160) by mail.gmx.net (mp027) with SMTP; 02 Oct 2003 14:50:55 +0200 X-Authenticated: #163624 Received: (qmail 1987 invoked by uid 1000); 2 Oct 2003 12:49:35 -0000 Date: Thu, 2 Oct 2003 14:49:35 +0200 From: "A. Pagaltzis" To: gtk-perl-list@gnome.org Subject: Re: Subclassing Gtk2::CellRenderer Message-ID: <20031002124935.GA1943@klangraum> Mail-Followup-To: gtk-perl-list@gnome.org References: <3F7C0F66.4020102@broadpark.no> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <3F7C0F66.4020102@broadpark.no> User-Agent: Mutt/1.4i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: * Bjarne Steinsbø [2003-10-02 11:47]: > Probably a popup when the user clicks in a column of a certain > type. I'll probably sub-class the widget and hide it down > there, so that I can come back and change the implementation at > a later stage, if and when I want to do it properly. Here's a proposition for something which is as userfriendly as editable cells, only looks less integrated: Do it "Excel style", ie have an input box at the top or bottom of the table, possibly disabled so long as the user has not selected anything to edit. When they click something to edit, focus the input box. -- Regards, Aristotle "If you can't laugh at yourself, you don't take life seriously enough." From bosteins@broadpark.no Thu Oct 2 10:10:05 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.broadpark.no (mail.broadpark.no [217.13.4.2]) by mail.gnome.org (Postfix) with ESMTP id A9C761824F for ; Thu, 2 Oct 2003 10:10:05 -0400 (EDT) Received: from broadpark.no (169.80-203-5.nextgentel.com [80.203.5.169]) by mail.broadpark.no (Postfix) with ESMTP id F323179290; Thu, 2 Oct 2003 16:10:17 +0200 (MEST) Message-ID: <3F7C3199.2030705@broadpark.no> Date: Thu, 02 Oct 2003 16:09:29 +0200 From: =?ISO-8859-1?Q?Bjarne_Steinsb=F8?= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "A. Pagaltzis" Cc: gtk-perl-list@gnome.org Subject: Re: Subclassing Gtk2::CellRenderer References: <3F7C0F66.4020102@broadpark.no> <20031002124935.GA1943@klangraum> In-Reply-To: <20031002124935.GA1943@klangraum> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: A. Pagaltzis wrote: >* Bjarne Steinsbø [2003-10-02 11:47]: > > >>Probably a popup when the user clicks in a column of a certain >>type. I'll probably sub-class the widget and hide it down >>there, so that I can come back and change the implementation at >>a later stage, if and when I want to do it properly. >> >> > >Here's a proposition for something which is as userfriendly as >editable cells, only looks less integrated: > >Do it "Excel style", ie have an input box at the top or bottom of >the table, possibly disabled so long as the user has not selected >anything to edit. When they click something to edit, focus the >input box. > > > Thanks for the suggestion, but I don't think so. First of all I never really liked the "Excel style" (in Excel). I've always found it awkward to move the cursor back and forth between the table and the entry at the top. Secondly, it's not very extensible. What I've mentioned so far is selecting the contents of a cell from a list of allowable values. I probably also want some special behaviour if the string happens to be a date, maybe even editing it by selecting from a calendar. There might be other special cases too, that I haven't thought about yet. The "Excel style" just doesn't scale well. Bjarne From pagaltzis@gmx.de Thu Oct 2 10:48:14 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.gmx.net (mail.gmx.net [213.165.64.20]) by mail.gnome.org (Postfix) with SMTP id 1FA6318350 for ; Thu, 2 Oct 2003 10:48:13 -0400 (EDT) Received: (qmail 359 invoked by uid 65534); 2 Oct 2003 14:48:24 -0000 Received: from xdsl-195-14-223-160.netcologne.de (EHLO klangraum) (195.14.223.160) by mail.gmx.net (mp001) with SMTP; 02 Oct 2003 16:48:24 +0200 X-Authenticated: #163624 Received: (qmail 3751 invoked by uid 1000); 2 Oct 2003 14:47:13 -0000 Date: Thu, 2 Oct 2003 16:47:13 +0200 From: "A. Pagaltzis" To: gtk-perl-list@gnome.org Subject: Re: Subclassing Gtk2::CellRenderer Message-ID: <20031002144713.GA3713@klangraum> Mail-Followup-To: gtk-perl-list@gnome.org References: <3F7C0F66.4020102@broadpark.no> <20031002124935.GA1943@klangraum> <3F7C3199.2030705@broadpark.no> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <3F7C3199.2030705@broadpark.no> User-Agent: Mutt/1.4i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: * Bjarne Steinsbø [2003-10-02 14:13]: > A. Pagaltzis wrote: > > Do it "Excel style", ie have an input box at the top or bottom of > > the table, possibly disabled so long as the user has not selected > > anything to edit. When they click something to edit, focus the > > input box. > > > First of all I never really liked the "Excel style" (in Excel). > I've always found it awkward to move the cursor back and forth > between the table and the entry at the top. A popup would be just as awkward, IMO, that's why I proposed this. Excel doesn't handle focus very intelligently. You can do better. As for extensibility, it could be an HBox instead of just an inputbox. Anyway, your call. :) -- Regards, Aristotle "If you can't laugh at yourself, you don't take life seriously enough." From scott@asofyet.org Thu Oct 2 12:59:24 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from frodo.dreamhost.com (frodo.dreamhost.com [66.33.209.11]) by mail.gnome.org (Postfix) with ESMTP id 4D2FB181F3 for ; Thu, 2 Oct 2003 12:59:24 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by frodo.dreamhost.com (Postfix) with ESMTP id 2A60713BE8; Thu, 2 Oct 2003 09:59:36 -0700 (PDT) Date: Thu, 2 Oct 2003 12:59:51 -0400 Subject: Re: Subclassing Gtk2::CellRenderer Content-Type: text/plain; charset=ISO-8859-1; format=flowed Mime-Version: 1.0 (Apple Message framework v552) Cc: gtk-perl-list@gnome.org To: =?ISO-8859-1?Q?Bjarne_Steinsb=F8?= From: muppet In-Reply-To: <3F7C0F66.4020102@broadpark.no> Message-Id: Content-Transfer-Encoding: quoted-printable X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Thursday, October 2, 2003, at 07:43 AM, Bjarne Steinsb=F8 wrote: > Still, wouldn't it be nice to be able to do anything you can do in C=20= > in perl as well? Not necessarily making it simple to do in perl, but=20= > at least possible? yes, it would be nice to have all the C functionality in perl, but it=20 comes at a price, and for some things the price is just too high. > Some additional magic during code generation, maybe? Exposing in=20 > special-purpose perl classes what you're doing your best to hide in=20 > the normal case? i spent a very long time several months ago trying to figure this one=20 out, and a good while last night looking over it again to see if it'd=20 missed anything. (i had a very long section here about how i'd go=20 about implementing generic overridable methods, to illustrate why we=20 don't do it, but in the end it was just to long and muddled. if you=20 really want to know, ask later and i'll explain.) that whole idea got=20= left by the wayside when i finally discovered that=20 g_signal_override_class_closure was the sanctioned way to do this, even=20= though it has limitations. i think, though, it would be possible to add some special stuff to the=20= bindings for just this one class (GtkCellRendererClass) to see what we=20= can do to add support for overriding those functions. but be warned, this is "new function" stuff, so please don't expect it=20= to be part of the stable release. (it'll take some bribery otherwise. =20= ;-) > An optionmenu shouldn't really be that hard to render in the normal=20 > case, it's just a string and a pixmap. It's the editing phase that's=20= > complicated. But I see your point. from what i can tell, you just need something like=20 gtk_paint_drop_shadow around the edges of the box and maybe some sort=20 of indicator that you can click on this thing to pop up a menu. the=20 string will be easy, using pango rendering. the fun comes in when you=20= have to calculate box dimensions and such. i'm interested in seeing=20 the difference in performance between perl and C. i have to run... contact me offlist if you want to try something like=20 this. > P.S. I think I stumbled across a typo in the xs documentation for=20 > Glib. Please see attached diff. eek! thanks! -- muppet From scott@asofyet.org Thu Oct 2 12:59:50 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from frodo.dreamhost.com (frodo.dreamhost.com [66.33.209.11]) by mail.gnome.org (Postfix) with ESMTP id 5F0AF18131 for ; Thu, 2 Oct 2003 12:59:50 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by frodo.dreamhost.com (Postfix) with ESMTP id 8838413BE8; Thu, 2 Oct 2003 10:00:02 -0700 (PDT) Date: Thu, 2 Oct 2003 13:00:17 -0400 Subject: Re: Subclassing Gtk2::CellRenderer Content-Type: text/plain; charset=ISO-8859-1; format=flowed Mime-Version: 1.0 (Apple Message framework v552) Cc: gtk-perl-list@gnome.org To: "A. Pagaltzis" From: muppet In-Reply-To: <20031002144713.GA3713@klangraum> Message-Id: Content-Transfer-Encoding: quoted-printable X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Thursday, October 2, 2003, at 10:47 AM, A. Pagaltzis wrote: > * Bjarne Steinsb=F8 [2003-10-02 14:13]: >> A. Pagaltzis wrote: >>> Do it "Excel style", ie have an input box at the top or bottom of >>> the table, possibly disabled so long as the user has not selected >>> anything to edit. When they click something to edit, focus the >>> input box. >>> >> First of all I never really liked the "Excel style" (in Excel). >> I've always found it awkward to move the cursor back and forth >> between the table and the entry at the top. > > A popup would be just as awkward, IMO, that's why I proposed this. i'm not sure that would be awkward at all --- what i was seeing in my=20 head as he described using a popup on a cell renderer was something=20 like the property lists you see in borland builder, kylix, and=20 qtdesigner --- the cell is just a button that you activate to get a=20 short menu of options. -- muppet From msilveira@linuxbr.com Thu Oct 2 13:03:55 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.digiweb.psi.br (mail.digiweb.com.br [200.198.179.64]) by mail.gnome.org (Postfix) with SMTP id 0218518131 for ; Thu, 2 Oct 2003 13:03:54 -0400 (EDT) Received: (qmail 23756 invoked from network); 2 Oct 2003 17:03:39 -0000 Received: from unknown (HELO master) (200.158.99.106) by mail.digiweb.com.br with SMTP; 2 Oct 2003 17:03:39 -0000 Message-ID: <001b01c38907$2f6db080$0a00000a@master> From: "Mauricio Silveira" To: Subject: How Do I get WM Decorations and Pixmaps to work [gtk1-perl]? Date: Thu, 2 Oct 2003 14:04:03 -0300 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0018_01C388EE.09771920" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1106 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: This is a multi-part message in MIME format. ------=_NextPart_000_0018_01C388EE.09771920 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable These are GTK1-Perl related. I'd like a simple WM Decorations example, as well as a simple pixmap = loading example too. An example showing a pixmap file (any from /usr/share/pixmaps) being = loaded into a window or H/VBox. I just can't figure out how to get these two tasks working. = $window->set_decorations( "border" ) simply doesn't work, complains about not being a Gdk object? How Come? I'm not using Gtk2-Perl because these is no Reference such as = Gtk1-perl's Gtk::reference or Gtk::object man-pages. Any hints? Thanks ------=_NextPart_000_0018_01C388EE.09771920 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
These are GTK1-Perl = related.
 
I'd like a simple WM Decorations = example,=20 as well as a simple pixmap loading = example=20 too.
An example showing a pixmap file (any = from=20 /usr/share/pixmaps) being loaded into a window or H/VBox.
 
I just can't figure out how to get = these two tasks=20 working. $window->set_decorations( "border" ) simply doesn't=20 work,
complains about not being a Gdk object? = How=20 Come?
 
I'm not using Gtk2-Perl because these = is no=20 Reference such as Gtk1-perl's Gtk::reference or Gtk::object man-pages. = Any=20 hints?
 
Thanks
------=_NextPart_000_0018_01C388EE.09771920-- From msilveira@linuxbr.com Thu Oct 2 13:04:26 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.digiweb.psi.br (mail.digiweb.com.br [200.198.179.64]) by mail.gnome.org (Postfix) with SMTP id 32C19183ED for ; Thu, 2 Oct 2003 13:04:26 -0400 (EDT) Received: (qmail 25269 invoked from network); 2 Oct 2003 17:04:11 -0000 Received: from unknown (HELO master) (200.158.99.106) by mail.digiweb.com.br with SMTP; 2 Oct 2003 17:04:11 -0000 Message-ID: <002501c38907$422d0950$0a00000a@master> From: "Mauricio Silveira" To: Subject: How do I prevent the main window from being destroyed? Date: Thu, 2 Oct 2003 14:04:34 -0300 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0022_01C388EE.1BDBF5E0" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1106 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: This is a multi-part message in MIME format. ------=_NextPart_000_0022_01C388EE.1BDBF5E0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable I was wondering how do i get the main window not to be destroyed, but = being hidden instead.=20 Like X-CD Roast, when you click the WM Decoration's "X" (close), it = opens a transient window without destroying the main window. How do I do that with Gtk1-perl? It is working all right with a "Quit Button". Thanks ------=_NextPart_000_0022_01C388EE.1BDBF5E0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
I was wondering how do i get the main = window not to=20 be destroyed, but being hidden instead.
Like X-CD Roast, when you click the WM = Decoration's=20 "X" (close), it opens a transient window without destroying the main=20 window.
How do I do that with = Gtk1-perl?
 
It is working all right with a "Quit=20 Button".
 
Thanks
------=_NextPart_000_0022_01C388EE.1BDBF5E0-- From rwmcfa1@neces.com Thu Oct 2 13:32:46 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id 7DC48180FA for ; Thu, 2 Oct 2003 13:32:46 -0400 (EDT) Received: from webmail.neces.com (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id 5F936FACE; Thu, 2 Oct 2003 10:32:59 -0700 (PDT) Received: from 192.146.101.12 (SquirrelMail authenticated user rwmcfa1@neces.com) by webmail.neces.com with HTTP; Thu, 2 Oct 2003 13:32:59 -0400 (EDT) Message-ID: <14858.192.146.101.12.1065115979.spork@webmail.neces.com> In-Reply-To: <001b01c38907$2f6db080$0a00000a@master> References: <001b01c38907$2f6db080$0a00000a@master> Date: Thu, 2 Oct 2003 13:32:59 -0400 (EDT) Subject: Re: How Do I get WM Decorations and Pixmaps to work [gtk1-perl]? From: "Ross McFarland" To: "Mauricio Silveira" Cc: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Mauricio Silveira said: > I'm not using Gtk2-Perl because these is no Reference such as Gtk1-perl's > Gtk::reference or Gtk::object man-pages. Any hints? the c api docs function as a much more useful api reference than just a list of functions. so that's the way to go. there were people on the list who've discussed full api documentation for gtk2-perl and it may happen, but not for 1.0. up to this point no effort has been put into a list of functions b/c just knowing the names isn't all that useful. it has been discussed though. if all you want is a list of functions then take a look at the patch attached to this message: http://mail.gnome.org/archives/gtk-perl-list/2003-September/msg00125.html bascially just add the code below to your script (temporarily) and then you'll be able to call $g_object_based_thing->methods for a list of methods on anything that derives from a gobject, which is basically all of gtk. -rm package Glib::Object; # based on (and/or copied from) code at: http://dev.perl.org/perl6/rfc/335.html # main changes are levels rather than all, puttting package name before it, # and also getting rid of the wantarray stuff sub methods { my ($class, $levels) = @_; $class = ref $class || $class; $levels ||= -1; my %classes_seen; my @methods; my @class = ($class); my $level = 0; no strict 'refs'; while ($class = shift @class) { next if $classes_seen{$class}++; unshift @class, @{"${class}::ISA"} if $levels > $level or $levels < 0; # Based on methods_via() in perl5db.pl for my $method (grep {not /^[(_]/ and defined &{${"${class}::"}{$_}}} keys %{"${class}::"}) { push @methods, "$class->$method" } $level++; } sort @methods; } package main; From alas@widomaker.com Thu Oct 2 16:36:22 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from webmail.widomaker.com (webmail.widomaker.com [204.17.220.4]) by mail.gnome.org (Postfix) with ESMTP id 0110418194 for ; Thu, 2 Oct 2003 16:36:21 -0400 (EDT) Received: from webmail.widomaker.com (localhost [127.0.0.1]) by webmail.widomaker.com (8.12.9/8.12.9) with ESMTP id h92KZXjF033869 for ; Thu, 2 Oct 2003 16:35:33 -0400 (EDT) (envelope-from alas@widomaker.com) Received: (from nobody@localhost) by webmail.widomaker.com (8.12.9/8.12.9/Submit) id h92KZXC5033868 for gtk-perl-list@gnome.org; Thu, 2 Oct 2003 16:35:33 -0400 (EDT) X-Authentication-Warning: webmail.widomaker.com: nobody set sender to alas@widomaker.com using -f To: gtk-perl mailing list Subject: New version of Gtk2::GladeXML Message-ID: <1065126933.3f7c8c153d437@webmail.widomaker.com> Date: Thu, 02 Oct 2003 16:35:33 -0400 (EDT) From: Chas Owens MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="-MOQ1065126933328051a35b63cd9a1d40d3576bcf12e8" User-Agent: IMP/PHP IMAP webmail program 2.2.6 X-Originating-IP: 199.244.214.30 X-Webmail: Report abuse to abuse@widomaker.com Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: This message is in MIME format. ---MOQ1065126933328051a35b63cd9a1d40d3576bcf12e8 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Between Muppet and I we have finnaly gotten custom widgets working in Gtk2::GladeXML. Here is the patch to Gtk2::GladeXML version 0.92 and some test code to demonstrate some of the techniques I have talked about recently. I will be putting this into CVS latter tonight. Questions, comments, and suggestions are welcome. ---MOQ1065126933328051a35b63cd9a1d40d3576bcf12e8 Content-Type: application/octet-stream; name="GladeXML.xs.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="GladeXML.xs.patch" LS0tIEdsYWRlWE1MLnhzLm9yaWcJMjAwMy0xMC0wMSAxNToyOToxNS4wMDAwMDAwMDAgLTA0M DAKKysrIEdsYWRlWE1MLnhzCTIwMDMtMTAtMDIgMTQ6NTU6NDQuMDAwMDAwMDAwIC0wNDAwCk BAIC0xLDEzICsxLDI4IEBACiAvKgogICogJEhlYWRlcjogL2N2c3Jvb3QvZ3RrMi1wZXJsL2d 0azItcGVybC14cy9HbGFkZS9HbGFkZVhNTC54cyx2IDEuOCAyMDAzLzA3LzA1IDA3OjE0OjM2 IHBjZyBFeHAgJAogICoKLSAqIEJhc2VkIHN0cm9uZ2x5IG9uIGd0ay1wZXJsJ3MgR2xhZGVYT UwKLSAqIAogICovCiAKICNpbmNsdWRlICJnbGFkZXhtbHBlcmwuaCIKIAorc3RhdGljIEdQZX JsQ2FsbGJhY2sgKgorY3JlYXRlX2Nvbm5lY3RfZnVuY19oYW5kbGVyX2NhbGxiYWNrIChTViA qIGZ1bmMsIFNWICogZGF0YSkKK3sKKwlHVHlwZSBwYXJhbV90eXBlc1tdID0geworCQlHX1RZ UEVfU1RSSU5HLAorCQlHX1RZUEVfT0JKRUNULAorCQlHX1RZUEVfU1RSSU5HLAorCQlHX1RZU EVfU1RSSU5HLAorCQlHX1RZUEVfT0JKRUNULAorCQlHX1RZUEVfQk9PTEVBTgorCX07CisJcm V0dXJuIGdwZXJsX2NhbGxiYWNrX25ldyAoZnVuYywgZGF0YSwKKwkgICAgICAgICAgICAgICA gICAgICAgICAgICBHX05fRUxFTUVOVFMgKHBhcmFtX3R5cGVzKSwKKwkgICAgICAgICAgICAg ICAgICAgICAgICAgICBwYXJhbV90eXBlcywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgI CBHX1RZUEVfTk9ORSk7Cit9CisKIHN0YXRpYyB2b2lkCiBjb25uZWN0X2Z1bmNfaGFuZGxlci AoY29uc3QgZ2NoYXIgKmhhbmRsZXJfbmFtZSwKIAkJICAgICAgR09iamVjdCAgICAgKm9iamV jdCwKIAkJICAgICAgY29uc3QgZ2NoYXIgKnNpZ25hbF9uYW1lLApAQCAtMTUsODUgKzMwLDU2 IEBACiAJCSAgICAgIEdPYmplY3QgICAgICpjb25uZWN0X29iamVjdCwKIAkJICAgICAgZ2Jvb 2xlYW4gICAgIGFmdGVyLAogCQkgICAgICBncG9pbnRlciAgICAgdXNlcl9kYXRhKQogewotCU FWICphdjsKLQlTViAqaGFuZGxlcjsKLQlkU1A7Ci0KLQkvKgotCWdfcHJpbnRlcnIoImNvbm5 lY3RfbWFueSAoJXMsICVwLCAlcywgJXMsICVwLCAlZCwgJXBcbiIsCi0JCSAgIGhhbmRsZXJf bmFtZSwgb2JqZWN0LCBzaWduYWxfbmFtZSwgc2lnbmFsX2RhdGEsCi0JCSAgIGNvbm5lY3Rfb 2JqZWN0LCBhZnRlciwgdXNlcl9kYXRhKTsKLQkqLwotCiAjZGVmaW5lIElGX05VTExfU0VUX0 VNUFRZKHZhcikgXAogCWlmKCAhKHZhcikgKQkJXAogCQkodmFyKSA9ICIiOwogCUlGX05VTEx fU0VUX0VNUFRZKGhhbmRsZXJfbmFtZSk7CiAJSUZfTlVMTF9TRVRfRU1QVFkoc2lnbmFsX25h bWUpOwogCUlGX05VTExfU0VUX0VNUFRZKHNpZ25hbF9kYXRhKTsKICN1bmRlZiBJRl9OVUxMX 1NFVF9FTVBUWQogCi0JYXYgPSAoQVYqKXVzZXJfZGF0YTsKLQloYW5kbGVyID0gKmF2X2ZldG NoKGF2LCAwLCAwKTsKLQotCUVOVEVSOwotCVNBVkVUTVBTOwotCVBVU0hNQVJLKFNQKTsKLQo tCVhQVVNIcyhzdl8ybW9ydGFsKG5ld1NWcHYoaGFuZGxlcl9uYW1lLCAwKSkpOwotCVhQVVNI cyhzdl8ybW9ydGFsKG5ld1NWR3RrT2JqZWN0KG9iamVjdCkpKTsKLQlYUFVTSHMoc3ZfMm1vc nRhbChuZXdTVnB2KHNpZ25hbF9uYW1lLCAwKSkpOwotCVhQVVNIcyhzdl8ybW9ydGFsKG5ld1 NWcHYoc2lnbmFsX2RhdGEsIDApKSk7Ci0JaWYoIGNvbm5lY3Rfb2JqZWN0ICkKLQkJWFBVU0h zKHN2XzJtb3J0YWwobmV3U1ZHdGtPYmplY3QoY29ubmVjdF9vYmplY3QpKSk7Ci0JZWxzZQot CQlYUFVTSHMoc3ZfMm1vcnRhbChuZXdTVnN2KCZQTF9zdl91bmRlZikpKTsKLQlYUFVTSHMoc 3ZfMm1vcnRhbChuZXdTVml2KGFmdGVyKSkpOwotCVhQVVNIcyhzdl8ybW9ydGFsKG5ld1NWc3 YoKmF2X2ZldGNoKGF2LCAxLCAwKSkpKTsKLQotCVBVVEJBQ0s7Ci0KLQlwZXJsX2NhbGxfc3Y oaGFuZGxlciwgR19ESVNDQVJEKTsKLQotCUZSRUVUTVBTOwotCUxFQVZFOworCWdwZXJsX2Nh bGxiYWNrX2ludm9rZSAoKEdQZXJsQ2FsbGJhY2sqKSB1c2VyX2RhdGEsCisJICAgICAgICAgI CAgICAgICAgICAgICBOVUxMLAorCQkJICAgICAgIGhhbmRsZXJfbmFtZSwKKwkJCSAgICAgIC BvYmplY3QsCisJCQkgICAgICAgc2lnbmFsX25hbWUsCisJCQkgICAgICAgc2lnbmFsX2RhdGE sCisJCQkgICAgICAgY29ubmVjdF9vYmplY3QsCisJCQkgICAgICAgYWZ0ZXIsCisJCQkgICAg ICAgdXNlcl9kYXRhKTsKIH0KIAogc3RhdGljIEd0a1dpZGdldCoKIGdsYWRlX2N1c3RvbV93a WRnZXQoCiAJR2xhZGVYTUwgKiB4bWwsCiAJZ2NoYXIgICAgKiBmdW5jX25hbWUsCi0JZ2NoYX IgICAgKiBuYW1lLAotCWdjaGFyICAgICogc3RyaW5nMSwKLQlnY2hhciAgICAqIHN0cmluZzI sCisJY2hhciAgICAgKiBuYW1lLAorCWNoYXIgICAgICogc3RyaW5nMSwKKwljaGFyICAgICAq IHN0cmluZzIsCiAJaW50ICAgICAgICBpbnQxLAogCWludCAgICAgICAgaW50MiwKIAlncG9pb nRlciAgIGRhdGEKICkgewogCUdQZXJsQ2FsbGJhY2sgKiBjYWxsYmFjayAgICAgPSAoR1Blcm xDYWxsYmFjayopZGF0YTsKIAlHVmFsdWUgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gezAsfTs KLQlHdGtXaWRnZXQgICAgICogcmV0dmFsOwotCXByaW50ZigiaGVyZSAlbGRcbiIsIF9fTElO RV9fKTsKKwlHdGtXaWRnZXQqICAgICAgcmV0dmFsOwogCWdfdmFsdWVfaW5pdCgmcmV0dXJuX 3ZhbHVlLCBjYWxsYmFjay0+cmV0dXJuX3R5cGUpOwotCXByaW50ZigiaGVyZSAlbGRcbiIsIF 9fTElORV9fKTsKIAlncGVybF9jYWxsYmFja19pbnZva2UoCi0JCWNhbGxiYWNrLAotCQkmcmV 0dXJuX3ZhbHVlLAotCQl4bWwsCi0JCWZ1bmNfbmFtZSwKLQkJbmFtZSwKLQkJc3RyaW5nMSwK KwkJY2FsbGJhY2ssICAgICAgIC8qdGhlIHBlcmwgc3Vicm91dGluZSovCisJCSZyZXR1cm5fd mFsdWUsICAvKnRvIGNhdGNoIHRoZSByZXR1cm4gdmFsdWUqLworCQl4bWwsICAgICAgICAgIC AgLyp0aGUgY2FsbGluZyBnbGFkZXhtbCBvYmplY3QqLworCQlmdW5jX25hbWUsICAgICAgLyp 0aGUgd2lkZ2V0IGNyZWF0aW9uIGZ1bmN0aW9uIG5hbWUqLworCQluYW1lLCAgICAgICAgICAg Lyp0aGlzIHdpZGdldCdzIG5hbWUgZm9yIHVzZSB3aXRoIGdldF93aWRnZXQqLworCQlzdHJpb mcxLCAgICAgICAgLyp0aGUgZm91ciBhcmdzIGZyb20gdGhlIHhtbCBmaWxlKi8KIAkJc3RyaW 5nMiwKIAkJaW50MSwKIAkJaW50MgogCSk7Ci0JcHJpbnRmKCJoZXJlICVsZFxuIiwgX19MSU5 FX18pOwotCXJldHZhbCA9IGdfdmFsdWVfZ2V0X3BvaW50ZXIoJnJldHVybl92YWx1ZSk7Ci0J cHJpbnRmKCJoZXJlICVsZFxuIiwgX19MSU5FX18pOworCS8qIGR1cCByZWZzLCB1bnNldCB1b nJlZnMuICovCisJcmV0dmFsID0gZ192YWx1ZV9kdXBfb2JqZWN0KCZyZXR1cm5fdmFsdWUpOw ogCWdfdmFsdWVfdW5zZXQoJnJldHVybl92YWx1ZSk7Ci0JcHJpbnRmKCJoZXJlICVsZFxuIiw gX19MSU5FX18pOwogCXJldHVybiByZXR2YWw7CiB9CiAKIE1PRFVMRSA9IEd0azI6OkdsYWRl WE1MCVBBQ0tBR0UgPSBHdGsyOjpHbGFkZVhNTAlQUkVGSVggPSBnbGFkZV94bWxfCkBAIC0xM DMsOSArODksOCBAQAogCiAjIyAgR2xhZGVYTUwgKmdsYWRlX3htbF9uZXcgKGNvbnN0IGNoYX IgKmZuYW1lLCBjb25zdCBjaGFyICpyb290LCBjb25zdCBjaGFyICpkb21haW4pCiBHbGFkZVh NTF9vcm51bGwgKgogZ2xhZGVfeG1sX25ldyAoY2xhc3MsIGZuYW1lLCByb290PU5VTEwsIGRv bWFpbj1OVUxMKQotCVNWICAgICAgICAgKmNsYXNzCiAJY29uc3QgY2hhciAqZm5hbWUKIAljb 25zdCBjaGFyICpyb290CiAJY29uc3QgY2hhciAqZG9tYWluCiAgICAgQ19BUkdTOgpAQCAtMT EzLDkgKzk4LDggQEAKIAogIyMgIEdsYWRlWE1MICpnbGFkZV94bWxfbmV3X2Zyb21fYnVmZmV yIChjb25zdCBjaGFyICpidWZmZXIsIGludCBzaXplLCBjb25zdCBjaGFyICpyb290LCBjb25z dCBjaGFyICpkb21haW4pCiBHbGFkZVhNTF9vcm51bGwgKgogZ2xhZGVfeG1sX25ld19mcm9tX 2J1ZmZlciAoY2xhc3MsIGJ1ZmZlciwgcm9vdD1OVUxMLCBkb21haW49TlVMTCkKLQlTViAgIC AgICAgICpjbGFzcwogCVNWICAgICAgICAgKmJ1ZmZlcgogCWNvbnN0IGNoYXIgKnJvb3QKIAl jb25zdCBjaGFyICpkb21haW4KICAgICBQUkVJTklUOgpAQCAtMTQ5LDIzICsxMzMsMjMgQEAK ICMJY29uc3QgY2hhciAqaGFuZGxlcm5hbWUKICMJR0NhbGxiYWNrICAgZnVuYwogIwlncG9pb nRlciAgICB1c2VyX2RhdGEKIAotIyMgcHJvYmFibHkgc2hvdWxkbid0IHVzZSB0aGlzIHVubG VzcyB5b3Uga25vdyB3aGF0IHlvdSdyZSBkb2luZwogIyMgIHZvaWQgZ2xhZGVfeG1sX3NpZ25 hbF9hdXRvY29ubmVjdCAoR2xhZGVYTUwgKnNlbGYpCisjIyAgdm9pZCBnbGFkZV94bWxfc2ln bmFsX2F1dG9jb25uZWN0X2Z1bGwgKEdsYWRlWE1MICpzZWxmLCBHbGFkZVhNTENvbm5lY3RGd W5jIGZ1bmMsIGdwb2ludGVyIHVzZXJfZGF0YSkKIHZvaWQKIGdsYWRlX3htbF9zaWduYWxfYX V0b2Nvbm5lY3QgKHNlbGYsIGZ1bmMsIHVzZXJfZGF0YT1OVUxMKQogCUdsYWRlWE1MICpzZWx mCiAJU1YgICAgICAgKmZ1bmMKIAlTViAgICAgICAqdXNlcl9kYXRhCiAgICAgUFJFSU5JVDoK LSAgICAJQVYgKmF2OworCUdQZXJsQ2FsbGJhY2sgKiByZWFsX2NhbGxiYWNrOwogICAgIENPR EU6Ci0JYXYgPSBuZXdBVigpOwotICAgIAlhdl9wdXNoKGF2LCBuZXdTVnN2KGZ1bmMpKTsKLS AgICAJYXZfcHVzaChhdiwgbmV3U1Zzdih1c2VyX2RhdGEpKTsKLQlnbGFkZV94bWxfc2lnbmF sX2F1dG9jb25uZWN0X2Z1bGwoc2VsZiwgY29ubmVjdF9mdW5jX2hhbmRsZXIsIAotCQkJCQkg IChncG9pbnRlcilhdik7CisJcmVhbF9jYWxsYmFjayA9IGNyZWF0ZV9jb25uZWN0X2Z1bmNfa GFuZGxlcl9jYWxsYmFjayAoZnVuYywgdXNlcl9kYXRhKTsKKyAgICAJZ2xhZGVfeG1sX3NpZ2 5hbF9hdXRvY29ubmVjdF9mdWxsIChzZWxmLAorCSAgICAgICAgICAgICAgICAgICAgICAgICA gICAgICAgICAgY29ubmVjdF9mdW5jX2hhbmRsZXIsIAorCSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVhbF9jYWxsYmFjayk7CisJZ3BlcmxfY2FsbGJhY2tfZGVzdHJve SAocmVhbF9jYWxsYmFjayk7CiAKICMjIHByb2JhYmx5IHNob3VsZG4ndCB1c2UgdGhpcyB1bm xlc3MgeW91IGtub3cgd2hhdCB5b3UncmUgZG9pbmcKICMjICB2b2lkIGdsYWRlX3htbF9zaWd uYWxfY29ubmVjdF9mdWxsIChHbGFkZVhNTCAqc2VsZiwgY29uc3QgZ2NoYXIgKmhhbmRsZXJf bmFtZSwgR2xhZGVYTUxDb25uZWN0RnVuYyBmdW5jLCBncG9pbnRlciB1c2VyX2RhdGEpCiB2b 2lkCkBAIC0xNzQsMjIgKzE1OCwxNCBAQAogCWNvbnN0IGdjaGFyICAgICAgICAgKmhhbmRsZX JfbmFtZQogCVNWICAgICAgICAgICAgICAgICAgKmZ1bmMKIAlTViAgICAgICAgICAgICAgICA gICp1c2VyX2RhdGEKICAgICBQUkVJTklUOgotICAgIAlBViAqYXY7CisJR1BlcmxDYWxsYmFj ayAqIHJlYWxfY2FsbGJhY2s7CiAgICAgQ09ERToKLQlhdiA9IG5ld0FWKCk7Ci0gICAgCWF2X 3B1c2goYXYsIG5ld1NWc3YoZnVuYykpOwotICAgIAlhdl9wdXNoKGF2LCBuZXdTVnN2KCZQTF 9zdl91bmRlZikpOwotICAgIAlnbGFkZV94bWxfc2lnbmFsX2Nvbm5lY3RfZnVsbChzZWxmLCB oYW5kbGVyX25hbWUsIGNvbm5lY3RfZnVuY19oYW5kbGVyLCAKLQkJCQkgICAgICAoZ3BvaW50 ZXIpYXYpOwotCi0jIyAgdm9pZCBnbGFkZV94bWxfc2lnbmFsX2F1dG9jb25uZWN0X2Z1bGwgK EdsYWRlWE1MICpzZWxmLCBHbGFkZVhNTENvbm5lY3RGdW5jIGZ1bmMsIGdwb2ludGVyIHVzZX JfZGF0YSkKLSN2b2lkCi0jZ2xhZGVfeG1sX3NpZ25hbF9hdXRvY29ubmVjdF9mdWxsIChzZWx mLCBmdW5jLCB1c2VyX2RhdGEpCi0jCUdsYWRlWE1MICAgICAgICAgICAgKnNlbGYKLSMJR2xh ZGVYTUxDb25uZWN0RnVuYyAgZnVuYwotIwlncG9pbnRlciAgICAgICAgICAgICB1c2VyX2Rhd GEKKwlyZWFsX2NhbGxiYWNrID0gY3JlYXRlX2Nvbm5lY3RfZnVuY19oYW5kbGVyX2NhbGxiYW NrIChmdW5jLCB1c2VyX2RhdGEpOworICAgIAlnbGFkZV94bWxfc2lnbmFsX2Nvbm5lY3RfZnV sbCAoc2VsZiwgaGFuZGxlcl9uYW1lLCBjb25uZWN0X2Z1bmNfaGFuZGxlciwgCisJCQkJICAg ICAgIHJlYWxfY2FsbGJhY2spOworCWdwZXJsX2NhbGxiYWNrX2Rlc3Ryb3kgKHJlYWxfY2Fsb GJhY2spOwogCiAjIyAgR3RrV2lkZ2V0ICpnbGFkZV94bWxfZ2V0X3dpZGdldCAoR2xhZGVYTU wgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUpCiBHdGtXaWRnZXRfb3JudWxsICoKIGdsYWRlX3h tbF9nZXRfd2lkZ2V0IChzZWxmLCBuYW1lKQpAQCAtMjI1LDM3ICsyMDEsMzUgQEAKIAogIyMg IHZvaWQgZ2xhZGVfc2V0X2N1c3RvbV9oYW5kbGVyKEdsYWRlWE1MQ3VzdG9tV2lkZ2V0SGFuZ GxlciBoYW5kbGVyLCBncG9pbnRlciB1c2VyX2RhdGEpCiB2b2lkCiBnbGFkZV9zZXRfY3VzdG 9tX2hhbmRsZXIgKGNsYXNzLCBjYWxsYmFjaywgY2FsbGJhY2tfZGF0YT1OVUxMKQotCVNWICo gICAgIGNsYXNzCiAJU1YgKiAgICAgY2FsbGJhY2sKIAlTViAqICAgICBjYWxsYmFja19kYXRh CiAgICAgUFJFSU5JVDoKLSAgICAgICAgR1BlcmxDYWxsYmFjayAqIHJlYWxfY2FsbGJhY2s7C isgICAgICAgIHN0YXRpYyBHUGVybENhbGxiYWNrICogcmVhbF9jYWxsYmFjayA9IE5VTEw7Ci AgICAgICAgIEdUeXBlIHBhcmFtX3R5cGVzIFtdID0gewotCQlHVEtfVFlQRV9XSURHRVQsIC8 qZ2xhZGV4bWwgb2JqZWN0Ki8KKwkJR0xBREVfVFlQRV9YTUwsICAvKmdsYWRleG1sIG9iamVj dCovCiAJCUdfVFlQRV9TVFJJTkcsICAgLypjcmVhdGlvbiBmdW5jdGlvbiBuYW1lKi8KIAkJR 19UWVBFX1NUUklORywgICAvKndpZGdldCBuYW1lKi8KIAkJR19UWVBFX1NUUklORywgICAvKn N0cmluZyAxKi8KIAkJR19UWVBFX1NUUklORywgICAvKnN0cmluZyAyKi8KIAkJR19UWVBFX0l OVCwgICAgICAvKmludGVnZXIgMSovCiAJCUdfVFlQRV9JTlQgICAgICAgLyppbnRlZ2VyIDIq LwogCX07CiAgICAgQ09ERToKLQlwcmludGYoImhlcmUgJWxkXG4iLCBfX0xJTkVfXyk7CisJa WYgKHJlYWxfY2FsbGJhY2spIHsKKwkJLyogd2UncmUgYmVpbmcgY2FsbGVkIGFnYWluLi4uIC ovCisJCWdwZXJsX2NhbGxiYWNrX2Rlc3Ryb3kgKHJlYWxfY2FsbGJhY2spOworCQlyZWFsX2N hbGxiYWNrID0gTlVMTDsKKwl9CiAJcmVhbF9jYWxsYmFjayA9IGdwZXJsX2NhbGxiYWNrX25l dygKLQkJY2FsbGJhY2ssICAgICAgICAgICAgICAgICAgLypmdW5jdGlvbiB0byB0cmVhdCBhc yBhIGNhbGxiYWNrKi8KLQkJY2FsbGJhY2tfZGF0YSwgICAgICAgICAgICAgLypleHRyYSBkYX RhIHRvIHBhc3MgdG8gY2FsbGJhY2sqLwotCQlHX05fRUxFTUVOVFMocGFyYW1fdHlwZXMpLCA vKm51bWJlciBvZiBwYXJhbWV0ZXJzKi8KLQkJcGFyYW1fdHlwZXMsICAgICAgICAgICAgICAg LypsaXN0IG9mIHBhcmFtZXRlcnMqLwotCQlHVEtfVFlQRV9XSURHRVQgICAgICAgICAgICAvK nJldHVybiB0eXBlKi8KLQkpOwotCXByaW50ZigiaGVyZSAlbGRcbiIsIF9fTElORV9fKTsKLQ lnbGFkZV9zZXRfY3VzdG9tX2hhbmRsZXIoCi0JCWdsYWRlX2N1c3RvbV93aWRnZXQsCi0JCXJ lYWxfY2FsbGJhY2sKKwkJY2FsbGJhY2ssICAgICAgIC8qcGVybCBmdW5jdGlvbiB0byB0cmVh dCBhcyBhIGNhbGxiYWNrKi8KKwkJY2FsbGJhY2tfZGF0YSwgIC8qZXh0cmEgZGF0YSB0byBwY XNzIHRvIGNhbGxiYWNrKi8KKwkJNywgICAgICAgICAgICAgIC8qbnVtYmVyIG9mIHBhcmFtZX RlcnMqLworCQlwYXJhbV90eXBlcywgICAgLypsaXN0IG9mIHBhcmFtZXRlcnMqLworCQlHVEt fVFlQRV9XSURHRVQgLypyZXR1cm4gdHlwZSovCiAJKTsKLQlwcmludGYoImhlcmUgJWxkXG4i LCBfX0xJTkVfXyk7CisJZ2xhZGVfc2V0X2N1c3RvbV9oYW5kbGVyIChnbGFkZV9jdXN0b21fd 2lkZ2V0LCByZWFsX2NhbGxiYWNrKTsKIAogTU9EVUxFID0gR3RrMjo6R2xhZGVYTUwJUEFDS0 FHRSA9IEd0azI6OldpZGdldAlQUkVGSVggPSBnbGFkZV8KIAogIyMgY29uc3QgY2hhciAqZ2x hZGVfZ2V0X3dpZGdldF9uYW1lICAgICAgKEd0a1dpZGdldCAqd2lkZ2V0KTsK ---MOQ1065126933328051a35b63cd9a1d40d3576bcf12e8 Content-Type: application/octet-stream; name="Makefile" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Makefile" CmFsbDogdGVzdF9nbGFkZQoKdGVzdF9nbGFkZTogdGVzdF9nbGFkZS5wbCB0ZXN0X2dsYWRlL mdsYWRlCgljYXQgdGVzdF9nbGFkZS5wbCB0ZXN0X2dsYWRlLmdsYWRlID4gdGVzdF9nbGFkZQ oJY2htb2QgdSt4IHRlc3RfZ2xhZGUK ---MOQ1065126933328051a35b63cd9a1d40d3576bcf12e8 Content-Type: application/octet-stream; name="test_glade" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test_glade" IyEvdXNyL2Jpbi9wZXJsCgp1c2Ugc3RyaWN0Owp1c2UgR3RrMjsKdXNlIEd0azI6OkdsYWRlW E1MOwp1c2UgR3RrMjo6U2ltcGxlTGlzdDsKdXNlIERhdGE6OkR1bXBlcjsKCkd0azItPmluaX Q7CgpHdGsyOjpHbGFkZS0+c2V0X2N1c3RvbV9oYW5kbGVyKFwmY3VzdG9tX2hhbmRsZXIpOwp teSAkeG1sID0gam9pbiAnJywgPERBVEE+OwpteSAkZ2xhZGUgPSBHdGsyOjpHbGFkZVhNTC0+ bmV3X2Zyb21fYnVmZmVyKCR4bWwsICdtYWluX3dpbmRvdycpOwokZ2xhZGUtPnNpZ25hbF9hd XRvY29ubmVjdF9mcm9tX3BhY2thZ2UoJ21haW4nKTsKCkd0azItPm1haW47CgpzdWIgb25fbW Fpbl93aW5kb3dfZGVzdHJveSB7CglHdGsyLT5tYWluX3F1aXQ7Cn0KCnN1YiBjdXN0b21faGF uZGxlciB7CglteSAoJHhtbCwgJGZ1bmMsIEBhcmdzKSA9IEBfOwoJdW5zaGlmdCBAYXJncywg JHhtbDsKCXJldHVybiBldmFsICIkZnVuYyhcQGFyZ3MpIjsKfQoKc3ViIGNyZWF0ZV9saXN0I HsKCW15ICgKCQkkZ2xhZGV4bWwsCgkJJHdpZGdldG5hbWUsCgkJJGxpc3Rfc3BlYywgICN0YW Igc2VwZXJhdGVkIFRpdGxlLCBUeXBlIHBhaXJzCgkJJGxpc3RfZGF0YSAgICNwZXJsIGxpc3Q gb2YgYXJyYXkgcmVmcyB0byBiZSBldmFsZWQKCSkgICAgICAgICA9IEBfOwoJbXkgJHNsaXN0 ID0gR3RrMjo6U2ltcGxlTGlzdC0+bmV3KHNwbGl0IC9cdC8sICRsaXN0X3NwZWMpOwoJZXZhb CAiXEB7XCRzbGlzdC0+e2RhdGF9fSA9ICgkbGlzdF9kYXRhKSI7Cgkkc2xpc3QtPnNob3c7Cg lyZXR1cm4gJHNsaXN0Owp9CgpzdWIgY3JlYXRlX3BpeG1hcCB7CglteSAoCgkJJGdsYWRleG1 sLAoJCSR3aWRnZXRuYW1lLAoJCSRwaXhtYXBfc3RyaW5nCgkpICAgICAgICAgICAgPSBAXzsK CW15IEB4cG1fZGF0YSA9IHNwbGl0IC9cbi8sICRwaXhtYXBfc3RyaW5nOwoJbXkgJHdpbmRvd yAgID0gJGdsYWRleG1sLT5nZXRfd2lkZ2V0KCdtYWluX3dpbmRvdycpOwoJbXkgJHN0eWxlIC AgID0gJHdpbmRvdy0+Z2V0X3N0eWxlKCktPmJnKCAnbm9ybWFsJyApOwoKCSR3aW5kb3ctPnN ob3c7ICNjcmVhdGVfZnJvbV94cG0gcmVxdWlyZXMgdGhlIFggd2luZG93IHRvIGFscmVhZHkg ZXhpc3QKCglteSAoICRwaXhtYXAsICRtYXNrICkgPSBHdGsyOjpHZGs6OlBpeG1hcC0+Y3JlY XRlX2Zyb21feHBtX2QoCgkJJHdpbmRvdy0+d2luZG93LAoJCSRzdHlsZSwKCQlAeHBtX2RhdG EKCSk7CglteSAkaW1hZ2UgPSBHdGsyOjpJbWFnZS0+bmV3X2Zyb21fcGl4bWFwKCRwaXhtYXA sICRtYXNrKTsKCSRpbWFnZS0+c2hvdzsKCXJldHVybiAkaW1hZ2U7Cn0KCnN1YiBjcmVhdGVf YW55X3dpZGdldCB7CglteSAoJGdsYWRleG1sLCAkd2lkZ2V0bmFtZSwgJGNvZGUpID0gQF87C glteSAkd2lkZ2V0ID0gZXZhbCAkY29kZTsKCSR3aWRnZXQtPnNob3c7CglyZXR1cm4gJHdpZG dldDsKfQoKX19EQVRBX18KPD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PiA 8IS0tKi0gbW9kZTogeG1sIC0qLS0+CjwhRE9DVFlQRSBnbGFkZS1pbnRlcmZhY2UgU1lTVEVN ICJodHRwOi8vZ2xhZGUuZ25vbWUub3JnL2dsYWRlLTIuMC5kdGQiPgoKPGdsYWRlLWludGVyZ mFjZT4KCjx3aWRnZXQgY2xhc3M9Ikd0a1dpbmRvdyIgaWQ9Im1haW5fd2luZG93Ij4KICA8cH JvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CiAgPHByb3BlcnR5IG5hbWU 9InRpdGxlIiB0cmFuc2xhdGFibGU9InllcyI+d2luZG93MTwvcHJvcGVydHk+CiAgPHByb3Bl cnR5IG5hbWU9InR5cGUiPkdUS19XSU5ET1dfVE9QTEVWRUw8L3Byb3BlcnR5PgogIDxwcm9wZ XJ0eSBuYW1lPSJ3aW5kb3dfcG9zaXRpb24iPkdUS19XSU5fUE9TX05PTkU8L3Byb3BlcnR5Pg ogIDxwcm9wZXJ0eSBuYW1lPSJtb2RhbCI+RmFsc2U8L3Byb3BlcnR5PgogIDxwcm9wZXJ0eSB uYW1lPSJyZXNpemFibGUiPlRydWU8L3Byb3BlcnR5PgogIDxwcm9wZXJ0eSBuYW1lPSJkZXN0 cm95X3dpdGhfcGFyZW50Ij5GYWxzZTwvcHJvcGVydHk+CiAgPHNpZ25hbCBuYW1lPSJkZXN0c m95IiBoYW5kbGVyPSJvbl9tYWluX3dpbmRvd19kZXN0cm95IiBsYXN0X21vZGlmaWNhdGlvbl 90aW1lPSJUdWUsIDMwIFNlcCAyMDAzIDAxOjUxOjI3IEdNVCIvPgoKICA8Y2hpbGQ+CiAgICA 8d2lkZ2V0IGNsYXNzPSJHdGtWQm94IiBpZD0idmJveDEiPgogICAgICA8cHJvcGVydHkgbmFt ZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CiAgICAgIDxwcm9wZXJ0eSBuYW1lPSJob21vZ 2VuZW91cyI+RmFsc2U8L3Byb3BlcnR5PgogICAgICA8cHJvcGVydHkgbmFtZT0ic3BhY2luZy I+MDwvcHJvcGVydHk+CgogICAgICA8Y2hpbGQ+Cgk8d2lkZ2V0IGNsYXNzPSJHdGtIQm94IiB pZD0iaGJveDIiPgoJICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+ CgkgIDxwcm9wZXJ0eSBuYW1lPSJob21vZ2VuZW91cyI+RmFsc2U8L3Byb3BlcnR5PgoJICA8c HJvcGVydHkgbmFtZT0ic3BhY2luZyI+MDwvcHJvcGVydHk+CgoJICA8Y2hpbGQ+CgkgICAgPH dpZGdldCBjbGFzcz0iR3RrTGFiZWwiIGlkPSJsYWJlbDIiPgoJICAgICAgPHByb3BlcnR5IG5 hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9Imxh YmVsIiB0cmFuc2xhdGFibGU9InllcyI+SW5saW5lIGltYWdlPC9wcm9wZXJ0eT4KCSAgICAgI Dxwcm9wZXJ0eSBuYW1lPSJ1c2VfdW5kZXJsaW5lIj5GYWxzZTwvcHJvcGVydHk+CgkgICAgIC A8cHJvcGVydHkgbmFtZT0idXNlX21hcmt1cCI+RmFsc2U8L3Byb3BlcnR5PgoJICAgICAgPHB yb3BlcnR5IG5hbWU9Imp1c3RpZnkiPkdUS19KVVNUSUZZX0xFRlQ8L3Byb3BlcnR5PgoJICAg ICAgPHByb3BlcnR5IG5hbWU9IndyYXAiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZ XJ0eSBuYW1lPSJzZWxlY3RhYmxlIj5GYWxzZTwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydH kgbmFtZT0ieGFsaWduIj4wLjU8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9Inl hbGlnbiI+MC41PC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4cGFkIj4wPC9w cm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ5cGFkIj4wPC9wcm9wZXJ0eT4KCSAgI CA8L3dpZGdldD4KCSAgICA8cGFja2luZz4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwYWRkaW 5nIj4wPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9 wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5GYWxzZTwvcHJvcGVydHk+ CgkgICAgPC9wYWNraW5nPgoJICA8L2NoaWxkPgoKCSAgPGNoaWxkPgoJICAgIDx3aWRnZXQgY 2xhc3M9IkN1c3RvbSIgaWQ9InBpeG1hcCI+CgkgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaW JsZSI+VHJ1ZTwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0iY3JlYXRpb25fZnV uY3Rpb24iPmNyZWF0ZV9waXhtYXA8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9 InN0cmluZzEiPjI0IDI0IDIgMQouICAgICAgIGMgTm9uZQojICAgICAgIGMgIzAwMDAwMAouL i4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi 4uLi4uLi4uLi4uLi4uLi4uLgouLi4uLi4jIy4uLi4jIyMjIy4uLi4uLi4KLi4jIyMjIyMuLiM jIyMjIyMjIy4uLi4uCi4uIyMjIyMjLiMjIy4uIyMjIyMjLi4uLgouLi4uIyMjIyMjLi4uLi4u IyMjIy4uLi4KLi4uLi4jIyMjLi4uLi4uLi4jIyMuLi4uCi4uLi4uIyMjLi4uLi4uLi4uIyMjI y4uLgouLi4uLiMjIy4uLi4uLi4uLiMjIyMuLi4KLi4uLi4jIyMuLi4uLi4uLi4jIyMjLi4uCi 4uLi4uIyMjLi4uLi4uLi4uIyMjIy4uLgouLi4uLiMjIy4uLi4uLi4uLiMjIyMuLi4KLi4uLi4 jIyMuLi4uLi4uLi4jIyMjLi4uCi4uLi4uIyMjLi4uLi4uLi4uIyMjIy4uLgouLi4uLiMjIy4u Li4uLi4uLiMjIyMuLi4KLi4uLi4jIyMuLi4uLi4uLi4jIyMjLi4uCi4uLi4uIyMjLi4uLi4uL i4uIyMjIy4uLgouLi4uLiMjIy4uLi4uLi4uLiMjIyMuLi4KLi4uLi4jIyMuLi4uLi4uLi4jIy MjLi4uCi4uIyMjIyMjIyMjLi4uLi4uIyMjIyMjLgouLiMjIyMjIyMjIy4uLi4uLi4jIyMjIy4 KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjwvcHJv cGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0iaW50MSI+MDwvcHJvcGVydHk+CgkgICAgI CA8cHJvcGVydHkgbmFtZT0iaW50MiI+MDwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbm FtZT0ibGFzdF9tb2RpZmljYXRpb25fdGltZSI+VHVlLCAzMCBTZXAgMjAwMyAwMToyNjowOSB HTVQ8L3Byb3BlcnR5PgoJICAgIDwvd2lkZ2V0PgoJICAgIDxwYWNraW5nPgoJICAgICAgPHBy b3BlcnR5IG5hbWU9InBhZGRpbmciPjA8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hb WU9ImV4cGFuZCI+VHJ1ZTwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbC I+VHJ1ZTwvcHJvcGVydHk+CgkgICAgPC9wYWNraW5nPgoJICA8L2NoaWxkPgoJPC93aWRnZXQ +Cgk8cGFja2luZz4KCSAgPHByb3BlcnR5IG5hbWU9InBhZGRpbmciPjA8L3Byb3BlcnR5PgoJ ICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5UcnVlPC9wcm9wZXJ0eT4KCSAgPHByb3BlcnR5I G5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5PgoJPC9wYWNraW5nPgogICAgICA8L2NoaWxkPg oKICAgICAgPGNoaWxkPgoJPHdpZGdldCBjbGFzcz0iR3RrSEJveCIgaWQ9Imhib3gzIj4KCSA gPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgoJICA8cHJvcGVydHkg bmFtZT0iaG9tb2dlbmVvdXMiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgPHByb3BlcnR5IG5hbWU9I nNwYWNpbmciPjA8L3Byb3BlcnR5PgoKCSAgPGNoaWxkPgoJICAgIDx3aWRnZXQgY2xhc3M9Ik d0a0xhYmVsIiBpZD0ibGFiZWwzIj4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5 UcnVlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRh YmxlPSJ5ZXMiPkd0azI6OlNpbXBsZUxpc3Q8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5I G5hbWU9InVzZV91bmRlcmxpbmUiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eS BuYW1lPSJ1c2VfbWFya3VwIj5GYWxzZTwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmF tZT0ianVzdGlmeSI+R1RLX0pVU1RJRllfTEVGVDwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVy dHkgbmFtZT0id3JhcCI+RmFsc2U8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9I nNlbGVjdGFibGUiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4YW xpZ24iPjAuNTwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0ieWFsaWduIj4wLjU 8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9InhwYWQiPjA8L3Byb3BlcnR5PgoJ ICAgICAgPHByb3BlcnR5IG5hbWU9InlwYWQiPjA8L3Byb3BlcnR5PgoJICAgIDwvd2lkZ2V0P goJICAgIDxwYWNraW5nPgoJICAgICAgPHByb3BlcnR5IG5hbWU9InBhZGRpbmciPjA8L3Byb3 BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5Pgo JICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICA8L3Bh Y2tpbmc+CgkgIDwvY2hpbGQ+CgoJICA8Y2hpbGQ+CgkgICAgPHdpZGdldCBjbGFzcz0iQ3Vzd G9tIiBpZD0ibGlzdCI+CgkgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcH JvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0iY3JlYXRpb25fZnVuY3Rpb24iPmNyZWF 0ZV9saXN0PC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzdHJpbmcxIj5OYW1l CXRleHQJTnVtYmVyCWludAlQcmltZQlib29sPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0e SBuYW1lPSJzdHJpbmcyIj4KCQkgICAgICBbICdvbmUnLCAgIDEsIDEgXSwKCQkgICAgICBbIC d0d28nLCAgIDIsIDEgXSwKCQkgICAgICBbICd0aHJlZScsIDMsIDEgXSwKCQkgICAgICBbICd mb3VyJywgIDQsIDAgXSwKCQkgICAgICBbICdmaXZlJywgIDUsIDEgXSwKCQkgICAgICBbICdz aXgnLCAgIDYsIDAgXSwKCQkgICAgICBbICdzZXZlbicsIDcsIDEgXQoJICAgICAgPC9wcm9wZ XJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJpbnQxIj4wPC9wcm9wZXJ0eT4KCSAgICAgID xwcm9wZXJ0eSBuYW1lPSJpbnQyIj4wPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1 lPSJsYXN0X21vZGlmaWNhdGlvbl90aW1lIj5UdWUsIDMwIFNlcCAyMDAzIDAxOjIxOjQ5IEdN VDwvcHJvcGVydHk+CgkgICAgPC93aWRnZXQ+CgkgICAgPHBhY2tpbmc+CgkgICAgICA8cHJvc GVydHkgbmFtZT0icGFkZGluZyI+MDwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT 0iZXhwYW5kIj5UcnVlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5 UcnVlPC9wcm9wZXJ0eT4KCSAgICA8L3BhY2tpbmc+CgkgIDwvY2hpbGQ+Cgk8L3dpZGdldD4K CTxwYWNraW5nPgoJICA8cHJvcGVydHkgbmFtZT0icGFkZGluZyI+MDwvcHJvcGVydHk+CgkgI Dxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPlRydWU8L3Byb3BlcnR5PgoJICA8cHJvcGVydHkgbm FtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+Cgk8L3BhY2tpbmc+CiAgICAgIDwvY2hpbGQ+Cgo gICAgICA8Y2hpbGQ+Cgk8d2lkZ2V0IGNsYXNzPSJHdGtIQm94IiBpZD0iaGJveDQiPgoJICA8 cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CgkgIDxwcm9wZXJ0eSBuY W1lPSJob21vZ2VuZW91cyI+RmFsc2U8L3Byb3BlcnR5PgoJICA8cHJvcGVydHkgbmFtZT0ic3 BhY2luZyI+MDwvcHJvcGVydHk+CgoJICA8Y2hpbGQ+CgkgICAgPHdpZGdldCBjbGFzcz0iR3R rTGFiZWwiIGlkPSJsYWJlbDQiPgoJICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRy dWU8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFib GU9InllcyI+Q29kZSBiYXNlZCB3aWRnZXQ8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG 5hbWU9InVzZV91bmRlcmxpbmUiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSB uYW1lPSJ1c2VfbWFya3VwIj5GYWxzZTwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFt ZT0ianVzdGlmeSI+R1RLX0pVU1RJRllfTEVGVDwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVyd HkgbmFtZT0id3JhcCI+RmFsc2U8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9In NlbGVjdGFibGUiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4YWx pZ24iPjAuNTwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0ieWFsaWduIj4wLjU8 L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9InhwYWQiPjA8L3Byb3BlcnR5PgoJI CAgICAgPHByb3BlcnR5IG5hbWU9InlwYWQiPjA8L3Byb3BlcnR5PgoJICAgIDwvd2lkZ2V0Pg oJICAgIDxwYWNraW5nPgoJICAgICAgPHByb3BlcnR5IG5hbWU9InBhZGRpbmciPjA8L3Byb3B lcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgoJ ICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICA8L3BhY 2tpbmc+CgkgIDwvY2hpbGQ+CgoJICA8Y2hpbGQ+CgkgICAgPHdpZGdldCBjbGFzcz0iQ3VzdG 9tIiBpZD0iY29kZV9iYXNlIj4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjcmVhdGlvbl9mdW5 jdGlvbiI+Y3JlYXRlX2FueV93aWRnZXQ8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5h bWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9InN0c mluZzEiPgoJCSAgICAgIEd0azI6OkxhYmVsLT5uZXcoImNyZWF0ZWQgYnkgQ2hhcyIpOwoJIC AgICAgPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJpbnQxIj4wPC9wcm9wZXJ 0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJpbnQyIj4wPC9wcm9wZXJ0eT4KCSAgICAgIDxw cm9wZXJ0eSBuYW1lPSJsYXN0X21vZGlmaWNhdGlvbl90aW1lIj5UaHUsIDAyIE9jdCAyMDAzI DE5OjU3OjUxIEdNVDwvcHJvcGVydHk+CgkgICAgPC93aWRnZXQ+CgkgICAgPHBhY2tpbmc+Cg kgICAgICA8cHJvcGVydHkgbmFtZT0icGFkZGluZyI+MDwvcHJvcGVydHk+CgkgICAgICA8cHJ vcGVydHkgbmFtZT0iZXhwYW5kIj5UcnVlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBu YW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KCSAgICA8L3BhY2tpbmc+CgkgIDwvY2hpbGQ+C gk8L3dpZGdldD4KCTxwYWNraW5nPgoJICA8cHJvcGVydHkgbmFtZT0icGFkZGluZyI+MDwvcH JvcGVydHk+CgkgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPlRydWU8L3Byb3BlcnR5PgoJICA 8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+Cgk8L3BhY2tpbmc+CiAgICAg IDwvY2hpbGQ+CiAgICA8L3dpZGdldD4KICA8L2NoaWxkPgo8L3dpZGdldD4KCjwvZ2xhZGUta W50ZXJmYWNlPgo= ---MOQ1065126933328051a35b63cd9a1d40d3576bcf12e8 Content-Type: application/octet-stream; name="test_glade.glade" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test_glade.glade" PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PiA8IS0tKi0gbW9kZTogeG1sI C0qLS0+CjwhRE9DVFlQRSBnbGFkZS1pbnRlcmZhY2UgU1lTVEVNICJodHRwOi8vZ2xhZGUuZ2 5vbWUub3JnL2dsYWRlLTIuMC5kdGQiPgoKPGdsYWRlLWludGVyZmFjZT4KCjx3aWRnZXQgY2x hc3M9Ikd0a1dpbmRvdyIgaWQ9Im1haW5fd2luZG93Ij4KICA8cHJvcGVydHkgbmFtZT0idmlz aWJsZSI+VHJ1ZTwvcHJvcGVydHk+CiAgPHByb3BlcnR5IG5hbWU9InRpdGxlIiB0cmFuc2xhd GFibGU9InllcyI+d2luZG93MTwvcHJvcGVydHk+CiAgPHByb3BlcnR5IG5hbWU9InR5cGUiPk dUS19XSU5ET1dfVE9QTEVWRUw8L3Byb3BlcnR5PgogIDxwcm9wZXJ0eSBuYW1lPSJ3aW5kb3d fcG9zaXRpb24iPkdUS19XSU5fUE9TX05PTkU8L3Byb3BlcnR5PgogIDxwcm9wZXJ0eSBuYW1l PSJtb2RhbCI+RmFsc2U8L3Byb3BlcnR5PgogIDxwcm9wZXJ0eSBuYW1lPSJyZXNpemFibGUiP lRydWU8L3Byb3BlcnR5PgogIDxwcm9wZXJ0eSBuYW1lPSJkZXN0cm95X3dpdGhfcGFyZW50Ij 5GYWxzZTwvcHJvcGVydHk+CiAgPHNpZ25hbCBuYW1lPSJkZXN0cm95IiBoYW5kbGVyPSJvbl9 tYWluX3dpbmRvd19kZXN0cm95IiBsYXN0X21vZGlmaWNhdGlvbl90aW1lPSJUdWUsIDMwIFNl cCAyMDAzIDAxOjUxOjI3IEdNVCIvPgoKICA8Y2hpbGQ+CiAgICA8d2lkZ2V0IGNsYXNzPSJHd GtWQm94IiBpZD0idmJveDEiPgogICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZT wvcHJvcGVydHk+CiAgICAgIDxwcm9wZXJ0eSBuYW1lPSJob21vZ2VuZW91cyI+RmFsc2U8L3B yb3BlcnR5PgogICAgICA8cHJvcGVydHkgbmFtZT0ic3BhY2luZyI+MDwvcHJvcGVydHk+Cgog ICAgICA8Y2hpbGQ+Cgk8d2lkZ2V0IGNsYXNzPSJHdGtIQm94IiBpZD0iaGJveDIiPgoJICA8c HJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CgkgIDxwcm9wZXJ0eSBuYW 1lPSJob21vZ2VuZW91cyI+RmFsc2U8L3Byb3BlcnR5PgoJICA8cHJvcGVydHkgbmFtZT0ic3B hY2luZyI+MDwvcHJvcGVydHk+CgoJICA8Y2hpbGQ+CgkgICAgPHdpZGdldCBjbGFzcz0iR3Rr TGFiZWwiIGlkPSJsYWJlbDIiPgoJICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRyd WU8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibG U9InllcyI+SW5saW5lIGltYWdlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ 1c2VfdW5kZXJsaW5lIj5GYWxzZTwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0i dXNlX21hcmt1cCI+RmFsc2U8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9Imp1c 3RpZnkiPkdUS19KVVNUSUZZX0xFRlQ8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbW U9IndyYXAiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzZWxlY3R hYmxlIj5GYWxzZTwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0ieGFsaWduIj4w LjU8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9InlhbGlnbiI+MC41PC9wcm9wZ XJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4cGFkIj4wPC9wcm9wZXJ0eT4KCSAgICAgID xwcm9wZXJ0eSBuYW1lPSJ5cGFkIj4wPC9wcm9wZXJ0eT4KCSAgICA8L3dpZGdldD4KCSAgICA 8cGFja2luZz4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwYWRkaW5nIj4wPC9wcm9wZXJ0eT4K CSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICAgI Dxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5GYWxzZTwvcHJvcGVydHk+CgkgICAgPC9wYWNraW5nPg oJICA8L2NoaWxkPgoKCSAgPGNoaWxkPgoJICAgIDx3aWRnZXQgY2xhc3M9IkN1c3RvbSIgaWQ 9InBpeG1hcCI+CgkgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVy dHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0iY3JlYXRpb25fZnVuY3Rpb24iPmNyZWF0ZV9wa XhtYXA8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9InN0cmluZzEiPjI0IDI0ID IgMQouICAgICAgIGMgTm9uZQojICAgICAgIGMgIzAwMDAwMAouLi4uLi4uLi4uLi4uLi4uLi4 uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u LgouLi4uLi4jIy4uLi4jIyMjIy4uLi4uLi4KLi4jIyMjIyMuLiMjIyMjIyMjIy4uLi4uCi4uI yMjIyMjLiMjIy4uIyMjIyMjLi4uLgouLi4uIyMjIyMjLi4uLi4uIyMjIy4uLi4KLi4uLi4jIy MjLi4uLi4uLi4jIyMuLi4uCi4uLi4uIyMjLi4uLi4uLi4uIyMjIy4uLgouLi4uLiMjIy4uLi4 uLi4uLiMjIyMuLi4KLi4uLi4jIyMuLi4uLi4uLi4jIyMjLi4uCi4uLi4uIyMjLi4uLi4uLi4u IyMjIy4uLgouLi4uLiMjIy4uLi4uLi4uLiMjIyMuLi4KLi4uLi4jIyMuLi4uLi4uLi4jIyMjL i4uCi4uLi4uIyMjLi4uLi4uLi4uIyMjIy4uLgouLi4uLiMjIy4uLi4uLi4uLiMjIyMuLi4KLi 4uLi4jIyMuLi4uLi4uLi4jIyMjLi4uCi4uLi4uIyMjLi4uLi4uLi4uIyMjIy4uLgouLi4uLiM jIy4uLi4uLi4uLiMjIyMuLi4KLi4uLi4jIyMuLi4uLi4uLi4jIyMjLi4uCi4uIyMjIyMjIyMj Li4uLi4uIyMjIyMjLgouLiMjIyMjIyMjIy4uLi4uLi4jIyMjIy4KLi4uLi4uLi4uLi4uLi4uL i4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjwvcHJvcGVydHk+CgkgICAgICA8cH JvcGVydHkgbmFtZT0iaW50MSI+MDwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0 iaW50MiI+MDwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0ibGFzdF9tb2RpZmlj YXRpb25fdGltZSI+VHVlLCAzMCBTZXAgMjAwMyAwMToyNjowOSBHTVQ8L3Byb3BlcnR5PgoJI CAgIDwvd2lkZ2V0PgoJICAgIDxwYWNraW5nPgoJICAgICAgPHByb3BlcnR5IG5hbWU9InBhZG RpbmciPjA8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+VHJ1ZTw vcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+ CgkgICAgPC9wYWNraW5nPgoJICA8L2NoaWxkPgoJPC93aWRnZXQ+Cgk8cGFja2luZz4KCSAgP HByb3BlcnR5IG5hbWU9InBhZGRpbmciPjA8L3Byb3BlcnR5PgoJICA8cHJvcGVydHkgbmFtZT 0iZXhwYW5kIj5UcnVlPC9wcm9wZXJ0eT4KCSAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU 8L3Byb3BlcnR5PgoJPC9wYWNraW5nPgogICAgICA8L2NoaWxkPgoKICAgICAgPGNoaWxkPgoJ PHdpZGdldCBjbGFzcz0iR3RrSEJveCIgaWQ9Imhib3gzIj4KCSAgPHByb3BlcnR5IG5hbWU9I nZpc2libGUiPlRydWU8L3Byb3BlcnR5PgoJICA8cHJvcGVydHkgbmFtZT0iaG9tb2dlbmVvdX MiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgPHByb3BlcnR5IG5hbWU9InNwYWNpbmciPjA8L3Byb3B lcnR5PgoKCSAgPGNoaWxkPgoJICAgIDx3aWRnZXQgY2xhc3M9Ikd0a0xhYmVsIiBpZD0ibGFi ZWwzIj4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KC SAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPkd0azI6Ol NpbXBsZUxpc3Q8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9InVzZV91bmRlcmx pbmUiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ1c2VfbWFya3Vw Ij5GYWxzZTwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0ianVzdGlmeSI+R1RLX 0pVU1RJRllfTEVGVDwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0id3JhcCI+Rm Fsc2U8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9InNlbGVjdGFibGUiPkZhbHN lPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4YWxpZ24iPjAuNTwvcHJvcGVy dHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0ieWFsaWduIj4wLjU8L3Byb3BlcnR5PgoJICAgI CAgPHByb3BlcnR5IG5hbWU9InhwYWQiPjA8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG 5hbWU9InlwYWQiPjA8L3Byb3BlcnR5PgoJICAgIDwvd2lkZ2V0PgoJICAgIDxwYWNraW5nPgo JICAgICAgPHByb3BlcnR5IG5hbWU9InBhZGRpbmciPjA8L3Byb3BlcnR5PgoJICAgICAgPHBy b3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5I G5hbWU9ImZpbGwiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICA8L3BhY2tpbmc+CgkgIDwvY2hpbG Q+CgoJICA8Y2hpbGQ+CgkgICAgPHdpZGdldCBjbGFzcz0iQ3VzdG9tIiBpZD0ibGlzdCI+Cgk gICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CgkgICAgICA8 cHJvcGVydHkgbmFtZT0iY3JlYXRpb25fZnVuY3Rpb24iPmNyZWF0ZV9saXN0PC9wcm9wZXJ0e T4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzdHJpbmcxIj5OYW1lCXRleHQJTnVtYmVyCWludA lQcmltZQlib29sPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzdHJpbmcyIj4 KCQkgICAgICBbICdvbmUnLCAgIDEsIDEgXSwKCQkgICAgICBbICd0d28nLCAgIDIsIDEgXSwK CQkgICAgICBbICd0aHJlZScsIDMsIDEgXSwKCQkgICAgICBbICdmb3VyJywgIDQsIDAgXSwKC QkgICAgICBbICdmaXZlJywgIDUsIDEgXSwKCQkgICAgICBbICdzaXgnLCAgIDYsIDAgXSwKCQ kgICAgICBbICdzZXZlbicsIDcsIDEgXQoJICAgICAgPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9 wZXJ0eSBuYW1lPSJpbnQxIj4wPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJp bnQyIj4wPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYXN0X21vZGlmaWNhd Glvbl90aW1lIj5UdWUsIDMwIFNlcCAyMDAzIDAxOjIxOjQ5IEdNVDwvcHJvcGVydHk+CgkgIC AgPC93aWRnZXQ+CgkgICAgPHBhY2tpbmc+CgkgICAgICA8cHJvcGVydHkgbmFtZT0icGFkZGl uZyI+MDwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5UcnVlPC9w cm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KC SAgICA8L3BhY2tpbmc+CgkgIDwvY2hpbGQ+Cgk8L3dpZGdldD4KCTxwYWNraW5nPgoJICA8cH JvcGVydHkgbmFtZT0icGFkZGluZyI+MDwvcHJvcGVydHk+CgkgIDxwcm9wZXJ0eSBuYW1lPSJ leHBhbmQiPlRydWU8L3Byb3BlcnR5PgoJICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwv cHJvcGVydHk+Cgk8L3BhY2tpbmc+CiAgICAgIDwvY2hpbGQ+CgogICAgICA8Y2hpbGQ+Cgk8d 2lkZ2V0IGNsYXNzPSJHdGtIQm94IiBpZD0iaGJveDQiPgoJICA8cHJvcGVydHkgbmFtZT0idm lzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CgkgIDxwcm9wZXJ0eSBuYW1lPSJob21vZ2VuZW91cyI +RmFsc2U8L3Byb3BlcnR5PgoJICA8cHJvcGVydHkgbmFtZT0ic3BhY2luZyI+MDwvcHJvcGVy dHk+CgoJICA8Y2hpbGQ+CgkgICAgPHdpZGdldCBjbGFzcz0iR3RrTGFiZWwiIGlkPSJsYWJlb DQiPgoJICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgoJIC AgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9InllcyI+Q29kZSBiYXN lZCB3aWRnZXQ8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9InVzZV91bmRlcmxp bmUiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ1c2VfbWFya3VwI j5GYWxzZTwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0ianVzdGlmeSI+R1RLX0 pVU1RJRllfTEVGVDwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0id3JhcCI+RmF sc2U8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9InNlbGVjdGFibGUiPkZhbHNl PC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4YWxpZ24iPjAuNTwvcHJvcGVyd Hk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0ieWFsaWduIj4wLjU8L3Byb3BlcnR5PgoJICAgIC AgPHByb3BlcnR5IG5hbWU9InhwYWQiPjA8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5 hbWU9InlwYWQiPjA8L3Byb3BlcnR5PgoJICAgIDwvd2lkZ2V0PgoJICAgIDxwYWNraW5nPgoJ ICAgICAgPHByb3BlcnR5IG5hbWU9InBhZGRpbmciPjA8L3Byb3BlcnR5PgoJICAgICAgPHByb 3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG 5hbWU9ImZpbGwiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICA8L3BhY2tpbmc+CgkgIDwvY2hpbGQ +CgoJICA8Y2hpbGQ+CgkgICAgPHdpZGdldCBjbGFzcz0iQ3VzdG9tIiBpZD0iY29kZV9iYXNl Ij4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjcmVhdGlvbl9mdW5jdGlvbiI+Y3JlYXRlX2Fue V93aWRnZXQ8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydW U8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9InN0cmluZzEiPgoJCSAgICAgIEd 0azI6OkxhYmVsLT5uZXcoImNyZWF0ZWQgYnkgQ2hhcyIpOwoJICAgICAgPC9wcm9wZXJ0eT4K CSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJpbnQxIj4wPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZ XJ0eSBuYW1lPSJpbnQyIj4wPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYX N0X21vZGlmaWNhdGlvbl90aW1lIj5UaHUsIDAyIE9jdCAyMDAzIDE5OjU3OjUxIEdNVDwvcHJ vcGVydHk+CgkgICAgPC93aWRnZXQ+CgkgICAgPHBhY2tpbmc+CgkgICAgICA8cHJvcGVydHkg bmFtZT0icGFkZGluZyI+MDwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwY W5kIj5UcnVlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC 9wcm9wZXJ0eT4KCSAgICA8L3BhY2tpbmc+CgkgIDwvY2hpbGQ+Cgk8L3dpZGdldD4KCTxwYWN raW5nPgoJICA8cHJvcGVydHkgbmFtZT0icGFkZGluZyI+MDwvcHJvcGVydHk+CgkgIDxwcm9w ZXJ0eSBuYW1lPSJleHBhbmQiPlRydWU8L3Byb3BlcnR5PgoJICA8cHJvcGVydHkgbmFtZT0iZ mlsbCI+VHJ1ZTwvcHJvcGVydHk+Cgk8L3BhY2tpbmc+CiAgICAgIDwvY2hpbGQ+CiAgICA8L3 dpZGdldD4KICA8L2NoaWxkPgo8L3dpZGdldD4KCjwvZ2xhZGUtaW50ZXJmYWNlPgo= ---MOQ1065126933328051a35b63cd9a1d40d3576bcf12e8 Content-Type: application/octet-stream; name="test_glade.pl" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test_glade.pl" IyEvdXNyL2Jpbi9wZXJsCgp1c2Ugc3RyaWN0Owp1c2UgR3RrMjsKdXNlIEd0azI6OkdsYWRlWE1M Owp1c2UgR3RrMjo6U2ltcGxlTGlzdDsKdXNlIERhdGE6OkR1bXBlcjsKCkd0azItPmluaXQ7CgpH dGsyOjpHbGFkZS0+c2V0X2N1c3RvbV9oYW5kbGVyKFwmY3VzdG9tX2hhbmRsZXIpOwpteSAkeG1s ID0gam9pbiAnJywgPERBVEE+OwpteSAkZ2xhZGUgPSBHdGsyOjpHbGFkZVhNTC0+bmV3X2Zyb21f YnVmZmVyKCR4bWwsICdtYWluX3dpbmRvdycpOwokZ2xhZGUtPnNpZ25hbF9hdXRvY29ubmVjdF9m cm9tX3BhY2thZ2UoJ21haW4nKTsKCkd0azItPm1haW47CgpzdWIgb25fbWFpbl93aW5kb3dfZGVz dHJveSB7CglHdGsyLT5tYWluX3F1aXQ7Cn0KCnN1YiBjdXN0b21faGFuZGxlciB7CglteSAoJHht bCwgJGZ1bmMsIEBhcmdzKSA9IEBfOwoJdW5zaGlmdCBAYXJncywgJHhtbDsKCXJldHVybiBldmFs ICIkZnVuYyhcQGFyZ3MpIjsKfQoKc3ViIGNyZWF0ZV9saXN0IHsKCW15ICgKCQkkZ2xhZGV4bWws CgkJJHdpZGdldG5hbWUsCgkJJGxpc3Rfc3BlYywgICN0YWIgc2VwZXJhdGVkIFRpdGxlLCBUeXBl IHBhaXJzCgkJJGxpc3RfZGF0YSAgICNwZXJsIGxpc3Qgb2YgYXJyYXkgcmVmcyB0byBiZSBldmFs ZWQKCSkgICAgICAgICA9IEBfOwoJbXkgJHNsaXN0ID0gR3RrMjo6U2ltcGxlTGlzdC0+bmV3KHNw bGl0IC9cdC8sICRsaXN0X3NwZWMpOwoJZXZhbCAiXEB7XCRzbGlzdC0+e2RhdGF9fSA9ICgkbGlz dF9kYXRhKSI7Cgkkc2xpc3QtPnNob3c7CglyZXR1cm4gJHNsaXN0Owp9CgpzdWIgY3JlYXRlX3Bp eG1hcCB7CglteSAoCgkJJGdsYWRleG1sLAoJCSR3aWRnZXRuYW1lLAoJCSRwaXhtYXBfc3RyaW5n CgkpICAgICAgICAgICAgPSBAXzsKCW15IEB4cG1fZGF0YSA9IHNwbGl0IC9cbi8sICRwaXhtYXBf c3RyaW5nOwoJbXkgJHdpbmRvdyAgID0gJGdsYWRleG1sLT5nZXRfd2lkZ2V0KCdtYWluX3dpbmRv dycpOwoJbXkgJHN0eWxlICAgID0gJHdpbmRvdy0+Z2V0X3N0eWxlKCktPmJnKCAnbm9ybWFsJyAp OwoKCSR3aW5kb3ctPnNob3c7ICNjcmVhdGVfZnJvbV94cG0gcmVxdWlyZXMgdGhlIFggd2luZG93 IHRvIGFscmVhZHkgZXhpc3QKCglteSAoICRwaXhtYXAsICRtYXNrICkgPSBHdGsyOjpHZGs6OlBp eG1hcC0+Y3JlYXRlX2Zyb21feHBtX2QoCgkJJHdpbmRvdy0+d2luZG93LAoJCSRzdHlsZSwKCQlA eHBtX2RhdGEKCSk7CglteSAkaW1hZ2UgPSBHdGsyOjpJbWFnZS0+bmV3X2Zyb21fcGl4bWFwKCRw aXhtYXAsICRtYXNrKTsKCSRpbWFnZS0+c2hvdzsKCXJldHVybiAkaW1hZ2U7Cn0KCnN1YiBjcmVh dGVfYW55X3dpZGdldCB7CglteSAoJGdsYWRleG1sLCAkd2lkZ2V0bmFtZSwgJGNvZGUpID0gQF87 CglteSAkd2lkZ2V0ID0gZXZhbCAkY29kZTsKCSR3aWRnZXQtPnNob3c7CglyZXR1cm4gJHdpZGdl dDsKfQoKX19EQVRBX18K ---MOQ1065126933328051a35b63cd9a1d40d3576bcf12e8-- From j.g.karssenberg@student.utwente.nl Thu Oct 2 17:04:38 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from netlx010.civ.utwente.nl (netlx010.civ.utwente.nl [130.89.1.92]) by mail.gnome.org (Postfix) with ESMTP id BB67918F3F for ; Thu, 2 Oct 2003 17:04:37 -0400 (EDT) Received: from Captain (pardus-larus.student.utwente.nl [130.89.162.38]) by netlx010.civ.utwente.nl (8.11.4/HKD) with SMTP id h92L4k104372 for ; Thu, 2 Oct 2003 23:04:46 +0200 Date: Thu, 2 Oct 2003 23:07:41 +0200 From: Jaap Karssenberg To: gtk-perl-list@gnome.org Subject: Re: New version of Gtk2::GladeXML Message-Id: <20031002230741.4d50c39c.j.g.karssenberg@student.utwente.nl> In-Reply-To: <1065126933.3f7c8c153d437@webmail.widomaker.com> References: <1065126933.3f7c8c153d437@webmail.widomaker.com> X-Mailer: Sylpheed version 0.9.5claws (GTK+ 1.2.10; i686-pc-linux-gnu) X-Operating-System: Gentoo GNU/Linux X-Face: "v{-bpe?1p2m|Je=04fRKRU3r_u46st:$k=UF[?DH7FEX9(W=d1a4w9:%kXx;v#"({6w,fp(Xpz}BNuW!^"6Z`Xhi#ftaVCoG7T}S>dpie1HyhN)A$NPbG6xELWy|bt\ Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-UTwente-MailScanner-Information: Scanned by MailScanner. Contact helpdesk@ITBE.utwente.nl for more information. X-UTwente-MailScanner: Found to be clean Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Thu, 02 Oct 2003 16:35:33 -0400 (EDT) Chas Owens wrote: : Here is the patch to Gtk2::GladeXML version 0.92 and Some error out put, tried it on the 0.92 tarball fresh from SF. The resulting lib seems broken, make test isn't happy either. Gtk2-GladeXML-0.92 # patch -p0 < ../GladeXML.xs.patch patching file GladeXML.xs Hunk #1 FAILED at 1. Hunk #2 FAILED at 30. Hunk #3 succeeded at 112 (offset 23 lines). Hunk #4 succeeded at 121 (offset 23 lines). Hunk #5 succeeded at 156 (offset 23 lines). Hunk #6 succeeded at 181 (offset 23 lines). Hunk #7 FAILED at 224. 3 out of 7 hunks FAILED -- saving rejects to file GladeXML.xs.rej -- ) ( Jaap Karssenberg || Pardus [Larus] : : http://pardus-larus.student.utwente.nl/~pardus ) \ / ( ",.*'*.," Proud owner of "Perl6 Essentials" 1st edition :) From alas@widomaker.com Thu Oct 2 17:16:46 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from webmail.widomaker.com (webmail.widomaker.com [204.17.220.4]) by mail.gnome.org (Postfix) with ESMTP id A7F7F18565 for ; Thu, 2 Oct 2003 17:16:44 -0400 (EDT) Received: from webmail.widomaker.com (localhost [127.0.0.1]) by webmail.widomaker.com (8.12.9/8.12.9) with ESMTP id h92LFvjF033946; Thu, 2 Oct 2003 17:15:57 -0400 (EDT) (envelope-from alas@widomaker.com) Received: (from nobody@localhost) by webmail.widomaker.com (8.12.9/8.12.9/Submit) id h92LFvqv033945; Thu, 2 Oct 2003 17:15:57 -0400 (EDT) X-Authentication-Warning: webmail.widomaker.com: nobody set sender to alas@widomaker.com using -f To: Jaap Karssenberg Subject: Re: New version of Gtk2::GladeXML Message-ID: <1065129357.3f7c958d2f17f@webmail.widomaker.com> Date: Thu, 02 Oct 2003 17:15:57 -0400 (EDT) From: Chas Owens Cc: gtk-perl-list@gnome.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="-MOQ106512935776bfc964796cbcf4b63a2040eeb78927" User-Agent: IMP/PHP IMAP webmail program 2.2.6 X-Originating-IP: 199.244.214.30 X-Webmail: Report abuse to abuse@widomaker.com Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: This message is in MIME format. ---MOQ106512935776bfc964796cbcf4b63a2040eeb78927 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Quoting Jaap Karssenberg : > On Thu, 02 Oct 2003 16:35:33 -0400 (EDT) Chas Owens wrote: > : Here is the patch to Gtk2::GladeXML version 0.92 and > > Some error out put, tried it on the 0.92 tarball fresh from SF. The > resulting lib seems broken, make test isn't happy either. > > Gtk2-GladeXML-0.92 # patch -p0 < ../GladeXML.xs.patch > patching file GladeXML.xs > Hunk #1 FAILED at 1. > Hunk #2 FAILED at 30. > Hunk #3 succeeded at 112 (offset 23 lines). > Hunk #4 succeeded at 121 (offset 23 lines). > Hunk #5 succeeded at 156 (offset 23 lines). > Hunk #6 succeeded at 181 (offset 23 lines). > Hunk #7 FAILED at 224. > 3 out of 7 hunks FAILED -- saving rejects to file GladeXML.xs.rej > > > -- > ) ( Jaap Karssenberg || Pardus [Larus] > : : http://pardus-larus.student.utwente.nl/~pardus > ) \ / ( > ",.*'*.," Proud owner of "Perl6 Essentials" 1st edition :) > _______________________________________________ Opps, my .orig file must have had some changes in it. Here is a patch against (I hope) the right version. ---MOQ106512935776bfc964796cbcf4b63a2040eeb78927 Content-Type: application/octet-stream; name="GladeXML.xs.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="GladeXML.xs.patch" LS0tIEdsYWRlWE1MLnhzLm9yaWcJMjAwMy0xMC0wMiAxNzowNzo1My4wMDAwMDAwMDAgLTA0MDAK KysrIEdsYWRlWE1MLnhzCTIwMDMtMTAtMDIgMTc6MDg6MTAuMDAwMDAwMDAwIC0wNDAwCkBAIC0x LDE0NSArMSwxMDYgQEAKIC8qCiAgKiAkSGVhZGVyOiAvY3Zzcm9vdC9ndGsyLXBlcmwvZ3RrMi1w ZXJsLXhzL0dsYWRlL0dsYWRlWE1MLnhzLHYgMS44IDIwMDMvMDcvMDUgMDc6MTQ6MzYgcGNnIEV4 cCAkCiAgKgotICogQmFzZWQgc3Ryb25nbHkgb24gZ3RrLXBlcmwncyBHbGFkZVhNTAotICogCiAg Ki8KIAogI2luY2x1ZGUgImdsYWRleG1scGVybC5oIgogCi0vKiBzZWUgZ2xhZGVfc2V0X2N1c3Rv bV9oYW5kbGVyIGZvciB3aGF0IHRoaXMgaXMgKi8KLXN0YXRpYyBBViAqY3VzdG9tX2FyZ3MgPSBO VUxMOwotI2RlZmluZSBQYWNrQ2FsbGJhY2tTVChhdiwgZmlyc3QpCQkJCQkJCVwKLQkJaWYgKFN2 UlYoU1QoZmlyc3QpKSAmJiAoU3ZUWVBFKFN2UlYoU1QoZmlyc3QpKSkgPT0gU1Z0X1BWQVYpKSB7 CQlcCi0JCQlpbnQgaTsJCQkJCQkJCVwKLQkJCUFWICogeCA9IChBViopU3ZSVihTVChmaXJzdCkp OwkJCQkJXAotCQkJZm9yKGk9MDtpPD1hdl9sZW4oeCk7aSsrKSB7CQkJCQlcCi0JCQkJYXZfcHVz aChhdiwgbmV3U1ZzdigqYXZfZmV0Y2goeCwgaSwgMCkpKTsJCVwKLQkJCX0JCQkJCQkJCVwKLQkJ fSBlbHNlIHsJCQkJCQkJCVwKLQkJCWludCBpOwkJCQkJCQkJXAotCQkJZm9yKGk9Zmlyc3Q7aTxp dGVtcztpKyspCQkJCQlcCi0JCQkJYXZfcHVzaChhdiwgbmV3U1ZzdihTVChpKSkpOwkJCQlcCi0J CX0KK3N0YXRpYyBHUGVybENhbGxiYWNrICoKK2NyZWF0ZV9jb25uZWN0X2Z1bmNfaGFuZGxlcl9j YWxsYmFjayAoU1YgKiBmdW5jLCBTViAqIGRhdGEpCit7CisJR1R5cGUgcGFyYW1fdHlwZXNbXSA9 IHsKKwkJR19UWVBFX1NUUklORywKKwkJR19UWVBFX09CSkVDVCwKKwkJR19UWVBFX1NUUklORywK KwkJR19UWVBFX1NUUklORywKKwkJR19UWVBFX09CSkVDVCwKKwkJR19UWVBFX0JPT0xFQU4KKwl9 OworCXJldHVybiBncGVybF9jYWxsYmFja19uZXcgKGZ1bmMsIGRhdGEsCisJICAgICAgICAgICAg ICAgICAgICAgICAgICAgR19OX0VMRU1FTlRTIChwYXJhbV90eXBlcyksCisJICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGFyYW1fdHlwZXMsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAg R19UWVBFX05PTkUpOworfQogCiBzdGF0aWMgdm9pZAogY29ubmVjdF9mdW5jX2hhbmRsZXIgKGNv bnN0IGdjaGFyICpoYW5kbGVyX25hbWUsCiAJCSAgICAgIEdPYmplY3QgICAgICpvYmplY3QsCiAJ CSAgICAgIGNvbnN0IGdjaGFyICpzaWduYWxfbmFtZSwKIAkJICAgICAgY29uc3QgZ2NoYXIgKnNp Z25hbF9kYXRhLAogCQkgICAgICBHT2JqZWN0ICAgICAqY29ubmVjdF9vYmplY3QsCiAJCSAgICAg IGdib29sZWFuICAgICBhZnRlciwKIAkJICAgICAgZ3BvaW50ZXIgICAgIHVzZXJfZGF0YSkKIHsK LQlBViAqYXY7Ci0JU1YgKmhhbmRsZXI7Ci0JZFNQOwotCi0JLyoKLQlnX3ByaW50ZXJyKCJjb25u ZWN0X21hbnkgKCVzLCAlcCwgJXMsICVzLCAlcCwgJWQsICVwXG4iLAotCQkgICBoYW5kbGVyX25h bWUsIG9iamVjdCwgc2lnbmFsX25hbWUsIHNpZ25hbF9kYXRhLAotCQkgICBjb25uZWN0X29iamVj dCwgYWZ0ZXIsIHVzZXJfZGF0YSk7Ci0JKi8KLQogI2RlZmluZSBJRl9OVUxMX1NFVF9FTVBUWSh2 YXIpIFwKIAlpZiggISh2YXIpICkJCVwKIAkJKHZhcikgPSAiIjsKIAlJRl9OVUxMX1NFVF9FTVBU WShoYW5kbGVyX25hbWUpOwogCUlGX05VTExfU0VUX0VNUFRZKHNpZ25hbF9uYW1lKTsKIAlJRl9O VUxMX1NFVF9FTVBUWShzaWduYWxfZGF0YSk7CiAjdW5kZWYgSUZfTlVMTF9TRVRfRU1QVFkKIAot CWF2ID0gKEFWKil1c2VyX2RhdGE7Ci0JaGFuZGxlciA9ICphdl9mZXRjaChhdiwgMCwgMCk7Ci0K LQlFTlRFUjsKLQlTQVZFVE1QUzsKLQlQVVNITUFSSyhTUCk7Ci0KLQlYUFVTSHMoc3ZfMm1vcnRh bChuZXdTVnB2KGhhbmRsZXJfbmFtZSwgMCkpKTsKLQlYUFVTSHMoc3ZfMm1vcnRhbChuZXdTVkd0 a09iamVjdChvYmplY3QpKSk7Ci0JWFBVU0hzKHN2XzJtb3J0YWwobmV3U1ZwdihzaWduYWxfbmFt ZSwgMCkpKTsKLQlYUFVTSHMoc3ZfMm1vcnRhbChuZXdTVnB2KHNpZ25hbF9kYXRhLCAwKSkpOwot CWlmKCBjb25uZWN0X29iamVjdCApCi0JCVhQVVNIcyhzdl8ybW9ydGFsKG5ld1NWR3RrT2JqZWN0 KGNvbm5lY3Rfb2JqZWN0KSkpOwotCWVsc2UKLQkJWFBVU0hzKHN2XzJtb3J0YWwobmV3U1Zzdigm UExfc3ZfdW5kZWYpKSk7Ci0JWFBVU0hzKHN2XzJtb3J0YWwobmV3U1ZpdihhZnRlcikpKTsKLQlY UFVTSHMoc3ZfMm1vcnRhbChuZXdTVnN2KCphdl9mZXRjaChhdiwgMSwgMCkpKSk7Ci0KLQlQVVRC QUNLOwotCi0JcGVybF9jYWxsX3N2KGhhbmRsZXIsIEdfRElTQ0FSRCk7Ci0KLQlGUkVFVE1QUzsK LQlMRUFWRTsKLQotCisJZ3BlcmxfY2FsbGJhY2tfaW52b2tlICgoR1BlcmxDYWxsYmFjayopIHVz ZXJfZGF0YSwKKwkgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisJCQkgICAgICAgaGFuZGxl cl9uYW1lLAorCQkJICAgICAgIG9iamVjdCwKKwkJCSAgICAgICBzaWduYWxfbmFtZSwKKwkJCSAg ICAgICBzaWduYWxfZGF0YSwKKwkJCSAgICAgICBjb25uZWN0X29iamVjdCwKKwkJCSAgICAgICBh ZnRlciwKKwkJCSAgICAgICB1c2VyX2RhdGEpOwogfQogCiBzdGF0aWMgR3RrV2lkZ2V0KgotZ2xh ZGVfY3VzdG9tX3dpZGdldCAoR2xhZGVYTUwgKnhtbCwgZ2NoYXIgKmZ1bmNfbmFtZSwgY2hhciog bmFtZSwgY2hhciogc3RyaW5nMSwgY2hhciogc3RyaW5nMiwgaW50IGludDEsIGludCBpbnQyLCBn cG9pbnRlciBkYXRhKSB7Ci0JU1YgKiBzOwotCVNWICpoYW5kbGVyOwotCWludCBpOwotCUd0a1dp ZGdldCAqcmVzdWx0OwotCWRTUDsKLQotCUVOVEVSOwotCVNBVkVUTVBTOwotCVBVU0hNQVJLKFNQ KTsKLQotCWlmICghbmFtZSkgbmFtZSA9ICIiOwotCWlmICghZnVuY19uYW1lKSBmdW5jX25hbWUg PSAiIjsKLQlpZiAoIXN0cmluZzEpIHN0cmluZzEgPSAiIjsKLQlpZiAoIXN0cmluZzIpIHN0cmlu ZzIgPSAiIjsKLQotCVhQVVNIcyhzdl8ybW9ydGFsKG5ld1NWR3RrT2JqZWN0KEdUS19PQkpFQ1Qo eG1sKSkpKTsKLQlYUFVTSHMoc3ZfMm1vcnRhbChuZXdTVnB2KGZ1bmNfbmFtZSwgc3RybGVuKGZ1 bmNfbmFtZSkpKSk7Ci0JWFBVU0hzKHN2XzJtb3J0YWwobmV3U1ZwdihuYW1lLCBzdHJsZW4obmFt ZSkpKSk7Ci0JWFBVU0hzKHN2XzJtb3J0YWwobmV3U1ZwdihzdHJpbmcxLCBzdHJsZW4oc3RyaW5n MSkpKSk7Ci0JWFBVU0hzKHN2XzJtb3J0YWwobmV3U1ZwdihzdHJpbmcyLCBzdHJsZW4oc3RyaW5n MikpKSk7Ci0JWFBVU0hzKHN2XzJtb3J0YWwobmV3U1ZpdihpbnQxKSkpOwotCVhQVVNIcyhzdl8y bW9ydGFsKG5ld1NWaXYoaW50MikpKTsKLQotCWZvciAoaT0xO2k8PWF2X2xlbihjdXN0b21fYXJn cyk7aSsrKQotCQlYUFVTSHMoc3ZfMm1vcnRhbChuZXdTVnN2KCphdl9mZXRjaChjdXN0b21fYXJn cywgaSwgMCkpKSk7Ci0JUFVUQkFDSzsKLQotCWhhbmRsZXIgPSAqYXZfZmV0Y2goY3VzdG9tX2Fy Z3MsIDAsIDApOwotCWk9cGVybF9jYWxsX3N2KGhhbmRsZXIsIEdfU0NBTEFSKTsKLQlTUEFHQUlO OwotCWlmIChpICE9IDEpCi0JCWNyb2FrKCJjcmVhdGVfY3VzdG9tX3dpZGdldDIgZmFpbGVkIik7 Ci0JcyA9IFBPUHM7Ci0JcmVzdWx0ID0gKEd0a1dpZGdldCopU3ZHdGtPYmplY3Qocyk7Ci0JUFVU QkFDSzsKLQlGUkVFVE1QUzsKLQlMRUFWRTsKLQlyZXR1cm4gcmVzdWx0OworZ2xhZGVfY3VzdG9t X3dpZGdldCgKKwlHbGFkZVhNTCAqIHhtbCwKKwlnY2hhciAgICAqIGZ1bmNfbmFtZSwKKwljaGFy ICAgICAqIG5hbWUsCisJY2hhciAgICAgKiBzdHJpbmcxLAorCWNoYXIgICAgICogc3RyaW5nMiwK KwlpbnQgICAgICAgIGludDEsCisJaW50ICAgICAgICBpbnQyLAorCWdwb2ludGVyICAgZGF0YQor KSB7CisJR1BlcmxDYWxsYmFjayAqIGNhbGxiYWNrICAgICA9IChHUGVybENhbGxiYWNrKilkYXRh OworCUdWYWx1ZSAgICAgICAgICByZXR1cm5fdmFsdWUgPSB7MCx9OworCUd0a1dpZGdldCogICAg ICByZXR2YWw7CisJZ192YWx1ZV9pbml0KCZyZXR1cm5fdmFsdWUsIGNhbGxiYWNrLT5yZXR1cm5f dHlwZSk7CisJZ3BlcmxfY2FsbGJhY2tfaW52b2tlKAorCQljYWxsYmFjaywgICAgICAgLyp0aGUg cGVybCBzdWJyb3V0aW5lKi8KKwkJJnJldHVybl92YWx1ZSwgIC8qdG8gY2F0Y2ggdGhlIHJldHVy biB2YWx1ZSovCisJCXhtbCwgICAgICAgICAgICAvKnRoZSBjYWxsaW5nIGdsYWRleG1sIG9iamVj dCovCisJCWZ1bmNfbmFtZSwgICAgICAvKnRoZSB3aWRnZXQgY3JlYXRpb24gZnVuY3Rpb24gbmFt ZSovCisJCW5hbWUsICAgICAgICAgICAvKnRoaXMgd2lkZ2V0J3MgbmFtZSBmb3IgdXNlIHdpdGgg Z2V0X3dpZGdldCovCisJCXN0cmluZzEsICAgICAgICAvKnRoZSBmb3VyIGFyZ3MgZnJvbSB0aGUg eG1sIGZpbGUqLworCQlzdHJpbmcyLAorCQlpbnQxLAorCQlpbnQyCisJKTsKKwkvKiBkdXAgcmVm cywgdW5zZXQgdW5yZWZzLiAqLworCXJldHZhbCA9IGdfdmFsdWVfZHVwX29iamVjdCgmcmV0dXJu X3ZhbHVlKTsKKwlnX3ZhbHVlX3Vuc2V0KCZyZXR1cm5fdmFsdWUpOworCXJldHVybiByZXR2YWw7 CiB9CiAKIE1PRFVMRSA9IEd0azI6OkdsYWRlWE1MCVBBQ0tBR0UgPSBHdGsyOjpHbGFkZVhNTAlQ UkVGSVggPSBnbGFkZV94bWxfCiAKIEJPT1Q6CiAJZ3BlcmxfcmVnaXN0ZXJfb2JqZWN0IChHTEFE RV9UWVBFX1hNTCwgIkd0azI6OkdsYWRlWE1MIik7CiAKICMjICBHbGFkZVhNTCAqZ2xhZGVfeG1s X25ldyAoY29uc3QgY2hhciAqZm5hbWUsIGNvbnN0IGNoYXIgKnJvb3QsIGNvbnN0IGNoYXIgKmRv bWFpbikKIEdsYWRlWE1MX29ybnVsbCAqCiBnbGFkZV94bWxfbmV3IChjbGFzcywgZm5hbWUsIHJv b3Q9TlVMTCwgZG9tYWluPU5VTEwpCi0JU1YgICAgICAgICAqY2xhc3MKIAljb25zdCBjaGFyICpm bmFtZQogCWNvbnN0IGNoYXIgKnJvb3QKIAljb25zdCBjaGFyICpkb21haW4KICAgICBDX0FSR1M6 CiAJZm5hbWUsIHJvb3QsIGRvbWFpbgogCiAjIyAgR2xhZGVYTUwgKmdsYWRlX3htbF9uZXdfZnJv bV9idWZmZXIgKGNvbnN0IGNoYXIgKmJ1ZmZlciwgaW50IHNpemUsIGNvbnN0IGNoYXIgKnJvb3Qs IGNvbnN0IGNoYXIgKmRvbWFpbikKIEdsYWRlWE1MX29ybnVsbCAqCiBnbGFkZV94bWxfbmV3X2Zy b21fYnVmZmVyIChjbGFzcywgYnVmZmVyLCByb290PU5VTEwsIGRvbWFpbj1OVUxMKQotCVNWICAg ICAgICAgKmNsYXNzCiAJU1YgICAgICAgICAqYnVmZmVyCiAJY29uc3QgY2hhciAqcm9vdAogCWNv bnN0IGNoYXIgKmRvbWFpbgogICAgIFBSRUlOSVQ6CiAJaW50ICAgbGVuOwpAQCAtMTcxLDQ5ICsx MzIsNDEgQEAKICMJR2xhZGVYTUwgICAgKnNlbGYKICMJY29uc3QgY2hhciAqaGFuZGxlcm5hbWUK ICMJR0NhbGxiYWNrICAgZnVuYwogIwlncG9pbnRlciAgICB1c2VyX2RhdGEKIAotIyMgcHJvYmFi bHkgc2hvdWxkbid0IHVzZSB0aGlzIHVubGVzcyB5b3Uga25vdyB3aGF0IHlvdSdyZSBkb2luZwog IyMgIHZvaWQgZ2xhZGVfeG1sX3NpZ25hbF9hdXRvY29ubmVjdCAoR2xhZGVYTUwgKnNlbGYpCisj IyAgdm9pZCBnbGFkZV94bWxfc2lnbmFsX2F1dG9jb25uZWN0X2Z1bGwgKEdsYWRlWE1MICpzZWxm LCBHbGFkZVhNTENvbm5lY3RGdW5jIGZ1bmMsIGdwb2ludGVyIHVzZXJfZGF0YSkKIHZvaWQKIGds YWRlX3htbF9zaWduYWxfYXV0b2Nvbm5lY3QgKHNlbGYsIGZ1bmMsIHVzZXJfZGF0YT1OVUxMKQog CUdsYWRlWE1MICpzZWxmCiAJU1YgICAgICAgKmZ1bmMKIAlTViAgICAgICAqdXNlcl9kYXRhCiAg ICAgUFJFSU5JVDoKLSAgICAJQVYgKmF2OworCUdQZXJsQ2FsbGJhY2sgKiByZWFsX2NhbGxiYWNr OwogICAgIENPREU6Ci0JYXYgPSBuZXdBVigpOwotICAgIAlhdl9wdXNoKGF2LCBuZXdTVnN2KGZ1 bmMpKTsKLSAgICAJYXZfcHVzaChhdiwgbmV3U1Zzdih1c2VyX2RhdGEpKTsKLQlnbGFkZV94bWxf c2lnbmFsX2F1dG9jb25uZWN0X2Z1bGwoc2VsZiwgY29ubmVjdF9mdW5jX2hhbmRsZXIsIAotCQkJ CQkgIChncG9pbnRlcilhdik7CisJcmVhbF9jYWxsYmFjayA9IGNyZWF0ZV9jb25uZWN0X2Z1bmNf aGFuZGxlcl9jYWxsYmFjayAoZnVuYywgdXNlcl9kYXRhKTsKKyAgICAJZ2xhZGVfeG1sX3NpZ25h bF9hdXRvY29ubmVjdF9mdWxsIChzZWxmLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29ubmVjdF9mdW5jX2hhbmRsZXIsIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVhbF9jYWxsYmFjayk7CisJZ3BlcmxfY2FsbGJhY2tfZGVzdHJveSAocmVhbF9j YWxsYmFjayk7CiAKICMjIHByb2JhYmx5IHNob3VsZG4ndCB1c2UgdGhpcyB1bmxlc3MgeW91IGtu b3cgd2hhdCB5b3UncmUgZG9pbmcKICMjICB2b2lkIGdsYWRlX3htbF9zaWduYWxfY29ubmVjdF9m dWxsIChHbGFkZVhNTCAqc2VsZiwgY29uc3QgZ2NoYXIgKmhhbmRsZXJfbmFtZSwgR2xhZGVYTUxD b25uZWN0RnVuYyBmdW5jLCBncG9pbnRlciB1c2VyX2RhdGEpCiB2b2lkCiBnbGFkZV94bWxfc2ln bmFsX2Nvbm5lY3RfZnVsbCAoc2VsZiwgaGFuZGxlcl9uYW1lLCBmdW5jLCB1c2VyX2RhdGEpCiAJ R2xhZGVYTUwgICAgICAgICAgICAqc2VsZgogCWNvbnN0IGdjaGFyICAgICAgICAgKmhhbmRsZXJf bmFtZQogCVNWICAgICAgICAgICAgICAgICAgKmZ1bmMKIAlTViAgICAgICAgICAgICAgICAgICp1 c2VyX2RhdGEKICAgICBQUkVJTklUOgotICAgIAlBViAqYXY7CisJR1BlcmxDYWxsYmFjayAqIHJl YWxfY2FsbGJhY2s7CiAgICAgQ09ERToKLQlhdiA9IG5ld0FWKCk7Ci0gICAgCWF2X3B1c2goYXYs IG5ld1NWc3YoZnVuYykpOwotICAgIAlhdl9wdXNoKGF2LCBuZXdTVnN2KCZQTF9zdl91bmRlZikp OwotICAgIAlnbGFkZV94bWxfc2lnbmFsX2Nvbm5lY3RfZnVsbChzZWxmLCBoYW5kbGVyX25hbWUs IGNvbm5lY3RfZnVuY19oYW5kbGVyLCAKLQkJCQkgICAgICAoZ3BvaW50ZXIpYXYpOwotCi0jIyAg dm9pZCBnbGFkZV94bWxfc2lnbmFsX2F1dG9jb25uZWN0X2Z1bGwgKEdsYWRlWE1MICpzZWxmLCBH bGFkZVhNTENvbm5lY3RGdW5jIGZ1bmMsIGdwb2ludGVyIHVzZXJfZGF0YSkKLSN2b2lkCi0jZ2xh ZGVfeG1sX3NpZ25hbF9hdXRvY29ubmVjdF9mdWxsIChzZWxmLCBmdW5jLCB1c2VyX2RhdGEpCi0j CUdsYWRlWE1MICAgICAgICAgICAgKnNlbGYKLSMJR2xhZGVYTUxDb25uZWN0RnVuYyAgZnVuYwot IwlncG9pbnRlciAgICAgICAgICAgICB1c2VyX2RhdGEKKwlyZWFsX2NhbGxiYWNrID0gY3JlYXRl X2Nvbm5lY3RfZnVuY19oYW5kbGVyX2NhbGxiYWNrIChmdW5jLCB1c2VyX2RhdGEpOworICAgIAln bGFkZV94bWxfc2lnbmFsX2Nvbm5lY3RfZnVsbCAoc2VsZiwgaGFuZGxlcl9uYW1lLCBjb25uZWN0 X2Z1bmNfaGFuZGxlciwgCisJCQkJICAgICAgIHJlYWxfY2FsbGJhY2spOworCWdwZXJsX2NhbGxi YWNrX2Rlc3Ryb3kgKHJlYWxfY2FsbGJhY2spOwogCiAjIyAgR3RrV2lkZ2V0ICpnbGFkZV94bWxf Z2V0X3dpZGdldCAoR2xhZGVYTUwgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUpCiBHdGtXaWRnZXRf b3JudWxsICoKIGdsYWRlX3htbF9nZXRfd2lkZ2V0IChzZWxmLCBuYW1lKQogCUdsYWRlWE1MICAg KnNlbGYKQEAgLTI0NiwyNSArMTk5LDM4IEBACiAKICMjIHByb2JhYmx5IHNob3VsZG4ndCB1c2Ug dGhlc2UgdW5sZXNzIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nCiAKICMjICB2b2lkIGdsYWRl X3NldF9jdXN0b21faGFuZGxlcihHbGFkZVhNTEN1c3RvbVdpZGdldEhhbmRsZXIgaGFuZGxlciwg Z3BvaW50ZXIgdXNlcl9kYXRhKQogdm9pZAotZ2xhZGVfc2V0X2N1c3RvbV9oYW5kbGVyIChjbGFz cywgaGFuZGxlciwgLi4uKQotCVNWICogICAgIGNsYXNzCi0JU1YgKiAgICAgaGFuZGxlcgorZ2xh ZGVfc2V0X2N1c3RvbV9oYW5kbGVyIChjbGFzcywgY2FsbGJhY2ssIGNhbGxiYWNrX2RhdGE9TlVM TCkKKwlTViAqICAgICBjYWxsYmFjaworCVNWICogICAgIGNhbGxiYWNrX2RhdGEKKyAgICBQUkVJ TklUOgorICAgICAgICBzdGF0aWMgR1BlcmxDYWxsYmFjayAqIHJlYWxfY2FsbGJhY2sgPSBOVUxM OworICAgICAgICBHVHlwZSBwYXJhbV90eXBlcyBbXSA9IHsKKwkJR0xBREVfVFlQRV9YTUwsICAv KmdsYWRleG1sIG9iamVjdCovCisJCUdfVFlQRV9TVFJJTkcsICAgLypjcmVhdGlvbiBmdW5jdGlv biBuYW1lKi8KKwkJR19UWVBFX1NUUklORywgICAvKndpZGdldCBuYW1lKi8KKwkJR19UWVBFX1NU UklORywgICAvKnN0cmluZyAxKi8KKwkJR19UWVBFX1NUUklORywgICAvKnN0cmluZyAyKi8KKwkJ R19UWVBFX0lOVCwgICAgICAvKmludGVnZXIgMSovCisJCUdfVFlQRV9JTlQgICAgICAgLyppbnRl Z2VyIDIqLworCX07CiAgICAgQ09ERToKLQlpZiggY3VzdG9tX2FyZ3MgKQotCXsKLQkJU3ZSRUZD TlRfZGVjKChTViopY3VzdG9tX2FyZ3MpOwotCQljdXN0b21fYXJncyA9IE5VTEw7Ci0JfQotCWlm KCBoYW5kbGVyICkKLQl7Ci0JCWN1c3RvbV9hcmdzID0gbmV3QVYoKTsKLQkJUGFja0NhbGxiYWNr U1QoY3VzdG9tX2FyZ3MsMSk7Ci0JCWdsYWRlX3NldF9jdXN0b21faGFuZGxlcihnbGFkZV9jdXN0 b21fd2lkZ2V0LCBOVUxMKTsKKwlpZiAocmVhbF9jYWxsYmFjaykgeworCQkvKiB3ZSdyZSBiZWlu ZyBjYWxsZWQgYWdhaW4uLi4gKi8KKwkJZ3BlcmxfY2FsbGJhY2tfZGVzdHJveSAocmVhbF9jYWxs YmFjayk7CisJCXJlYWxfY2FsbGJhY2sgPSBOVUxMOwogCX0KKwlyZWFsX2NhbGxiYWNrID0gZ3Bl cmxfY2FsbGJhY2tfbmV3KAorCQljYWxsYmFjaywgICAgICAgLypwZXJsIGZ1bmN0aW9uIHRvIHRy ZWF0IGFzIGEgY2FsbGJhY2sqLworCQljYWxsYmFja19kYXRhLCAgLypleHRyYSBkYXRhIHRvIHBh c3MgdG8gY2FsbGJhY2sqLworCQk3LCAgICAgICAgICAgICAgLypudW1iZXIgb2YgcGFyYW1ldGVy cyovCisJCXBhcmFtX3R5cGVzLCAgICAvKmxpc3Qgb2YgcGFyYW1ldGVycyovCisJCUdUS19UWVBF X1dJREdFVCAvKnJldHVybiB0eXBlKi8KKwkpOworCWdsYWRlX3NldF9jdXN0b21faGFuZGxlciAo Z2xhZGVfY3VzdG9tX3dpZGdldCwgcmVhbF9jYWxsYmFjayk7CiAKIE1PRFVMRSA9IEd0azI6Okds YWRlWE1MCVBBQ0tBR0UgPSBHdGsyOjpXaWRnZXQJUFJFRklYID0gZ2xhZGVfCiAKICMjIGNvbnN0 IGNoYXIgKmdsYWRlX2dldF93aWRnZXRfbmFtZSAgICAgIChHdGtXaWRnZXQgKndpZGdldCk7CiBj b25zdCBjaGFyICoK ---MOQ106512935776bfc964796cbcf4b63a2040eeb78927-- From scott@asofyet.org Thu Oct 2 17:42:45 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smaug.dreamhost.com (smaug.dreamhost.com [66.33.209.15]) by mail.gnome.org (Postfix) with ESMTP id C2DA718111 for ; Thu, 2 Oct 2003 17:42:45 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by smaug.dreamhost.com (Postfix) with ESMTP id 3C4145B914; Thu, 2 Oct 2003 14:42:57 -0700 (PDT) Date: Thu, 2 Oct 2003 17:43:12 -0400 Subject: Re: How Do I get WM Decorations and Pixmaps to work [gtk1-perl]? Content-Type: text/plain; charset=ISO-8859-1; format=flowed Mime-Version: 1.0 (Apple Message framework v552) Cc: To: "Mauricio Silveira" From: muppet In-Reply-To: <001b01c38907$2f6db080$0a00000a@master> Message-Id: <6C32C64A-F521-11D7-B54A-000A9580E5E0@asofyet.org> Content-Transfer-Encoding: quoted-printable X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Thursday, October 2, 2003, at 01:04 PM, Mauricio Silveira wrote: > An example showing a pixmap file (any from /usr/share/pixmaps) being=20= > loaded into a window or H/VBox. create a Gtk::Pixmap, and set a Gtk::Gdk::Pixmap into it. Gtk::Pixmap=20= is a widget that displays an image; you can then pack the Gtk::Pixmap=20 anywhere you like. # load the XPM from a disk file. # assume that $widget is part of the window into which this # pixmap will be placed, so that it has the same visual # and depth. ($icon, $mask) =3D Gtk::Gdk::Pixmap->create_from_xpm ($widget->window, undef, $filename); # now create a Gtk::Pixmap with that xpm... $pixmap =3D Gtk::Pixmap->new ($icon, $mask); $pixmap->show; # and put it in a window. $widget->add ($pixmap); this is MUCH easier in gtk2-perl --- Gtk::Pixmap's replacement in=20 gtk2-perl is Gtk2::Image, and Gtk::Gdk::Pixmap is for all intents and=20 purposes replaced by Gtk2::Gdk::Pixbuf, which can be loaded from a file=20= with a single function call. $image =3D Gtk2::Image->new_from_file ($filename); $image->show; $widget->add ($image); > I just can't figure out how to get these two tasks working.=20 > $window->set_decorations( "border" ) simply doesn't work, > complains about not being a Gdk object? How Come? because a GtkWindow is not a GdkWindow --- it *contains* a GdkWindow. =20= i think you want to do this: $gtkwindow->window->set_decorations ('border'); > =A0I'm not using Gtk2-Perl because these is no Reference such as=20 > Gtk1-perl's Gtk::reference or Gtk::object man-pages. Any hints? personally i found Gtk::reference lacking --- it was only good if you=20 already knew the C function to use and just needed to find the name of=20= the perl method. it includes no actual text explaining the functions,=20= and as such has extremely limited usefulness. that said, it was rather=20= helpful to have for searching. a file like Gtk::reference can be generated from the gtk2-perl source,=20= but again, it will lack the helpful explanations that appear in the=20 gtk+ API reference. we are very reluctant to write full documentation=20= because of the duplication of effort that would be involved. however, let me reiterate a standing invitation and call for help: we=20 need documentation and documenters. this includes anyone who is=20 willing to attempt to figure out how to autogenerate API reference=20 documentation for the perl bindings. -- muppet From scott@asofyet.org Thu Oct 2 17:54:27 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smaug.dreamhost.com (smaug.dreamhost.com [66.33.209.15]) by mail.gnome.org (Postfix) with ESMTP id 8C88A1813D for ; Thu, 2 Oct 2003 17:54:27 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by smaug.dreamhost.com (Postfix) with ESMTP id E60415B8E3; Thu, 2 Oct 2003 14:54:39 -0700 (PDT) Date: Thu, 2 Oct 2003 17:54:53 -0400 Subject: Re: How do I prevent the main window from being destroyed? Content-Type: text/plain; charset=ISO-8859-1; format=flowed Mime-Version: 1.0 (Apple Message framework v552) Cc: To: "Mauricio Silveira" From: muppet In-Reply-To: <002501c38907$422d0950$0a00000a@master> Message-Id: <0D9E4E8B-F523-11D7-B54A-000A9580E5E0@asofyet.org> Content-Transfer-Encoding: quoted-printable X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Thursday, October 2, 2003, at 01:04 PM, Mauricio Silveira wrote: > I was wondering how do i get the main window not to be destroyed, but=20= > being hidden instead. > Like X-CD Roast, when you click the WM Decoration's "X" (close), it=20 > opens a transient window without destroying the main window. when you try to close the window with the window-manager, the window=20 manager sends a "delete-event" to the toplevel window. if you return=20 TRUE from the delete-event handler, gtk will consider the event handled=20= and the window will not be destroyed. if you return FALSE from that=20 handler, the default handler gets run, and that default handler=20 destroys the window. so... $toplevelwindow->signal_connect (delete_event =3D> sub { my ($window, $event) =3D @_; if (prompt_user ("do you really want to quit?")) { # clean things up and quit the main loop and all = that. # you can even destroy $window manually if you = like. return FALSE; } else { # he doesn't want to die yet! return TRUE; } }); > How do I do that with Gtk1-perl? the same way you do it with gtk2-perl, which you should be using for=20 new development. ;-) > =A0It is working all right with a "Quit Button". then call the quit button handling code from the delete-event handler. -- muppet From pagaltzis@gmx.de Thu Oct 2 18:13:42 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.gmx.net (mail.gmx.de [213.165.64.20]) by mail.gnome.org (Postfix) with SMTP id F264618137 for ; Thu, 2 Oct 2003 18:13:41 -0400 (EDT) Received: (qmail 28215 invoked by uid 65534); 2 Oct 2003 22:13:54 -0000 Received: from xdsl-195-14-221-240.netcologne.de (EHLO klangraum) (195.14.221.240) by mail.gmx.net (mp021) with SMTP; 03 Oct 2003 00:13:54 +0200 X-Authenticated: #163624 Received: (qmail 6316 invoked by uid 1000); 2 Oct 2003 22:13:20 -0000 Date: Fri, 3 Oct 2003 00:13:20 +0200 From: "A. Pagaltzis" To: gtk-perl-list@gnome.org Subject: Re: Subclassing Gtk2::CellRenderer Message-ID: <20031002221320.GA6310@klangraum> Mail-Followup-To: gtk-perl-list@gnome.org References: <20031002144713.GA3713@klangraum> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: * muppet [2003-10-02 17:02]: > i'm not sure that would be awkward at all --- what i was seeing > in my head as he described using a popup on a cell renderer was > something like the property lists you see in borland builder, > kylix, and qtdesigner --- the cell is just a button that you > activate to get a short menu of options. Oh! I thought he meant a modal dialog that's popped up on doubleclick (which, you'll probably agree, explains why I thought it would be very awkward).. -- Regards, Aristotle "If you can't laugh at yourself, you don't take life seriously enough." From danlyke@flutterby.com Thu Oct 2 18:40:48 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.flutterby.com (colo-danlyke-132.highertech.net [66.129.1.132]) by mail.gnome.org (Postfix) with ESMTP id EC28E18372 for ; Thu, 2 Oct 2003 18:40:47 -0400 (EDT) Received: from francisco (danlyke@localhost [127.0.0.1]) by mail.flutterby.com (8.12.3/8.12.3/Debian-6.6) with ESMTP id h92MtH07016911; Thu, 2 Oct 2003 15:55:17 -0700 Received: from francisco ([127.0.0.1]) by francisco with esmtp (Exim 3.36 #1 (Debian)) id 1A5C4k-0004dO-00; Thu, 02 Oct 2003 15:37:34 -0700 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <16252.43181.630168.783130@flutterby.com> Date: Thu, 2 Oct 2003 15:37:33 -0700 From: Dan Lyke To: muppet Cc: "Mauricio Silveira" , Subject: Re: How Do I get WM Decorations and Pixmaps to work [gtk1-perl]? In-Reply-To: <6C32C64A-F521-11D7-B54A-000A9580E5E0@asofyet.org> References: <001b01c38907$2f6db080$0a00000a@master> <6C32C64A-F521-11D7-B54A-000A9580E5E0@asofyet.org> X-Mailer: VM 7.17 under Emacs 21.3.1 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: muppet writes: > a file like Gtk::reference can be generated from the gtk2-perl source, > but again, it will lack the helpful explanations that appear in the > gtk+ API reference. we are very reluctant to write full documentation > because of the duplication of effort that would be involved. I've been thinking that "devhelp" needs a feature like some of the VisualStudio .NET has: Radio buttons that flip the example code back and forth between C# and VisualBasic. Some modification to that which reads the devhelp files and knows a bit about how Gtk2 is built and can do the back-and-forth between them seems like a tractable problem. It just hasn't filtered up enough on my priorities list to do the research to figure out how tractable yet. Alas, my day job is Windows and embedded code, so my other GUI stuff happens when I've got free time. Dan From j.g.karssenberg@student.utwente.nl Thu Oct 2 19:02:35 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from netlx014.civ.utwente.nl (netlx014.civ.utwente.nl [130.89.1.88]) by mail.gnome.org (Postfix) with ESMTP id 951EC18158 for ; Thu, 2 Oct 2003 19:02:34 -0400 (EDT) Received: from Captain (pardus-larus.student.utwente.nl [130.89.162.38]) by netlx014.civ.utwente.nl (8.11.7/HKD) with SMTP id h92N2h008892 for ; Fri, 3 Oct 2003 01:02:43 +0200 Date: Fri, 3 Oct 2003 01:05:38 +0200 From: Jaap Karssenberg To: gtk-perl-list@gnome.org Subject: Re: New version of Gtk2::GladeXML Message-Id: <20031003010538.3c5b1034.j.g.karssenberg@student.utwente.nl> In-Reply-To: <1065129357.3f7c958d2f17f@webmail.widomaker.com> References: <1065129357.3f7c958d2f17f@webmail.widomaker.com> X-Mailer: Sylpheed version 0.9.5claws (GTK+ 1.2.10; i686-pc-linux-gnu) X-Operating-System: Gentoo GNU/Linux X-Face: "v{-bpe?1p2m|Je=04fRKRU3r_u46st:$k=UF[?DH7FEX9(W=d1a4w9:%kXx;v#"({6w,fp(Xpz}BNuW!^"6Z`Xhi#ftaVCoG7T}S>dpie1HyhN)A$NPbG6xELWy|bt\ Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-UTwente-MailScanner-Information: Scanned by MailScanner. Contact helpdesk@ITBE.utwente.nl for more information. X-UTwente-MailScanner: Found to be clean Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Thu, 02 Oct 2003 17:15:57 -0400 (EDT) Chas Owens wrote: : Opps, my .orig file must have had some changes in it. Here is a patch : against(I hope) the right version. : : [GladeXML.xs.patch application/octet-stream (12732 bytes)] This one works, so does your example - thanks ! This is one for the FAQ I think. -- ) ( Jaap Karssenberg || Pardus [Larus] : : http://pardus-larus.student.utwente.nl/~pardus ) \ / ( ",.*'*.," Proud owner of "Perl6 Essentials" 1st edition :) From parakalas@yahoo.com Fri Oct 3 08:00:50 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from web13607.mail.yahoo.com (web13607.mail.yahoo.com [216.136.175.118]) by mail.gnome.org (Postfix) with SMTP id 4A18918612 for ; Fri, 3 Oct 2003 08:00:50 -0400 (EDT) Message-ID: <20031003120103.36442.qmail@web13607.mail.yahoo.com> Received: from [61.11.96.15] by web13607.mail.yahoo.com via HTTP; Fri, 03 Oct 2003 05:01:03 PDT Date: Fri, 3 Oct 2003 05:01:03 -0700 (PDT) From: parakala suma Subject: To Increase Font size in Combo Widget and background color of combowidget To: gtk-perl-list@gnome.org MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="0-1527659257-1065182463=:36024" Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: --0-1527659257-1065182463=:36024 Content-Type: text/plain; charset=us-ascii Hi I am trying to increase font size of text in combo widget and also background color of combo widget in Gtk2-perl. Kindly help me Thanks Suma --------------------------------- Do you Yahoo!? The New Yahoo! Shopping - with improved product search --0-1527659257-1065182463=:36024 Content-Type: text/html; charset=us-ascii
Hi
I am trying to increase font size of text in combo widget and also background color
of combo widget in Gtk2-perl.
Kindly help me
Thanks
Suma


Do you Yahoo!?
The New Yahoo! Shopping - with improved product search --0-1527659257-1065182463=:36024-- From rwmcfa1@neces.com Fri Oct 3 08:22:42 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smaug.dreamhost.com (smaug.dreamhost.com [66.33.209.15]) by mail.gnome.org (Postfix) with ESMTP id EE26118688 for ; Fri, 3 Oct 2003 08:22:41 -0400 (EDT) Received: from beta.local (12-222-230-66.client.insightBB.com [12.222.230.66]) by smaug.dreamhost.com (Postfix) with ESMTP id 2DC3D5B7BA; Fri, 3 Oct 2003 05:22:53 -0700 (PDT) Subject: Re: To Increase Font size in Combo Widget and background color of combowidget From: Ross McFarland To: parakala suma Cc: Gtk-Perl-List In-Reply-To: <20031003120103.36442.qmail@web13607.mail.yahoo.com> References: <20031003120103.36442.qmail@web13607.mail.yahoo.com> Content-Type: text/plain Message-Id: <1065183772.10307.40.camel@beta.local> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Fri, 03 Oct 2003 08:22:53 -0400 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Fri, 2003-10-03 at 08:01, parakala suma wrote: > Hi > I am trying to increase font size of text in combo widget and also > background color > of combo widget in Gtk2-perl. > Kindly help me > Thanks > Suma > > > ______________________________________________________________________ > Do you Yahoo!? > The New Yahoo! Shopping - with improved product search take a look at these recent threads for several possibilities of how to go about it: http://mail.gnome.org/archives/gtk-perl-list/2003-September/msg00251.html http://mail.gnome.org/archives/gtk-perl-list/2003-September/msg00249.html if you still have questions feel free to ask. -rm From alas@widomaker.com Fri Oct 3 10:27:11 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from webmail.widomaker.com (webmail.widomaker.com [204.17.220.4]) by mail.gnome.org (Postfix) with ESMTP id 1AA901812C for ; Fri, 3 Oct 2003 10:27:11 -0400 (EDT) Received: from webmail.widomaker.com (localhost [127.0.0.1]) by webmail.widomaker.com (8.12.9/8.12.9) with ESMTP id h93EQTjF035748; Fri, 3 Oct 2003 10:26:29 -0400 (EDT) (envelope-from alas@widomaker.com) Received: (from nobody@localhost) by webmail.widomaker.com (8.12.9/8.12.9/Submit) id h93EQTQE035747; Fri, 3 Oct 2003 10:26:29 -0400 (EDT) X-Authentication-Warning: webmail.widomaker.com: nobody set sender to alas@widomaker.com using -f To: parakala suma Subject: Re: To Increase Font size in Combo Widget and background color of combowidget Message-ID: <1065191189.3f7d8715981fb@webmail.widomaker.com> Date: Fri, 03 Oct 2003 10:26:29 -0400 (EDT) From: Chas Owens Cc: gtk-perl-list@gnome.org References: <20031003120103.36442.qmail@web13607.mail.yahoo.com> In-Reply-To: <20031003120103.36442.qmail@web13607.mail.yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit User-Agent: IMP/PHP IMAP webmail program 2.2.6 X-Originating-IP: 199.244.214.30 X-Webmail: Report abuse to abuse@widomaker.com Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Quoting parakala suma : > Hi > I am trying to increase font size of text in combo widget and also > background color > of combo widget in Gtk2-perl. > Kindly help me > Thanks > Suma Gtk2::Widget (the base class for all widgets) has a method called modify_font which expects a Gtk2::Pango::FontDescription. You can set the font easily like this: $combo->modify_font(Gtk2::Pango::FontDescription->from_string('Serif 20'); The three fonts you are most likely to use are: Serif - non-proportional, has little toots on it to make it flow nicely Sans - non-proportional, no toots, stands out (use for headings) Monospace - proportional (fixed), use anything that needs to line up (code) You can use any of the fonts installed on your system, but these are guarenteed to be there. They coorespond to Times New Roman, Ariel, and Courier New respectivly. Gtk2::Widget also has a method modify_bg that takes a state ('normal', 'active', 'prelight', 'selected', 'insensitive') and a Gtk2::Gdk::Color object. Example: my $color = Gtk2::Gdk::Color->parse('red'); for my $state ('normal', 'active', 'prelight', 'selected', 'insensitive') { $combo->modify_bg($state, $color); } You may be interested in the docs at http://developer.gnome.org/doc/API/. Remember that these are written for the natvie C interface, but you can translate what they say with the info in Gtk2::api. One important tip is to look at all of the object your current widget inherits from. The function you are looking for may be in one of them. From msilveira@linuxbr.com Fri Oct 3 11:11:02 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.digiweb.psi.br (mail.digiweb.com.br [200.198.179.64]) by mail.gnome.org (Postfix) with SMTP id 3F4C818415 for ; Fri, 3 Oct 2003 11:11:02 -0400 (EDT) Received: (qmail 15565 invoked from network); 3 Oct 2003 15:10:44 -0000 Received: from unknown (HELO master) (200.158.98.136) by mail.digiweb.com.br with SMTP; 3 Oct 2003 15:10:44 -0000 Message-ID: <007d01c389c0$948c61a0$0a00000a@master> From: "Mauricio Silveira" To: "muppet" Cc: References: <6C32C64A-F521-11D7-B54A-000A9580E5E0@asofyet.org> Subject: Re: How Do I get WM Decorations and Pixmaps to work [gtk1-perl]? Date: Fri, 3 Oct 2003 12:11:10 -0300 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1106 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: >personally i found Gtk::reference lacking --- it was only good if you >already knew the C function to use and just needed to find the name of >the perl method. it includes no actual text explaining the functions, >and as such has extremely limited usefulness. that said, it was rather >helpful to have for searching. I'm not a very experienced programmer, I've tried C once and later, that experience made perl programming a piece of cake , when I found GTK-perl I was amazed on how easy I could write a GUI for my apps; I found the GTK-perl tutorial along with the Gtk::reference and Gtk::objects a great learning, and the reference/objects man-pages themselves are still very useful. >however, let me reiterate a standing invitation and call for help: we >need documentation and documenters. this includes anyone who is >willing to attempt to figure out how to autogenerate API reference >documentation for the perl bindings. Let's see whenever I'll be able to help the project with this task ;) Mauricio Silveira. From alas@widomaker.com Fri Oct 3 11:38:12 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from webmail.widomaker.com (webmail.widomaker.com [204.17.220.4]) by mail.gnome.org (Postfix) with ESMTP id 5B34E18179 for ; Fri, 3 Oct 2003 11:38:12 -0400 (EDT) Received: from webmail.widomaker.com (localhost [127.0.0.1]) by webmail.widomaker.com (8.12.9/8.12.9) with ESMTP id h93FbXjF035985 for ; Fri, 3 Oct 2003 11:37:33 -0400 (EDT) (envelope-from alas@widomaker.com) Received: (from nobody@localhost) by webmail.widomaker.com (8.12.9/8.12.9/Submit) id h93FbX10035984 for gtk-perl-list@gnome.org; Fri, 3 Oct 2003 11:37:33 -0400 (EDT) X-Authentication-Warning: webmail.widomaker.com: nobody set sender to alas@widomaker.com using -f To: gtk-perl mailing list Subject: Re: How Do I get WM Decorations and Pixmaps to work [gtk1-perl]? Message-ID: <1065195453.3f7d97bd97ca6@webmail.widomaker.com> Date: Fri, 03 Oct 2003 11:37:33 -0400 (EDT) From: Chas Owens References: <6C32C64A-F521-11D7-B54A-000A9580E5E0@asofyet.org> <007d01c389c0$948c61a0$0a00000a@master> In-Reply-To: <007d01c389c0$948c61a0$0a00000a@master> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit User-Agent: IMP/PHP IMAP webmail program 2.2.6 X-Originating-IP: 199.244.214.30 X-Webmail: Report abuse to abuse@widomaker.com Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Quoting Mauricio Silveira : >I found the GTK-perl tutorial along with the Gtk::reference and > Gtk::objects a great learning, and the reference/objects man-pages > themselves are still very useful. Not that much has changed in relation to Gtk2. Most programs port over with just s/Gtk/Gtk2/g and s/Gnome/Gnome2/g. The big changes are to the list/tree widgets and the text widget. The new list and tree widget is a little hard to wrap your head around, but happily a well documented wrapper object is included with Gtk2-Perl (Gtk2::SimpleList). From pagaltzis@gmx.de Fri Oct 3 11:52:58 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.gmx.net (mail.gmx.net [213.165.64.20]) by mail.gnome.org (Postfix) with SMTP id 718EC18AC2 for ; Fri, 3 Oct 2003 11:52:57 -0400 (EDT) Received: (qmail 697 invoked by uid 65534); 3 Oct 2003 15:53:09 -0000 Received: from xdsl-213-168-118-15.netcologne.de (EHLO klangraum) (213.168.118.15) by mail.gmx.net (mp021) with SMTP; 03 Oct 2003 17:53:09 +0200 X-Authenticated: #163624 Received: (qmail 4053 invoked by uid 1000); 3 Oct 2003 15:52:56 -0000 Date: Fri, 3 Oct 2003 17:52:56 +0200 From: "A. Pagaltzis" To: gtk-perl mailing list Subject: Re: How Do I get WM Decorations and Pixmaps to work [gtk1-perl]? Message-ID: <20031003155256.GA4048@klangraum> Mail-Followup-To: gtk-perl mailing list References: <6C32C64A-F521-11D7-B54A-000A9580E5E0@asofyet.org> <007d01c389c0$948c61a0$0a00000a@master> <1065195453.3f7d97bd97ca6@webmail.widomaker.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1065195453.3f7d97bd97ca6@webmail.widomaker.com> User-Agent: Mutt/1.4i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: * Chas Owens [2003-10-03 15:42]: > The new list and tree widget is a little hard to wrap your head > around, but happily a well documented wrapper object is > included with Gtk2-Perl (Gtk2::SimpleList). Which is nicer than Gtk::CList ever was - even Gtk::HandyCList. -- Regards, Aristotle "If you can't laugh at yourself, you don't take life seriously enough." From scott@asofyet.org Fri Oct 3 13:35:19 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smaug.dreamhost.com (smaug.dreamhost.com [66.33.209.15]) by mail.gnome.org (Postfix) with ESMTP id 0DCEC182C6 for ; Fri, 3 Oct 2003 13:35:19 -0400 (EDT) Received: from [192.168.1.51] (adsl-1116.mis.net [12.162.183.102]) by smaug.dreamhost.com (Postfix) with ESMTP id 12F7F5B838; Fri, 3 Oct 2003 10:35:30 -0700 (PDT) Subject: Re: SimpleList->new_from_treeview From: muppet To: Jaap Karssenberg Cc: gtk-perl mailing list In-Reply-To: <20031002013209.67407f5d.j.g.karssenberg@student.utwente.nl> References: <20031001213822.36b617b2.j.g.karssenberg@student.utwente.nl> <84585CFF-F45F-11D7-82CF-000A9580E5E0@asofyet.org> <20031001230305.GA4947@klangraum> <20031002013209.67407f5d.j.g.karssenberg@student.utwente.nl> Content-Type: text/plain Organization: Message-Id: <1065202550.12846.39.camel@tetsuo> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.2.1 Date: 03 Oct 2003 13:35:50 -0400 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Wed, 2003-10-01 at 19:32, Jaap Karssenberg wrote: > On Thu, 2 Oct 2003 01:03:05 +0200 A. Pagaltzis wrote: > : * muppet [2003-10-01 22:35]: > : > > I noticed that new_from_treeview doesn't complain when the > : > > treeview arg doesn't exist - cost me half a day bug hunting > : > > :(( Maybe an argument check could be inserted ? > : > > : > if you supply undef for the widget, it creates a new one. > : > : I'm not sure whether he's talking about passing undef or passing > : nothing at all. That's two different conditions there. > > The point is that due to a typo I passed undef both unintended, but > automaticly assuming that new_from_treeview doesn't work without a > treeview I never double checked it. I think it to be good practice to > make constructors like this throw an exception when they get undef. i've added a bunch of parameter checks (and tests for them). both constructors will complain if you supply anything less than one column title=>type pair, if you pass an incomplete pair, if you use an unknown column type, or if the treeview arg to new_from_treeview is not a reference descended from Gtk2::TreeView. -- muppet From scott@asofyet.org Fri Oct 3 15:50:32 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smeagol.dreamhost.com (smeagol.dreamhost.com [66.33.209.5]) by mail.gnome.org (Postfix) with ESMTP id 81575180E7 for ; Fri, 3 Oct 2003 15:50:32 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by smeagol.dreamhost.com (Postfix) with ESMTP id 5A6C623A0A for ; Fri, 3 Oct 2003 12:50:44 -0700 (PDT) Date: Fri, 3 Oct 2003 15:51:00 -0400 Mime-Version: 1.0 (Apple Message framework v552) Content-Type: text/plain; charset=US-ASCII; format=flowed Subject: [RFC] threading issues From: muppet To: gtk-perl list Content-Transfer-Encoding: 7bit Message-Id: X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: thinking about the troubles people have had compiling gtk2-perl on non-threaded perls since the Glib config defaults to enabling thread safety support.... would it be reliable or advisable to attempt to determine whether thread safety should be enabled by checking %Config in Makefile.PL? if so, what would be a reliable way to check? something like use Config; $use_threads = $Config{config_args} =~ m/-Duse(i)?threads/; is this a good thing? this will require that you build the extension with a perl configured the same way as the one with which you want to use it. what do you think? will this help? -- muppet From rwmcfa1@neces.com Fri Oct 3 16:26:28 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from pochacco.sd.dreamhost.com (pochacco.sd.dreamhost.com [66.33.206.17]) by mail.gnome.org (Postfix) with ESMTP id DFA3D18102 for ; Fri, 3 Oct 2003 16:26:27 -0400 (EDT) Received: from webmail.neces.com (localhost [127.0.0.1]) by pochacco.sd.dreamhost.com (Postfix) with SMTP id 6CAE48FED4; Fri, 3 Oct 2003 13:26:38 -0700 (PDT) Received: from 192.146.101.12 (SquirrelMail authenticated user rwmcfa1@neces.com) by webmail.neces.com with HTTP; Fri, 3 Oct 2003 16:26:38 -0400 (EDT) Message-ID: <59559.192.146.101.12.1065212798.spork@webmail.neces.com> In-Reply-To: References: Date: Fri, 3 Oct 2003 16:26:38 -0400 (EDT) Subject: Re: [RFC] threading issues From: "Ross McFarland" To: "muppet" Cc: "gtk-perl list" User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: muppet said: > > thinking about the troubles people have had compiling gtk2-perl on > non-threaded perls since the Glib config defaults to enabling thread > safety support.... > > would it be reliable or advisable to attempt to determine whether > thread safety should be enabled by checking %Config in Makefile.PL? if > so, what would be a reliable way to check? something like > > use Config; > $use_threads = $Config{config_args} =~ m/-Duse(i)?threads/; > > is this a good thing? this will require that you build the extension > with a perl configured the same way as the one with which you want to > use it. > > what do you think? will this help? i don't think this would resolve the issues people are having. as i don't think the problems come from compiling Glib/Gtk2 with the tread support i think they come from some strange interaction with a non-threaded perl and threaded glib/gtk c libraries. reguardless of whether or not the perl xs Glib code was compiled with or without threading. most of the time (when i looked into it on slackware and freebsd) compiling Glib without threads support didn't seem to change anything, and the same seems to be true for other people. that being said it may still be an ok thing to do, if you don't have a threaded perl then it is unlikey that you will need the mutex protections around things in Glib perl. as is obvious the absolute solution to this problem isn't know. hopefully within the next few weeks (when i get my new freebsd system going at home) i'll be able to look into it. -rm From pagaltzis@gmx.de Fri Oct 3 16:37:42 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.gmx.net (imap.gmx.net [213.165.64.20]) by mail.gnome.org (Postfix) with SMTP id F105A18102 for ; Fri, 3 Oct 2003 16:37:41 -0400 (EDT) Received: (qmail 32232 invoked by uid 65534); 3 Oct 2003 20:37:54 -0000 Received: from xdsl-213-168-118-15.netcologne.de (EHLO klangraum) (213.168.118.15) by mail.gmx.net (mp015) with SMTP; 03 Oct 2003 22:37:54 +0200 X-Authenticated: #163624 Received: (qmail 6620 invoked by uid 1000); 3 Oct 2003 20:36:20 -0000 Date: Fri, 3 Oct 2003 22:36:20 +0200 From: "A. Pagaltzis" To: gtk-perl list Subject: Re: [RFC] threading issues Message-ID: <20031003203620.GA6583@klangraum> Mail-Followup-To: gtk-perl list References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: * muppet [2003-10-03 19:52]: > if so, what would be a reliable way to check? something like > > use Config; > $use_threads = $Config{config_args} =~ m/-Duse(i)?threads/; $ perl -MConfig -le'print "$a => $b" while ($a,$b) = each %Config' | grep thr dynamic_ext => B [ ... ] threads threads/shared extensions => B [ ... ] threads threads/shared Errno d_old_pthread_create_joinable => d_oldpthreads => d_pthread_atfork => d_pthread_yield => i_machcthr => i_pthread => define known_extensions => B [ ... ] threads threads/shared old_pthread_create_joinable => use5005threads => useithreads => usethreads => I think $Config{usethreads} is the one you want. > what do you think? will this help? I would say Makefile.PL should ask the user, unless they have something set in %ENV to force the decision one way or another silently. (Ie ``GTK2_PERL_USE_THREADS=0 perl Makefile.PL'' or something, which would also work with ``GTK2_PERL_USE_THREADS=0 perl -MCPAN -e'install Gtk2' ''.) -- Regards, Aristotle "If you can't laugh at yourself, you don't take life seriously enough." From scott@asofyet.org Fri Oct 3 17:57:29 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smaug.dreamhost.com (smaug.dreamhost.com [66.33.209.15]) by mail.gnome.org (Postfix) with ESMTP id 4402B1828D for ; Fri, 3 Oct 2003 17:57:29 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by smaug.dreamhost.com (Postfix) with ESMTP id 966135B87F for ; Fri, 3 Oct 2003 14:57:41 -0700 (PDT) Date: Fri, 3 Oct 2003 17:57:58 -0400 Mime-Version: 1.0 (Apple Message framework v552) Content-Type: text/plain; charset=US-ASCII; format=flowed Subject: Glib/Gtk2 1.00rc4 From: muppet To: gtk-perl list Content-Transfer-Encoding: 7bit Message-Id: X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: hey, it's still friday here. *cough* today's releases: ExtUtils;:PkgConfig 1.01 fixes the argument order on newer pkg-configs. Glib 1.00rc4 little stuff, esoteric error messages, no more C++ comments, etc Gtk2 1.00rc4 several fixes to SimpleList, C++ comments, added gdk_pixbuf_new_from_data, stop some memory leaks in GdkEvent. Gnome2 0.38 another big round of new stuff. -- muppet From scott@asofyet.org Fri Oct 3 18:25:53 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smaug.dreamhost.com (smaug.dreamhost.com [66.33.209.15]) by mail.gnome.org (Postfix) with ESMTP id 76C0618243 for ; Fri, 3 Oct 2003 18:25:53 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by smaug.dreamhost.com (Postfix) with ESMTP id DD26C5B7CB; Fri, 3 Oct 2003 15:26:05 -0700 (PDT) Date: Fri, 3 Oct 2003 18:26:22 -0400 Subject: Re: Gtk2::TrayIcon eggtrayicon wrapped Content-Type: text/plain; charset=US-ASCII; format=flowed Mime-Version: 1.0 (Apple Message framework v552) Cc: Gtk+ Perl To: Christian Borup From: muppet In-Reply-To: <1064556402.4219.12.camel@wintermute.i.adapt.dk> Message-Id: <9E2D6B1C-F5F0-11D7-B10C-000A9580E5E0@asofyet.org> Content-Transfer-Encoding: 7bit X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Gtk2::TrayIcon 0.03 is now available for download from sourceforge. Christian -- do you still have the patch i sent you a while back to compile TrayIcon against gtk+ 2.0.x? -- muppet From scott@asofyet.org Sat Oct 4 01:58:20 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from gollum.dreamhost.com (gollum.dreamhost.com [66.33.209.16]) by mail.gnome.org (Postfix) with ESMTP id 7880B1812F for ; Sat, 4 Oct 2003 01:58:20 -0400 (EDT) Received: from [192.168.1.51] (adsl-1116.mis.net [12.162.183.102]) by gollum.dreamhost.com (Postfix) with ESMTP id C01F25B763 for ; Fri, 3 Oct 2003 22:58:32 -0700 (PDT) Subject: slight website makeover From: muppet To: gtk-perl mailing list Content-Type: text/plain Organization: Message-Id: <1065247138.21676.9.camel@tetsuo> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.2.1 Date: 04 Oct 2003 01:58:58 -0400 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: as an excuse to learn xml parsing and rss, and also to reduce the amount of effort required to maintain the gtk2-perl website, i hooked the rss feed from the sourceforge page into the news section of the main page. this includes links to the sourceforge forum, which includes the features you'd expect from a forum, in sourceforge's own inimitable style. comments welcome. From jan.moren@lucs.lu.se Sat Oct 4 02:08:35 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.g.bonet.se (mail.g.bonet.se [212.181.52.4]) by mail.gnome.org (Postfix) with ESMTP id D4BBE18106 for ; Sat, 4 Oct 2003 02:08:33 -0400 (EDT) Received: from localhost.localdomain (as1-3-3.ld.bonet.se [194.237.243.230]) by mail.g.bonet.se (8.12.9/8.12.9) with ESMTP id h9466whS022970 for ; Sat, 4 Oct 2003 08:06:58 +0200 (CEST) (envelope-from jan.moren@lucs.lu.se) Subject: Re: slight website makeover From: Janne To: gtk-perl mailing list In-Reply-To: <1065247138.21676.9.camel@tetsuo> References: <1065247138.21676.9.camel@tetsuo> Content-Type: text/plain; charset=ISO-8859-1 Message-Id: <1065247725.29768.2.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.3 (1.4.3-1) Date: 04 Oct 2003 08:08:45 +0200 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Nice; clean and uncluttered. Might want to add some space between the left-hand menu and the GTK-cube. On Sat, 2003-10-04 at 07:58, muppet wrote: > as an excuse to learn xml parsing and rss, and also to reduce the amount > of effort required to maintain the gtk2-perl website, i hooked the rss > feed from the sourceforge page into the news section of the main page. > this includes links to the sourceforge forum, which includes the > features you'd expect from a forum, in sourceforge's own inimitable > style. > > comments welcome. > > _______________________________________________ > gtk-perl-list mailing list > gtk-perl-list@gnome.org > http://mail.gnome.org/mailman/listinfo/gtk-perl-list -- Trust the Computer. The Computer is your friend. Tel. +46-046 222 8588 Dr. Janne Morén (mr) Home: +46-046 211 4973 Dept. of Cognitive Science Fax: +46-046 222 9758 Kungshuset, Lund S-222 22 Lund, Sweden From alas@widomaker.com Mon Oct 6 15:36:37 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from webmail.widomaker.com (webmail.widomaker.com [204.17.220.4]) by mail.gnome.org (Postfix) with ESMTP id 5E708181B4 for ; Mon, 6 Oct 2003 15:36:36 -0400 (EDT) Received: from webmail.widomaker.com (localhost [127.0.0.1]) by webmail.widomaker.com (8.12.9/8.12.9) with ESMTP id h96JaVjF044816 for ; Mon, 6 Oct 2003 15:36:31 -0400 (EDT) (envelope-from alas@widomaker.com) Received: (from nobody@localhost) by webmail.widomaker.com (8.12.9/8.12.9/Submit) id h96JaV8M044815 for gtk-perl-list@gnome.org; Mon, 6 Oct 2003 15:36:31 -0400 (EDT) X-Authentication-Warning: webmail.widomaker.com: nobody set sender to alas@widomaker.com using -f To: gtk-perl mailing list Subject: "one file" Gtk2::GladeXML example Message-ID: <1065468991.3f81c43f3d089@webmail.widomaker.com> Date: Mon, 06 Oct 2003 15:36:31 -0400 (EDT) From: Chas Owens MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="-MOQ106546899160d456e4fae832e8c5817d95da54e77a" User-Agent: IMP/PHP IMAP webmail program 2.2.6 X-Originating-IP: 199.244.214.30 X-Webmail: Report abuse to abuse@widomaker.com Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: This message is in MIME format. ---MOQ106546899160d456e4fae832e8c5817d95da54e77a Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Instructions: put all files in the same dir make sure inline_image is executable type make run test_glade NB: This time you will need Inline::Files and a C compiler. The C compiler is only used during the build phase to make the inline image and may be removed from later examples, it was just easier to deal with the output from gdk-pixbuf-csource this way (more research needed). features: inline images via xpm imbedded in the glade file inline images via pixbuf dumps * custom Gtk2::SimpleList widget creation custom widget creation via Perl code embedded in the glade file multiple inline files * * new ---MOQ106546899160d456e4fae832e8c5817d95da54e77a Content-Type: image/jpeg; name="camel-head.jpg" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="camel-head.jpg" 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 ---MOQ106546899160d456e4fae832e8c5817d95da54e77a Content-Type: application/octet-stream; name="test_glade.pl" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test_glade.pl" IyEvdXNyL2Jpbi9wZXJsCgp1c2Ugc3RyaWN0Owp1c2UgR3RrMjsKdXNlIEd0azI6OkdsYWRlW E1MOwp1c2UgR3RrMjo6U2ltcGxlTGlzdDsKdXNlIElubGluZTo6RmlsZXM7CgpHdGsyLT5pbm l0OwoKR3RrMjo6R2xhZGUtPnNldF9jdXN0b21faGFuZGxlcihcJmN1c3RvbV9oYW5kbGVyKTs KbXkgJHhtbCA9IGpvaW4gJycsIDxHTEFERT47Cm15ICRnbGFkZSA9IEd0azI6OkdsYWRlWE1M LT5uZXdfZnJvbV9idWZmZXIoJHhtbCwgJ21haW5fd2luZG93Jyk7CiRnbGFkZS0+c2lnbmFsX 2F1dG9jb25uZWN0X2Zyb21fcGFja2FnZSgnbWFpbicpOwoKR3RrMi0+bWFpbjsKCnN1YiBvbl 9tYWluX3dpbmRvd19kZXN0cm95IHsKCUd0azItPm1haW5fcXVpdDsKfQoKc3ViIGN1c3RvbV9 oYW5kbGVyIHsKCW15ICgkeG1sLCAkZnVuYywgQGFyZ3MpID0gQF87Cgl1bnNoaWZ0IEBhcmdz LCAkeG1sOwoJcmV0dXJuIGV2YWwgIiRmdW5jKFxAYXJncykiOwp9CgpzdWIgY3JlYXRlX2xpc 3QgewoJbXkgKAoJCSRnbGFkZXhtbCwKCQkkd2lkZ2V0bmFtZSwKCQkkbGlzdF9zcGVjLCAgI3 RhYiBzZXBlcmF0ZWQgVGl0bGUsIFR5cGUgcGFpcnMKCQkkbGlzdF9kYXRhICAgI3BlcmwgbGl zdCBvZiBhcnJheSByZWZzIHRvIGJlIGV2YWxlZAoJKSAgICAgICAgID0gQF87CglteSAkc2xp c3QgPSBHdGsyOjpTaW1wbGVMaXN0LT5uZXcoc3BsaXQgL1x0LywgJGxpc3Rfc3BlYyk7Cglld mFsICJcQHtcJHNsaXN0LT57ZGF0YX19ID0gKCRsaXN0X2RhdGEpIjsKCSRzbGlzdC0+c2hvdz sKCXJldHVybiAkc2xpc3Q7Cn0KCnN1YiBjcmVhdGVfcGl4bWFwIHsKCW15ICgKCQkkZ2xhZGV 4bWwsCgkJJHdpZGdldG5hbWUsCgkJJHBpeG1hcF9zdHJpbmcKCSkgICAgICAgICAgICA9IEBf OwoJbXkgQHhwbV9kYXRhID0gc3BsaXQgL1xuLywgJHBpeG1hcF9zdHJpbmc7CglteSAkd2luZ G93ICAgPSAkZ2xhZGV4bWwtPmdldF93aWRnZXQoJ21haW5fd2luZG93Jyk7CglteSAkc3R5bG UgICAgPSAkd2luZG93LT5nZXRfc3R5bGUoKS0+YmcoICdub3JtYWwnICk7CgoJJHdpbmRvdy0 +c2hvdzsgI2NyZWF0ZV9mcm9tX3hwbSByZXF1aXJlcyB0aGUgWCB3aW5kb3cgdG8gYWxyZWFk eSBleGlzdAoKCW15ICggJHBpeG1hcCwgJG1hc2sgKSA9IEd0azI6Okdkazo6UGl4bWFwLT5jc mVhdGVfZnJvbV94cG1fZCgKCQkkd2luZG93LT53aW5kb3csCgkJJHN0eWxlLAoJCUB4cG1fZG F0YQoJKTsKCW15ICRpbWFnZSA9IEd0azI6OkltYWdlLT5uZXdfZnJvbV9waXhtYXAoJHBpeG1 hcCwgJG1hc2spOwoJJGltYWdlLT5zaG93OwoJcmV0dXJuICRpbWFnZTsKfQoKc3ViIGNyZWF0 ZV9mcm9tX2lubGluZV9pbWFnZSB7CglteSAoJGdsYWRleG1sLCAkd2lkZ2V0bmFtZSwgJGZpb GVuYW1lKSA9IEBfOwoJbXkgJHBpeGJ1Zl9kYXRhOwoJJGZpbGVuYW1lID0gdWMgJGZpbGVuYW 1lOwoJJGZpbGVuYW1lID1+IHMvXFcvL2c7Cgl7CgkJbG9jYWwgJC8gPSB1bmRlZjsKCQkkcGl 4YnVmX2RhdGEgPSA8JGZpbGVuYW1lPjsKCX0KCXVubGVzcyAoJHBpeGJ1Zl9kYXRhKSB7CgkJ bXkgJGxhYmVsID0gIEd0azI6OkxhYmVsLT5uZXcoIiRmaWxlbmFtZSBpcyBtaXNzaW5nIik7C gkJJGxhYmVsLT5zaG93OwoJCXJldHVybiAkbGFiZWw7Cgl9CglteSAkcGl4YnVmOwoJZXZhbC B7CgkJJHBpeGJ1ZiA9IEd0azI6Okdkazo6UGl4YnVmLT5uZXdfZnJvbV9pbmxpbmUoCgkJCS0 xLAoJCQkkcGl4YnVmX2RhdGEsCgkJCTAKCQkpOwoJfTsKCXVubGVzcyAoJHBpeGJ1ZikgewoJ CW15ICRsYWJlbCA9IEd0azI6OkxhYmVsLT5uZXcoIiRAIik7CgkJJGxhYmVsLT5zaG93OwoJC XJldHVybiAkbGFiZWw7Cgl9CglteSAkaW1hZ2U7CglldmFsIHsgJGltYWdlID0gR3RrMjo6SW 1hZ2UtPm5ld19mcm9tX3BpeGJ1ZigkcGl4YnVmKSB9OwoJdW5sZXNzICgkaW1hZ2UpIHsKCQl teSAkbGFiZWwgPSBHdGsyOjpMYWJlbC0+bmV3KCIkQCIpOwoJCSRsYWJlbC0+c2hvdzsKCQly ZXR1cm4gJGxhYmVsOwoJfQoJJGltYWdlLT5zaG93OwoJcmV0dXJuICRpbWFnZTsKfQoKc3ViI GNyZWF0ZV9hbnlfd2lkZ2V0IHsKCW15ICgkZ2xhZGV4bWwsICR3aWRnZXRuYW1lLCAkY29kZS kgPSBAXzsKCW15ICR3aWRnZXQgPSBldmFsICRjb2RlOwoJJHdpZGdldC0+c2hvdzsKCXJldHV ybiAkd2lkZ2V0Owp9Cgo= ---MOQ106546899160d456e4fae832e8c5817d95da54e77a Content-Type: application/octet-stream; name="test_glade.glade" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test_glade.glade" PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PiA8IS0tKi0gbW9kZTogeG1sI C0qLS0+CjwhRE9DVFlQRSBnbGFkZS1pbnRlcmZhY2UgU1lTVEVNICJodHRwOi8vZ2xhZGUuZ2 5vbWUub3JnL2dsYWRlLTIuMC5kdGQiPgoKPGdsYWRlLWludGVyZmFjZT4KCjx3aWRnZXQgY2x hc3M9Ikd0a1dpbmRvdyIgaWQ9Im1haW5fd2luZG93Ij4KICA8cHJvcGVydHkgbmFtZT0idmlz aWJsZSI+VHJ1ZTwvcHJvcGVydHk+CiAgPHByb3BlcnR5IG5hbWU9InRpdGxlIiB0cmFuc2xhd GFibGU9InllcyI+d2luZG93MTwvcHJvcGVydHk+CiAgPHByb3BlcnR5IG5hbWU9InR5cGUiPk dUS19XSU5ET1dfVE9QTEVWRUw8L3Byb3BlcnR5PgogIDxwcm9wZXJ0eSBuYW1lPSJ3aW5kb3d fcG9zaXRpb24iPkdUS19XSU5fUE9TX05PTkU8L3Byb3BlcnR5PgogIDxwcm9wZXJ0eSBuYW1l PSJtb2RhbCI+RmFsc2U8L3Byb3BlcnR5PgogIDxwcm9wZXJ0eSBuYW1lPSJyZXNpemFibGUiP lRydWU8L3Byb3BlcnR5PgogIDxwcm9wZXJ0eSBuYW1lPSJkZXN0cm95X3dpdGhfcGFyZW50Ij 5GYWxzZTwvcHJvcGVydHk+CiAgPHNpZ25hbCBuYW1lPSJkZXN0cm95IiBoYW5kbGVyPSJvbl9 tYWluX3dpbmRvd19kZXN0cm95IiBsYXN0X21vZGlmaWNhdGlvbl90aW1lPSJUdWUsIDMwIFNl cCAyMDAzIDAxOjUxOjI3IEdNVCIvPgoKICA8Y2hpbGQ+CiAgICA8d2lkZ2V0IGNsYXNzPSJHd GtWQm94IiBpZD0idmJveDEiPgogICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZT wvcHJvcGVydHk+CiAgICAgIDxwcm9wZXJ0eSBuYW1lPSJob21vZ2VuZW91cyI+RmFsc2U8L3B yb3BlcnR5PgogICAgICA8cHJvcGVydHkgbmFtZT0ic3BhY2luZyI+MDwvcHJvcGVydHk+Cgog ICAgICA8Y2hpbGQ+Cgk8d2lkZ2V0IGNsYXNzPSJHdGtIQm94IiBpZD0iaGJveDIiPgoJICA8c HJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CgkgIDxwcm9wZXJ0eSBuYW 1lPSJob21vZ2VuZW91cyI+RmFsc2U8L3Byb3BlcnR5PgoJICA8cHJvcGVydHkgbmFtZT0ic3B hY2luZyI+MDwvcHJvcGVydHk+CgoJICA8Y2hpbGQ+CgkgICAgPHdpZGdldCBjbGFzcz0iR3Rr TGFiZWwiIGlkPSJsYWJlbDIiPgoJICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRyd WU8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibG U9InllcyI+SW5saW5lIGltYWdlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ 1c2VfdW5kZXJsaW5lIj5GYWxzZTwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0i dXNlX21hcmt1cCI+RmFsc2U8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9Imp1c 3RpZnkiPkdUS19KVVNUSUZZX0xFRlQ8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbW U9IndyYXAiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzZWxlY3R hYmxlIj5GYWxzZTwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0ieGFsaWduIj4w LjU8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9InlhbGlnbiI+MC41PC9wcm9wZ XJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4cGFkIj4wPC9wcm9wZXJ0eT4KCSAgICAgID xwcm9wZXJ0eSBuYW1lPSJ5cGFkIj4wPC9wcm9wZXJ0eT4KCSAgICA8L3dpZGdldD4KCSAgICA 8cGFja2luZz4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwYWRkaW5nIj4wPC9wcm9wZXJ0eT4K CSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICAgI Dxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5GYWxzZTwvcHJvcGVydHk+CgkgICAgPC9wYWNraW5nPg oJICA8L2NoaWxkPgoKCSAgPGNoaWxkPgoJICAgIDx3aWRnZXQgY2xhc3M9IkN1c3RvbSIgaWQ 9InBpeG1hcCI+CgkgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVy dHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0iY3JlYXRpb25fZnVuY3Rpb24iPmNyZWF0ZV9wa XhtYXA8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9InN0cmluZzEiPjI0IDI0ID IgMQouICAgICAgIGMgTm9uZQojICAgICAgIGMgIzAwMDAwMAouLi4uLi4uLi4uLi4uLi4uLi4 uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u LgouLi4uLi4jIy4uLi4jIyMjIy4uLi4uLi4KLi4jIyMjIyMuLiMjIyMjIyMjIy4uLi4uCi4uI yMjIyMjLiMjIy4uIyMjIyMjLi4uLgouLi4uIyMjIyMjLi4uLi4uIyMjIy4uLi4KLi4uLi4jIy MjLi4uLi4uLi4jIyMuLi4uCi4uLi4uIyMjLi4uLi4uLi4uIyMjIy4uLgouLi4uLiMjIy4uLi4 uLi4uLiMjIyMuLi4KLi4uLi4jIyMuLi4uLi4uLi4jIyMjLi4uCi4uLi4uIyMjLi4uLi4uLi4u IyMjIy4uLgouLi4uLiMjIy4uLi4uLi4uLiMjIyMuLi4KLi4uLi4jIyMuLi4uLi4uLi4jIyMjL i4uCi4uLi4uIyMjLi4uLi4uLi4uIyMjIy4uLgouLi4uLiMjIy4uLi4uLi4uLiMjIyMuLi4KLi 4uLi4jIyMuLi4uLi4uLi4jIyMjLi4uCi4uLi4uIyMjLi4uLi4uLi4uIyMjIy4uLgouLi4uLiM jIy4uLi4uLi4uLiMjIyMuLi4KLi4uLi4jIyMuLi4uLi4uLi4jIyMjLi4uCi4uIyMjIyMjIyMj Li4uLi4uIyMjIyMjLgouLiMjIyMjIyMjIy4uLi4uLi4jIyMjIy4KLi4uLi4uLi4uLi4uLi4uL i4uLi4uLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjwvcHJvcGVydHk+CgkgICAgICA8cH JvcGVydHkgbmFtZT0iaW50MSI+MDwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0 iaW50MiI+MDwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0ibGFzdF9tb2RpZmlj YXRpb25fdGltZSI+VHVlLCAzMCBTZXAgMjAwMyAwMToyNjowOSBHTVQ8L3Byb3BlcnR5PgoJI CAgIDwvd2lkZ2V0PgoJICAgIDxwYWNraW5nPgoJICAgICAgPHByb3BlcnR5IG5hbWU9InBhZG RpbmciPjA8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+VHJ1ZTw vcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+ CgkgICAgPC9wYWNraW5nPgoJICA8L2NoaWxkPgoJPC93aWRnZXQ+Cgk8cGFja2luZz4KCSAgP HByb3BlcnR5IG5hbWU9InBhZGRpbmciPjA8L3Byb3BlcnR5PgoJICA8cHJvcGVydHkgbmFtZT 0iZXhwYW5kIj5UcnVlPC9wcm9wZXJ0eT4KCSAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU 8L3Byb3BlcnR5PgoJPC9wYWNraW5nPgogICAgICA8L2NoaWxkPgoKICAgICAgPGNoaWxkPgoJ PHdpZGdldCBjbGFzcz0iR3RrSEJveCIgaWQ9Imhib3g1Ij4KCSAgPHByb3BlcnR5IG5hbWU9I nZpc2libGUiPlRydWU8L3Byb3BlcnR5PgoJICA8cHJvcGVydHkgbmFtZT0iaG9tb2dlbmVvdX MiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgPHByb3BlcnR5IG5hbWU9InNwYWNpbmciPjA8L3Byb3B lcnR5PgoKCSAgPGNoaWxkPgoJICAgIDx3aWRnZXQgY2xhc3M9Ikd0a0xhYmVsIiBpZD0ibGFi ZWw1Ij4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KC SAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPklubGluZS BQaXhidWY8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9InVzZV91bmRlcmxpbmU iPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ1c2VfbWFya3VwIj5G YWxzZTwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0ianVzdGlmeSI+R1RLX0pVU 1RJRllfTEVGVDwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0id3JhcCI+RmFsc2 U8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9InNlbGVjdGFibGUiPkZhbHNlPC9 wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4YWxpZ24iPjAuNTwvcHJvcGVydHk+ CgkgICAgICA8cHJvcGVydHkgbmFtZT0ieWFsaWduIj4wLjU8L3Byb3BlcnR5PgoJICAgICAgP HByb3BlcnR5IG5hbWU9InhwYWQiPjA8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbW U9InlwYWQiPjA8L3Byb3BlcnR5PgoJICAgIDwvd2lkZ2V0PgoJICAgIDxwYWNraW5nPgoJICA gICAgPHByb3BlcnR5IG5hbWU9InBhZGRpbmciPjA8L3Byb3BlcnR5PgoJICAgICAgPHByb3Bl cnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hb WU9ImZpbGwiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICA8L3BhY2tpbmc+CgkgIDwvY2hpbGQ+Cg oJICA8Y2hpbGQ+CgkgICAgPHdpZGdldCBjbGFzcz0iQ3VzdG9tIiBpZD0iaW5saW5lX3BpeGJ 1ZiI+CgkgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+Cgkg ICAgICA8cHJvcGVydHkgbmFtZT0iY3JlYXRpb25fZnVuY3Rpb24iPmNyZWF0ZV9mcm9tX2lub GluZV9pbWFnZTwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0ic3RyaW5nMSI+Y2 FtZWwtaGVhZC5qcGc8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9ImludDEiPjA 8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9ImludDIiPjA8L3Byb3BlcnR5PgoJ ICAgICAgPHByb3BlcnR5IG5hbWU9Imxhc3RfbW9kaWZpY2F0aW9uX3RpbWUiPkZyaSwgMDMgT 2N0IDIwMDMgMTY6Mjc6MDggR01UPC9wcm9wZXJ0eT4KCSAgICA8L3dpZGdldD4KCSAgICA8cG Fja2luZz4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwYWRkaW5nIj4wPC9wcm9wZXJ0eT4KCSA gICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPlRydWU8L3Byb3BlcnR5PgoJICAgICAgPHBy b3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5PgoJICAgIDwvcGFja2luZz4KCSAgP C9jaGlsZD4KCTwvd2lkZ2V0PgoJPHBhY2tpbmc+CgkgIDxwcm9wZXJ0eSBuYW1lPSJwYWRkaW 5nIj4wPC9wcm9wZXJ0eT4KCSAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+VHJ1ZTwvcHJvcGV ydHk+CgkgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KCTwvcGFja2lu Zz4KICAgICAgPC9jaGlsZD4KCiAgICAgIDxjaGlsZD4KCTx3aWRnZXQgY2xhc3M9Ikd0a0hCb 3giIGlkPSJoYm94MyI+CgkgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZX J0eT4KCSAgPHByb3BlcnR5IG5hbWU9ImhvbW9nZW5lb3VzIj5GYWxzZTwvcHJvcGVydHk+Cgk gIDxwcm9wZXJ0eSBuYW1lPSJzcGFjaW5nIj4wPC9wcm9wZXJ0eT4KCgkgIDxjaGlsZD4KCSAg ICA8d2lkZ2V0IGNsYXNzPSJHdGtMYWJlbCIgaWQ9ImxhYmVsMyI+CgkgICAgICA8cHJvcGVyd HkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT 0ibGFiZWwiIHRyYW5zbGF0YWJsZT0ieWVzIj5HdGsyOjpTaW1wbGVMaXN0PC9wcm9wZXJ0eT4 KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ1c2VfdW5kZXJsaW5lIj5GYWxzZTwvcHJvcGVydHk+ CgkgICAgICA8cHJvcGVydHkgbmFtZT0idXNlX21hcmt1cCI+RmFsc2U8L3Byb3BlcnR5PgoJI CAgICAgPHByb3BlcnR5IG5hbWU9Imp1c3RpZnkiPkdUS19KVVNUSUZZX0xFRlQ8L3Byb3Blcn R5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9IndyYXAiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICA gIDxwcm9wZXJ0eSBuYW1lPSJzZWxlY3RhYmxlIj5GYWxzZTwvcHJvcGVydHk+CgkgICAgICA8 cHJvcGVydHkgbmFtZT0ieGFsaWduIj4wLjU8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5I G5hbWU9InlhbGlnbiI+MC41PC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4cG FkIj4wPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ5cGFkIj4wPC9wcm9wZXJ 0eT4KCSAgICA8L3dpZGdldD4KCSAgICA8cGFja2luZz4KCSAgICAgIDxwcm9wZXJ0eSBuYW1l PSJwYWRkaW5nIj4wPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiP kZhbHNlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5GYWxzZTwvcH JvcGVydHk+CgkgICAgPC9wYWNraW5nPgoJICA8L2NoaWxkPgoKCSAgPGNoaWxkPgoJICAgIDx 3aWRnZXQgY2xhc3M9IkN1c3RvbSIgaWQ9Imxpc3QiPgoJICAgICAgPHByb3BlcnR5IG5hbWU9 InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9ImNyZWF0a W9uX2Z1bmN0aW9uIj5jcmVhdGVfbGlzdDwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbm FtZT0ic3RyaW5nMSI+TmFtZQl0ZXh0CU51bWJlcglpbnQJUHJpbWUJYm9vbDwvcHJvcGVydHk +CgkgICAgICA8cHJvcGVydHkgbmFtZT0ic3RyaW5nMiI+CgkJICAgICAgWyAnb25lJywgICAx LCAxIF0sCgkJICAgICAgWyAndHdvJywgICAyLCAxIF0sCgkJICAgICAgWyAndGhyZWUnLCAzL CAxIF0sCgkJICAgICAgWyAnZm91cicsICA0LCAwIF0sCgkJICAgICAgWyAnZml2ZScsICA1LC AxIF0sCgkJICAgICAgWyAnc2l4JywgICA2LCAwIF0sCgkJICAgICAgWyAnc2V2ZW4nLCA3LCA xIF0KCSAgICAgIDwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0iaW50MSI+MDwv cHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0iaW50MiI+MDwvcHJvcGVydHk+CgkgI CAgICA8cHJvcGVydHkgbmFtZT0ibGFzdF9tb2RpZmljYXRpb25fdGltZSI+VHVlLCAzMCBTZX AgMjAwMyAwMToyMTo0OSBHTVQ8L3Byb3BlcnR5PgoJICAgIDwvd2lkZ2V0PgoJICAgIDxwYWN raW5nPgoJICAgICAgPHByb3BlcnR5IG5hbWU9InBhZGRpbmciPjA8L3Byb3BlcnR5PgoJICAg ICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+VHJ1ZTwvcHJvcGVydHk+CgkgICAgICA8cHJvc GVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CgkgICAgPC9wYWNraW5nPgoJICA8L2 NoaWxkPgoJPC93aWRnZXQ+Cgk8cGFja2luZz4KCSAgPHByb3BlcnR5IG5hbWU9InBhZGRpbmc iPjA8L3Byb3BlcnR5PgoJICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5UcnVlPC9wcm9wZXJ0 eT4KCSAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5PgoJPC9wYWNraW5nP gogICAgICA8L2NoaWxkPgoKICAgICAgPGNoaWxkPgoJPHdpZGdldCBjbGFzcz0iR3RrSEJveC IgaWQ9Imhib3g0Ij4KCSAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR 5PgoJICA8cHJvcGVydHkgbmFtZT0iaG9tb2dlbmVvdXMiPkZhbHNlPC9wcm9wZXJ0eT4KCSAg PHByb3BlcnR5IG5hbWU9InNwYWNpbmciPjA8L3Byb3BlcnR5PgoKCSAgPGNoaWxkPgoJICAgI Dx3aWRnZXQgY2xhc3M9Ikd0a0xhYmVsIiBpZD0ibGFiZWw0Ij4KCSAgICAgIDxwcm9wZXJ0eS BuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ sYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPkNvZGUgYmFzZWQgd2lkZ2V0PC9wcm9wZXJ0eT4K CSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ1c2VfdW5kZXJsaW5lIj5GYWxzZTwvcHJvcGVydHk+C gkgICAgICA8cHJvcGVydHkgbmFtZT0idXNlX21hcmt1cCI+RmFsc2U8L3Byb3BlcnR5PgoJIC AgICAgPHByb3BlcnR5IG5hbWU9Imp1c3RpZnkiPkdUS19KVVNUSUZZX0xFRlQ8L3Byb3BlcnR 5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9IndyYXAiPkZhbHNlPC9wcm9wZXJ0eT4KCSAgICAg IDxwcm9wZXJ0eSBuYW1lPSJzZWxlY3RhYmxlIj5GYWxzZTwvcHJvcGVydHk+CgkgICAgICA8c HJvcGVydHkgbmFtZT0ieGFsaWduIj4wLjU8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG 5hbWU9InlhbGlnbiI+MC41PC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4cGF kIj4wPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ5cGFkIj4wPC9wcm9wZXJ0 eT4KCSAgICA8L3dpZGdldD4KCSAgICA8cGFja2luZz4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lP SJwYWRkaW5nIj4wPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPk ZhbHNlPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5GYWxzZTwvcHJ vcGVydHk+CgkgICAgPC9wYWNraW5nPgoJICA8L2NoaWxkPgoKCSAgPGNoaWxkPgoJICAgIDx3 aWRnZXQgY2xhc3M9IkN1c3RvbSIgaWQ9ImNvZGVfYmFzZSI+CgkgICAgICA8cHJvcGVydHkgb mFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CgkgICAgICA8cHJvcGVydHkgbmFtZT0iY3 JlYXRpb25fZnVuY3Rpb24iPmNyZWF0ZV9hbnlfd2lkZ2V0PC9wcm9wZXJ0eT4KCSAgICAgIDx wcm9wZXJ0eSBuYW1lPSJzdHJpbmcxIj4KCQkgICAgICBHdGsyOjpMYWJlbC0mZ3Q7bmV3KCZx dW90O2NyZWF0ZWQgYnkgQ2hhcyZxdW90Oyk7CgkgICAgICA8L3Byb3BlcnR5PgoJICAgICAgP HByb3BlcnR5IG5hbWU9ImludDEiPjA8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbW U9ImludDIiPjA8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9Imxhc3RfbW9kaWZ pY2F0aW9uX3RpbWUiPlRodSwgMDIgT2N0IDIwMDMgMTk6NTc6NTEgR01UPC9wcm9wZXJ0eT4K CSAgICA8L3dpZGdldD4KCSAgICA8cGFja2luZz4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwY WRkaW5nIj4wPC9wcm9wZXJ0eT4KCSAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPlRydW U8L3Byb3BlcnR5PgoJICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR 5PgoJICAgIDwvcGFja2luZz4KCSAgPC9jaGlsZD4KCTwvd2lkZ2V0PgoJPHBhY2tpbmc+Cgkg IDxwcm9wZXJ0eSBuYW1lPSJwYWRkaW5nIj4wPC9wcm9wZXJ0eT4KCSAgPHByb3BlcnR5IG5hb WU9ImV4cGFuZCI+VHJ1ZTwvcHJvcGVydHk+CgkgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5Ucn VlPC9wcm9wZXJ0eT4KCTwvcGFja2luZz4KICAgICAgPC9jaGlsZD4KICAgIDwvd2lkZ2V0Pgo gIDwvY2hpbGQ+Cjwvd2lkZ2V0PgoKPC9nbGFkZS1pbnRlcmZhY2U+Cg== ---MOQ106546899160d456e4fae832e8c5817d95da54e77a Content-Type: application/octet-stream; name="Makefile" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Makefile" CmFsbDogdGVzdF9nbGFkZQoKdGVzdF9nbGFkZTogdGVzdF9nbGFkZS5wbCB0ZXN0X2dsYWRlL mdsYWRlIGNhbWVsLWhlYWQuanBnLmlubGluZQoJY2F0IHRlc3RfZ2xhZGUucGwgICAgICAgIC AgPiB0ZXN0X2dsYWRlCgllY2hvIF9fR0xBREVfXyAgICAgICAgICAgID4+IHRlc3RfZ2xhZGU KCWNhdCB0ZXN0X2dsYWRlLmdsYWRlICAgICAgPj4gdGVzdF9nbGFkZQoJY2F0IGNhbWVsLWhl YWQuanBnLmlubGluZSA+PiB0ZXN0X2dsYWRlCgljaG1vZCB1K3ggdGVzdF9nbGFkZQoKY2FtZ WwtaGVhZC5qcGcuaW5saW5lOiBjYW1lbC1oZWFkLmpwZwoJLi9pbmxpbmVfaW1hZ2UgY2FtZW wtaGVhZC5qcGcKCmNsZWFuOgoJcm0gLWYgKi5pbmxpbmUKCXJtIC1mIHRlc3RfZ2xhZGUKCXJ tIC1mICouYmFrCglybSAtZiAqLmdsYWRlcAo= ---MOQ106546899160d456e4fae832e8c5817d95da54e77a Content-Type: application/octet-stream; name="inline_image" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="inline_image" IyEvdXNyL2Jpbi9wZXJsCgpteSAkZmlsZTsKZm9yIG15ICRmaWxlIChAQVJHVikgewoJbXkgJGJ5 dGVzOwoJbXkgJGludGVybmFsX25hbWUgPSB1YyAkZmlsZTsKCSRpbnRlcm5hbF9uYW1lID1+IHMv XFcvL2c7CglvcGVuIE9VVCwgIj4kZmlsZS5jIjsKCXByaW50IE9VVCAiI2luY2x1ZGUgPHN0ZGlv Lmg+XG4jZGVmaW5lIGd1aW50OCB1bnNpZ25lZCBjaGFyXG4iOwoJZm9yIG15ICRsaW5lIChgZ2Rr LXBpeGJ1Zi1jc291cmNlICRmaWxlYCkgewoJCXByaW50IE9VVCAkbGluZTsKCQlpZiAoJGxpbmUg PX4gL2hlYWRlciBcKChcZCspXCkgXCsgcGl4ZWxfZGF0YSBcKChcZCspXCkvKSB7CgkJCSRieXRl cyA9ICQxICsgJDI7CgkJfQoJfQoJcHJpbnQgT1VUIDw8ImVvZiI7CmludCBtYWluICgpIHsKCUZJ TEUgKiBmaWxlOwoJZmlsZSA9IGZvcGVuKCIkZmlsZS5pbmxpbmUiLCAidyIpOwoJZnByaW50Zihm aWxlLCAiX18ke2ludGVybmFsX25hbWV9X19cbiIpOwoJZndyaXRlKG15X3BpeGJ1ZiwgJGJ5dGVz LCAxLCBmaWxlKTsKCWZjbG9zZShmaWxlKTsKCXJldHVybiAwOwp9CmVvZgoJY2xvc2UgT1VUOwoJ c3lzdGVtICJjYyAtbyAkZmlsZS5leGUgJGZpbGUuYyI7CglzeXN0ZW0gIi4vJGZpbGUuZXhlIjsK CXVubGluayAiJGZpbGUuZXhlIjsKCXVubGluayAiJGZpbGUuYyI7Cn0K ---MOQ106546899160d456e4fae832e8c5817d95da54e77a-- From bboett@bboett.dyndns.org Tue Oct 7 08:52:15 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mwinf0202.wanadoo.fr (smtp7.wanadoo.fr [193.252.22.29]) by mail.gnome.org (Postfix) with ESMTP id 14F1518623 for ; Tue, 7 Oct 2003 08:52:15 -0400 (EDT) Received: from bboett.dyndns.org (AStrasbourg-207-1-1-74.w80-15.abo.wanadoo.fr [80.15.166.74]) by mwinf0202.wanadoo.fr (SMTP Server) with ESMTP id 973F6A400362 for ; Tue, 7 Oct 2003 14:52:27 +0200 (CEST) Received: by bboett.dyndns.org (Postfix, from userid 1000) id 13E7D2F3C; Tue, 7 Oct 2003 14:52:24 +0200 (CEST) Date: Tue, 7 Oct 2003 14:52:24 +0200 To: gtk-perl-list@gnome.org Subject: problems compiling Gtk-Perl-0.7009 Message-ID: <20031007125224.GP5248@adlp.org> Reply-To: bboett@adlp.org Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline User-Agent: Mutt/1.5.4i From: bboett@bboett.dyndns.org (Bruno Boettcher) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Hello trying to upgrade gtk-perl and run into this error: In file included from GnomeDruid.xs:9: build/GnomeDefs.h:22:25: zvt/zvtterm.h: No such file or directory make[1]: *** [xs/GnomeDruid.o] Error 1 make[1]: Leaving directory `/var/cpan/build/Gtk-Perl-0.7009/Gnome' make: *** [subdirs] Error 2 /usr/bin/make -- NOT OK is this some lib i am missing? my different searches gave nothing with that root... i am running otherwise on a debian x86 unstable system for what it matters -- ciao bboett ============================================================== bboett@adlp.org http://inforezo.u-strasbg.fr/~bboett =============================================================== From scott@asofyet.org Tue Oct 7 09:10:41 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from pochacco.sd.dreamhost.com (pochacco.sd.dreamhost.com [66.33.206.17]) by mail.gnome.org (Postfix) with ESMTP id E4AAA18AF2 for ; Tue, 7 Oct 2003 09:10:40 -0400 (EDT) Received: from webmail.asofyet.org (localhost [127.0.0.1]) by pochacco.sd.dreamhost.com (Postfix) with SMTP id D93C88FE6C for ; Tue, 7 Oct 2003 06:10:46 -0700 (PDT) Received: from 192.146.101.7 (SquirrelMail authenticated user scott@asofyet.org) by webmail.asofyet.org with HTTP; Tue, 7 Oct 2003 09:10:46 -0400 (EDT) Message-ID: <27424.192.146.101.7.1065532246.spork@webmail.asofyet.org> In-Reply-To: <20031007125224.GP5248@adlp.org> References: <20031007125224.GP5248@adlp.org> Date: Tue, 7 Oct 2003 09:10:46 -0400 (EDT) Subject: Re: problems compiling Gtk-Perl-0.7009 From: "muppet" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Bruno Boettcher said: > trying to upgrade gtk-perl and run into this error: > In file included from GnomeDruid.xs:9: > build/GnomeDefs.h:22:25: zvt/zvtterm.h: No such file or directory > make[1]: *** [xs/GnomeDruid.o] Error 1 > make[1]: Leaving directory `/var/cpan/build/Gtk-Perl-0.7009/Gnome' > make: *** [subdirs] Error 2 > /usr/bin/make -- NOT OK > > is this some lib i am missing? my different searches gave nothing with > that root... libzvt was the terminal emulation library for gnome 1.x. (it's actually faster that gnome 2.x's vte, but...) i'm not sure what version you actually need; you may need to look at the dependencies for older versions of your distro. -- muppet From scott@asofyet.org Tue Oct 7 10:46:28 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id A8873181F9 for ; Tue, 7 Oct 2003 10:46:28 -0400 (EDT) Received: from webmail.asofyet.org (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id 37326FA31 for ; Tue, 7 Oct 2003 07:46:32 -0700 (PDT) Received: from 192.146.101.7 (SquirrelMail authenticated user scott@asofyet.org) by webmail.asofyet.org with HTTP; Tue, 7 Oct 2003 10:46:32 -0400 (EDT) Message-ID: <34999.192.146.101.7.1065537992.spork@webmail.asofyet.org> Date: Tue, 7 Oct 2003 10:46:32 -0400 (EDT) Subject: GnomeVFSURI buggy on gnome 2.0.x? From: "muppet" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: i committed a change to Gnome2 just now that enables the brand-new Gnome2::VFS::URI stuff to compile on gnome 2.0.x.... but the test fails. $ perl -I blib/lib -I blib/arch t/GnomeVFSURI.t 1..25 [snip] not of 6 # Failed test (t/GnomeVFSURI.t at line 35) # got: 'http://bla.html' # expected: 'http://www.freenet.de/bla.html [snip] # Looks like you failed 1 tests of 25. a quick peek at the source confirms that the bindings for that function are trivial, so, eh, wtf!?! is that function buggy in my version of gnome? $ rpm -q gnome-vfs gnome-vfs-1.0.5-6.ximian.1 (that's the version that got installed via red carpet to support evolution on my red hat 8.0 system) i guess the question is when did that bug get fixed, so we can put the proper "SKIP" statement into the test... -- muppet From kaffeetisch@web.de Tue Oct 7 18:13:51 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp.web.de (smtp03.web.de [217.72.192.158]) by mail.gnome.org (Postfix) with ESMTP id 13722181CB for ; Tue, 7 Oct 2003 18:13:51 -0400 (EDT) Received: from [217.230.251.177] (helo=6-allhosts) by smtp.web.de with esmtp (WEB.DE 4.99 #448) id 1A705k-0000u5-00 for gtk-perl-list@gnome.org; Wed, 08 Oct 2003 00:14:04 +0200 Subject: Re: GnomeVFSURI buggy on gnome 2.0.x? From: Torsten Schoenfeld To: gtk-perl-list@gnome.org In-Reply-To: <34999.192.146.101.7.1065537992.spork@webmail.asofyet.org> References: <34999.192.146.101.7.1065537992.spork@webmail.asofyet.org> Content-Type: text/plain Message-Id: <1065564843.8299.1.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Wed, 08 Oct 2003 00:14:03 +0200 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Tue, 2003-10-07 at 16:46, muppet wrote: > i committed a change to Gnome2 just now that enables the brand-new > Gnome2::VFS::URI stuff to compile on gnome 2.0.x.... but the test fails. Thanks. > [$uri -> resolve_relative(...) not working.] > > a quick peek at the source confirms that the bindings for that function are > trivial, so, eh, wtf!?! is that function buggy in my version of gnome? > > $ rpm -q gnome-vfs > gnome-vfs-1.0.5-6.ximian.1 The ChangeLog says that this function was renamed from gnome_vfs_uri_relative_new to gnome_vfs_uri_resolve_relative just before the 1.9.1 release. I just committed a check that hopefully fixes this by using the old function name if we're older than 1.9.1. Bye, -Torsten From rwmcfa1@neces.com Tue Oct 7 22:15:10 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smeagol.dreamhost.com (smeagol.dreamhost.com [66.33.209.5]) by mail.gnome.org (Postfix) with ESMTP id DFC53180FE for ; Tue, 7 Oct 2003 22:15:09 -0400 (EDT) Received: from beta.local (12-222-230-66.client.insightBB.com [12.222.230.66]) by smeagol.dreamhost.com (Postfix) with ESMTP id 902B72390A; Tue, 7 Oct 2003 19:15:20 -0700 (PDT) Subject: Gtk2::GLExt bindings for GtkGLExt From: Ross McFarland To: Gtk-Perl-List , naofumi@users.sourceforge.net Content-Type: text/plain Message-Id: <1065579316.2750.23.camel@beta.local> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Tue, 07 Oct 2003 22:15:16 -0400 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: i've got the groundwork done and cleaned up for bindings of GtkGLExt to Perl, in conjunction with Gtk2-Perl. it's to the point of usability. i have no real interest in finishing things off. it's probably 75% there. it mainly needs someone that has the desire to test out all of the possibilities and knows or wants to know the details of GtkGLExt. if anyone is interested they're more than welcome to pick it up from here. let me know. i originally started working on the bindings in hopes of being able to do an app that i've had in mind for a while, but have come to the conclusion that OpenGL isn't all that well supported by perl, at least any of the bindings i could get to build (latest SDL::OpenGL.) if you know or feel otherwise have at it. there might be a release just to get something out there to see if someone finds it and is interested in picking it up. if that ends up being the case it will probably be up with the rest of the Gtk2-Perl family, http://gtk2-perl.sourceforge.net/ if anyone wants to take a look at the bindings let me know and i'll get a copy to them. -rm From james@teyandei.net Tue Oct 7 23:22:50 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from r2d2.centurytel.net (r2d2.centurytel.net [209.142.136.105]) by mail.gnome.org (Postfix) with ESMTP id 1A183181CC for ; Tue, 7 Oct 2003 23:22:50 -0400 (EDT) Received: from teyandei.net (adsl-209.142.189.150-rb.spt.centurytel.net [209.142.189.150]) by r2d2.centurytel.net (8.12.10/8.12.10) with ESMTP id h983N0Ni029006; Tue, 7 Oct 2003 22:23:01 -0500 (CDT) Message-ID: <3F83831D.9030700@teyandei.net> Date: Tue, 07 Oct 2003 22:23:09 -0500 From: James Curbo User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5b) Gecko/20030901 Thunderbird/0.2 X-Accept-Language: en-us, en MIME-Version: 1.0 To: muppet Cc: Luc Van Deuren , gtk-perl-list@gnome.org Subject: Re: libgtk2-perl_1.00rc2_i386.deb dependencies References: <6A5519DE-F75F-11D7-9CB1-000A9580E5E0@asofyet.org> In-Reply-To: <6A5519DE-F75F-11D7-9CB1-000A9580E5E0@asofyet.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: [for gtk-perl-list: this is regarding my debian repository; I've built the packages against libraries not in unstable. See below. - James] On Sunday, October 5, 2003, at 12:18 PM, Luc Van Deuren wrote: [snip] > Because I could in no way find libatk1.0-0 (>= 1.4.0), I even doubted > its existence. I can't find it in 'unstable' either. The problem here is, I suspect, that I installed the bits of Gnome 2.4 that a person on the debian-gtk-gnome mailing list built, since it isn't in unstable yet. I'm in Windows right now so I can't check, but I guess libatk was one of the packages upgraded. Big oops on my part, I guess I forgot I was running those packages. What I'm probably going to do is downgraded to gnome 2.2 (2.4 isn't working out so well, since they're unofficial packages) and then I'll rebuild them, probably when the next snapshot is released, since I've been super busy lately. (thus why I haven't been in IRC, hi muppet) James From rwmcfa1@neces.com Wed Oct 8 09:13:45 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from pochacco.sd.dreamhost.com (pochacco.sd.dreamhost.com [66.33.206.17]) by mail.gnome.org (Postfix) with ESMTP id 45217180E3 for ; Wed, 8 Oct 2003 09:13:45 -0400 (EDT) Received: from webmail.neces.com (localhost [127.0.0.1]) by pochacco.sd.dreamhost.com (Postfix) with SMTP id 8C5EA9011F for ; Wed, 8 Oct 2003 06:13:57 -0700 (PDT) Received: from 192.146.101.12 (SquirrelMail authenticated user rwmcfa1@neces.com) by webmail.neces.com with HTTP; Wed, 8 Oct 2003 09:13:57 -0400 (EDT) Message-ID: <47329.192.146.101.12.1065618837.spork@webmail.neces.com> Date: Wed, 8 Oct 2003 09:13:57 -0400 (EDT) Subject: [Fwd: Re: Gtk2::GLExt bindings for GtkGLExt] From: "Ross McFarland" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: below i elaborate on, what i remember of, the problems with perl and OpenGL and why i gave up on it, for the most part. feel free to refute me if you know/feel otherwise. depending on what you're trying to do you may encounter no problems. -rm ------------------------------ Original Message ------------------------------ Subject: Re: Gtk2::GLExt bindings for GtkGLExt From: "Ross McFarland" Date: Tue, October 7, 2003 10:45 pm To: "Joe Smith" ------------------------------------------------------------------------------ On Tue, 2003-10-07 at 22:45, Joe Smith wrote: > There seem to be bindings for a number of other scripting languages, would you care to (briefly) elaborate? the bindings i tried to install, from cpan, OpenGL and SDL::OpenGL wouldn't build on my redhat9 system. i downloaded SDL-perl-2.x and was able to get it to compile and build, ignoring some of the font tests which failed. part of that is SDL::OpenGL which works and for pretty basic stuff would be usable, but it's nowhere near complete and some odd api decisions see to have been made. things as annoying as changing of function names, albeit slightly. when working off of C examples and tutorials i would have to open up the bindings and look around to see what function seemed be the right one to use. things like glColor3f and glColor4f both being glColor with varags. obviously those are just annoying, but the show-stopper for me was that it didn't have some or any of the quadratics stuff bound, and seems like some of the fog stuff i looked into couldn't be done, it's been a while and i've moved on to 50 other things so my memory is a bit foggy, sorry couldn't help it. i wouldn't be surprised if the other opengl's (OpenGL, and SDL-perl 1.x) worked better, but i couldn't get them to build and i'd rather not rely on things that are somewhat flaky. i just went to c where everything is a little more work, but a little more reliable. -rm From bboett@bboett.dyndns.org Wed Oct 8 15:37:49 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mwinf0302.wanadoo.fr (smtp6.wanadoo.fr [193.252.22.28]) by mail.gnome.org (Postfix) with ESMTP id F09D6180EB for ; Wed, 8 Oct 2003 15:37:48 -0400 (EDT) Received: from bboett.dyndns.org (AStrasbourg-207-1-9-243.w81-249.abo.wanadoo.fr [81.249.36.243]) by mwinf0302.wanadoo.fr (SMTP Server) with ESMTP id 02C9BC000A10 for ; Wed, 8 Oct 2003 21:38:00 +0200 (CEST) Received: by bboett.dyndns.org (Postfix, from userid 1000) id 533682F40; Wed, 8 Oct 2003 21:37:47 +0200 (CEST) Date: Wed, 8 Oct 2003 21:37:47 +0200 To: gtk-perl-list@gnome.org Subject: gtk-gtk2 migration problems... Message-ID: <20031008193747.GX5248@adlp.org> Reply-To: bboett@adlp.org Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline User-Agent: Mutt/1.5.4i From: bboett@bboett.dyndns.org (Bruno Boettcher) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Hello, since a nice guy finally made an adaptation of Gtk2 for POE i am trying to migrate my progs to use Gtk2.... and have several problems... i put the script i am actually working on onto http://www.inforezo.org/~bboett/gtk2GUI on running the script gives me: Odd number of elements in anonymous hash at ./gtk2GUI.pl line 306. *** unhandled exception in callback: *** Usage: signal_connect(instance, detailed_signal, callback, data=NULL) at ./gtk2GUI.pl line 748. *** ignoring at /usr/local/share/perl/5.8.0/POE/Loop/Gtk2.pm line 285. for the odd number of elements i have not the faintest idea what that means, the hash looks perfectly well to me... anyway that doesn't seem to stop the program.... i am wondering why the callbacks to all ui functions seem to be called, but for the moment i am more wondering about the signal_connect error, cause its on this line: $button->signal_connect( 'clicked', \&delseries, $line->{"name"},$kernel); which seems perfectly genuine to me??? -- ciao bboett ============================================================== bboett@adlp.org http://inforezo.u-strasbg.fr/~bboett =============================================================== From rwmcfa1@neces.com Wed Oct 8 16:04:16 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id D4D5718220 for ; Wed, 8 Oct 2003 16:04:16 -0400 (EDT) Received: from webmail.neces.com (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id 48154FA6E; Wed, 8 Oct 2003 13:04:30 -0700 (PDT) Received: from 192.146.101.12 (SquirrelMail authenticated user rwmcfa1@neces.com) by webmail.neces.com with HTTP; Wed, 8 Oct 2003 16:04:30 -0400 (EDT) Message-ID: <17090.192.146.101.12.1065643470.spork@webmail.neces.com> In-Reply-To: <20031008193747.GX5248@adlp.org> References: <20031008193747.GX5248@adlp.org> Date: Wed, 8 Oct 2003 16:04:30 -0400 (EDT) Subject: Re: gtk-gtk2 migration problems... From: "Ross McFarland" To: bboett@adlp.org Cc: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Bruno Boettcher said: > i put the script i am actually working on onto > http://www.inforezo.org/~bboett/gtk2GUI > > on running the script gives me: > Odd number of elements in anonymous hash at ./gtk2GUI.pl line 306. 'Load' => { callback => ui_load($kernel), #callback_action => 1, }, the call back has to be a reference to a sub-routine or one that is defined inline. you have callback being set to the return value of a subroutine call. all of the callbacks in that section need to be something like: the ulgy way, but maybe a little simplier, there are some issues here that have to do with perl scoping and references, take a look at man perlref and the other related man pages, they're essential knowledge for any perl programmer: callback => sub { un_load($kernel); }, the better solution is to provide the $kernel and $heap parameters as user data. so each call back would be "callback => \&un_load," etc. and you would have my $menu = Gtk2::SimpleMenu->new ( menu_tree => \@menu_tree, user_data => [ $kernel, $heap ], ); un_load would then have have as it's first paramert a two element array ref. see the problem below is closely related to the user data stuff mentioned here. take a look at the faq entry about user data pointed to below. > *** unhandled exception in callback: > *** Usage: signal_connect(instance, detailed_signal, callback, > data=NULL) at ./gtk2GUI.pl line 748. > *** ignoring at /usr/local/share/perl/5.8.0/POE/Loop/Gtk2.pm line > 285. the second error at line 748 is becuase you're passing two user data varaibles where only one is accepted. there's a entry in the faq about it, http://gtk2-perl.sourceforge.net/faq/#15 -rm From alas@widomaker.com Wed Oct 8 16:10:47 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from webmail.widomaker.com (webmail.widomaker.com [204.17.220.4]) by mail.gnome.org (Postfix) with ESMTP id 12353181EA for ; Wed, 8 Oct 2003 16:10:47 -0400 (EDT) Received: from webmail.widomaker.com (localhost [127.0.0.1]) by webmail.widomaker.com (8.12.9/8.12.9) with ESMTP id h98K9wjF050407; Wed, 8 Oct 2003 16:09:58 -0400 (EDT) (envelope-from alas@widomaker.com) Received: (from nobody@localhost) by webmail.widomaker.com (8.12.9/8.12.9/Submit) id h98K9wvq050406; Wed, 8 Oct 2003 16:09:58 -0400 (EDT) X-Authentication-Warning: webmail.widomaker.com: nobody set sender to alas@widomaker.com using -f To: bboett@adlp.org, Bruno Boettcher Subject: Re: gtk-gtk2 migration problems... Message-ID: <1065643797.3f846f15f02c9@webmail.widomaker.com> Date: Wed, 08 Oct 2003 16:09:57 -0400 (EDT) From: Chas Owens Cc: gtk-perl-list@gnome.org References: <20031008193747.GX5248@adlp.org> In-Reply-To: <20031008193747.GX5248@adlp.org> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit User-Agent: IMP/PHP IMAP webmail program 2.2.6 X-Originating-IP: 199.244.214.30 X-Webmail: Report abuse to abuse@widomaker.com Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Quoting Bruno Boettcher : > since a nice guy finally made an adaptation of Gtk2 for POE i am > trying to migrate my progs to use Gtk2.... and have several > problems... > *** Usage: signal_connect(instance, detailed_signal, callback, > data=NULL) at ./gtk2GUI.pl line 748. > > $button->signal_connect( 'clicked', \&delseries, > $line->{"name"},$kernel); If you match up the args you see that instance = $button detailed_signal = 'clicked' callback = \&delseries data = $line->{"name"} = $kernel There is no parameter for $kernel to be placed in. This is a change from Gtk-Perl where the fourth arg was a valist. To get around this you must either 1. use an array ref and change delseries to accept it: $button->signal_connect( 'clicked', \&delseries, [ $line->{"name"}, $kernel ] ); 2. use an anonymous function instead: $button->->signal_connect( 'clicked' sub { delseries(@_, $line->{"name"}, $kernel); } ); I have always used the anonymous sub method (mainly for the closure aspect). From scott@asofyet.org Wed Oct 8 16:17:01 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id E5DA2182E3 for ; Wed, 8 Oct 2003 16:17:00 -0400 (EDT) Received: from webmail.asofyet.org (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id F1A12FA6B for ; Wed, 8 Oct 2003 13:17:14 -0700 (PDT) Received: from 192.146.101.7 (SquirrelMail authenticated user scott@asofyet.org) by webmail.asofyet.org with HTTP; Wed, 8 Oct 2003 16:17:14 -0400 (EDT) Message-ID: <11278.192.146.101.7.1065644234.spork@webmail.asofyet.org> In-Reply-To: <20031008193747.GX5248@adlp.org> References: <20031008193747.GX5248@adlp.org> Date: Wed, 8 Oct 2003 16:17:14 -0400 (EDT) Subject: Re: gtk-gtk2 migration problems... From: "muppet" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Bruno Boettcher said: > since a nice guy finally made an adaptation of Gtk2 for POE i am > trying to migrate my progs to use Gtk2.... hadn't heard anything about this. is it anyone we know? is there a link or news blurb we can put up on the website? -- muppet From bboett@bboett.dyndns.org Wed Oct 8 16:31:24 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mwinf0501.wanadoo.fr (smtp4.wanadoo.fr [193.252.22.26]) by mail.gnome.org (Postfix) with ESMTP id BF9EE180E3 for ; Wed, 8 Oct 2003 16:31:24 -0400 (EDT) Received: from bboett.dyndns.org (AStrasbourg-207-1-9-243.w81-249.abo.wanadoo.fr [81.249.36.243]) by mwinf0501.wanadoo.fr (SMTP Server) with ESMTP id 001FF4003ED; Wed, 8 Oct 2003 22:31:38 +0200 (CEST) Received: by bboett.dyndns.org (Postfix, from userid 1000) id 3AD922F40; Wed, 8 Oct 2003 22:31:37 +0200 (CEST) Date: Wed, 8 Oct 2003 22:31:37 +0200 To: muppet Cc: gtk-perl-list@gnome.org Subject: Re: gtk-gtk2 migration problems... Message-ID: <20031008203137.GY5248@adlp.org> Reply-To: bboett@adlp.org References: <20031008193747.GX5248@adlp.org> <11278.192.146.101.7.1065644234.spork@webmail.asofyet.org> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <11278.192.146.101.7.1065644234.spork@webmail.asofyet.org> User-Agent: Mutt/1.5.4i From: bboett@bboett.dyndns.org (Bruno Boettcher) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Wed, Oct 08, 2003 at 04:17:14PM -0400, muppet wrote: > hadn't heard anything about this. is it anyone we know? is there a link or > news blurb we can put up on the website? nothing official yet... i distribute the files over http://bboett.free.fr/ last line, the guy is german and has the nick Averell on Efnet he keeps the files i distribute up to date, no news yet when this will be included officially into POE yet... -- ciao bboett ============================================================== bboett@adlp.org http://inforezo.u-strasbg.fr/~bboett =============================================================== From bboett@bboett.dyndns.org Wed Oct 8 16:56:44 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mwinf0203.wanadoo.fr (smtp7.wanadoo.fr [193.252.22.29]) by mail.gnome.org (Postfix) with ESMTP id 7CC4718199 for ; Wed, 8 Oct 2003 16:56:44 -0400 (EDT) Received: from bboett.dyndns.org (AStrasbourg-207-1-9-243.w81-249.abo.wanadoo.fr [81.249.36.243]) by mwinf0203.wanadoo.fr (SMTP Server) with ESMTP id CC1C71000543 for ; Wed, 8 Oct 2003 22:56:56 +0200 (CEST) Received: by bboett.dyndns.org (Postfix, from userid 1000) id 782A22F40; Wed, 8 Oct 2003 22:56:56 +0200 (CEST) Date: Wed, 8 Oct 2003 22:56:56 +0200 To: gtk-perl-list@gnome.org Subject: possible to change the icon of the messageDialog? Message-ID: <20031008205656.GZ5248@adlp.org> Reply-To: bboett@adlp.org Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline User-Agent: Mutt/1.5.4i From: bboett@bboett.dyndns.org (Bruno Boettcher) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Hello, as the title says... is it possible to change the icon the messagedialog uses? or alternativley does anyone allready have a code snippet of a nice about box? -- ciao bboett ============================================================== bboett@adlp.org http://inforezo.u-strasbg.fr/~bboett =============================================================== From bassi-e@libero.it Wed Oct 8 18:55:00 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp1.libero.it (smtp1.libero.it [193.70.192.51]) by mail.gnome.org (Postfix) with ESMTP id 77AE018105 for ; Wed, 8 Oct 2003 18:55:00 -0400 (EDT) Received: from wolverine.lohacker.net (151.29.199.217) by smtp1.libero.it (7.0.020-DD01) id 3F6F0E4800627A97 for gtk-perl-list@gnome.org; Thu, 9 Oct 2003 00:55:42 +0200 Received: by wolverine.lohacker.net (Postfix, from userid 1001) id C1F97144C5; Thu, 9 Oct 2003 00:55:39 +0200 (CEST) Date: Thu, 9 Oct 2003 00:55:39 +0200 From: Emmanuele Bassi To: gtk-perl-list@gnome.org Subject: Re: possible to change the icon of the messageDialog? Message-ID: <20031008225539.GA6849@wolverine.lohacker.net> Mail-Followup-To: gtk-perl-list@gnome.org References: <20031008205656.GZ5248@adlp.org> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <20031008205656.GZ5248@adlp.org> X-Mailer: Mutt 1.5.4i (2003-03-19) X-OperatingSystem: Linux 2.6.0-test6-mm3 i686 X-message-flag: Usa un vero mailreader! http://www.mutt.org User-Agent: Mutt/1.5.4i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: * Bruno Boettcher : > as the title says... is it possible to change the icon the > messagedialog uses? The icon? You mean the window icon? If so, just use the Gtk2::Window::set_icon method. > or alternativley does anyone allready have a code snippet of a nice > about box? If you can't use Gnome2::About (e.g. under Win32), you could copy it. Regards, Emmanuele. -- Emmanuele Bassi (Zefram) [ http://digilander.libero.it/ebassi/blog ] GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738 08BD 8ECC DB8F A432 0FF4 From jeff-ml@mock.com Wed Oct 8 18:57:28 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.mock.com (ns.mock.com [209.157.146.194]) by mail.gnome.org (Postfix) with ESMTP id 405E9186C8 for ; Wed, 8 Oct 2003 18:57:27 -0400 (EDT) Received: from t23.mock.com (t23.mock.com [192.168.10.12]) (authenticated bits=0) by mail.mock.com (8.12.9/8.12.9/jeff) with ESMTP id h98Mv6kn023123 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NO); Wed, 8 Oct 2003 15:57:07 -0700 Subject: Re: possible to change the icon of the messageDialog? From: Jeff Mock To: bboett@adlp.org, gtk-perl-list@gnome.org In-Reply-To: <20031008205656.GZ5248@adlp.org> References: <20031008205656.GZ5248@adlp.org> Content-Type: text/plain Message-Id: <1065653826.5693.627.camel@t23> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Wed, 08 Oct 2003 15:57:06 -0700 Content-Transfer-Encoding: 7bit X-DCC-SdV-Metrics: wobble.mock.com 1179; Body=2 Fuz1=2 Fuz2=2 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Wed, 2003-10-08 at 13:56, Bruno Boettcher wrote: > Hello, > > as the title says... is it possible to change the icon the > messagedialog uses? > > or alternativley does anyone allready have a code snippet of a nice > about box? Here's how I do an about box, I nicked the original from someplace else, I can't remember where. jeff ------ # About box # sub about { my $about = new Gtk2::Dialog; my $label = new Gtk2::Label; my $markup = <<" END"; Burn Audio CDs v$version Read XMMS playlists Decode MP3s Burn audio CDs Copyright (c) 2003 Jeff Mock jeff\@mock.com END $markup =~ s/\n */\n/gs; $label->set_markup($markup); $label->set_justify('center'); $about->set_title(''); $about->set_icon($mw{cdicon}); $about->set_border_width(8); $about->set_modal(TRUE); $about->set_resizable(FALSE); $about->add_buttons('gtk-ok' => 0); $about->vbox->set_spacing(8); $about->vbox->pack_start( Gtk2::Image->new_from_stock('gtk-cdrom', 'large-toolbar'), FALSE, FALSE, 0); $about->vbox->pack_start($label, TRUE, TRUE, 0); $about->show_all; $about->signal_connect(response => sub { $about->destroy(); }); } From ken@restivo.org Wed Oct 8 22:25:31 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from bc.home.restivo.org (unknown [168.103.96.35]) by mail.gnome.org (Postfix) with ESMTP id C3377182C9 for ; Wed, 8 Oct 2003 22:25:29 -0400 (EDT) Received: from vaio (dhcp101.home.restivo.org [10.0.0.101]) by bc.home.restivo.org (8.12.3/8.12.3/Debian-5) with ESMTP id h992PfWs001855 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO) for ; Wed, 8 Oct 2003 19:25:42 -0700 Received: from ken by vaio with local (Exim 3.35 #1 (Debian)) id 1A7QUm-0004Im-00 for ; Wed, 08 Oct 2003 19:25:40 -0700 Date: Wed, 8 Oct 2003 19:25:40 -0700 From: Ken Restivo To: gtk-perl-list@gnome.org Subject: Getting currently-selected Gtk::Notebook page Message-ID: <20031009022540.GA16532@vaio.restivo.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 I'm trying to get the CURRENTLY-selected Gtk::Notebook page. This is driving me bananas, because all that I can get is the PREVIOUSLY-selected Gtk::Notebook page, which is utterly useless to me. The gtk+ C-language callbacks for the "switch-page" signal give me: "switch-page" void user_function (GtkNotebook *notebook, GtkNotebookPage *page, gint page_num, gpointer user_data); I tested this in C, and the page_num variable does in fact deliver the correct number. But in Perl all I can shift out of there is the notebook widget itself. Calls to $w->get_current_page(), and $w->page just give me the PREVIOUSLY-selected page. Even more bizarre: if I get the widget directly using GTK::GladeXML's get_widget() function, and perform these same get_current_page() operations on it, I still get the PREVIOUSLY-selected page, NOT the one that is sitting there on screen, looking right at me. How can I fix this? My project is quite stuck without this working. - -ken - -- - --------------- The world's most affordable web hosting. http://www.nearlyfreespeech.net -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) iD8DBQE/hMcje8HF+6xeOIcRArvaAKC9xGhS3TwYiDw320weAzFXAk5PdgCgp6Eg skLh1aDTt6gdjWY6Ggkh1N0= =2kho -----END PGP SIGNATURE----- From scott@asofyet.org Wed Oct 8 22:30:13 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from frodo.dreamhost.com (frodo.dreamhost.com [66.33.209.11]) by mail.gnome.org (Postfix) with ESMTP id 91C9C182C9 for ; Wed, 8 Oct 2003 22:30:13 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by frodo.dreamhost.com (Postfix) with ESMTP id 97AB913C53 for ; Wed, 8 Oct 2003 19:30:26 -0700 (PDT) Date: Wed, 8 Oct 2003 22:30:27 -0400 Mime-Version: 1.0 (Apple Message framework v552) Content-Type: text/plain; charset=US-ASCII; format=flowed Subject: last call From: muppet To: gtk-perl list Content-Transfer-Encoding: 7bit Message-Id: <8B2E5D59-FA00-11D7-AD80-000A9580E5E0@asofyet.org> X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: it's been a while since a major bug has been found in Gtk2 or Glib, and there hasn't been a commit to either since last week. if you know of any bugs that need to be fixed before the stable release finally fights its way out of beta, the speak now or forever hold your peace. otherwise, i will release the actual 1.00 of each on the tenth. so... /me points the microphone at the crowd and waits for a response as for the post-1.00 release plan: i plan to take a while off from making releases, as i haven't seen a normal thursday night since Gtk2 0.90, which was twelve weeks ago. the 1.00 release will reach a lot of people, and we'll get bug reports i'm sure. i'll reserve 1.01 for the Brown Paper Bag release, which i hope will not be needed. we'll collect the bug fixes and new documentation (you guys are still writing documentation, right?) and make a 1.02 in a month or so. once gtk+ 2.4.x is generally available, we'll start patching that in, and have another major stable release for that, similarly for 2.6 etc. should we go to 2.00 for the 2.4/2.6/3.0 release, or just keep on the 1.xx series indefinitely? i'd also like to get lots of example code up on the website, and start discussion on how we're going to do the perl API reference docs. (as we've seen, not everyone in the perl community is comfortable reading the C API docs.) in the meantime, torsten has taken the conch as maintainer of Gnome2 and will be making releases on Gnome2 on a separate schedule. watch for him on freshmeat -- http://freshmeat.net/projects/gnome2-perl/ as always, comments, rebuttals, and questions are very welcome. -- muppet From jan.moren@lucs.lu.se Thu Oct 9 03:54:20 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.g.bonet.se (mail.g.bonet.se [212.181.52.4]) by mail.gnome.org (Postfix) with ESMTP id 7182C18401 for ; Thu, 9 Oct 2003 03:54:20 -0400 (EDT) Received: from localhost.localdomain (as1-3-3.ld.bonet.se [194.237.243.230]) by mail.g.bonet.se (8.12.9/8.12.9) with ESMTP id h997qUhS066196 for ; Thu, 9 Oct 2003 09:52:31 +0200 (CEST) (envelope-from jan.moren@lucs.lu.se) Subject: Re: last call From: Janne To: gtk-perl list In-Reply-To: <8B2E5D59-FA00-11D7-AD80-000A9580E5E0@asofyet.org> References: <8B2E5D59-FA00-11D7-AD80-000A9580E5E0@asofyet.org> Content-Type: text/plain; charset=ISO-8859-1 Message-Id: <1065686071.29768.97.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.3 (1.4.3-1) Date: 09 Oct 2003 09:54:31 +0200 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: For the API docs, could I suggest doing them in the same format as the gtk API docs? That would mean they are readable with devhelp, which is a surprisingly useful app for developers (in my view at least). On Thu, 2003-10-09 at 04:30, muppet wrote: > it's been a while since a major bug has been found in Gtk2 or Glib, and > there hasn't been a commit to either since last week. if you know of > any bugs that need to be fixed before the stable release finally fights > its way out of beta, the speak now or forever hold your peace. > > otherwise, i will release the actual 1.00 of each on the tenth. > > so... > > /me points the microphone at the crowd and waits for a response > > > > as for the post-1.00 release plan: > > i plan to take a while off from making releases, as i haven't seen a > normal thursday night since Gtk2 0.90, which was twelve weeks ago. > the 1.00 release will reach a lot of people, and we'll get bug reports > i'm sure. i'll reserve 1.01 for the Brown Paper Bag release, which i > hope will not be needed. we'll collect the bug fixes and new > documentation (you guys are still writing documentation, right?) and > make a 1.02 in a month or so. once gtk+ 2.4.x is generally available, > we'll start patching that in, and have another major stable release for > that, similarly for 2.6 etc. > > should we go to 2.00 for the 2.4/2.6/3.0 release, or just keep on the > 1.xx series indefinitely? > > i'd also like to get lots of example code up on the website, and start > discussion on how we're going to do the perl API reference docs. (as > we've seen, not everyone in the perl community is comfortable reading > the C API docs.) > > in the meantime, torsten has taken the conch as maintainer of Gnome2 > and will be making releases on Gnome2 on a separate schedule. watch > for him on freshmeat -- http://freshmeat.net/projects/gnome2-perl/ > > as always, comments, rebuttals, and questions are very welcome. > > -- > muppet > > _______________________________________________ > gtk-perl-list mailing list > gtk-perl-list@gnome.org > http://mail.gnome.org/mailman/listinfo/gtk-perl-list -- Trust the Computer. The Computer is your friend. Tel. +46-046 222 8588 Dr. Janne Morén (mr) Home: +46-046 211 4973 Dept. of Cognitive Science Fax: +46-046 222 9758 Kungshuset, Lund S-222 22 Lund, Sweden From pagaltzis@gmx.de Thu Oct 9 06:02:49 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.gmx.net (imap.gmx.net [213.165.64.20]) by mail.gnome.org (Postfix) with SMTP id 5A92118430 for ; Thu, 9 Oct 2003 06:02:49 -0400 (EDT) Received: (qmail 14221 invoked by uid 65534); 9 Oct 2003 10:03:02 -0000 Received: from xdsl-213-168-117-150.netcologne.de (EHLO klangraum) (213.168.117.150) by mail.gmx.net (mp013) with SMTP; 09 Oct 2003 12:03:02 +0200 X-Authenticated: #163624 Received: (qmail 949 invoked by uid 1000); 9 Oct 2003 10:02:10 -0000 Date: Thu, 9 Oct 2003 12:02:10 +0200 From: "A. Pagaltzis" To: gtk-perl list Subject: Re: last call Message-ID: <20031009100210.GA912@klangraum> Mail-Followup-To: gtk-perl list References: <8B2E5D59-FA00-11D7-AD80-000A9580E5E0@asofyet.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <8B2E5D59-FA00-11D7-AD80-000A9580E5E0@asofyet.org> User-Agent: Mutt/1.4i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: * muppet [2003-10-09 11:47]: > should we go to 2.00 for the 2.4/2.6/3.0 release, or just keep > on the 1.xx series indefinitely? I say stick to 1.x. Gtk2-Perl version numbers should IMHO reflect the state of Gtk2-Perl, not the version of Gtk2 they are tied to. -- Regards, Aristotle "If you can't laugh at yourself, you don't take life seriously enough." From kaffeetisch@web.de Thu Oct 9 07:19:47 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp.web.de (smtp02.web.de [217.72.192.151]) by mail.gnome.org (Postfix) with ESMTP id 2C3581880E for ; Thu, 9 Oct 2003 07:19:47 -0400 (EDT) Received: from [217.230.244.145] (helo=6-allhosts) by smtp.web.de with esmtp (WEB.DE 4.99 #459) id 1A7Yps-00024U-00 for gtk-perl-list@gnome.org; Thu, 09 Oct 2003 13:20:01 +0200 Subject: Re: Getting currently-selected Gtk::Notebook page From: Torsten Schoenfeld To: gtk-perl-list@gnome.org In-Reply-To: <20031009022540.GA16532@vaio.restivo.org> References: <20031009022540.GA16532@vaio.restivo.org> Content-Type: text/plain Message-Id: <1065698401.1740.5.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Thu, 09 Oct 2003 13:20:01 +0200 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Thu, 2003-10-09 at 04:25, Ken Restivo wrote: > "switch-page" > void user_function (GtkNotebook *notebook, > GtkNotebookPage *page, > gint page_num, > gpointer user_data); > > I tested this in C, and the page_num variable does in fact deliver the correct number. > > But in Perl all I can shift out of there is the notebook widget itself. Well, it seems to work for me: $notebook -> signal_connect(switch_page => sub { warn join(", ", @_); }); gives someting like: Gtk2::Notebook=HASH(0x865340c), 142057896, 2 at ... which is what the prototype suggests. Of course, the GtkNotebookPage parameter is not correct. It's a struct and supposedly gets cast to an integer. We'd need custom marshalling for this to work correctly, but as far as I can tell that struct is supposed to be private anyway. HTH, -Torsten From j.g.karssenberg@student.utwente.nl Thu Oct 9 11:31:39 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from netlx050.vf.utwente.nl (netlx050.vf.utwente.nl [192.87.17.19]) by mail.gnome.org (Postfix) with ESMTP id 512FC19A14 for ; Thu, 9 Oct 2003 11:30:21 -0400 (EDT) Received: from Captain (pardus-larus.student.utwente.nl [130.89.162.38]) by netlx050.vf.utwente.nl (8.11.7/HKD) with SMTP id h99FUYh16448 for ; Thu, 9 Oct 2003 17:30:34 +0200 Date: Thu, 9 Oct 2003 17:33:39 +0200 From: Jaap Karssenberg To: gtk-perl list Subject: key bindings Message-Id: <20031009173339.41c048cd.j.g.karssenberg@student.utwente.nl> X-Mailer: Sylpheed version 0.9.5claws (GTK+ 1.2.10; i686-pc-linux-gnu) X-Operating-System: Gentoo GNU/Linux X-Face: "v{-bpe?1p2m|Je=04fRKRU3r_u46st:$k=UF[?DH7FEX9(W=d1a4w9:%kXx;v#"({6w,fp(Xpz}BNuW!^"6Z`Xhi#ftaVCoG7T}S>dpie1HyhN)A$NPbG6xELWy|bt\ Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-UTwente-MailScanner-Information: Scanned by MailScanner. Contact helpdesk@ITBE.utwente.nl for more information. X-UTwente-MailScanner: Found to be clean Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: I would like to add custom key bindings to a widget, preferably binding keys directly to perl subroutines. Now I found in the Gtk reference this page but this is totally unhelpful due to the lack of descriptions/explanations. Could someone show me how to bind a key to a perl sub ? -- ) ( Jaap Karssenberg || Pardus [Larus] : : http://pardus-larus.student.utwente.nl/~pardus ) \ / ( ",.*'*.," Proud owner of "Perl6 Essentials" 1st edition :) From scott@asofyet.org Thu Oct 9 15:59:00 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id AB5831A8E5 for ; Thu, 9 Oct 2003 14:53:22 -0400 (EDT) Received: from webmail.asofyet.org (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id 8069AFA8C for ; Thu, 9 Oct 2003 11:53:36 -0700 (PDT) Received: from 192.146.101.12 (SquirrelMail authenticated user scott@asofyet.org) by webmail.asofyet.org with HTTP; Thu, 9 Oct 2003 14:53:36 -0400 (EDT) Message-ID: <51060.192.146.101.12.1065725616.spork@webmail.asofyet.org> In-Reply-To: <20031009173339.41c048cd.j.g.karssenberg@student.utwente.nl> References: <20031009173339.41c048cd.j.g.karssenberg@student.utwente.nl> Date: Thu, 9 Oct 2003 14:53:36 -0400 (EDT) Subject: Re: key bindings From: "muppet" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Jaap Karssenberg said: > I would like to add custom key bindings to a widget, preferably binding > keys directly to perl subroutines. Now I found in the Gtk reference this > page but > this is totally unhelpful due to the lack of descriptions/explanations. you're not kidding -- no commentary at all. peeking through the gtk+ 2.2.1 source (because that's what i have sitting around) at gtkbindings.c, this appears to be something that has been ported from the old type and signal system but retained as a convenience wrapper. the bindings functions are used from several widgets within gtk itself to add key handlers to widget *classes*. this is not likely to be useful to you for two reasons: 1. since this works on a GtkObjectClass (that is, a GObjectClass), there's really no good way to use it from perl. in C you can add stuff to your class struct in your type's class_init, but the way subclassing works from perl, you don't get that hook -- Glib::Type->register needs to do the work of your typical class_init function, and there are currently no hooks for GtkBindings in Glib::Type::register. 2. there is no type mapping for GtkBinding, and in fact the string GtkBinding occurs nowhere in the gtk2-perl source code. i don't think this is a show-stopper. read on. > Could someone show me how to bind a key to a perl sub ? you can rather easily implement something that does this, in pure perl, even. there's accelerators and accelerator maps, of which GtkBinding seems to be the old version, and there's the key-press and key-release events from gdk. personally, i would try the key-press and/or key-release events, just because i don't know all that much about accelerators. you can either connect a handler to every object of that class that gets created, or override the default handler in a subclass to install your code once for *all* objects of that class. # # warning, untested code: # use Glib::Object::Subclass ... signals => { ... key_press_event => \&real_key_press_event, key_release_event => \&real_key_release_event, ... }, ... ; use Gtk2::Gdk::Keysyms; sub real_key_press_event { my ($widget, $event) = @_; if ($event->keyval == $Gtk2::Gdk::Keysyms{PageUp}) { if (grep {/control-mask/}, @{ $event->state }) { # user is holding ctrl, do something different $widget->frob_by_ten_pages; } else { $widget->frob_by_page; } # we handled it return 1; } ... # if we didn't handle it, we need to explicitly call the parent! # this is not a normal signal handler, we're being called *instead* *of* # the normal class closure -- thus we need to chain up manually. $widget->signal_chain_from_overridden; return 0; } -- muppet From alas@widomaker.com Thu Oct 9 16:23:47 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from webmail.widomaker.com (webmail.widomaker.com [204.17.220.4]) by mail.gnome.org (Postfix) with ESMTP id BC0681C329 for ; Thu, 9 Oct 2003 15:31:41 -0400 (EDT) Received: from webmail.widomaker.com (localhost [127.0.0.1]) by webmail.widomaker.com (8.12.9/8.12.9) with ESMTP id h99JW9jF052893; Thu, 9 Oct 2003 15:32:09 -0400 (EDT) (envelope-from alas@widomaker.com) Received: (from nobody@localhost) by webmail.widomaker.com (8.12.9/8.12.9/Submit) id h99JW8Tc052891; Thu, 9 Oct 2003 15:32:08 -0400 (EDT) X-Authentication-Warning: webmail.widomaker.com: nobody set sender to alas@widomaker.com using -f To: Jaap Karssenberg , gtk-perl mailing list Subject: Re: key bindings Message-ID: <1065727928.3f85b7b8a0273@webmail.widomaker.com> Date: Thu, 09 Oct 2003 15:32:08 -0400 (EDT) From: Chas Owens References: <20031009173339.41c048cd.j.g.karssenberg@student.utwente.nl> In-Reply-To: <20031009173339.41c048cd.j.g.karssenberg@student.utwente.nl> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit User-Agent: IMP/PHP IMAP webmail program 2.2.6 X-Originating-IP: 199.244.214.30 X-Webmail: Report abuse to abuse@widomaker.com Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Quoting Jaap Karssenberg : > I would like to add custom key bindings to a widget, preferably > binding keys directly to perl subroutines. Now I found in the Gtk reference > this page > but this is totally unhelpful due to the lack of > descriptions/explanations. > Could someone show me how to bind a key to a perl sub ? > > -- > ) ( Jaap Karssenberg || Pardus [Larus] > : : http://pardus-larus.student.utwente.nl/~pardus > ) \ / ( > ",.*'*.," Proud owner of "Perl6 Essentials" 1st edition :) > _______________________________________________ The first thing that comes to my mind is: #!/usr/bin/perl use Gtk2; use Gtk2::Gdk::Keysyms; my $window = Gtk2::Window->new; $window->signal_connect('key_release_event' => \&keyrelease); $window->signal_connect('destroy' => sub { Gtk2->main_quit } ); $window->show; Gtk2->main; sub keyrelease { my ($widget, $event) = @_; if ($event->keyval == $Gtk2::Gdk::Keysyms{q}) { Gtk2->main_quit; } else { print "key was ", chr($event->keyval), "\n"; } } From scott@asofyet.org Fri Oct 10 01:05:52 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from frodo.dreamhost.com (frodo.dreamhost.com [66.33.209.11]) by mail.gnome.org (Postfix) with ESMTP id 9562A180E1 for ; Fri, 10 Oct 2003 01:05:52 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by frodo.dreamhost.com (Postfix) with ESMTP id 9597813BEA for ; Thu, 9 Oct 2003 22:05:43 -0700 (PDT) Date: Fri, 10 Oct 2003 01:05:33 -0400 Mime-Version: 1.0 (Apple Message framework v552) Content-Type: text/plain; charset=US-ASCII; format=flowed Subject: Gtk2 1.00, Glib 1.00, Gtk2::GladeXML 0.93 From: muppet To: gtk-perl list Content-Transfer-Encoding: 7bit Message-Id: <60BC5D94-FADF-11D7-988A-000A9580E5E0@asofyet.org> X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: break out the champagne... gtk2-perl, thirteen months and one rewrite in the making, has gone stable. included in the release is the two-line patch needed to compile Gtk2 against the win32 binaries of gtk+-2.2.4 available from http://dropline.net/gtk/ -- those binaries are apparently missing two symbols that would be of little use on windows anyway, but i was using them because they come in an installer. i'm not having any luck getting valid activestate PPM binary packages; if anybody knows anything about that, please contact me. on the list of outstanding issues for this stable release are documentation and subclassing of cell renderers, as well as support for future versions of gtk+. we'll get to those in the coming months. in related news, the new version of Gtk2::GladeXML incorporates Chas' custom widget fixes from last week. test it, beat it, try to break it, and it will reach 1.00 soon as well. -- muppet From phoenix@sandwich.net Fri Oct 10 01:14:12 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from pioneer (adsl-209.142.189.150-rb.spt.centurytel.net [209.142.189.150]) by mail.gnome.org (Postfix) with ESMTP id CFB7918445 for ; Fri, 10 Oct 2003 01:14:11 -0400 (EDT) Received: from james by pioneer with local (Exim 3.36 #1 (Debian)) id 1A7pbc-0000Nb-00 for ; Fri, 10 Oct 2003 00:14:24 -0500 Subject: Re: Gtk2 1.00, Glib 1.00, Gtk2::GladeXML 0.93 From: James Curbo Reply-To: james@teyandei.net To: gtk perl mailing list In-Reply-To: <60BC5D94-FADF-11D7-988A-000A9580E5E0@asofyet.org> References: <60BC5D94-FADF-11D7-988A-000A9580E5E0@asofyet.org> Content-Type: text/plain Content-Transfer-Encoding: 7bit Message-Id: <1065762864.655.3.camel@pioneer> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Fri, 10 Oct 2003 00:14:24 -0500 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Congratulations, you guys have put a lot of work into this and we appreciate it. For those of you wanting debs, my system in currently in a state in which I can't build for unstable (due to some experimental packages I installed). I suggest you grab the source from SF (which has the debian directories in the tarballs) and build them yourself. Sometime next week (going to be gone all weekend, else I'd do it then) I'm going to get my system back in a build-able state and I'll update my repository then. hopefully muppet updated debian/changelog correctly ;) James On Fri, 2003-10-10 at 00:05, muppet wrote: > break out the champagne... gtk2-perl, thirteen months and one rewrite > in the making, has gone stable. > > > included in the release is the two-line patch needed to compile Gtk2 > against the win32 binaries of gtk+-2.2.4 available from > http://dropline.net/gtk/ -- those binaries are apparently missing two > symbols that would be of little use on windows anyway, but i was using > them because they come in an installer. i'm not having any luck > getting valid activestate PPM binary packages; if anybody knows > anything about that, please contact me. > > on the list of outstanding issues for this stable release are > documentation and subclassing of cell renderers, as well as support for > future versions of gtk+. we'll get to those in the coming months. > > > in related news, the new version of Gtk2::GladeXML incorporates Chas' > custom widget fixes from last week. test it, beat it, try to break it, > and it will reach 1.00 soon as well. > > > -- > muppet > > _______________________________________________ > gtk-perl-list mailing list > gtk-perl-list@gnome.org > http://mail.gnome.org/mailman/listinfo/gtk-perl-list From j.g.karssenberg@student.utwente.nl Fri Oct 10 08:04:27 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from netlx010.civ.utwente.nl (netlx010.civ.utwente.nl [130.89.1.92]) by mail.gnome.org (Postfix) with ESMTP id AE81618994 for ; Fri, 10 Oct 2003 08:04:26 -0400 (EDT) Received: from Captain (pardus-larus.student.utwente.nl [130.89.162.38]) by netlx010.civ.utwente.nl (8.11.4/HKD) with SMTP id h9AC4c114362 for ; Fri, 10 Oct 2003 14:04:38 +0200 Date: Fri, 10 Oct 2003 14:07:45 +0200 From: Jaap Karssenberg To: gtk-perl-list@gnome.org Subject: Re: Gtk2 1.00, Glib 1.00, Gtk2::GladeXML 0.93 Message-Id: <20031010140745.352dfc2a.j.g.karssenberg@student.utwente.nl> In-Reply-To: <60BC5D94-FADF-11D7-988A-000A9580E5E0@asofyet.org> References: <60BC5D94-FADF-11D7-988A-000A9580E5E0@asofyet.org> X-Mailer: Sylpheed version 0.9.5claws (GTK+ 1.2.10; i686-pc-linux-gnu) X-Operating-System: Gentoo GNU/Linux X-Face: "v{-bpe?1p2m|Je=04fRKRU3r_u46st:$k=UF[?DH7FEX9(W=d1a4w9:%kXx;v#"({6w,fp(Xpz}BNuW!^"6Z`Xhi#ftaVCoG7T}S>dpie1HyhN)A$NPbG6xELWy|bt\ Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-UTwente-MailScanner-Information: Scanned by MailScanner. Contact helpdesk@ITBE.utwente.nl for more information. X-UTwente-MailScanner: Found to be clean Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Fri, 10 Oct 2003 01:05:33 -0400 muppet wrote: : in related news, the new version of Gtk2::GladeXML incorporates Chas' : custom widget fixes from last week. test it, beat it, try to break : it, and it will reach 1.00 soon as well. I used the patched version extensively to create images from xpm data for small project, works exactly as documented in the Chas' mail. PS. I saw a list of programs using gtk-perl on the website - this one can be added if you like, it's pure perl using Gtk2, SimpleList and GladeXML. PPS. One of my users asked whether there will be a RedHat 9 rpm available of GladeXML. -- ) ( Jaap Karssenberg || Pardus [Larus] : : http://pardus-larus.student.utwente.nl/~pardus ) \ / ( ",.*'*.," Proud owner of "Perl6 Essentials" 1st edition :) From gavin.brown@uk.com Fri Oct 10 08:07:23 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.centralnic.net (unknown [212.18.224.18]) by mail.gnome.org (Postfix) with ESMTP id 8FAAD183B8 for ; Fri, 10 Oct 2003 08:07:23 -0400 (EDT) Received: from lon-staffgw-1.centralnic.net ([212.18.224.152] helo=devel.jodrell.net) by mail.centralnic.net with esmtp (Exim 4.22) id 1A7w3V-0002iF-FJ for gtk-perl-list@gnome.org; Fri, 10 Oct 2003 13:07:37 +0100 From: Gavin Brown Reply-To: gavin.brown@uk.com To: gtk-perl-list@gnome.org In-Reply-To: <1065762864.655.3.camel@pioneer> References: <60BC5D94-FADF-11D7-988A-000A9580E5E0@asofyet.org> <1065762864.655.3.camel@pioneer> Message-Id: <1065787656.11493.2.camel@scimitar.jodrell.net> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.3 Date: 10 Oct 2003 13:07:37 +0100 Subject: Re: Gtk2 1.00, Glib 1.00, Gtk2::GladeXML 0.93 Content-Type: text/plain Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: > Congratulations, you guys have put a lot of work into this and we > appreciate it. Definitely - everyone involved can pat themselves on the back. Muppet and I conspired briefly yesterday and I think we'll have a Win32 binary distribution ready soon. You'll be the first to know when we do. Gavin. -- Gavin Brown e: gavin.brown@uk.com w: http://jodrell.net/ PGP/GPG key ID: 891D8FCA From rwmcfa1@neces.com Fri Oct 10 09:08:10 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from frodo.dreamhost.com (frodo.dreamhost.com [66.33.209.11]) by mail.gnome.org (Postfix) with ESMTP id 85E8F1810F for ; Fri, 10 Oct 2003 09:08:10 -0400 (EDT) Received: from beta.local (12-222-230-66.client.insightBB.com [12.222.230.66]) by frodo.dreamhost.com (Postfix) with ESMTP id D283113BE0; Fri, 10 Oct 2003 06:08:23 -0700 (PDT) Subject: Re: Gtk2 1.00, Glib 1.00, Gtk2::GladeXML 0.93 From: Ross McFarland To: Jaap Karssenberg Cc: Gtk-Perl-List In-Reply-To: <20031010140745.352dfc2a.j.g.karssenberg@student.utwente.nl> References: <60BC5D94-FADF-11D7-988A-000A9580E5E0@asofyet.org> <20031010140745.352dfc2a.j.g.karssenberg@student.utwente.nl> Content-Type: text/plain Message-Id: <1065791302.9015.45.camel@beta.local> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Fri, 10 Oct 2003 09:08:23 -0400 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Fri, 2003-10-10 at 08:07, Jaap Karssenberg wrote: > PS. I saw a list of programs using gtk-perl on the website - this one > can be added if you like, it's pure perl using Gtk2, SimpleList and > GladeXML. should be up in a little while. > PPS. One of my users asked whether there will be a RedHat 9 rpm > available of GladeXML. there should be very soon, i built them last night, muppet just has to post the files. -rm From jens@irs-net.com Fri Oct 10 09:53:06 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail-in-02.arcor-online.net (mail-in-02.arcor-online.net [151.189.21.42]) by mail.gnome.org (Postfix) with ESMTP id 4C3DD1820B for ; Fri, 10 Oct 2003 09:53:06 -0400 (EDT) Received: from cello.localhost.localdomain (dialin-212-144-161-069.arcor-ip.net [212.144.161.69]) by mail-in-02.arcor-online.net (Postfix) with ESMTP id B705DDF0C3 for ; Fri, 10 Oct 2003 15:53:19 +0200 (CEST) Received: by cello.localhost.localdomain (Postfix, from userid 1000) id 2D8022363B; Fri, 10 Oct 2003 15:53:19 +0200 (CEST) Subject: clone object From: Jens Luedicke To: Gtk-Perl-List Content-Type: text/plain Content-Transfer-Encoding: 7bit Message-Id: <1065793951.1302.1.camel@cello> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.4 Date: Fri, 10 Oct 2003 15:53:19 +0200 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: hi ... I want to clone a Gtk2::ListStore object, because I need an exact independent copy with all its values. how can I do this? Jens From scott@asofyet.org Fri Oct 10 09:59:41 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id 890AB183B4 for ; Fri, 10 Oct 2003 09:59:41 -0400 (EDT) Received: from webmail.asofyet.org (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id CCD6AFD08 for ; Fri, 10 Oct 2003 06:59:55 -0700 (PDT) Received: from 192.146.101.7 (SquirrelMail authenticated user scott@asofyet.org) by webmail.asofyet.org with HTTP; Fri, 10 Oct 2003 09:59:55 -0400 (EDT) Message-ID: <24063.192.146.101.7.1065794395.spork@webmail.asofyet.org> In-Reply-To: <1065793951.1302.1.camel@cello> References: <1065793951.1302.1.camel@cello> Date: Fri, 10 Oct 2003 09:59:55 -0400 (EDT) Subject: Re: clone object From: "muppet" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Jens Luedicke said: > hi ... > > I want to clone a Gtk2::ListStore object, because > I need an exact independent copy with all its values. > > how can I do this? so far as i know, there's no built-in way to do that. however, it looks like GtkTreeModel provides a get for every set, so you should be able to determine the number and types of columns and then iterate over the rows, copying all the values as you go. you'll have to be careful to take real copies and shallow copies as appropriate, yadda yadda yadda. -- muppet From tomc@kendeco.com Fri Oct 10 10:57:56 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from meridian.kendeco.com (astound-64-83-211-252.mn.astound.net [64.83.211.252]) by mail.gnome.org (Postfix) with ESMTP id 01D5F18184 for ; Fri, 10 Oct 2003 10:57:56 -0400 (EDT) Received: from meridian.kendeco.com (localhost.localdomain [127.0.0.1]) by meridian.kendeco.com (8.12.8/8.12.8) with ESMTP id h9AEw9Dm024551; Fri, 10 Oct 2003 09:58:09 -0500 Received: (from tomc@localhost) by meridian.kendeco.com (8.12.8/8.12.8/Submit) id h9AEw8vU024549; Fri, 10 Oct 2003 09:58:08 -0500 X-Authentication-Warning: meridian.kendeco.com: tomc set sender to tomc@kendeco.com using -f Subject: Re: Gtk2 1.00, Glib 1.00, Gtk2::GladeXML 0.93 From: Tom Cross To: gavin.brown@uk.com Cc: gtk-perl-list@gnome.org In-Reply-To: <1065787656.11493.2.camel@scimitar.jodrell.net> References: <60BC5D94-FADF-11D7-988A-000A9580E5E0@asofyet.org> <1065762864.655.3.camel@pioneer> <1065787656.11493.2.camel@scimitar.jodrell.net> Content-Type: multipart/alternative; boundary="=-/CSajUIIVppoaccCxUzQ" Message-Id: <1065797888.20181.41.camel@meridian.kendeco.com> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.3 (1.4.3-1) Date: 10 Oct 2003 09:58:08 -0500 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: --=-/CSajUIIVppoaccCxUzQ Content-Type: text/plain Content-Transfer-Encoding: 7bit On Fri, 2003-10-10 at 07:07, Gavin Brown wrote: > > Congratulations, you guys have put a lot of work into this and we > > appreciate it. > > Definitely - everyone involved can pat themselves on the back. Yes! This is awesome! > Muppet and I conspired briefly yesterday and I think we'll have a Win32 > binary distribution ready soon. You'll be the first to know when we do. I started looking into writing perl-Win32::GUI apps yesterday and was dreading trying to keep three UI's in my head (perl-CGI, perl-GTK2, perl-Win32)... If I can do my Win32 project in GTK2 I will be one MAJORly happy camper. :-) THANKS GUYS!! --=-/CSajUIIVppoaccCxUzQ Content-Type: text/html; charset=utf-8 On Fri, 2003-10-10 at 07:07, Gavin Brown wrote:
> Congratulations, you guys have put a lot of work into this and we
> appreciate it.

Definitely - everyone involved can pat themselves on the back.

Yes!  This is awesome!

Muppet and I conspired briefly yesterday and I think we'll have a Win32
binary distribution ready soon. You'll be the first to know when we do.

I started looking into writing perl-Win32::GUI apps yesterday and was dreading trying to keep three UI's in my head (perl-CGI, perl-GTK2, perl-Win32)... 

If I can do my Win32 project in GTK2 I will be one MAJORly happy camper.  :-)

THANKS GUYS!! --=-/CSajUIIVppoaccCxUzQ-- From gavin.brown@uk.com Fri Oct 10 11:06:42 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.centralnic.net (unknown [212.18.224.18]) by mail.gnome.org (Postfix) with ESMTP id 1E21E180DD for ; Fri, 10 Oct 2003 11:06:42 -0400 (EDT) Received: from lon-staffgw-1.centralnic.net ([212.18.224.152] helo=devel.jodrell.net) by mail.centralnic.net with esmtp (Exim 4.22) id 1A7yr2-0005bX-7d for gtk-perl-list@gnome.org; Fri, 10 Oct 2003 16:06:56 +0100 From: Gavin Brown Reply-To: gavin.brown@uk.com To: gtk-perl-list@gnome.org In-Reply-To: <1065797888.20181.41.camel@meridian.kendeco.com> References: <60BC5D94-FADF-11D7-988A-000A9580E5E0@asofyet.org> <1065762864.655.3.camel@pioneer> <1065787656.11493.2.camel@scimitar.jodrell.net> <1065797888.20181.41.camel@meridian.kendeco.com> Message-Id: <1065798415.11493.25.camel@scimitar.jodrell.net> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.3 Date: 10 Oct 2003 16:06:56 +0100 Subject: Re: Gtk2 1.00, Glib 1.00, Gtk2::GladeXML 0.93 Content-Type: text/plain Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: > I started looking into writing perl-Win32::GUI apps yesterday and was > dreading trying to keep three UI's in my head (perl-CGI, perl-GTK2, > perl-Win32)... Why not use WxWindows? G. -- Gavin Brown e: gavin.brown@uk.com w: http://jodrell.net/ PGP/GPG key ID: 891D8FCA From bassi-e@libero.it Fri Oct 10 13:26:04 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp2.libero.it (smtp2.libero.it [193.70.192.52]) by mail.gnome.org (Postfix) with ESMTP id 3689D18141 for ; Fri, 10 Oct 2003 13:26:04 -0400 (EDT) Received: from wolverine.lohacker.net (151.29.203.115) by smtp2.libero.it (7.0.020-DD01) id 3F6F0DA9006C42D3 for gtk-perl-list@gnome.org; Fri, 10 Oct 2003 19:26:44 +0200 Received: by wolverine.lohacker.net (Postfix, from userid 1001) id 2F2C314452; Fri, 10 Oct 2003 16:22:18 +0200 (CEST) Date: Fri, 10 Oct 2003 16:22:18 +0200 From: Emmanuele Bassi To: Gtk-Perl-List Subject: Re: clone object Message-ID: <20031010142218.GA6541@wolverine.lohacker.net> Mail-Followup-To: Gtk-Perl-List References: <1065793951.1302.1.camel@cello> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <1065793951.1302.1.camel@cello> X-Mailer: Mutt 1.5.4i (2003-03-19) X-OperatingSystem: Linux 2.6.0-test6-mm3 i686 X-message-flag: Usa un vero mailreader! http://www.mutt.org User-Agent: Mutt/1.5.4i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: * Jens Luedicke : > I want to clone a Gtk2::ListStore object, because > I need an exact independent copy with all its values. There's no such built-in method to do this. The reason is quite obvious: the model may contain values of a non-fundamental type (especially when using GTK with a wrapper such as gtk2-perl, which permits you to include a perl scalar inside a model) so how it could know in which way those values should be copied between the original model and the cloned one? You ought to provide a custom "cloning" function anyways... > how can I do this? Iterate throughout the original model, and populate another model with copies of the former's content (make sure you're actually cloning the content, and not just doing shallow copies, if this is your case). Regards, Emmanuele. -- Emmanuele Bassi (Zefram) [ http://digilander.libero.it/ebassi/blog ] GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738 08BD 8ECC DB8F A432 0FF4 From scott@asofyet.org Fri Oct 10 18:46:27 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id 64AF218134 for ; Fri, 10 Oct 2003 18:46:27 -0400 (EDT) Received: from webmail.asofyet.org (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id DD1F0FA83; Fri, 10 Oct 2003 15:46:41 -0700 (PDT) Received: from 192.146.101.12 (SquirrelMail authenticated user scott@asofyet.org) by webmail.asofyet.org with HTTP; Fri, 10 Oct 2003 18:46:41 -0400 (EDT) Message-ID: <14431.192.146.101.12.1065826001.spork@webmail.asofyet.org> Date: Fri, 10 Oct 2003 18:46:41 -0400 (EDT) Subject: Subclassing Gtk2::CellRenderer (reprise) From: "muppet" To: gtk-perl-list@gnome.org Cc: Bjarne =?iso-8859-1?Q?Steinsb=F8?= User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: multipart/mixed;boundary="----=_20031010184641_33716" Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: ------=_20031010184641_33716 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit I had a brilliant idea in the shower this morning and couldn't let it drop until i'd tried it. After a good bit of messing around, i have little sandbox module that can implement a cell renderer in perl. If this works out, it could be folded into the main Gtk2 module. Since GtkCellRenderer declares no signals for the virtual methods get_size, render, activate, and start_editing, it's impossible to derive this class with normal methods. In the bindings we have a couple of different approaches we could take: 1. create signals for the methods and add them to the GtkCellRendererClass. this seems attractive at first glance, but there's a chicken and egg problem, and what's worse, we'd be modifying somebody else's object. a big no-no. 2. create a special subclass of GtkCellRenderer that does enable us to override its methods, and use that as the base class for Perl-derived objects. The biggest drawback of this is that we can't inherit an existing renderer; for showing text, this is a major PITA. As it turns out, pygtk already does method 2 successfully, which makes my great idea seem a little less great, rather like the Professor finding out somebody had already invented the Frisbee[1]. Nevertheless, the attached archive implements a new object, the Gtk2::CellRenderer::Base, intended for use as a base class for Perl-derived cell renderers. An example program is included. Of note: this base class does *not* create new signals for the virtual methods. There was a chicken and egg problem, which mostly would result in the default handler being called twice. (I can't remember now how i came to that conclusion so it may not be correct.) At any rate, the overriding factor in the decision was the fact that cellrenderer methods are called *really* *often*, and need to be very fast. Thus, this module has some custom marshalling for each Perl callback, which is treated as a method (i.e. called with call_method()); this may cause problems, but this is an alpha release for comments. Basically, you just provide "on_get_size", "on_render", "on_activate", and "on_start_editing" in your package, and they will be called automagically. The rest of the derivation for the widget is like other Glib::Object subclasses. Just play with the example program and you'll figure it out eventually. It's not very pretty... in fact there's no indication that you can click on it, and the menu doesn't position itself properly, and the text isn't customizable, and the implementation isn't perfect... but it works and i think it's pretty cool. [1] if you know what this is a reference to, then you, too, saw too much tv as a kid. -- muppet ------=_20031010184641_33716 Content-Type: application/x-tar; name="Gtk2-CellRenderer-Base-0.01.tar.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Gtk2-CellRenderer-Base-0.01.tar.gz" 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 ------=_20031010184641_33716-- From scott@asofyet.org Fri Oct 10 21:22:23 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from gollum.dreamhost.com (gollum.dreamhost.com [66.33.209.16]) by mail.gnome.org (Postfix) with ESMTP id E681818152 for ; Fri, 10 Oct 2003 21:22:22 -0400 (EDT) Received: from [192.168.1.51] (adsl-1116.mis.net [12.162.183.102]) by gollum.dreamhost.com (Postfix) with ESMTP id 47B885B761 for ; Fri, 10 Oct 2003 18:22:34 -0700 (PDT) Subject: Re: Subclassing Gtk2::CellRenderer (reprise) From: muppet To: gtk-perl mailing list In-Reply-To: <14431.192.146.101.12.1065826001.spork@webmail.asofyet.org> References: <14431.192.146.101.12.1065826001.spork@webmail.asofyet.org> Content-Type: text/plain Organization: Message-Id: <1065835415.26178.13.camel@tetsuo> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.2.1 Date: 10 Oct 2003 21:23:35 -0400 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: i reply to myself way too often. On Fri, 2003-10-10 at 18:46, muppet wrote: > Just play with the example program and you'll figure it out eventually. the list bounced that message the first time i sent it because i had a pair of screenshots attached, which exceeded the 60K limit. the screenshots are on my homepage, with the source archive: http://asofyet.org/muppet/software/gtk2-perl/example.png http://asofyet.org/muppet/software/gtk2-perl/example-menu.png -- muppet From scott@asofyet.org Fri Oct 10 18:42:12 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id 5486018134 for ; Fri, 10 Oct 2003 18:42:11 -0400 (EDT) Received: from webmail.asofyet.org (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id 353B0FAB8; Fri, 10 Oct 2003 15:42:25 -0700 (PDT) Received: from 192.146.101.12 (SquirrelMail authenticated user scott@asofyet.org) by webmail.asofyet.org with HTTP; Fri, 10 Oct 2003 18:42:25 -0400 (EDT) Message-ID: <10900.192.146.101.12.1065825745.spork@webmail.asofyet.org> Date: Fri, 10 Oct 2003 18:42:25 -0400 (EDT) Subject: Subclassing Gtk2::CellRenderer (reprise) From: "muppet" To: gtk-perl-list@gnome.org Cc: Bjarne =?iso-8859-1?Q?Steinsb=F8?= User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: multipart/mixed;boundary="----=_20031010184225_38796" Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: ------=_20031010184225_38796 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit I had a brilliant idea in the shower this morning and couldn't let it drop until i'd tried it. After a good bit of messing around, i have little sandbox module that can implement a cell renderer in perl. If this works out, it could be folded into the main Gtk2 module. Since GtkCellRenderer declares no signals for the virtual methods get_size, render, activate, and start_editing, it's impossible to derive this class with normal methods. In the bindings we have a couple of different approaches we could take: 1. create signals for the methods and add them to the GtkCellRendererClass. this seems attractive at first glance, but there's a chicken and egg problem, and what's worse, we'd be modifying somebody else's object. a big no-no. 2. create a special subclass of GtkCellRenderer that does enable us to override its methods, and use that as the base class for Perl-derived objects. The biggest drawback of this is that we can't inherit an existing renderer; for showing text, this is a major PITA. As it turns out, pygtk already does method 2 successfully, which makes my great idea seem a little less great, rather like the Professor finding out somebody had already invented the Frisbee[1]. Nevertheless, the attached archive implements a new object, the Gtk2::CellRenderer::Base, intended for use as a base class for Perl-derived cell renderers. An example program is included. Of note: this base class does *not* create new signals for the virtual methods. There was a chicken and egg problem, which mostly would result in the default handler being called twice. (I can't remember now how i came to that conclusion so it may not be correct.) At any rate, the overriding factor in the decision was the fact that cellrenderer methods are called *really* *often*, and need to be very fast. Thus, this module has some custom marshalling for each Perl callback, which is treated as a method (i.e. called with call_method()); this may cause problems, but this is an alpha release for comments. Basically, you just provide "on_get_size", "on_render", "on_activate", and "on_start_editing" in your package, and they will be called automagically. The rest of the derivation for the widget is like other Glib::Object subclasses. Just play with the example program and you'll figure it out eventually. It's not very pretty... in fact there's no indication that you can click on it, and the menu doesn't position itself properly, and the text isn't customizable, and the implementation isn't perfect... but it works and i think it's pretty cool. [1] if you know what this is a reference to, then you, too, saw too much tv as a kid. -- muppet ------=_20031010184225_38796 Content-Type: image/png; name="example.png" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="example.png" 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 Z49e71YQQpLJ5Pz587sktb5c014v254WYP78+clk0rgQDXoXva44nUOdBYsnjSDd27bNOWfMokAo ECqBSCB4jf8455xzxli7CnbVVVfdcccdr7yyZ6fGqFFC38Tq1avnzZvXJUn15Zr2etn2tADz5s1b vXp195XHoJvwyCOPXHTRRVOmTFm8eHFvl6UL0OuK0zmQ4tV2N4QQy7IikQhyfcteZoiWjeoplVLi 7mZtE92xY8eQIUMikV7bY9rAwKCPY8OGDV/72tfee+89PLHaoLuB/ZByzasdzUqJXnfUBCB9KXwp RBuDfuzYsQBw8skn33zzzfp9QsjSpUtLrsePH3/33XfX1NS88MILALBmzZqpU6dGo9FLLrmk5PO/ 8sorhx566MCBA4cPH37PPfd0bRPsEcaPH/+///u/48aNi8fj//Vf//Xss8/269evqqrqiSeewAd6 rKZSymuvvXbIkCHl5eVVVVULFiwAgAMPPPD3v/89ADQ3N9u2/bOf/QwAhBADBgxYuXJlT36FVatW HX/88fF4PB6Pf+UrX+nhxjHo47jssstOOKEXtqGHPq843QG05fXTBFXYJOccJhx40NhJU0ePnzx6 /OSxk6aOnzJ93ORpYydNHXvg9AMmTx096cDx0w6G1ieTYL+xaNEiKeWSJUtAm85dsmRJyTUATJ48 +Y033kilUgAwYsSI55577plnnqGULly4UL3e0NBQWVl5//33SynfeOMNzvmqVatkDwIAtmzZoq4P OeSQDz744Prrr4/FYueee+6mTZu+9a1vHX744T1c03feeQcAPvzwQyllJpOpq6uTUn7ve98755xz pJQLFy6Mx+MzZ86UUr7++uu1tbUofD1Ttmw2W1tbe/LJJ2/fvt33/Y8//rj7GmfLli1thdBgv4Di ip5EX1ac7gAAHHjw4QcefPjUL8ycPuPILxw++wuHzz7o0FnTZxx50KGzvnD4bApAObcjkZhlOVIS zws8LwgCSQkvS5RX9xvQr6r/PnY111577fTp0xOJBABcf/31xx133Ny5cw877LCnn35aPfOPf/wj l8sNHz58+fLlmUympqamd/16V1999YQJEw477LBsNnvXXXcNGTLk0EMPbW5u7vytLq9pRUUF5/zu u+9+++23o9HogAEDAGDWrFkvvfQSADz11FNXXXXVa6+9lkqlnnvuublz53YyY9nlZVu8ePHGjRtv u+226upqxtjo0aN7uHEMDDpCX1acbgLnHA+MUna9mmQVQnDXdfFvIYTneYSQaDQajUa5bdv2np2b 3hGqq6vVdW1tLV4MGjRo586d6v727dsJIb/+9a/xz8MOO2zgwIFdkvveoby8HMLQUv26c3R5TWtr a59++ukbb7zx4IMPHjNmzIIFC4488shZs2atX79+3bp1zz777K9+9av77rvvxRdffO655773ve/1 ZNnQyh42rLMzabu1AAYGHaEvK043AV3zGDCJAxTdFc+j8TLP8wqeLyU40XgkEnEch3POGKGUYtT9 7meGg4iNGzfu8snt27dPmdKyn9qIESN837/nnnvKysr2qHq9hR6r6bHHHnvsscc2NDRcccUVp59+ +qeffjpkyJCRI0fecsstEydOrKqqOu644/7617++8sorjz/+eE+WbfDgwQDwySef4JyNjs+PGBj0 WfRZxekmIKejyY6kjYeQFINrEolEPB6PRqPxeLysrCwWi2FkqJRSnSm4mzmVlZW9/vrrb7/99vnn n9/5kytXrnz11VfPPvtsdef444+vra397ne/29DQAABbt25dt27dnle2h9AdNb344osXLlxY8vra tWuXL1/u+35lZeX/b+/Nw6wsrvzxU+921276dkN3Q9OCYRmGQSU/noHI1rSALAoiKkoCYqKTGdyY +IzGIMGEkGh8nnkUIvoEVMZIRmWMDxoXBBWDfJUko0aUEQGDIoLI1svd3q3q98e57+nqe7ubXi69 wPt5eHhu3/u+VadOnTp16tSpOkOGDKH5ecKECWvXrp09ezYATJkyZf369SNHjozFYp1J2yWXXDJg wIDbbrvt4MGD9fX127dvP3PM8eGjTegmA6czgeHz+Fl4YaC0K6sAQEFBQXl5ee/evXVdt23bsiwh BJ2cknNTtYwf//jH99xzz7x58375y18298x11103ZsyY+fPnP/HEExdffDF9HwwG33jjjXg8PnDg wIKCgvHjx+N2SvfEmWjpmjVrSFcSEonEkiVLiouLY7HYc8899+yzz+L3EydOdF0XQxqqq6uFENOm Tetk2oLB4ObNm23bHjx4cN++fSkE69wRAx8tY/jw4UVFRQBwxRVXFBUV/f3vnZd8tZsMnK4C3XGA uWA55+ySGVfquq7rOufcsqx0Ou04jhACgOMqgDH27ltbRD5OCsTj8Ugk0j2PODLG9u/f379//0Ag 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 ------=_20031010184225_38796 Content-Type: image/png; name="example-menu.png" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="example-menu.png" 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 d3BMqeQB+1jfMAsLiwGx3Un6wgsvfOITn5g9e/acOXPorXpucMstt8yePbu9vR0A7r333iVLllBG zWAYjEHVF25iwLuvvPLKKaecMn369OnTp5966qlQxwQGY3o33XTTIYccsptjuLNAXl0jCYir0zPE 1WsSVenJPvcTxqbxTYpT16cbvfDCC9dee+2dd9754osvPvXUU0uXLgWAMAyXLVs2bdq0v//97/fd d98999zzwx/+EADWrVv305/+9KabbjrrrLMuvfTS//7v/161atXSpUtvuOEGAOjp6Tn11FM/97nP PfvsszfddNO55567bt26FStWAMAvf/nL5cuXY41XXnnlmWee+T//8z8rV6587rnnzMasW7fukksu Me+WSqVPf/rTH/rQhx588MFnnnnG87xdGNwB+1jfMAsLi+2ifpJWKpVTTjnlsMMO+8c//vHMM8/g YwNyg9NOO23u3LnnnXdepVL57ne/e/nll7uuO3R1A07eAQunVwa8W6lUTj755GQy+Ze//OWll166 7LLLoD8TGILp3XrrrbfffvswjedgMM+2ofAymQWUSmrKA4h3qTD5f+2aAwpJoxMKYT7Q2NjoOM4v fvGL559/PplMtra2AsBf//rX119//V//9V9d1x0zZswpp5yCYwcA55xzzsyZMw899NByuXzZZZeN GTNm4cKFhUIBAP70pz9VKpUJEyY88cQTpVKptbX10Ucfre/q17/+9fe9730LFy4EgN7e3qHvPvLI Ix0dHaeccsruDO6AfbSwsNg11EzS1atXb9my5eyzzxZCJBIJfGZAbsA5/8EPfvDwww9/+tOffte7 3rVo0aLt1jXg5B2a1Qx499FHH33rrbcuueSSlpYWIcSUKVNqKhqC6X3jG984+OCD98TI7QSiIIyC MPQD/CHDSEsFSjMNHGoXM9OfNYUwxhxa2IYGHVkT9V4nxLhx42677bYf/ehHS5cunTp16jXXXHP4 4Ydv2bIFAIh1HnDAAXgFABoaGiCWWrlcDozl0J2dnYyxn//85/jnoYceOnr06Pqujh8/HvqvzRvi 7ubNm1OpVDKZ3IExHBQD9nF3CrSweCejZpKuX7++qakpnU6bzwzGDaZMmbJgwYLHH3985cqVO1LX gJN3aFYz4F3kYNjyATEE02tpadmRpu5ZoO6Oe2LTsTnkSkIbgpYrm96kGv7ftzk2nb6GvwXjjDEm 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 AAAASUVORK5CYII= ------=_20031010184225_38796 Content-Type: application/x-tar; name="Gtk2-CellRenderer-Base-0.01.tar.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Gtk2-CellRenderer-Base-0.01.tar.gz" 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 ------=_20031010184225_38796-- From pat@msasa.co.zw Sat Oct 11 16:09:55 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from corpmail.ecoweb.co.zw (unknown [193.220.32.254]) by mail.gnome.org (Postfix) with ESMTP id 4F26F1817E for ; Sat, 11 Oct 2003 16:09:52 -0400 (EDT) Received: from msasa.co.zw (IDENT:root@msasa.co.zw [193.220.33.103]) by corpmail.ecoweb.co.zw (8.11.6/8.11.6) with ESMTP id h9BKBGx02961 for ; Sat, 11 Oct 2003 22:11:16 +0200 Received: from [192.168.0.254] ([192.168.0.254]) by msasa.co.zw (8.9.3/8.9.3) with ESMTP id VAA17503 for ; Fri, 10 Oct 2003 21:54:45 +0200 Subject: Newbie trying to get started From: pat To: gtk-perl-list@gnome.org In-Reply-To: <20031010160031.6744.87911.Mailman@moniker.gnome.org> References: <20031010160031.6744.87911.Mailman@moniker.gnome.org> Content-Type: text/plain Content-Transfer-Encoding: 7bit Message-Id: <1065806906.1158.35.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.0.8 (1.0.8-10) Date: 10 Oct 2003 21:48:05 +0200 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: I am using a 'everything install' of RH8.0 and have discovered that I have 2 versions of Glade installed, ver 0.8.6 and ver 1.1.1. My problem is that v1.1.1 _only_ gives me the option to use C or C++ whereas V0.8.6 gives me the perl option (plus others as I expected) which I want. I would prefer to use V1.1.1. a) If it is me (very possible) can someone please point me in the right direction - the help files do look the same to me b) Is there that much difference between the 2 versions that I should use V1.1.1 - remember that I am still in the process of taking 4 steps backward for every step forward. c) I only have an email connection at the moment so downloading the very latest glade is a bit difficult for me. Many thanks Pat Hannon From scott@asofyet.org Sat Oct 11 21:33:54 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from gollum.dreamhost.com (gollum.dreamhost.com [66.33.209.16]) by mail.gnome.org (Postfix) with ESMTP id DEDCA180E4 for ; Sat, 11 Oct 2003 21:33:53 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by gollum.dreamhost.com (Postfix) with ESMTP id AA4405B761; Sat, 11 Oct 2003 18:34:06 -0700 (PDT) Date: Sat, 11 Oct 2003 21:34:07 -0400 Subject: Re: Newbie trying to get started Content-Type: text/plain; charset=US-ASCII; format=flowed Mime-Version: 1.0 (Apple Message framework v552) Cc: gtk-perl list To: pat From: muppet In-Reply-To: <1065806906.1158.35.camel@localhost.localdomain> Message-Id: <2C34285E-FC54-11D7-A7ED-000A9580E5E0@asofyet.org> Content-Transfer-Encoding: 7bit X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Friday, October 10, 2003, at 03:48 PM, pat wrote: > I am using a 'everything install' of RH8.0 and have discovered that I > have 2 versions of Glade installed, ver 0.8.6 and ver 1.1.1. My problem > is that v1.1.1 _only_ gives me the option to use C or C++ whereas > V0.8.6 > gives me the perl option (plus others as I expected) which I want. I > would prefer to use V1.1.1. the bigger difference is that version 1.1.1 works with Gtk+ 2.x and Gnome 2.x, but version 0.8.6 works with Gtk+ 1.x and Gnome 1.x. version 1.1.1 doesn't offer an option to generate perl code because the gtk2 version of the glade-to-perl converter (http://www.glade-perl.connectfree.co.uk/) isn't quite ready for use (it doesn't work with Gtk2 1.00 without patching). the best thing to do, in all honesty, would be to avoid the source code generation altogether, and use libglade to generate the gui directly from the raw glade file at runtime. the Gtk2::GladeXML module exists for this purpose. the binary packages are only about 20k, and there are several people on the list who can answer your questions on how to use it. anybody care to post some example code? (we could use example code on the website, too.) it can start as simple as: use Gtk2 -init; use Gtk2::GladeXML; $glade = Gtk2::GladeXML->new ('/path/to/interface/definition.glade'); $glade->signal_autoconnect_from_package; Gtk2->main; but to get any real functionality out of it, you'll have to add callback implementations. -- muppet From bosteins@broadpark.no Sun Oct 12 11:21:36 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.broadpark.no (mail.broadpark.no [217.13.4.2]) by mail.gnome.org (Postfix) with ESMTP id 463F3187F0 for ; Sun, 12 Oct 2003 11:21:36 -0400 (EDT) Received: from broadpark.no (169.80-203-5.nextgentel.com [80.203.5.169]) by mail.broadpark.no (Postfix) with ESMTP id 4407579299; Sun, 12 Oct 2003 17:21:50 +0200 (MEST) Message-ID: <3F897138.4060703@broadpark.no> Date: Sun, 12 Oct 2003 17:20:24 +0200 From: =?ISO-8859-1?Q?Bjarne_Steinsb=F8?= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 X-Accept-Language: en-us, en MIME-Version: 1.0 To: muppet Cc: gtk-perl-list@gnome.org Subject: Re: Subclassing Gtk2::CellRenderer (reprise) References: <10900.192.146.101.12.1065825745.spork@webmail.asofyet.org> In-Reply-To: <10900.192.146.101.12.1065825745.spork@webmail.asofyet.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Sorry I'm late in responding. I've been away from the computer for a few days. Thanks a lot, muppet, I'll definitely try this one out. It looks great! I've fallen a bit behind, though (haven't installed the final release yet), so it'll take me a little while to get up to date and continue coding. About making it visually distinct, I'll look into what pango markup can do for me, maybe there's something there to do that part. I'll get back to you when I've tried it out. Bjarne From rwmcfa1@neces.com Sun Oct 12 14:06:05 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smeagol.dreamhost.com (smeagol.dreamhost.com [66.33.209.5]) by mail.gnome.org (Postfix) with ESMTP id 14897183E5 for ; Sun, 12 Oct 2003 14:06:05 -0400 (EDT) Received: from beta.local (12-222-230-66.client.insightBB.com [12.222.230.66]) by smeagol.dreamhost.com (Postfix) with ESMTP id DAA9B23A8C for ; Sun, 12 Oct 2003 11:06:18 -0700 (PDT) Subject: updated warning cleanup complete From: Ross McFarland To: Gtk-Perl-List Content-Type: text/plain Message-Id: <1065981977.2753.8.camel@beta.local> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Sun, 12 Oct 2003 14:06:18 -0400 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: just committed the warning clean up so that the only things that should come out now with '-Wall -W' and the GValue complaints. in the process found one syntax/score bug, that shouldn't really be an issue, at worse could be a small memory leak, but i'd have to think about it. This makes use of the fact that the newest ParseXS fixes things that are its fault and now we only fix the ones that are ours. the main difference is using the undeclared parameter trick. this will actual result in slightly smaller object files and very slight performance due to no longer getting un-needed things off of the stack. let me know if they're are any issues, there should be no real differences so hopefully this won't cause any noticeable differences. -rm From rwmcfa1@neces.com Sun Oct 12 14:47:17 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smeagol.dreamhost.com (smeagol.dreamhost.com [66.33.209.5]) by mail.gnome.org (Postfix) with ESMTP id 9BDB8188D1 for ; Sun, 12 Oct 2003 14:47:17 -0400 (EDT) Received: from beta.local (12-222-230-66.client.insightBB.com [12.222.230.66]) by smeagol.dreamhost.com (Postfix) with ESMTP id E797E23A5A for ; Sun, 12 Oct 2003 11:47:31 -0700 (PDT) Subject: Re: updated warning cleanup complete From: Ross McFarland To: Gtk-Perl-List In-Reply-To: <1065981977.2753.8.camel@beta.local> References: <1065981977.2753.8.camel@beta.local> Content-Type: text/plain Message-Id: <1065984448.2753.10.camel@beta.local> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Sun, 12 Oct 2003 14:47:28 -0400 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Sun, 2003-10-12 at 14:06, Ross McFarland wrote: > just committed the warning clean up so that the only things that should > come out now with '-Wall -W' and the GValue complaints. in the process > found one syntax/score bug, that shouldn't really be an issue, at worse > could be a small memory leak, but i'd have to think about it. This makes > use of the fact that the newest ParseXS fixes things that are its fault > and now we only fix the ones that are ours. should of read: 'in the process found one syntax/scope bug' when are they going to have a meaning check, spell check just doesn't cut it. -rm From kaffeetisch@web.de Sun Oct 12 15:51:56 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp.web.de (smtp03.web.de [217.72.192.158]) by mail.gnome.org (Postfix) with ESMTP id D6306188FF for ; Sun, 12 Oct 2003 15:51:55 -0400 (EDT) Received: from [217.224.251.154] (helo=6-allhosts) by smtp.web.de with esmtp (WEB.DE 4.99 #459) id 1A8mG9-0004Eo-00 for gtk-perl-list@gnome.org; Sun, 12 Oct 2003 21:52:09 +0200 Subject: Re: updated warning cleanup complete From: Torsten Schoenfeld To: Gtk-Perl-List In-Reply-To: <1065981977.2753.8.camel@beta.local> References: <1065981977.2753.8.camel@beta.local> Content-Type: text/plain Message-Id: <1065988331.5291.1.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Sun, 12 Oct 2003 21:52:12 +0200 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Sun, 2003-10-12 at 20:06, Ross McFarland wrote: > let me know if they're are any issues, there should be no real > differences so hopefully this won't cause any noticeable differences. Gnome2 used UNUSED in one place and thus didn't run properly anymore. Fix committed. From rwmcfa1@neces.com Sun Oct 12 16:07:53 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from frodo.dreamhost.com (frodo.dreamhost.com [66.33.209.11]) by mail.gnome.org (Postfix) with ESMTP id 58CB1181D7 for ; Sun, 12 Oct 2003 16:07:53 -0400 (EDT) Received: from beta.local (12-222-230-66.client.insightBB.com [12.222.230.66]) by frodo.dreamhost.com (Postfix) with ESMTP id 5CCF913BDF; Sun, 12 Oct 2003 13:08:07 -0700 (PDT) Subject: Re: updated warning cleanup complete From: Ross McFarland To: Torsten Schoenfeld Cc: Gtk-Perl-List In-Reply-To: <1065988331.5291.1.camel@localhost> References: <1065981977.2753.8.camel@beta.local> <1065988331.5291.1.camel@localhost> Content-Type: text/plain Message-Id: <1065989286.2753.12.camel@beta.local> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Sun, 12 Oct 2003 16:08:06 -0400 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Sun, 2003-10-12 at 15:52, Torsten Schoenfeld wrote: > On Sun, 2003-10-12 at 20:06, Ross McFarland wrote: > > > let me know if they're are any issues, there should be no real > > differences so hopefully this won't cause any noticeable differences. > > Gnome2 used UNUSED in one place and thus didn't run properly anymore. > Fix committed. my bad, i had fixed it on my local copy bug forgot to commit the stuff outside of Glib/Gtk2. -rm From danlyke@flutterby.com Sun Oct 12 19:25:07 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.flutterby.com (colo-danlyke-132.highertech.net [66.129.1.132]) by mail.gnome.org (Postfix) with ESMTP id 46197180EE for ; Sun, 12 Oct 2003 19:25:07 -0400 (EDT) Received: from francisco (danlyke@localhost [127.0.0.1]) by mail.flutterby.com (8.12.3/8.12.3/Debian-6.6) with ESMTP id h9CNfL08027814 for ; Sun, 12 Oct 2003 16:41:22 -0700 Received: from francisco ([127.0.0.1]) by francisco with esmtp (Exim 3.36 #1 (Debian)) id 1A8oGZ-0003QI-00 for ; Sun, 12 Oct 2003 15:00:43 -0700 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <16265.53002.567084.163608@flutterby.com> Date: Sun, 12 Oct 2003 15:00:42 -0700 From: Dan Lyke To: gtk-perl list Subject: Re: Newbie trying to get started In-Reply-To: <2C34285E-FC54-11D7-A7ED-000A9580E5E0@asofyet.org> References: <1065806906.1158.35.camel@localhost.localdomain> <2C34285E-FC54-11D7-A7ED-000A9580E5E0@asofyet.org> X-Mailer: VM 7.17 under Emacs 21.3.1 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: muppet writes: > it can start as simple as: > > use Gtk2 -init; > use Gtk2::GladeXML; > > $glade = Gtk2::GladeXML->new ('/path/to/interface/definition.glade'); > $glade->signal_autoconnect_from_package; > Gtk2->main; Just a follow-up with things I've learned since and some search engine juice... As mentioned in http://mail.gnome.org/archives/gtk-perl-list/2003-September/msg00132.html You can use the script at http://www.flutterby.com/software/gtk2-perl-tools/gtk2-perl-connect-signals.txt to automatically generate stub functions for the signals you connect. Note that signal_autoconnect_from_package seems to miss a few things occasionally, if you think your function isn't getting called, then you might want to set it up manually. Specifically, I wasn't getting linkage for a button press event on a treeview, so I had to explicitly do: $treeview = $gladexml->get_widget('treeview1'); $treeview->signal_connect(button_press_event => \&on_treeview1_button_press_event); Rather than just specifying it in glade-2[1]. Don't know why, because all my drag-n-drop functions connect just fine. I was waiting 'til I had the latest version before I tried to track this down and see if I could do a fix, I'm still a few revs back and everything else is working so I wasn't stressing about it. And I'm still not sure of how to make it happen *after* the default processing, so I'm trying to handle the selection list intelligently myself. Really, I'm not sure what more "code generation" I'd want, this lets me diddle with the look in glade-2 and (except when I need to automatically connect new signals) edit my source and not worry about the connection between them. As a regular user of VisualStudio .NET, which tries to keep track of edits to both the visual view and the source code and reconcile them, I *far* prefer this method. I haven't played with it yet, but Chas Owens' "one file" solution at http://mail.gnome.org/archives/gtk-perl-list/2003-October/msg00061.html Looks like the perfect packaging method when I get that far along (And have I mentioned recently how much you guys *rock*, not just for the whole Gtk2 thing, but for making sure that when I go Windows with this it'll work? If you're ever in town (SF), the beers are on me). I hope to come up with some better packagings for my idioms for dealing with multiple main windows, right now I have global @gladexml and %gladexml variables, on "new" I do: $gladexml = Gtk2::GladeXML->new('MyGladeFile.glade'); push @gladexml, $gladexml; $gladexml->signal_autoconnect_from_package('main'); And I get my widgets by name with: sub get_widget($$) { my ($widget, $name) = @_; if (!defined($gladexml{$widget})) { my ($n, $gladexml); $n = $widget->get_name(); foreach (@gladexml) { my ($w); $w = $_->get_widget($n); $gladexml = $_ if ($w eq $widget); } $gladexml{$widget} = [$gladexml, {}]; } if (!defined($gladexml{$widget}->[1]->{$name})) { $gladexml{$widget}->[1]->{$name} = $gladexml{$widget}->[0]->get_widget($name); } return $gladexml{$widget}->[1]->{$name}; } Which gives me the widget in my hierarchy, with caching. I'm not yet doing the clean-up I need to be doing on the "on delete" signals, to remove the deleted window from the @gladexml array and clean up the %gladexml hash, but that should be fairly simple. I'm waiting to publish anything coherent 'til I learn a little bit more, but dive in! Dan [1] I haven't kept track of all of the glade versions, but: $ glade-2 --version GTK Accessibility Module initialized Glade (GTK+) 2.0.0 From james@teyandei.net Mon Oct 13 01:43:19 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from plain.rackshack.net (unknown [66.98.136.24]) by mail.gnome.org (Postfix) with ESMTP id BCC3C18277 for ; Mon, 13 Oct 2003 01:43:19 -0400 (EDT) Received: (qmail 21559 invoked from network); 13 Oct 2003 05:42:14 -0000 Received: from adsl-209.142.189.150-rb.spt.centurytel.net (HELO teyandei.net) (209.142.189.150) by 66.98.136.24 with AES256-SHA encrypted SMTP; 13 Oct 2003 05:42:14 -0000 Message-ID: <3F8A3B88.1020403@teyandei.net> Date: Mon, 13 Oct 2003 00:43:36 -0500 From: James Curbo User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5b) Gecko/20030901 Thunderbird/0.2 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Dan Lyke Cc: gtk-perl list Subject: Re: Newbie trying to get started References: <1065806906.1158.35.camel@localhost.localdomain> <2C34285E-FC54-11D7-A7ED-000A9580E5E0@asofyet.org> <16265.53002.567084.163608@flutterby.com> In-Reply-To: <16265.53002.567084.163608@flutterby.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Dan Lyke wrote: [snip] > > I hope to come up with some better packagings for my idioms for > dealing with multiple main windows, right now I have global > @gladexml and %gladexml variables, on "new" I do: > > $gladexml = Gtk2::GladeXML->new('MyGladeFile.glade'); > push @gladexml, $gladexml; > $gladexml->signal_autoconnect_from_package('main'); Another way, pointed out earlier on this list, is to put all your windows in one glade file, but get to them like so: $gladexml = Gtk2::GladeXML->new('my.glade', 'window1'); push @gladexml, $gladexml; # other stuff > > And I get my widgets by name with: > > sub get_widget($$) > { > my ($widget, $name) = @_; > > if (!defined($gladexml{$widget})) > { > my ($n, $gladexml); > $n = $widget->get_name(); > foreach (@gladexml) > { > my ($w); > $w = $_->get_widget($n); > $gladexml = $_ if ($w eq $widget); > } > $gladexml{$widget} = [$gladexml, {}]; > } > if (!defined($gladexml{$widget}->[1]->{$name})) > { > $gladexml{$widget}->[1]->{$name} = > $gladexml{$widget}->[0]->get_widget($name); > } > return $gladexml{$widget}->[1]->{$name}; > } Gtk2::GladeXML has a get_widget function already. $gladexml->get_widget(NAME) Return the widget created by the XML file with NAME or undef if no such name exists. > > Which gives me the widget in my hierarchy, with caching. I'm not yet > doing the clean-up I need to be doing on the "on delete" signals, to > remove the deleted window from the @gladexml array and clean up the > %gladexml hash, but that should be fairly simple. > > I'm waiting to publish anything coherent 'til I learn a little bit > more, but dive in! > > Dan James From rwmcfa1@neces.com Mon Oct 13 10:05:05 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id CFBC518265 for ; Mon, 13 Oct 2003 10:05:04 -0400 (EDT) Received: from webmail.neces.com (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id 0213DFA12 for ; Mon, 13 Oct 2003 07:05:19 -0700 (PDT) Received: from 192.146.101.12 (SquirrelMail authenticated user rwmcfa1@neces.com) by webmail.neces.com with HTTP; Mon, 13 Oct 2003 10:05:19 -0400 (EDT) Message-ID: <42282.192.146.101.12.1066053919.spork@webmail.neces.com> Date: Mon, 13 Oct 2003 10:05:19 -0400 (EDT) Subject: XS tips and tricks, unused variables From: "Ross McFarland" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: for those of you developing wrappers this may be of interest: for class static functions, that accept an SV * class as the first paramter, like the following: gboolean some_class_static_function (class, param1, param2) SV * class int param1 int param2 C_ARGS: param1, param2 can be re-written as this illistraites to prevent both the unused paramter warning and the unnecessary stack operation. gboolean some_class_static_function (class, param1, param2) int param1 int param2 C_ARGS: param1, param2 the same goes for bindings that use the C style declairations: gboolean some_class_static_function (SV * class, int param1, int param2) C_ARGS: param1, param2 just leave out the type on any unused paramter gboolean some_class_static_function (class, int param1, int param2) C_ARGS: param1, param2 the same thing works for any paramter that needs to be passed to a wrapper function, but will not be used, for example functions that accept any number of paramters. so gboolean some_function_that_takes_n_params (int foo, double bar, char first_label, ...) int foo double bar char * first_label CODE: /* do the stack magic, which wouldn't use first_label */ can be done as gboolean some_function_that_takes_n_params (int foo, double bar, char first_label, ...) int foo double bar CODE: /* do the stack magic, which wouldn't use first_label */ in this case "first_label, ..." would be in the usage print for this function, but the parameter would never actually exist and the stack slurping code would work just the same. with the newest ParseXS, as you all already know, most of the unused variable and paramter warnings are cleaned up, but there are cases when you do special things that it can not predict and fix for you, something like the following: void some_functions (int param) int param ALIAS: Some::Pkg::alias1 = 1 Some::Pkg::alias2 = 2 Some::Pkg::alias3 = 3 CODE: /* we always call the same function no matter what and we don't need * to know what name we were called by */ some_c_function (param); the above code would print a warning about an unused variable ix, which would hold the id of the function name by which this was called. to get rid of that warning use a macro defined in perl.h (or one of those standard perl XS headers, PERL_UNUSED_VAR. void some_functions (int param) int param ALIAS: Some::Pkg::alias1 = 1 Some::Pkg::alias2 = 2 Some::Pkg::alias3 = 3 CODE: PERL_UNUSED_VAR (ix); /* we always call the same function no matter what and we don't need * to know what name we were called by */ some_c_function (param); i might ought to make a weekly series out of this or something. i was joking but it might actually be a good idea, not just for Gtk2-Perl. i don't know how long i could actually keep it up with interesting things, but i could pick topics like ALIAS, PPCODE, variable args to handle what would of been passed as an array to C. if i do i won't bother posting them to the list but i'll let the list know. i sounds like a good idea anyway, we'll see if i have the gumption to follow through on it... -rm From rwmcfa1@neces.com Mon Oct 13 10:20:38 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id 1FFF11811A for ; Mon, 13 Oct 2003 10:20:38 -0400 (EDT) Received: from webmail.neces.com (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id 23820FA12 for ; Mon, 13 Oct 2003 07:20:53 -0700 (PDT) Received: from 192.146.101.12 (SquirrelMail authenticated user rwmcfa1@neces.com) by webmail.neces.com with HTTP; Mon, 13 Oct 2003 10:20:53 -0400 (EDT) Message-ID: <45790.192.146.101.12.1066054853.spork@webmail.neces.com> In-Reply-To: <42282.192.146.101.12.1066053919.spork@webmail.neces.com> References: <42282.192.146.101.12.1066053919.spork@webmail.neces.com> Date: Mon, 13 Oct 2003 10:20:53 -0400 (EDT) Subject: Re: XS tips and tricks, unused variables From: "Ross McFarland" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Ross McFarland said: copy-n-paste bugs, note that the parameters are no longer in both the C and XS style. > the same thing works for any paramter that needs to be passed to a wrapper > function, but will not be used, for example functions that accept any number > of paramters. so > > gboolean > some_function_that_takes_n_params (foo, bar, first_label, ...) > int foo > double bar > char * first_label > CODE: > /* do the stack magic, which wouldn't use first_label */ > > can be done as > > gboolean > some_function_that_takes_n_params (foo, bar, first_label, ...) > int foo > double bar > CODE: > /* do the stack magic, which wouldn't use first_label */ -rm From danlyke@flutterby.com Mon Oct 13 12:33:34 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.flutterby.com (colo-danlyke-132.highertech.net [66.129.1.132]) by mail.gnome.org (Postfix) with ESMTP id C0590181E9 for ; Mon, 13 Oct 2003 12:33:34 -0400 (EDT) Received: from francisco (danlyke@localhost [127.0.0.1]) by mail.flutterby.com (8.12.3/8.12.3/Debian-6.6) with ESMTP id h9DGnt07025970 for ; Mon, 13 Oct 2003 09:49:56 -0700 Received: from francisco ([127.0.0.1]) by francisco with esmtp (Exim 3.36 #1 (Debian)) id 1A8yD8-0000Df-00 for ; Mon, 13 Oct 2003 01:37:50 -0700 Message-ID: <16266.25693.808557.156433@flutterby.com> Date: Mon, 13 Oct 2003 01:37:49 -0700 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit From: Dan Lyke To: gtk-perl list Subject: Re: Newbie trying to get started In-Reply-To: <3F8A3B88.1020403@teyandei.net> References: <1065806906.1158.35.camel@localhost.localdomain> <2C34285E-FC54-11D7-A7ED-000A9580E5E0@asofyet.org> <16265.53002.567084.163608@flutterby.com> <3F8A3B88.1020403@teyandei.net> X-Mailer: VM 7.17 under Emacs 21.3.1 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: James Curbo writes: > Another way, pointed out earlier on this list, is to put all your > windows in one glade file, but get to them like so: > > $gladexml = Gtk2::GladeXML->new('my.glade', 'window1'); Cool. For right now I only have the one type of main window, I just want multiple instances of it. > Gtk2::GladeXML has a get_widget function already. > > $gladexml->get_widget(NAME) I think you're missing my bit of functionality, as my code is actually calling this. Say you've got your basic filebrowser thingie; browse a filesystem with a treeview, and displays images in an image when an appropriate node is activated. The window structure looks something like: window1->[...packing widgets...]->treeview1 window1->[...other packing widgets...]->image1 sub on_treeview1_row_activated { my ($treeview, $treepath, $treeviewcolumn) = @_; my ($filename); # ... do stuff to set the filename from the tree node ... my $imageWidget = $gladexml->get_widget('image1'); $imageWidget->set_from_file($filename); } If you then end up with *two* top windows, for instance if you have a menu "File->New" which calls: sub on_new1_activate { my $gladexml = Gtk2::GladeXML->new('my.glade', 'window1'); push @gladexml, $gladexml; } It's important to distinguish between which of the @gladexml values you're calling the "get_widget" on, otherwise you may end up selecting a node on one window1's treewidget1, and having it appear in the *other* window1. This is the point of my code. You can replace the line my $imageWidget = $gladexml->get_widget('image1'); with my $imageWidget = main::get_widget($treewidget,'image1'); And that will get the sibling image1 widget for the instance of window1 that this treewidget1 exists under. And cache it away in a hash so that next time it's faster. Dan From james@teyandei.net Mon Oct 13 17:23:15 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from plain.rackshack.net (unknown [66.98.136.24]) by mail.gnome.org (Postfix) with ESMTP id 107C8189E8 for ; Mon, 13 Oct 2003 17:23:15 -0400 (EDT) Received: (qmail 28330 invoked from network); 13 Oct 2003 21:22:09 -0000 Received: from adsl-209.142.189.150-rb.spt.centurytel.net (HELO teyandei.net) (209.142.189.150) by 66.98.136.24 with AES256-SHA encrypted SMTP; 13 Oct 2003 21:22:09 -0000 Message-ID: <3F8B17D6.1000006@teyandei.net> Date: Mon, 13 Oct 2003 16:23:34 -0500 From: James Curbo User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5b) Gecko/20030901 Thunderbird/0.2 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Dan Lyke Cc: gtk-perl list Subject: Re: Newbie trying to get started References: <1065806906.1158.35.camel@localhost.localdomain> <2C34285E-FC54-11D7-A7ED-000A9580E5E0@asofyet.org> <16265.53002.567084.163608@flutterby.com> <3F8A3B88.1020403@teyandei.net> <16266.25693.808557.156433@flutterby.com> In-Reply-To: <16266.25693.808557.156433@flutterby.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Dan Lyke wrote: > I think you're missing my bit of functionality, as my code is actually > calling this. Say you've got your basic filebrowser thingie; browse a > filesystem with a treeview, and displays images in an image when an > appropriate node is activated. Oh, I see. Sorry, I was tired and just glanced over your code. Looks pretty nice. > Dan James From bosteins@broadpark.no Mon Oct 13 18:12:38 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.broadpark.no (mail.broadpark.no [217.13.4.2]) by mail.gnome.org (Postfix) with ESMTP id 81864180E7 for ; Mon, 13 Oct 2003 18:12:37 -0400 (EDT) Received: from broadpark.no (169.80-203-5.nextgentel.com [80.203.5.169]) by mail.broadpark.no (Postfix) with ESMTP id 71CDA78EC1; Tue, 14 Oct 2003 00:12:49 +0200 (MEST) Message-ID: <3F8B230D.4020200@broadpark.no> Date: Tue, 14 Oct 2003 00:11:25 +0200 From: =?ISO-8859-1?Q?Bjarne_Steinsb=F8?= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 X-Accept-Language: en-us, en MIME-Version: 1.0 To: muppet Cc: gtk-perl-list@gnome.org Subject: Re: Subclassing Gtk2::CellRenderer (reprise) References: <14431.192.146.101.12.1065826001.spork@webmail.asofyet.org> In-Reply-To: <14431.192.146.101.12.1065826001.spork@webmail.asofyet.org> Content-Type: multipart/mixed; boundary="------------000600050600070809040304" Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: This is a multi-part message in MIME format. --------------000600050600070809040304 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit First impression is "Wow!". Not only does it show how to sub-class a renderer (from what I can see, this is 90-95% of what I need in my application, directly from your example code), it also gives good hints at how to sub-class other classes (if that should turn out to be necessary or desired), and there's even an example of how to create and use a "raw" ListStore. Tusen takk! Visually distinguishing the cells with the special renderer can be done by simply painting an arrow in front of the text. Please see attached diff. It doesn't really look like an arrow at this font size, but still... Doesn't look too bad, does it? Bjarne --------------000600050600070809040304 Content-Type: text/plain; name="diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="diff" *** Gtk2-CellRenderer-Base-0.01/example.pl Sat Oct 11 00:12:42 2003 --- myexample.pl Mon Oct 13 23:58:44 2003 *************** *** 33,43 **** use constant xpad => 3; use constant ypad => 2; sub calc_size { my ($cell, $layout) = @_; my ($w, $h) = $layout->get_pixel_size; ! return (xpad, ypad, $w + xpad * 2, $h + ypad * 2); } sub on_get_size { --- 33,46 ---- use constant xpad => 3; use constant ypad => 2; + # Arrow will use text height and ypad + use constant arrow_width => 5; + use constant arrow_xpad => 5; sub calc_size { my ($cell, $layout) = @_; my ($w, $h) = $layout->get_pixel_size; ! return (xpad, ypad, $w + xpad * 2 + arrow_width + arrow_xpad * 2, $h + ypad * 2); } sub on_get_size { *************** *** 49,55 **** sub get_layout { my ($cell, $widget) = @_; ! return $widget->create_pango_layout (""); } sub on_render { --- 52,59 ---- sub get_layout { my ($cell, $widget) = @_; ! return $cell->{layout} if defined $cell->{layout}; ! return $cell->{layout} = $widget->create_pango_layout (""); } sub on_render { *************** *** 77,87 **** my $layout = $cell->get_layout ($widget); $layout->set_text ($cell->{list}[$cell->{index}]); my ($xoff, $yoff, $width, $height) = $cell->calc_size ($layout); $widget->get_style->paint_layout ($window, $state, 1, $cell_area, $widget, "cellrenderertext", ! $cell_area->x+$xoff, $cell_area->y+$yoff + ($cell_area->height - $height) / 2, $layout); --- 81,98 ---- my $layout = $cell->get_layout ($widget); $layout->set_text ($cell->{list}[$cell->{index}]); my ($xoff, $yoff, $width, $height) = $cell->calc_size ($layout); + + $widget->get_style->paint_arrow ($window, $state, 'none', + $cell_area, $widget, "", + 'down', 0, + $cell_area->x+$xoff, + $cell_area->y+$yoff + ($cell_area->height - $height) / 2, + arrow_width, $cell_area->height); $widget->get_style->paint_layout ($window, $state, 1, $cell_area, $widget, "cellrenderertext", ! $cell_area->x+$xoff + arrow_width + arrow_xpad, $cell_area->y+$yoff + ($cell_area->height - $height) / 2, $layout); *************** *** 156,161 **** --- 167,175 ---- [ 'flurble', [qw/murble swurble curble/]], [ 'frob', [qw/blob clob plob mob rob gob glob wob dob/]], [ 'frobnitz', [qw/fronbination that's sweepin' the nation/]], + # [ 'repeated', [qw/fronbination that's sweepin' the nation the the the the/]], + # [ 'none', [], + # [ 'verymany', [(1..50)]], [ 'ftang', [qw/quisinart/]], [ 'fire truck', [qw/red white green yellow polka-dot/]]) { my $iter = $model->append; --------------000600050600070809040304-- From bboett@bboett.dyndns.org Mon Oct 13 18:25:38 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mwinf0103.wanadoo.fr (smtp1.wanadoo.fr [193.252.22.30]) by mail.gnome.org (Postfix) with ESMTP id E617F180E7 for ; Mon, 13 Oct 2003 18:25:37 -0400 (EDT) Received: from bboett.dyndns.org (AStrasbourg-207-1-8-133.w81-248.abo.wanadoo.fr [81.248.60.133]) by mwinf0103.wanadoo.fr (SMTP Server) with ESMTP id 719321BF20C3 for ; Tue, 14 Oct 2003 00:25:51 +0200 (CEST) Received: by bboett.dyndns.org (Postfix, from userid 1000) id 6CD4F2F3F; Tue, 14 Oct 2003 00:25:47 +0200 (CEST) Date: Tue, 14 Oct 2003 00:25:47 +0200 To: gtk-perl-list@gnome.org Subject: stupid question... Message-ID: <20031013222547.GU5248@adlp.org> Reply-To: bboett@adlp.org Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline User-Agent: Mutt/1.5.4i From: bboett@bboett.dyndns.org (Bruno Boettcher) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Hello! as usual i am stuck with what's likely to be a real stupid problem... i have a dialog which has the prupose to present the advancement of downloads... so i add h-boxes which contain a progessbar and 2 labels caracterising the different downloads (ok this is not a real beauty since the progressbars are of different lengths.. but thats a secondary problem.)... after creating, filling and adding the vbox i call a show_all on it, and this works fine when the dialog is called... the actual transfers show up as progress bars, the updating of the progressbars works nicely... the problem i have is when other downloads are started... they won't show up in the dialog.... i have to destroy the window and call another one to see the new trasnfers... thought show_all goes recursively through teh container and scedules the action of making the widgets visible?? what am i doing wrong? -- ciao bboett ============================================================== bboett@adlp.org http://inforezo.u-strasbg.fr/~bboett =============================================================== From scott@asofyet.org Mon Oct 13 18:42:10 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id 254AA180E7 for ; Mon, 13 Oct 2003 18:42:10 -0400 (EDT) Received: from webmail.asofyet.org (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id A970AFA21 for ; Mon, 13 Oct 2003 15:42:20 -0700 (PDT) Received: from 64.191.132.172 (SquirrelMail authenticated user scott@asofyet.org) by webmail.asofyet.org with HTTP; Mon, 13 Oct 2003 18:42:20 -0400 (EDT) Message-ID: <56655.64.191.132.172.1066084940.spork@webmail.asofyet.org> In-Reply-To: <20031013222547.GU5248@adlp.org> References: <20031013222547.GU5248@adlp.org> Date: Mon, 13 Oct 2003 18:42:20 -0400 (EDT) Subject: Re: stupid question... From: "muppet" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Bruno Boettcher said: > i have a dialog which has the prupose to present the advancement of > downloads... now that i know have the hammer that can create new cell renderers, suddenly everything starts looking like a nail... but your new hboxes should indeed show up. > so i add h-boxes which contain a progessbar and 2 labels caracterising > the different downloads ... after creating, filling and adding the vbox > i call a show_all on it, and this works fine when the dialog is called... > > the actual transfers show up as progress bars, the updating of the > progressbars works nicely... > > the problem i have is when other downloads are started... they won't > show up in the dialog.... i have to destroy the window and call another > one to see the new trasnfers... > > thought show_all goes recursively through teh container and scedules the > action of making the widgets visible?? > > what am i doing wrong? each time you have a new download coming in, do you create and add the hbox to the vbox? pack_start and show_all should do what you want. you may possibly also need a $window->queue_resize after calling pack_start, unless the vbox is inside a scrolled window. i can't tell you much more without seeing the code. -- muppet From alas@widomaker.com Mon Oct 13 19:31:08 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from webmail.widomaker.com (webmail.widomaker.com [204.17.220.4]) by mail.gnome.org (Postfix) with ESMTP id 2D83518132 for ; Mon, 13 Oct 2003 19:31:08 -0400 (EDT) Received: from webmail.widomaker.com (localhost [127.0.0.1]) by webmail.widomaker.com (8.12.9/8.12.9) with ESMTP id h9DNVqjF065082; Mon, 13 Oct 2003 19:31:52 -0400 (EDT) (envelope-from alas@widomaker.com) Received: (from nobody@localhost) by webmail.widomaker.com (8.12.9/8.12.9/Submit) id h9DNVqER065081; Mon, 13 Oct 2003 19:31:52 -0400 (EDT) X-Authentication-Warning: webmail.widomaker.com: nobody set sender to alas@widomaker.com using -f To: bboett@adlp.org, Bruno Boettcher Subject: Re: stupid question... Message-ID: <1066087912.3f8b35e80e05e@webmail.widomaker.com> Date: Mon, 13 Oct 2003 19:31:52 -0400 (EDT) From: Chas Owens Cc: gtk-perl-list@gnome.org References: <20031013222547.GU5248@adlp.org> In-Reply-To: <20031013222547.GU5248@adlp.org> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit User-Agent: IMP/PHP IMAP webmail program 2.2.6 X-Originating-IP: 199.244.214.30 X-Webmail: Report abuse to abuse@widomaker.com Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Quoting Bruno Boettcher : > the problem i have is when other downloads are started... they won't > show up in the dialog.... i have to destroy the window and call > another one to see the new trasnfers... Are you creating all of these from one callback? If so then you are being bitten by the fact that Perl is not multi-threaded (or at least not in this case). You probably need to put a Gtk2->main_iteration while Gtk2->events_pending; Inside various loops within your callback. It is a good idea to do this whenever you may have heavy processing inside a callback (ie large loops). For the longest time in Perl-Gtk I had a problem where the autoresize function of Gtk::CList would not autoresize to list properly. It turned out that I was missing the signal because it was being raised while I was in the callback putting large amounts of data in the Gtk::CList. The addition of that one line of code inside my loop fixed the problem. N.B. It will slow down your code, but the GUI itself will be more responsive giving the appearance of faster code (funny eh?). From bboett@bboett.dyndns.org Tue Oct 14 11:31:24 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mwinf0104.wanadoo.fr (smtp1.wanadoo.fr [193.252.22.30]) by mail.gnome.org (Postfix) with ESMTP id 93AA2180DF for ; Tue, 14 Oct 2003 11:31:24 -0400 (EDT) Received: from bboett.dyndns.org (AStrasbourg-207-1-9-236.w81-249.abo.wanadoo.fr [81.249.36.236]) by mwinf0104.wanadoo.fr (SMTP Server) with ESMTP id 9D2EF1BF7AC5 for ; Tue, 14 Oct 2003 17:31:37 +0200 (CEST) Received: by bboett.dyndns.org (Postfix, from userid 1000) id 3FE332F41; Tue, 14 Oct 2003 17:31:25 +0200 (CEST) Date: Tue, 14 Oct 2003 17:31:25 +0200 To: gtk-perl-list@gnome.org Subject: subclassing problem... Message-ID: <20031014153125.GX5248@adlp.org> Reply-To: bboett@adlp.org Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline User-Agent: Mutt/1.5.4i From: bboett@bboett.dyndns.org (Bruno Boettcher) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Hello, me again, with another stupid problem.... in the process of creating my logwindow, i found it annoying that the standard text buffer doesn't have per default the add text methods and the bahaviour to scroll to the end of the buffer, and this without to have to fiddle with indexes or other marks... so i subclassed the textbuffer.... and got scrapped at the constructor.... made something like this: our @ISA = qw(Gtk2::TextBuffer); sub new { my ($fs,$hashref,$tagtable) = @_; my $obj_ref; $obj_ref = Gtk2::TextBuffer->new($tagtable); #$obj_ref = SUPER::new($tagtable); bless $obj_ref, "POE::Helper::LogView"; return $obj_ref; }# sub new now like this it works, but its highly unsatisfactory that the version with SUPER doesn't.... anyone care to explain me why? -- ciao bboett ============================================================== bboett@adlp.org http://inforezo.u-strasbg.fr/~bboett =============================================================== From gavin.brown@uk.com Tue Oct 14 11:55:08 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.centralnic.net (unknown [212.18.224.18]) by mail.gnome.org (Postfix) with ESMTP id BD3EB180DF for ; Tue, 14 Oct 2003 11:55:07 -0400 (EDT) Received: from lon-staffgw-1.centralnic.net ([212.18.224.152] helo=aqua.jodrell.net) by mail.centralnic.net with esmtp (Exim 4.22) id 1A9RW6-0000Eq-Mj; Tue, 14 Oct 2003 16:55:22 +0100 From: Gavin Brown Reply-To: gavin.brown@uk.com To: bboett@adlp.org Cc: gtk-perl-list@gnome.org In-Reply-To: <20031014153125.GX5248@adlp.org> References: <20031014153125.GX5248@adlp.org> Message-Id: <1066146922.9431.3.camel@scimitar.jodrell.net> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.3 Date: 14 Oct 2003 16:55:22 +0100 Subject: Re: subclassing problem... Content-Type: text/plain Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Bruno wrote: > our @ISA = qw(Gtk2::TextBuffer); > sub new > { > my ($fs,$hashref,$tagtable) = @_; > my $obj_ref; > $obj_ref = Gtk2::TextBuffer->new($tagtable); > #$obj_ref = SUPER::new($tagtable); > > bless $obj_ref, "POE::Helper::LogView"; > > return $obj_ref; > }# sub new > > now like this it works, but its highly unsatisfactory that the version > with SUPER doesn't.... anyone care to explain me why? I used use base 'Gtk2::TextView'; sub new { my $package = shift; my $self = $package->SUPER::new; bless($self, $package); return $self; } for Gtk2::PodViewer. ISTR that I lifted it from a code snippet from Ross. Seems to work fine - why not give it a try? Gavin. -- Gavin Brown e: gavin.brown@uk.com w: http://jodrell.net/ PGP/GPG key ID: 891D8FCA From rwmcfa1@neces.com Tue Oct 14 12:42:21 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id 9F5B618AED for ; Tue, 14 Oct 2003 12:42:21 -0400 (EDT) Received: from webmail.neces.com (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id E3C2EFA42; Tue, 14 Oct 2003 09:42:35 -0700 (PDT) Received: from 192.146.101.12 (SquirrelMail authenticated user rwmcfa1@neces.com) by webmail.neces.com with HTTP; Tue, 14 Oct 2003 12:42:35 -0400 (EDT) Message-ID: <17481.192.146.101.12.1066149755.spork@webmail.neces.com> In-Reply-To: <20031014153125.GX5248@adlp.org> References: <20031014153125.GX5248@adlp.org> Date: Tue, 14 Oct 2003 12:42:35 -0400 (EDT) Subject: Re: subclassing problem... From: "Ross McFarland" To: bboett@adlp.org Cc: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Bruno Boettcher said: > > our @ISA = qw(Gtk2::TextBuffer); > sub new > { > my ($fs,$hashref,$tagtable) = @_; > my $obj_ref; > $obj_ref = Gtk2::TextBuffer->new($tagtable); > #$obj_ref = SUPER::new($tagtable); > > bless $obj_ref, "POE::Helper::LogView"; > > return $obj_ref; > }# sub new > > now like this it works, but its highly unsatisfactory that the version > with SUPER doesn't.... anyone care to explain me why? unrelated but possible problem, $fs should be the class name, $tagtable will be the third parameter, but what's $hashref? the reason the SUPER method above won't work is two fold: 1) SUPER is an object method, and you're not calling it on an object. 2) you need to bless the object before you could even call SUPER on it which in the case of a constructor is a chicken and egg problem. in short you don't really use SUPER to create objects. in it's simpliest form, the above code should probably be something like: our @ISA = qw(Gtk2::TextBuffer); sub new { my $class = shift; # shift this off first, then pass the rest of the args to # our parent's new, if we have specific things we're # interested in we should get them out here too return bless Gtk2::TextBuffer->new(@_), $class; }# sub new the faq entry describing all of this is here, have a look at it for how SUPER can be used.: http://gtk2-perl.sourceforge.net/faq/#16 i just updated it to include passing the parameters on down to the parent class too. -rm From alas@widomaker.com Tue Oct 14 12:43:10 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from webmail.widomaker.com (webmail.widomaker.com [204.17.220.4]) by mail.gnome.org (Postfix) with ESMTP id F3EDD18707 for ; Tue, 14 Oct 2003 12:43:09 -0400 (EDT) Received: from webmail.widomaker.com (localhost [127.0.0.1]) by webmail.widomaker.com (8.12.9/8.12.9) with ESMTP id h9EGiQjF066915; Tue, 14 Oct 2003 12:44:26 -0400 (EDT) (envelope-from alas@widomaker.com) Received: (from nobody@localhost) by webmail.widomaker.com (8.12.9/8.12.9/Submit) id h9EGiQA2066914; Tue, 14 Oct 2003 12:44:26 -0400 (EDT) X-Authentication-Warning: webmail.widomaker.com: nobody set sender to alas@widomaker.com using -f To: Chas Owens Subject: Re: "one file" Gtk2::GladeXML example Message-ID: <1066149866.3f8c27ea8d4c2@webmail.widomaker.com> Date: Tue, 14 Oct 2003 12:44:26 -0400 (EDT) From: Chas Owens Cc: gtk-perl mailing list MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="-MOQ10661498666e9eb07d307db7e3558d6748b94e80a0" User-Agent: IMP/PHP IMAP webmail program 2.2.6 X-Originating-IP: 199.244.214.30 X-Webmail: Report abuse to abuse@widomaker.com Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: This message is in MIME format. ---MOQ10661498666e9eb07d307db7e3558d6748b94e80a0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Instructions: tar xvfz test_glade-0.5.tgz cd test_glade-0.5 make ./test_glade NB: This time you will only need Inline::Files (no C compiler needed) FEATURES: inline images via xpm imbedded in the glade file inline images via jpg, png, gif, etc catted on the end (see Makefile) * custom Gtk2::SimpleList widget creation custom widget creation via Perl code embedded in the glade file ** multiple inline files TODO: remove Inline::Files requirement add more traditional glade code ( multiple domains widget creation without a top-level window ) make it OO * new ** Much for code added to the example. It is now a button you click to open a new window with the source code in it. ---MOQ10661498666e9eb07d307db7e3558d6748b94e80a0 Content-Type: application/x-compressed; name="test_glade-0.5.tgz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test_glade-0.5.tgz" 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 ---MOQ10661498666e9eb07d307db7e3558d6748b94e80a0-- From alas@widomaker.com Tue Oct 14 13:52:32 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from webmail.widomaker.com (webmail.widomaker.com [204.17.220.4]) by mail.gnome.org (Postfix) with ESMTP id E49EB1852B for ; Tue, 14 Oct 2003 13:52:31 -0400 (EDT) Received: from webmail.widomaker.com (localhost [127.0.0.1]) by webmail.widomaker.com (8.12.9/8.12.9) with ESMTP id h9EHrqjF067078 for ; Tue, 14 Oct 2003 13:53:52 -0400 (EDT) (envelope-from alas@widomaker.com) Received: (from nobody@localhost) by webmail.widomaker.com (8.12.9/8.12.9/Submit) id h9EHrpBo067077 for gtk-perl-list@gnome.org; Tue, 14 Oct 2003 13:53:51 -0400 (EDT) X-Authentication-Warning: webmail.widomaker.com: nobody set sender to alas@widomaker.com using -f To: gtk-perl mailing list Subject: What version is in Mandrake 9.2? Message-ID: <1066154031.3f8c382fa0465@webmail.widomaker.com> Date: Tue, 14 Oct 2003 13:53:51 -0400 (EDT) From: Chas Owens MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit User-Agent: IMP/PHP IMAP webmail program 2.2.6 X-Originating-IP: 199.244.214.30 X-Webmail: Report abuse to abuse@widomaker.com Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Does anyone know what version of Gtk2-Perl is going to be in Mandrake 9.2? From alas@widomaker.com Tue Oct 14 14:02:50 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from webmail.widomaker.com (webmail.widomaker.com [204.17.220.4]) by mail.gnome.org (Postfix) with ESMTP id 19030182C6 for ; Tue, 14 Oct 2003 14:02:50 -0400 (EDT) Received: from webmail.widomaker.com (localhost [127.0.0.1]) by webmail.widomaker.com (8.12.9/8.12.9) with ESMTP id h9EI4AjF067103; Tue, 14 Oct 2003 14:04:10 -0400 (EDT) (envelope-from alas@widomaker.com) Received: (from nobody@localhost) by webmail.widomaker.com (8.12.9/8.12.9/Submit) id h9EI4A9A067102; Tue, 14 Oct 2003 14:04:10 -0400 (EDT) X-Authentication-Warning: webmail.widomaker.com: nobody set sender to alas@widomaker.com using -f To: Chas Owens Subject: Re: What version is in Mandrake 9.2? Message-ID: <1066154650.3f8c3a9ab04b2@webmail.widomaker.com> Date: Tue, 14 Oct 2003 14:04:10 -0400 (EDT) From: Chas Owens Cc: gtk-perl mailing list References: <1066154031.3f8c382fa0465@webmail.widomaker.com> In-Reply-To: <1066154031.3f8c382fa0465@webmail.widomaker.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit User-Agent: IMP/PHP IMAP webmail program 2.2.6 X-Originating-IP: 199.244.214.30 X-Webmail: Report abuse to abuse@widomaker.com Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Quoting Chas Owens : > Does anyone know what version of Gtk2-Perl is going to be in Mandrake > 9.2? I found a package list that seems to say 0.95 for Glib and Gtk2, but no mention of Gnome2. Is Gnome2 included in Mandrake 9.2? perl-GD-2.07-3mdk.i586.rpm 117k Sep 04 17:26 perl-GTK-0.7009-1mdk.i586.rpm 610k Aug 26 12:49 perl-GTK-GLArea-0.7009-1mdk.i586.rpm 24k Aug 26 12:49 perl-GTK-GdkImlib-0.7009-1mdk.i586.rpm 35k Aug 26 12:50 perl-GTK-GdkPixbuf-0.7009-1mdk.i586.rpm 33k Aug 26 12:50 perl-GTK-Glade-0.7009-1mdk.i586.rpm 24k Aug 26 12:50 perl-GTK-Gnome-0.7009-1mdk.i586.rpm 306k Aug 26 12:51 perl-GTK-GtkHTML-0.7009-1mdk.i586.rpm 30k Aug 26 12:51 perl-Glib-0.95-3mdk.i586.rpm 109k Sep 15 09:01 perl-Gtk2-0.95-6mdk.i586.rpm 809k Aug 28 22:17 From jes@martnet.com Tue Oct 14 14:24:00 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from PCSB620.tju.edu (PCSB620.tju.edu [147.140.12.17]) by mail.gnome.org (Postfix) with ESMTP id 2252F18750 for ; Tue, 14 Oct 2003 14:24:00 -0400 (EDT) Received: from martnet.com (localhost.localdomain [127.0.0.1]) by PCSB620.tju.edu (8.12.8/8.12.5) with ESMTP id h9EIN7CC025039; Tue, 14 Oct 2003 14:23:08 -0400 Message-ID: <3F8C3F0B.9010106@martnet.com> Date: Tue, 14 Oct 2003 14:23:07 -0400 From: Joe Smith User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030702 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Chas Owens Cc: gtk-perl mailing list Subject: Re: "one file" Gtk2::GladeXML example References: <1066149866.3f8c27ea8d4c2@webmail.widomaker.com> In-Reply-To: <1066149866.3f8c27ea8d4c2@webmail.widomaker.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Chas Owens wrote: > FEATURES: > inline images via xpm imbedded in the glade file > inline images via jpg, png, gif, etc catted on the end (see Makefile) * > custom Gtk2::SimpleList widget creation > custom widget creation via Perl code embedded in the glade file ** > multiple inline files > ... Just a mechanical question: how do you create the tweaked Glade file? I see an emacs mode line - I guess you just edit the Glade output. Glade itself has no way to stuff data into the XML, correct? Delivered-To: gtk-perl-list@gnome.org Received: from webmail.widomaker.com (webmail.widomaker.com [204.17.220.4]) by mail.gnome.org (Postfix) with ESMTP id A48E618677 for ; Tue, 14 Oct 2003 14:46:34 -0400 (EDT) Received: from webmail.widomaker.com (localhost [127.0.0.1]) by webmail.widomaker.com (8.12.9/8.12.9) with ESMTP id h9EIltjF067214 for ; Tue, 14 Oct 2003 14:47:55 -0400 (EDT) (envelope-from alas@widomaker.com) Received: (from nobody@localhost) by webmail.widomaker.com (8.12.9/8.12.9/Submit) id h9EIltqx067213 for gtk-perl-list@gnome.org; Tue, 14 Oct 2003 14:47:55 -0400 (EDT) X-Authentication-Warning: webmail.widomaker.com: nobody set sender to alas@widomaker.com using -f To: gtk-perl mailing list Subject: Re: "one file" Gtk2::GladeXML example Message-ID: <1066157275.3f8c44db40e8f@webmail.widomaker.com> Date: Tue, 14 Oct 2003 14:47:55 -0400 (EDT) From: Chas Owens References: <1066149866.3f8c27ea8d4c2@webmail.widomaker.com> <3F8C3F0B.9010106@martnet.com> In-Reply-To: <3F8C3F0B.9010106@martnet.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit User-Agent: IMP/PHP IMAP webmail program 2.2.6 X-Originating-IP: 199.244.214.30 X-Webmail: Report abuse to abuse@widomaker.com Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Quoting Joe Smith : > Chas Owens wrote: > > > FEATURES: > > inline images via xpm imbedded in the glade file > > inline images via jpg, png, gif, etc catted on the end (see Makefile) > * > > custom Gtk2::SimpleList widget creation > > custom widget creation via Perl code embedded in the glade file ** > > multiple inline files > > ... > > Just a mechanical question: how do you create the tweaked Glade file? I > see an emacs mode line - I guess you just edit the Glade output. Glade > itself has no way to stuff data into the XML, correct? > > bit is actually put in there by Glade). I then open the file with Glade, make sure that I didn't hork the XML, and save it (this changes things like > to >). The theory behind code based custom widgets is that you may want to share the same glade file between several Perl scripts and want to cut down on the amount of code you have to copy & paste[1]. 1. This is actually a rationalization. I really just thought "Would't it be cool to just put the code to do the custom widget directly in the Glade file." From rwmcfa1@neces.com Tue Oct 14 14:58:13 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id 3017918ABD for ; Tue, 14 Oct 2003 14:58:13 -0400 (EDT) Received: from webmail.neces.com (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id E1716FA48 for ; Tue, 14 Oct 2003 11:58:27 -0700 (PDT) Received: from 192.146.101.12 (SquirrelMail authenticated user rwmcfa1@neces.com) by webmail.neces.com with HTTP; Tue, 14 Oct 2003 14:58:27 -0400 (EDT) Message-ID: <56058.192.146.101.12.1066157907.spork@webmail.neces.com> In-Reply-To: <1066154650.3f8c3a9ab04b2@webmail.widomaker.com> References: <1066154031.3f8c382fa0465@webmail.widomaker.com> <1066154650.3f8c3a9ab04b2@webmail.widomaker.com> Date: Tue, 14 Oct 2003 14:58:27 -0400 (EDT) Subject: Re: What version is in Mandrake 9.2? From: "Ross McFarland" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Chas Owens said: > Quoting Chas Owens : >> Does anyone know what version of Gtk2-Perl is going to be in Mandrake >> 9.2? > > I found a package list that seems to say 0.95 for Glib and Gtk2, but no > mention > of Gnome2. Is Gnome2 included in Mandrake 9.2? Gnome probably wasn't mature enough at that point to be included, as it's just now become useful since kaffee has been working on it, props to him. > perl-Glib-0.95-3mdk.i586.rpm 109k Sep 15 09:01 > perl-Gtk2-0.95-6mdk.i586.rpm 809k Aug 28 22:17 a perhaps more important question is whether or not this was their patched version. as many of you will remember there were some issues involved with exceptions a while back which lead to a change in behavior and the Glib->install_exception_handler stuff. prior to that due to the way that some of the mandrake tools were working (dieing/croaking across main loops) they had to patch Gtk2-Perl to allow them to do this (without core dumping, but perhaps with some other issues) in the manner they desired. muppet spent many a long night thinking about and working on this and those issues are issues no more because callback's can't really die, which they shouldn't be able to anyway, there' just no way to unwind the callstack in C/Glib properly. this is just a word of warning if they're running with a patched/modified Gtk2-Perl and if you upgrade the apps that make use of the die/croak in callbacks those apps may have problems until they're re-done to work with the new (safer) scheme. hopefully one of the mandrake guys on the list can give you a better answer, or prehaps correct me if i'm in err. -rm From tvignaud@mandrakesoft.com Tue Oct 14 16:45:24 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from vador.mandrakesoft.com (ezoffice.mandrakesoft.com [212.11.15.34]) by mail.gnome.org (Postfix) with ESMTP id 0F0561849D for ; Tue, 14 Oct 2003 16:45:24 -0400 (EDT) Received: from vador.mandrakesoft.com (localhost [127.0.0.1]) by vador.mandrakesoft.com (Postfix) with ESMTP id 2004C1BC8B; Tue, 14 Oct 2003 22:45:38 +0200 (CEST) To: Chas Owens Cc: gtk-perl mailing list Subject: Re: What version is in Mandrake 9.2? X-URL: From: Thierry Vignaud Organization: MandrakeSoft Date: Tue, 14 Oct 2003 20:45:38 +0000 In-Reply-To: <1066154031.3f8c382fa0465@webmail.widomaker.com> (Chas Owens's message of "Tue, 14 Oct 2003 13:53:51 -0400 (EDT)") Message-ID: User-Agent: Gnus/5.1002 (Gnus v5.10.2) Emacs/21.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Chas Owens writes: > Does anyone know what version of Gtk2-Perl is going to be in > Mandrake 9.2? in main: - perl-Glib-0.95 - perl-Gtk2-0.95 in contribs: - perl-Gnome2-0.32 - perl-Gnome2-Print-0.5 - perl-GnomeCanvas-0.28 - perl-Gtk2-GladeXML-0.90 - perl-GtkSpell-1.0.0 From tvignaud@mandrakesoft.com Tue Oct 14 16:48:30 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from vador.mandrakesoft.com (ezoffice.mandrakesoft.com [212.11.15.34]) by mail.gnome.org (Postfix) with ESMTP id D5AB518B63 for ; Tue, 14 Oct 2003 16:48:29 -0400 (EDT) Received: from vador.mandrakesoft.com (localhost [127.0.0.1]) by vador.mandrakesoft.com (Postfix) with ESMTP id BB9F41BC8B; Tue, 14 Oct 2003 22:48:44 +0200 (CEST) To: "Ross McFarland" Cc: gtk-perl-list@gnome.org Subject: Re: What version is in Mandrake 9.2? X-URL: <1066154650.3f8c3a9ab04b2@webmail.widomaker.com> <56058.192.146.101.12.1066157907.spork@webmail.neces.com> From: Thierry Vignaud Organization: MandrakeSoft Date: Tue, 14 Oct 2003 20:48:44 +0000 In-Reply-To: <56058.192.146.101.12.1066157907.spork@webmail.neces.com> (Ross McFarland's message of "Tue, 14 Oct 2003 14:58:27 -0400 (EDT)") Message-ID: User-Agent: Gnus/5.1002 (Gnus v5.10.2) Emacs/21.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: "Ross McFarland" writes: > > perl-Glib-0.95-3mdk.i586.rpm 109k Sep 15 09:01 > > perl-Gtk2-0.95-6mdk.i586.rpm 809k Aug 28 22:17 > > a perhaps more important question is whether or not this was their patched > version. as many of you will remember there were some issues involved with > exceptions a while back which lead to a change in behavior and the > Glib->install_exception_handler stuff. prior to that due to the way that some > of the mandrake tools were working (dieing/croaking across main > loops) they had to patch Gtk2-Perl to allow them to do this (without > core dumping, but perhaps with some other issues) in the manner they > desired. muppet spent many a long night thinking about and working > on this and those issues are issues no more because callback's can't > really die, which they shouldn't be able to anyway, there' just no > way to unwind the callstack in C/Glib properly. > > this is just a word of warning if they're running with a > patched/modified Gtk2-Perl and if you upgrade the apps that make use > of the die/croak in callbacks those apps may have problems until > they're re-done to work with the new (safer) scheme. > > hopefully one of the mandrake guys on the list can give you a better > answer, or prehaps correct me if i'm in err. for now, we still rely on patched gtk2-perl catching exceptions, unwind callstack and croak exception back From kaffeetisch@web.de Tue Oct 14 17:19:02 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp.web.de (smtp01.web.de [217.72.192.180]) by mail.gnome.org (Postfix) with ESMTP id 32C2518C03 for ; Tue, 14 Oct 2003 17:19:02 -0400 (EDT) Received: from [217.5.55.239] (helo=6-allhosts) by smtp.web.de with esmtp (WEB.DE 4.99 #459) id 1A9WZT-0006NG-00 for gtk-perl-list@gnome.org; Tue, 14 Oct 2003 23:19:12 +0200 Subject: Re: Subclassing Gtk2::CellRenderer (reprise) From: Torsten Schoenfeld To: gtk-perl-list@gnome.org In-Reply-To: <14431.192.146.101.12.1065826001.spork@webmail.asofyet.org> References: <14431.192.146.101.12.1065826001.spork@webmail.asofyet.org> Content-Type: multipart/mixed; boundary="=-RihvqZi6Xr6Zhfmxda31" Message-Id: <1066166182.5477.2.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Tue, 14 Oct 2003 23:19:07 +0200 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: --=-RihvqZi6Xr6Zhfmxda31 Content-Type: text/plain Content-Transfer-Encoding: 7bit On Sat, 2003-10-11 at 00:46, muppet wrote: > I had a brilliant idea in the shower this morning and couldn't let it drop > until i'd tried it. After a good bit of messing around, i have little sandbox > module that can implement a cell renderer in perl. If this works out, it > could be folded into the main Gtk2 module. To demonstrate how amazingly cool this is, I've attached two examples. The first one is a cell renderer for dates that pops down a calendar when a cell is to be edited. The second one shows a spin button instead of the normal text entry when editing a cell. Bye, -Torsten --=-RihvqZi6Xr6Zhfmxda31 Content-Disposition: attachment; filename=CellRendererDate.pl Content-Type: text/x-perl; name=CellRendererDate.pl; charset=iso-8859-15 Content-Transfer-Encoding: 7bit #!/usr/bin/perl -w use strict; use Gtk2 -init; package Gtk2::CellRendererDate; use Gtk2::CellRenderer::Base; use Glib::Object::Subclass "Gtk2::CellRenderer::Base", signals => { edited => { flags => [qw(run-last)], param_types => [qw(Glib::String Glib::Scalar)], }, }, properties => [ Glib::ParamSpec -> boolean("editable", "Editable", "Can I change that?", 0, [qw(readable writable)]), Glib::ParamSpec -> string("date", "Date", "What's the date again?", "", [qw(readable writable)]), ] ; use constant x_padding => 2; use constant y_padding => 3; use constant arrow_width => 15; use constant arrow_height => 15; our $popup_window; our $arrow = Gtk2::Arrow -> new("down", "none"); sub get_date_string { my ($cell) = @_; my ($year, $month, $day) = split(/\//, $cell -> { date }); return join("/", ($year, sprintf("%02d", $month), sprintf("%02d", $day))); } sub calc_size { my ($cell, $layout) = @_; my ($width, $height) = $layout -> get_pixel_size(); return (0, 0, $width + x_padding * 2 + arrow_width, $height + y_padding * 2); } sub on_get_size { my ($cell, $widget, $cell_area) = @_; my $layout = $cell -> get_layout($widget); $layout -> set_text($cell -> get_date_string()); return $cell -> calc_size($layout); } sub get_layout { my ($cell, $widget) = @_; return $widget -> create_pango_layout(""); } sub on_render { my ($cell, $window, $widget, $background_area, $cell_area, $expose_area, $flags) = @_; my $state; if (grep {/selected/} @$flags) { $state = $widget -> has_focus() ? 'selected' : 'active'; } else { $state = $widget -> state() eq 'insensitive' ? 'insensitive' : 'normal'; } my $layout = $cell -> get_layout($widget); $layout -> set_text($cell -> get_date_string()); my ($x_offset, $y_offset, $width, $height) = $cell -> calc_size($layout); $widget -> get_style -> paint_layout($window, $state, 1, $cell_area, $widget, "cellrenderertext", $cell_area -> x() + $x_offset + x_padding, $cell_area -> y() + $y_offset + y_padding, $layout); $widget -> get_style -> paint_arrow ($window, $widget->state, 'none', $cell_area, $arrow, "", "down", 1, $cell_area -> x + $cell_area -> width - arrow_width, $cell_area -> y + $cell_area -> height - arrow_height - 2, arrow_width - 3, arrow_height); } sub on_start_editing { my ($cell, $event, $view, $path, $background_area, $cell_area, $flags) = @_; if (defined($popup_window)) { $popup_window -> destroy(); $popup_window = undef; } my ($x_origin, $y_origin) = $view -> get_bin_window() -> get_origin(); my ($x_cell, $y_cell) = $view -> tree_to_widget_coords($cell_area -> x(), $cell_area -> y()); $popup_window = Gtk2::Window -> new("popup"); my $calendar = Gtk2::Calendar -> new(); my ($year, $month, $day) = split(/\//, $cell -> get_date_string()); $calendar -> select_month($month - 1, $year); $calendar -> select_day($day); $calendar -> display_options([qw(show_heading show_day_names week_start_monday)]); $calendar -> signal_connect(day_selected_double_click => sub { my ($calendar) = @_; $cell -> signal_emit(edited => $path, [$calendar -> get_date()]); $popup_window -> destroy(); $popup_window = undef; }); $popup_window -> move($x_origin + $x_cell, $y_origin + $y_cell + $cell_area -> height()); $popup_window -> add($calendar); $popup_window -> show_all(); return; } ############################################################################### package main; my $window = Gtk2::Window -> new("toplevel"); $window -> set_title ("CellRendererDate"); $window -> signal_connect (delete_event => sub { Gtk2 -> main_quit(); }); my $model = Gtk2::ListStore -> new(qw(Glib::String)); my $view = Gtk2::TreeView -> new($model); foreach (qw(2003/10/1 2003/10/2 2003/10/3)) { $model -> set($model -> append(), 0 => $_); } my $renderer = Gtk2::CellRendererDate -> new(); $renderer -> set(mode => "editable"); $renderer -> signal_connect(edited => sub { my ($cell, $path, $new_date) = @_; my ($year, $month, $day) = @{$new_date}; $model -> set($model -> get_iter(Gtk2::TreePath -> new_from_string($path)), 0 => join("/", ($year, $month + 1, $day))); }); my $column = Gtk2::TreeViewColumn -> new_with_attributes ("Date", $renderer, date => 0); $view -> append_column($column); $window -> add($view); $window -> show_all(); Gtk2 -> main(); --=-RihvqZi6Xr6Zhfmxda31 Content-Disposition: attachment; filename=CellRendererDate.png Content-Type: image/png; name=CellRendererDate.png Content-Transfer-Encoding: base64 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 --=-RihvqZi6Xr6Zhfmxda31 Content-Disposition: attachment; filename=CellRendererSpinButton.pl Content-Type: text/x-perl; name=CellRendererSpinButton.pl; charset=iso-8859-15 Content-Transfer-Encoding: 7bit #!/usr/bin/perl -w use strict; use Gtk2 -init; use Gtk2::Gdk::Keysyms; package Gtk2::CellRendererSpinButton; use POSIX qw(DBL_MAX UINT_MAX); use constant x_padding => 2; use constant y_padding => 3; use Gtk2::CellRenderer::Base; use Glib::Object::Subclass "Gtk2::CellRenderer::Base", signals => { edited => { flags => [qw(run-last)], param_types => [qw(Glib::String Glib::Double)], }, }, properties => [ Glib::ParamSpec -> boolean("editable", "Editable", "Can I change that?", 0, [qw(readable writable)]), Glib::ParamSpec -> uint("digits", "Digits", "How picky are you?", 0, UINT_MAX, 2, [qw(readable writable)]), map { Glib::ParamSpec -> double($_ -> [0], $_ -> [1], $_ -> [2], 0.0, DBL_MAX, $_ -> [3], [qw(readable writable)]) } (["value", "Value", "How much is the fish?", 0.0], ["min", "Min", "No way, I have to live!", 0.0], ["max", "Max", "Ah, you're too generous.", 100.0], ["step", "Step", "Okay.", 5.0]) ] ; sub calc_size { my ($cell, $layout) = @_; my ($width, $height) = $layout -> get_pixel_size(); return (0, 0, $width + x_padding * 2, $height + y_padding * 2); } sub on_get_size { my ($cell, $widget, $area) = @_; my $layout = $cell -> get_layout($widget); $layout -> set_text($cell -> get("value")); return $cell -> calc_size($layout); } sub get_layout { my ($cell, $widget) = @_; return $widget -> create_pango_layout(""); } sub on_render { my ($cell, $window, $widget, $background_area, $cell_area, $expose_area, $flags) = @_; my $state; if (grep {/selected/} @$flags) { $state = $widget -> has_focus() ? 'selected' : 'active'; } else { $state = $widget -> state() eq 'insensitive' ? 'insensitive' : 'normal'; } my $layout = $cell -> get_layout($widget); $layout -> set_text($cell -> get("value")); my ($x_offset, $y_offset, $width, $height) = $cell -> calc_size($layout); $widget -> get_style -> paint_layout($window, $state, 1, $cell_area, $widget, "cellrenderertext", $cell_area -> x() + $x_offset + x_padding, $cell_area -> y() + $y_offset + y_padding, $layout); } sub on_start_editing { my ($cell, $event, $view, $path, $background_area, $cell_area, $flags) = @_; my $spin_button = Gtk2::SpinButton -> new_with_range($cell -> get(qw(min max step))); $spin_button -> set_value($cell -> get("value")); $spin_button -> set_digits($cell -> get("digits")); $spin_button -> grab_focus(); $spin_button -> signal_connect(key_press_event => sub { my ($event_box, $event) = @_; if ($event -> keyval == $Gtk2::Gdk::Keysyms{ Return } || $event -> keyval == $Gtk2::Gdk::Keysyms{ KP_Enter }) { $spin_button -> update(); $cell -> signal_emit(edited => $path, $spin_button -> get_value()); $spin_button -> destroy(); return 1; } elsif ($event -> keyval == $Gtk2::Gdk::Keysyms{ Up }) { $spin_button -> spin('step-forward', ($spin_button -> get_increments())[0]); return 1; } elsif ($event -> keyval == $Gtk2::Gdk::Keysyms{ Down }) { $spin_button -> spin('step-backward', ($spin_button -> get_increments())[0]); return 1; } return 0; }); $spin_button -> show_all(); return $spin_button; } ############################################################################### package main; my $window = Gtk2::Window -> new("toplevel"); $window -> set_title ("CellRendererSpinButton"); $window -> signal_connect (delete_event => sub { Gtk2 -> main_quit(); }); my $model = Gtk2::ListStore -> new(qw(Glib::Double)); my $view = Gtk2::TreeView -> new($model); foreach (qw(12 12.1 12.12)) { $model -> set($model -> append(), 0 => $_); } my $renderer = Gtk2::CellRendererSpinButton -> new(); $renderer -> set(mode => "editable", min => 0, max => 1000, step => 2, digits => 2); $renderer -> signal_connect(edited => sub { my ($cell, $path, $new_value) = @_; $model -> set($model -> get_iter(Gtk2::TreePath -> new_from_string($path)), 0 => $new_value); }); my $column = Gtk2::TreeViewColumn -> new_with_attributes ("SpinButton", $renderer, value => 0); $view -> append_column($column); $window -> add($view); $window -> show_all(); Gtk2 -> main(); --=-RihvqZi6Xr6Zhfmxda31 Content-Disposition: attachment; filename=CellRendererSpinButton.png Content-Type: image/png; name=CellRendererSpinButton.png Content-Transfer-Encoding: base64 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 thNm4Raco/I9hwvk43K/OrwAAAAASUVORK5CYII= --=-RihvqZi6Xr6Zhfmxda31-- From rwmcfa1@neces.com Tue Oct 14 17:30:27 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id DC59218568 for ; Tue, 14 Oct 2003 17:30:26 -0400 (EDT) Received: from webmail.neces.com (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id 4EF54FA77 for ; Tue, 14 Oct 2003 14:30:40 -0700 (PDT) Received: from 192.146.101.12 (SquirrelMail authenticated user rwmcfa1@neces.com) by webmail.neces.com with HTTP; Tue, 14 Oct 2003 17:30:40 -0400 (EDT) Message-ID: <53120.192.146.101.12.1066167040.spork@webmail.neces.com> In-Reply-To: <1066166182.5477.2.camel@localhost> References: <14431.192.146.101.12.1065826001.spork@webmail.asofyet.org> <1066166182.5477.2.camel@localhost> Date: Tue, 14 Oct 2003 17:30:40 -0400 (EDT) Subject: Re: Subclassing Gtk2::CellRenderer (reprise) From: "Ross McFarland" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Torsten Schoenfeld said: > On Sat, 2003-10-11 at 00:46, muppet wrote: >> I had a brilliant idea in the shower this morning and couldn't let it drop >> until i'd tried it. After a good bit of messing around, i have little >> sandbox >> module that can implement a cell renderer in perl. If this works out, it >> could be folded into the main Gtk2 module. > > To demonstrate how amazingly cool this is, I've attached two examples. > > The first one is a cell renderer for dates that pops down a calendar > when a cell is to be edited. The second one shows a spin button instead > of the normal text entry when editing a cell. > > Bye, > -Torsten torsten +5 cool points... you might want to look into refining these and having them available as add on packages. -rm From kaffeetisch@gmx.de Tue Oct 14 17:20:17 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.gmx.net (pop.gmx.de [213.165.64.20]) by mail.gnome.org (Postfix) with SMTP id 621FB18BEE for ; Tue, 14 Oct 2003 17:20:13 -0400 (EDT) Received: (qmail 26211 invoked by uid 65534); 14 Oct 2003 21:20:19 -0000 Received: from pD90537EF.dip.t-dialin.net (EHLO 6-allhosts) (217.5.55.239) by mail.gmx.net (mp006) with SMTP; 14 Oct 2003 23:20:19 +0200 X-Authenticated: #2092818 Subject: Re: Subclassing Gtk2::CellRenderer (reprise) From: Torsten Schoenfeld To: gtk-perl-list@gnome.org In-Reply-To: <14431.192.146.101.12.1065826001.spork@webmail.asofyet.org> References: <14431.192.146.101.12.1065826001.spork@webmail.asofyet.org> Content-Type: multipart/mixed; boundary="=-ahtW0rSkXKz80WU51G97" Message-Id: <1066166410.5531.5.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Tue, 14 Oct 2003 23:20:10 +0200 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: --=-ahtW0rSkXKz80WU51G97 Content-Type: text/plain Content-Transfer-Encoding: 7bit On Sat, 2003-10-11 at 00:46, muppet wrote: > I had a brilliant idea in the shower this morning and couldn't let it drop > until i'd tried it. After a good bit of messing around, i have little sandbox > module that can implement a cell renderer in perl. If this works out, it > could be folded into the main Gtk2 module. To demonstrate how amazingly cool this is, I've attached two examples. The first one is a cell renderer for dates that pops down a calendar when a cell is to be edited. The second one shows a spin button instead of the normal text entry when editing a cell. Bye, -Torsten --=-ahtW0rSkXKz80WU51G97 Content-Disposition: attachment; filename=CellRendererDate.pl Content-Type: text/x-perl; name=CellRendererDate.pl; charset=iso-8859-15 Content-Transfer-Encoding: 7bit #!/usr/bin/perl -w use strict; use Gtk2 -init; package Gtk2::CellRendererDate; use Gtk2::CellRenderer::Base; use Glib::Object::Subclass "Gtk2::CellRenderer::Base", signals => { edited => { flags => [qw(run-last)], param_types => [qw(Glib::String Glib::Scalar)], }, }, properties => [ Glib::ParamSpec -> boolean("editable", "Editable", "Can I change that?", 0, [qw(readable writable)]), Glib::ParamSpec -> string("date", "Date", "What's the date again?", "", [qw(readable writable)]), ] ; use constant x_padding => 2; use constant y_padding => 3; use constant arrow_width => 15; use constant arrow_height => 15; our $popup_window; our $arrow = Gtk2::Arrow -> new("down", "none"); sub get_date_string { my ($cell) = @_; my ($year, $month, $day) = split(/\//, $cell -> { date }); return join("/", ($year, sprintf("%02d", $month), sprintf("%02d", $day))); } sub calc_size { my ($cell, $layout) = @_; my ($width, $height) = $layout -> get_pixel_size(); return (0, 0, $width + x_padding * 2 + arrow_width, $height + y_padding * 2); } sub on_get_size { my ($cell, $widget, $cell_area) = @_; my $layout = $cell -> get_layout($widget); $layout -> set_text($cell -> get_date_string()); return $cell -> calc_size($layout); } sub get_layout { my ($cell, $widget) = @_; return $widget -> create_pango_layout(""); } sub on_render { my ($cell, $window, $widget, $background_area, $cell_area, $expose_area, $flags) = @_; my $state; if (grep {/selected/} @$flags) { $state = $widget -> has_focus() ? 'selected' : 'active'; } else { $state = $widget -> state() eq 'insensitive' ? 'insensitive' : 'normal'; } my $layout = $cell -> get_layout($widget); $layout -> set_text($cell -> get_date_string()); my ($x_offset, $y_offset, $width, $height) = $cell -> calc_size($layout); $widget -> get_style -> paint_layout($window, $state, 1, $cell_area, $widget, "cellrenderertext", $cell_area -> x() + $x_offset + x_padding, $cell_area -> y() + $y_offset + y_padding, $layout); $widget -> get_style -> paint_arrow ($window, $widget->state, 'none', $cell_area, $arrow, "", "down", 1, $cell_area -> x + $cell_area -> width - arrow_width, $cell_area -> y + $cell_area -> height - arrow_height - 2, arrow_width - 3, arrow_height); } sub on_start_editing { my ($cell, $event, $view, $path, $background_area, $cell_area, $flags) = @_; if (defined($popup_window)) { $popup_window -> destroy(); $popup_window = undef; } my ($x_origin, $y_origin) = $view -> get_bin_window() -> get_origin(); my ($x_cell, $y_cell) = $view -> tree_to_widget_coords($cell_area -> x(), $cell_area -> y()); $popup_window = Gtk2::Window -> new("popup"); my $calendar = Gtk2::Calendar -> new(); my ($year, $month, $day) = split(/\//, $cell -> get_date_string()); $calendar -> select_month($month - 1, $year); $calendar -> select_day($day); $calendar -> display_options([qw(show_heading show_day_names week_start_monday)]); $calendar -> signal_connect(day_selected_double_click => sub { my ($calendar) = @_; $cell -> signal_emit(edited => $path, [$calendar -> get_date()]); $popup_window -> destroy(); $popup_window = undef; }); $popup_window -> move($x_origin + $x_cell, $y_origin + $y_cell + $cell_area -> height()); $popup_window -> add($calendar); $popup_window -> show_all(); return; } ############################################################################### package main; my $window = Gtk2::Window -> new("toplevel"); $window -> set_title ("CellRendererDate"); $window -> signal_connect (delete_event => sub { Gtk2 -> main_quit(); }); my $model = Gtk2::ListStore -> new(qw(Glib::String)); my $view = Gtk2::TreeView -> new($model); foreach (qw(2003/10/1 2003/10/2 2003/10/3)) { $model -> set($model -> append(), 0 => $_); } my $renderer = Gtk2::CellRendererDate -> new(); $renderer -> set(mode => "editable"); $renderer -> signal_connect(edited => sub { my ($cell, $path, $new_date) = @_; my ($year, $month, $day) = @{$new_date}; $model -> set($model -> get_iter(Gtk2::TreePath -> new_from_string($path)), 0 => join("/", ($year, $month + 1, $day))); }); my $column = Gtk2::TreeViewColumn -> new_with_attributes ("Date", $renderer, date => 0); $view -> append_column($column); $window -> add($view); $window -> show_all(); Gtk2 -> main(); --=-ahtW0rSkXKz80WU51G97 Content-Disposition: attachment; filename=CellRendererDate.png Content-Type: image/png; name=CellRendererDate.png Content-Transfer-Encoding: base64 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 --=-ahtW0rSkXKz80WU51G97 Content-Disposition: attachment; filename=CellRendererSpinButton.pl Content-Type: text/x-perl; name=CellRendererSpinButton.pl; charset=iso-8859-15 Content-Transfer-Encoding: 7bit #!/usr/bin/perl -w use strict; use Gtk2 -init; use Gtk2::Gdk::Keysyms; package Gtk2::CellRendererSpinButton; use POSIX qw(DBL_MAX UINT_MAX); use constant x_padding => 2; use constant y_padding => 3; use Gtk2::CellRenderer::Base; use Glib::Object::Subclass "Gtk2::CellRenderer::Base", signals => { edited => { flags => [qw(run-last)], param_types => [qw(Glib::String Glib::Double)], }, }, properties => [ Glib::ParamSpec -> boolean("editable", "Editable", "Can I change that?", 0, [qw(readable writable)]), Glib::ParamSpec -> uint("digits", "Digits", "How picky are you?", 0, UINT_MAX, 2, [qw(readable writable)]), map { Glib::ParamSpec -> double($_ -> [0], $_ -> [1], $_ -> [2], 0.0, DBL_MAX, $_ -> [3], [qw(readable writable)]) } (["value", "Value", "How much is the fish?", 0.0], ["min", "Min", "No way, I have to live!", 0.0], ["max", "Max", "Ah, you're too generous.", 100.0], ["step", "Step", "Okay.", 5.0]) ] ; sub calc_size { my ($cell, $layout) = @_; my ($width, $height) = $layout -> get_pixel_size(); return (0, 0, $width + x_padding * 2, $height + y_padding * 2); } sub on_get_size { my ($cell, $widget, $area) = @_; my $layout = $cell -> get_layout($widget); $layout -> set_text($cell -> get("value")); return $cell -> calc_size($layout); } sub get_layout { my ($cell, $widget) = @_; return $widget -> create_pango_layout(""); } sub on_render { my ($cell, $window, $widget, $background_area, $cell_area, $expose_area, $flags) = @_; my $state; if (grep {/selected/} @$flags) { $state = $widget -> has_focus() ? 'selected' : 'active'; } else { $state = $widget -> state() eq 'insensitive' ? 'insensitive' : 'normal'; } my $layout = $cell -> get_layout($widget); $layout -> set_text($cell -> get("value")); my ($x_offset, $y_offset, $width, $height) = $cell -> calc_size($layout); $widget -> get_style -> paint_layout($window, $state, 1, $cell_area, $widget, "cellrenderertext", $cell_area -> x() + $x_offset + x_padding, $cell_area -> y() + $y_offset + y_padding, $layout); } sub on_start_editing { my ($cell, $event, $view, $path, $background_area, $cell_area, $flags) = @_; my $spin_button = Gtk2::SpinButton -> new_with_range($cell -> get(qw(min max step))); $spin_button -> set_value($cell -> get("value")); $spin_button -> set_digits($cell -> get("digits")); $spin_button -> grab_focus(); $spin_button -> signal_connect(key_press_event => sub { my ($event_box, $event) = @_; if ($event -> keyval == $Gtk2::Gdk::Keysyms{ Return } || $event -> keyval == $Gtk2::Gdk::Keysyms{ KP_Enter }) { $spin_button -> update(); $cell -> signal_emit(edited => $path, $spin_button -> get_value()); $spin_button -> destroy(); return 1; } elsif ($event -> keyval == $Gtk2::Gdk::Keysyms{ Up }) { $spin_button -> spin('step-forward', ($spin_button -> get_increments())[0]); return 1; } elsif ($event -> keyval == $Gtk2::Gdk::Keysyms{ Down }) { $spin_button -> spin('step-backward', ($spin_button -> get_increments())[0]); return 1; } return 0; }); $spin_button -> show_all(); return $spin_button; } ############################################################################### package main; my $window = Gtk2::Window -> new("toplevel"); $window -> set_title ("CellRendererSpinButton"); $window -> signal_connect (delete_event => sub { Gtk2 -> main_quit(); }); my $model = Gtk2::ListStore -> new(qw(Glib::Double)); my $view = Gtk2::TreeView -> new($model); foreach (qw(12 12.1 12.12)) { $model -> set($model -> append(), 0 => $_); } my $renderer = Gtk2::CellRendererSpinButton -> new(); $renderer -> set(mode => "editable", min => 0, max => 1000, step => 2, digits => 2); $renderer -> signal_connect(edited => sub { my ($cell, $path, $new_value) = @_; $model -> set($model -> get_iter(Gtk2::TreePath -> new_from_string($path)), 0 => $new_value); }); my $column = Gtk2::TreeViewColumn -> new_with_attributes ("SpinButton", $renderer, value => 0); $view -> append_column($column); $window -> add($view); $window -> show_all(); Gtk2 -> main(); --=-ahtW0rSkXKz80WU51G97 Content-Disposition: attachment; filename=CellRendererSpinButton.png Content-Type: image/png; name=CellRendererSpinButton.png Content-Transfer-Encoding: base64 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 thNm4Raco/I9hwvk43K/OrwAAAAASUVORK5CYII= --=-ahtW0rSkXKz80WU51G97-- From bosteins@broadpark.no Wed Oct 15 08:27:10 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.broadpark.no (mail.broadpark.no [217.13.4.2]) by mail.gnome.org (Postfix) with ESMTP id 71F2418876 for ; Wed, 15 Oct 2003 08:27:10 -0400 (EDT) Received: from broadpark.no (169.80-203-5.nextgentel.com [80.203.5.169]) by mail.broadpark.no (Postfix) with ESMTP id B979479960; Wed, 15 Oct 2003 14:27:24 +0200 (MEST) Message-ID: <3F8D3CDD.9000408@broadpark.no> Date: Wed, 15 Oct 2003 14:26:05 +0200 From: =?ISO-8859-1?Q?Bjarne_Steinsb=F8?= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Torsten Schoenfeld Cc: gtk-perl-list@gnome.org Subject: Re: Subclassing Gtk2::CellRenderer (reprise) References: <14431.192.146.101.12.1065826001.spork@webmail.asofyet.org> <1066166410.5531.5.camel@localhost> In-Reply-To: <1066166410.5531.5.camel@localhost> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Torsten Schoenfeld wrote: >On Sat, 2003-10-11 at 00:46, muppet wrote: > > >>I had a brilliant idea in the shower this morning and couldn't let it drop >>until i'd tried it. After a good bit of messing around, i have little sandbox >>module that can implement a cell renderer in perl. If this works out, it >>could be folded into the main Gtk2 module. >> >> > >To demonstrate how amazingly cool this is, I've attached two examples. > >The first one is a cell renderer for dates that pops down a calendar >when a cell is to be edited. The second one shows a spin button instead >of the normal text entry when editing a cell. > > This is just sooo great. Here I am, thinking about having to write a renderer for entering dates. And before I even get started, Torsten provides a finished solution that looks great. Vielen Danke, Torsten! Wonder what happens when I start thinking about a renderer for sets/flags (select multiple from a list). Or sub-classing the TreeStore... :-) Bjarne From scott@asofyet.org Wed Oct 15 09:50:13 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id A0449181A0 for ; Wed, 15 Oct 2003 09:50:13 -0400 (EDT) Received: from webmail.asofyet.org (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id 4C317FA76 for ; Wed, 15 Oct 2003 06:50:28 -0700 (PDT) Received: from 192.146.101.7 (SquirrelMail authenticated user scott@asofyet.org) by webmail.asofyet.org with HTTP; Wed, 15 Oct 2003 09:50:28 -0400 (EDT) Message-ID: <38178.192.146.101.7.1066225828.spork@webmail.asofyet.org> In-Reply-To: <3F8D3CDD.9000408@broadpark.no> References: <14431.192.146.101.12.1065826001.spork@webmail.asofyet.org> <1066166410.5531.5.camel@localhost> <3F8D3CDD.9000408@broadpark.no> Date: Wed, 15 Oct 2003 09:50:28 -0400 (EDT) Subject: Re: Subclassing Gtk2::CellRenderer (reprise) From: "muppet" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Bjarne Steinsbø said: > Torsten Schoenfeld wrote: >>To demonstrate how amazingly cool this is, I've attached two examples. [snip] >> > This is just sooo great. Here I am, thinking about having to write a > renderer for entering dates. And before I even get started, Torsten > provides a finished solution that looks great. well, not "finished" yet; this stuff is highly experimental! hot on the heels of torsten's work on the renderers, i'm retooling the cellrenderer class stuff to behave a little better. after a bit of hacking last night, i created something that will let you create a new subclass of *any* cell renderer, by fiddling with the type system on the fly in XS. i will post more info about this, and some code, later today. > Wonder what happens when I start thinking about a renderer for > sets/flags (select multiple from a list). Or sub-classing the > TreeStore... :-) heh, i have ideas for that, but no code... yet. implementing a treemodel requires the ability to implement GInterfaces, which currently doesn't exist in gtk2-perl. my current plans for that are to have each interface offer a constructor to which you supply references to the functions you want to be called; that constructor puts together the proper marshalling for your functions and returns a GInterface which you can supply to Glib::Type::register (or Glib::Object::Subclass). this will require a fair amount of machinery in Glib, but should be generally useful. if you'd like to be my guinea pig for the treemodel subclassing stuff, let me know. :-) -- muppet From bosteins@broadpark.no Wed Oct 15 16:28:46 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.broadpark.no (mail.broadpark.no [217.13.4.2]) by mail.gnome.org (Postfix) with ESMTP id E79951819E for ; Wed, 15 Oct 2003 16:28:45 -0400 (EDT) Received: from broadpark.no (169.80-203-5.nextgentel.com [80.203.5.169]) by mail.broadpark.no (Postfix) with ESMTP id 776767A639; Wed, 15 Oct 2003 22:29:00 +0200 (MEST) Message-ID: <3F8DADBD.2000209@broadpark.no> Date: Wed, 15 Oct 2003 22:27:41 +0200 From: =?ISO-8859-1?Q?Bjarne_Steinsb=F8?= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 X-Accept-Language: en-us, en MIME-Version: 1.0 To: muppet Cc: gtk-perl-list@gnome.org Subject: Re: Subclassing Gtk2::CellRenderer (reprise) References: <14431.192.146.101.12.1065826001.spork@webmail.asofyet.org> <1066166410.5531.5.camel@localhost> <3F8D3CDD.9000408@broadpark.no> <38178.192.146.101.7.1066225828.spork@webmail.asofyet.org> In-Reply-To: <38178.192.146.101.7.1066225828.spork@webmail.asofyet.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: muppet wrote: >Bjarne Steinsbø said: > > >>Torsten Schoenfeld wrote: >> >> >>>To demonstrate how amazingly cool this is, I've attached two examples. >>> >>> >[snip] > > >>This is just sooo great. Here I am, thinking about having to write a >>renderer for entering dates. And before I even get started, Torsten >>provides a finished solution that looks great. >> >> > >well, not "finished" yet; this stuff is highly experimental! > > Finished or not, it seems to work already! Of course I have not tried it out in production yet, and of course it could be further improved. But still... It's bl**dy marvelous! >hot on the heels of torsten's work on the renderers, i'm retooling the >cellrenderer class stuff to behave a little better. after a bit of hacking >last night, i created something that will let you create a new subclass of >*any* cell renderer, by fiddling with the type system on the fly in XS. > >i will post more info about this, and some code, later today. > Looking forward to it. >>Wonder what happens when I start thinking about a renderer for >>sets/flags (select multiple from a list). Or sub-classing the >>TreeStore... :-) >> >> > >heh, i have ideas for that, but no code... yet. implementing a treemodel >requires the ability to implement GInterfaces, which currently doesn't exist >in gtk2-perl. my current plans for that are to have each interface offer a >constructor to which you supply references to the functions you want to be >called; that constructor puts together the proper marshalling for your >functions and returns a GInterface which you can supply to >Glib::Type::register (or Glib::Object::Subclass). this will require a fair >amount of machinery in Glib, but should be generally useful. > >if you'd like to be my guinea pig for the treemodel subclassing stuff, let me >know. :-) > Sure! Keep the good stuff coming! I have no idea what you're talking about, nor what I'm agreeing to. But being a guinea pig is normally fun! :-) Bjarne From scott@asofyet.org Wed Oct 15 21:58:23 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smeagol.dreamhost.com (smeagol.dreamhost.com [66.33.209.5]) by mail.gnome.org (Postfix) with ESMTP id A753A18134 for ; Wed, 15 Oct 2003 21:58:23 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by smeagol.dreamhost.com (Postfix) with ESMTP id ABD6E2383D for ; Wed, 15 Oct 2003 18:58:37 -0700 (PDT) Date: Wed, 15 Oct 2003 21:58:44 -0400 Subject: Re: Subclassing Gtk2::CellRenderer (reprise) Content-Type: text/plain; charset=US-ASCII; format=flowed Mime-Version: 1.0 (Apple Message framework v552) From: muppet To: gtk-perl list Content-Transfer-Encoding: 7bit In-Reply-To: <38178.192.146.101.7.1066225828.spork@webmail.asofyet.org> Message-Id: <46265112-FF7C-11D7-9F0D-000A9580E5E0@asofyet.org> X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Wednesday, October 15, 2003, at 09:50 AM, muppet wrote: > i will post more info about this, and some code, later today. everything you need is at http://asofyet.org/muppet/software/gtk2-perl/ Gtk2-CellRenderer-Base-0.03.tar.gz this requires that you patch Glib and Gtk2: Glib-1.00-type_utils.patch Gtk2-1.00-get_child_requisition.patch Gtk2-1.00-style_ornull.patch for those working against current cvs, there's also cellrendererstuff.patch the archive includes both of Tortsten's way cool renderers, my original hack at the popup renderer (now new and improved with y'all's patches), and a new hack, fancy.pl. fancy.pl is very ugly, but illustrates deriving directly from Gtk2::CellRendererText via the new tricks that 0.03 brings in. what are those tricks? Gtk2::CellRenderer::register_subclass (parent_package, new_package, ...) does something very similar to Glib::Type::register, but requires that parent_package descends from GtkCellRenderer. the varargs stuff is the same as what you'd pass to Glib::Type::register or the use args of Glib::Object::Subclass. therefore: # derive a new object, named ReallyCool, from Gtk2::CellRendererText. # the resulting object has all of the properties of a text renderer, # plus the new one 'nlines'. for each event, a perl sub will be called. Gtk2::CellRendererText->register_subclass ('ReallyCool', properties => [ Glib::ParamSpec->int ('nlines', 'number of lines', 'the number of lines you want in the cell', 1, 65535, 1, [qw/readable writable/]), ]); # implement the get_size() virtual method: sub on_get_size { # we're just extending the parent. let's call it first, # and see what it wants. my @results = shift->parent_on_get_size (@_); ... } all of this is subject to change, i have designs already on how the chaining may be better done; as it is currently implemented, it is very likely not to work on multiply-derived renderers. in case you hadn't noticed, this method allows us to avoid the use of Gtk2::CellRenderer::Base altogether (well, it's used under the hood, but), which i think is somewhat cleaner. comments? thoughts? suggestions? -- muppet From phoenix@sandwich.net Thu Oct 16 02:12:31 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from pioneer (pppoe-66-112-23-217.rb.spt.centurytel.net [66.112.23.217]) by mail.gnome.org (Postfix) with ESMTP id 262AC18100 for ; Thu, 16 Oct 2003 02:12:31 -0400 (EDT) Received: from james by pioneer with local (Exim 3.36 #1 (Debian)) id 1AA1NN-0004gE-00 for ; Thu, 16 Oct 2003 01:12:45 -0500 Subject: interest in debs for stable? From: James Curbo Reply-To: james@teyandei.net To: gtk perl mailing list Content-Type: text/plain Content-Transfer-Encoding: 7bit Message-Id: <1066284764.26426.2.camel@pioneer> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Thu, 16 Oct 2003 01:12:44 -0500 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: I'm in the midst of rebuilding debs for unstable, and this thought occurred to me. Is anyone interested in debian packages for woody? To use them effectively, you'd need the Gnome 2 backport, which requires the XFree86 4.3 backport.. so it's not exactly something that can be used on a stock Woody install. Well, the non-Gnome parts of gtk2-perl probably could, anyway. I can set something like this up to build them, but I'm just wondering if it's worth the effort. For those of you looking for unstable packages, I should have them finished tomorrow sometime. James From phoenix@sandwich.net Thu Oct 16 23:54:24 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from pioneer (pppoe0204.spt.centurytel.net [64.91.29.205]) by mail.gnome.org (Postfix) with ESMTP id 79149180E4 for ; Thu, 16 Oct 2003 23:54:24 -0400 (EDT) Received: from james by pioneer with local (Exim 3.36 #1 (Debian)) id 1AALhF-0006JH-00 for ; Thu, 16 Oct 2003 22:54:37 -0500 Subject: new packages for Debian unstable From: James Curbo Reply-To: james@teyandei.net To: gtk perl mailing list Content-Type: text/plain Content-Transfer-Encoding: 7bit Message-Id: <1066362876.26426.52.camel@pioneer> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Thu, 16 Oct 2003 22:54:37 -0500 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: http://www.raspberryheaven.net/~hannibal/debs/ libextutils-depends-perl 0.103-1 libextutils-pkgconfig-perl 1.01-1 libglib-perl 1.00-1 libgnome2-canvas-perl 0.32-1 libgnome2-perl 0.38-1 libgnome2-wnck-perl 0.01-1 libgtk2-gladexml-perl 0.93-1 libgtk2-perl 1.00-1 libgtk2-podviewer-perl 0.03-1 libgtk2-spell-perl 1.03-1 libgtk2-trayicon-perl 0.03-1 I tested these on my own system, they seemed ok. As usual, please let me know if there are any problems. Regarding stable, I've run into a snafu; stable has perl 5.6, and gtk2-perl requires 5.8. I don't think there is sufficient interest anyway, as it would require installing at least 3 backports to stable, which makes it not very stable anymore :) James From x.t.hua@163.com Fri Oct 17 01:12:05 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mta231.163.com (unknown [202.108.44.231]) by mail.gnome.org (Postfix) with ESMTP id 9CDD718B58 for ; Fri, 17 Oct 2003 01:12:04 -0400 (EDT) Received: by mta231.163.com (Postfix, from userid 60001) id A7CFE1C461CD9; Fri, 17 Oct 2003 13:11:53 +0800 (CST) MIME-Version: 1.0 Message-ID: <3F8F7A19.000016.10622@bj231.163.com> Date: Fri, 17 Oct 2003 13:11:53 +0800 (CST) From: "ken" To: gtk-perl-list@gnome.org Subject: =?gb2312?B?dW5zdWJzY3JpYmluZyB0byBndGstcGVybC1saXN0?= X-Priority: 3 X-Originating-IP: [210.5.30.232] X-Mailer: Coremail2.0 Copyright Tebie Ltd., 2001 Content-Type: Multipart/Alternative; boundary="Boundary-=_EVxODqalFDEJRlNImMpSbKqfWDOT" Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: --Boundary-=_EVxODqalFDEJRlNImMpSbKqfWDOT Content-Type: text/plain Content-Transfer-Encoding: 8bit unsubscribing to gtk-perl-list --Boundary-=_EVxODqalFDEJRlNImMpSbKqfWDOT Content-Type: text/html Content-Transfer-Encoding: 8bit unsubscribing to gtk-perl-list

==============================================
°²È«Îȶ¨´óÈÝÁ¿£¬ÊÕ·ÑÒÁÃöùÃâ·Ñ30ÈÕÍêÃÀÌåÑé~
Öйú×î´óµÄÃâ·ÑÓÊÏäÔÚµÈÄã 25Õ׿ռä 4Õ׸½¼þ£¡
µã»÷ÍøÒ×ÅÝÅݾªÏ²ÎÞÏÞ È«Ãâ·ÑÊÖ»ú¶ÌÐÅÈÎÄã·¢!

--Boundary-=_EVxODqalFDEJRlNImMpSbKqfWDOT-- From gavin.brown@uk.com Fri Oct 17 11:02:46 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.centralnic.net (unknown [212.18.224.18]) by mail.gnome.org (Postfix) with ESMTP id BDFFD180F7 for ; Fri, 17 Oct 2003 11:02:45 -0400 (EDT) Received: from lon-staffgw-1.centralnic.net ([212.18.224.152] helo=aqua.jodrell.net) by mail.centralnic.net with esmtp (Exim 4.22) id 1AAW85-0004kY-64 for gtk-perl-list@gnome.org; Fri, 17 Oct 2003 16:03:01 +0100 From: Gavin Brown Reply-To: gavin.brown@uk.com To: gtk-perl-list@gnome.org Message-Id: <1066402980.3276.5.camel@scimitar.jodrell.net> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.3 Date: 17 Oct 2003 16:03:01 +0100 Subject: CPAN Bundle Content-Type: multipart/mixed; boundary="=-JZU2dKLz0RCALz3nEFq0" Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: --=-JZU2dKLz0RCALz3nEFq0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Hi guys and gals, Please find attached a preview of a CPAN bundle for Gnome2, which when complete will allow users to install or update Gtk2, Gnome2 and all attendant libraries by calling perl -MCPAN -e 'install Bundle::Gnome2' The bundle currently includes libraries that aren't yet in CPAN - namely Gnome2::Wnck and Gnome2::GConf - something I hope will be remedied soon. Please test this bundle and let me know if there are any problems. Once everything's ironed out it'll go into CPAN. Gavin. -- Gavin Brown e: gavin.brown@uk.com w: http://jodrell.net/ PGP/GPG key ID: 891D8FCA --=-JZU2dKLz0RCALz3nEFq0 Content-Disposition: attachment; filename=Bundle-Gnome2-0.01-pre.tar.gz Content-Type: application/x-compressed-tar; name=Bundle-Gnome2-0.01-pre.tar.gz Content-Transfer-Encoding: base64 H4sIAPIDkD8AA+1XbW/iOBDmK/4VI10ldnWESyCAjr7oKIQeUnkRod29T8gkBixMgpJQ2j3df79x XoByy/akrVrtnR8JEtvjmfHM2Hl8vfFcwbQbz1+xsqaXdENbB+yX3GtC1029Xq3iU9frNfPZM0VO r9dNE1+qZi2nG5VqXc9B9VW9OIFNGNEAIDenD9z7htxL4z8orr+e/x5dshkXrDS8/X4buqHrNdM8 mf+KUcvyb5jlOspXq5VaDvTvN/0y/uf5/wnOuu4Z2YQMrMfoLuIibDRk9uUvOCefAh6xrBo+kHy/ 2bPy+csrKCSV02gkpVMokvy9NbK7g/6kMxr0YpFkqLReydGCy8OoEM/9k+TzrUFvOLJsG6Tg/Atf g/brTMrl7btOp/sZIB4pzb/Ene2uPZ60rU7z7nYcD1AhADMXK0WBv4rk4zl572j+eDix/0dWs92z XsnGC/vf0A3jaP+bZqWq9v9b4PkuBg1aw2Yfkl6Y+QFECwY30bIM1HMhlVr57kawsETIPQtC7nsg Cwcnl/Ew1wxdM+okUeHC9KkBNzJ2cB34Ww8u4kCWprLx22ZZcvzVFSFjH7iHmZCbesHDnQN46IDw Hex/ahCSX7NAwMG3ieRX2MimopoF84qx2xRmG1Qm8HgAfxavIvUatgvuLBIz09gMSeeHRcBzMLPj +g48jw4hHe5JV4oQHfrLjuKys8BSA7Eb4W4BWi8OssagkCk5OkzlSnbuwZyiqiBEo3Mm31CzH2ZG tYAJGmGgM+OYDam+iKtyxMbl3vwoh4JPDzKoaST+Arx3ISq8C07xv2a/27Hs8avYeIn/6eYx/zPr hjr/3wSHh+mOrpHk80+yKlCHw38WJ/b/rhRew4bc/9+4/xuVSvn4/leuVtT+fwuk9781dZZ0zo54 yDkhZ+mlDi6hIKujgH2TidVvTyaEXC4YdQ2Qd0JC/sEkmxl/OSBLO8J0klGmOu0/+oOh3bUJaV38 S9J0tZvcGvTHVn+MkyXZwX+0RkhG4pJno9Gi3gMN9+2blu/N9s1hwL1o3/zkOctEE0oK6rLPvdus PfTde862LMg67DWTdDRpjAP61HV8b+de27Jbo+5wjGFNiV6y/DReB0QvC9dQRgCXEtCA4zh9oFzQ acLQicsemPDXkujR9Vpwh0ZIyUPkshn3K5ceIWTxVOTC6NXP+9iXoImEVbpLw1jY8QOZMl8seXRg U/rDgMqfCH1gj1FAYctd9DSED4Iv2XEwPsZGptyTHDSMWfle3Z6czqNlKMMlpQkKbDHQ+zpo3o1/ H4wwlAdXCOtCRFedr10krIt5JMvA2UTqm6WgoKCgoKCgoKCgoKCgoKCgoJD7Gw5VixIAKAAA --=-JZU2dKLz0RCALz3nEFq0-- From scott@asofyet.org Sat Oct 18 03:44:03 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smeagol.dreamhost.com (smeagol.dreamhost.com [66.33.209.5]) by mail.gnome.org (Postfix) with ESMTP id 2C32418107 for ; Sat, 18 Oct 2003 03:44:03 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by smeagol.dreamhost.com (Postfix) with ESMTP id E5A7423A02 for ; Sat, 18 Oct 2003 00:44:17 -0700 (PDT) Date: Sat, 18 Oct 2003 03:44:25 -0400 Mime-Version: 1.0 (Apple Message framework v552) Content-Type: text/plain; delsp=yes; charset=US-ASCII; format=flowed Subject: the latest cellrenderer scoop From: muppet To: gtk-perl list Content-Transfer-Encoding: 7bit Message-Id: X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: i just put Gtk2::CellRenderer::Base 0.04 on my website, http://asofyet.org/muppet/software/gtk2-perl/Gtk2-CellRenderer-Base- 0.04.tar.gz this version simplifies things rather a lot. The Gtk2::CellRenderer::Base class no longer actually exists. You do a normal Glib::Object::Subclass of Gtk2::CellRenderer or any of its derivatives, and then call __PACKAGE__->_install_overrides; this installs into the GObjectClass structure the perl marshallers which look for the on_get_size, on_render, on_activate, and on_start_editing subs. you can call the parent from within your child subs by doing parent_foo instead of on_foo, like this: sub on_get_size { shift->parent_get_size (@_) } that uses caller() to find the calling context, so it can find the parent of that package. (this hack is necessary because GObjects always show up as the bottom of the hierarchy.) my only complaint about this version is the new syntax is ugly: use Glib::Object::Subclass ......; __PACKAGE__->_install_overrides; it would be possible to create another pragma-like module to wrap that up for us, a la Glib::Object::Subclass, but i hesitate to do this because it most likely would entail duplicating Subclass.pm. on the plus side, this is all self-contained -- everything is implemented in Base.xs, and could easily be dropped into Gtk2/xs/GtkCellRenderer.xs without any problems. whatchoo think? -- muppet From bosteins@broadpark.no Sat Oct 18 06:25:06 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.broadpark.no (mail.broadpark.no [217.13.4.2]) by mail.gnome.org (Postfix) with ESMTP id 872AF182E1 for ; Sat, 18 Oct 2003 06:25:06 -0400 (EDT) Received: from broadpark.no (169.80-203-5.nextgentel.com [80.203.5.169]) by mail.broadpark.no (Postfix) with ESMTP id 6EC617A27E; Sat, 18 Oct 2003 12:25:21 +0200 (MEST) Message-ID: <3F9114C7.3020002@broadpark.no> Date: Sat, 18 Oct 2003 12:24:07 +0200 From: =?ISO-8859-1?Q?Bjarne_Steinsb=F8?= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 X-Accept-Language: en-us, en MIME-Version: 1.0 To: muppet Cc: gtk-perl list Subject: Re: the latest cellrenderer scoop References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: muppet wrote: > i just put Gtk2::CellRenderer::Base 0.04 on my website, > http://asofyet.org/muppet/software/gtk2-perl/Gtk2-CellRenderer-Base- > 0.04.tar.gz > > this version simplifies things rather a lot. The > Gtk2::CellRenderer::Base class no longer actually exists. You do a > normal Glib::Object::Subclass of Gtk2::CellRenderer or any of its > derivatives, and then call __PACKAGE__->_install_overrides; this > installs into the GObjectClass structure the perl marshallers which > look for the on_get_size, on_render, on_activate, and > on_start_editing subs. > > you can call the parent from within your child subs by doing > parent_foo instead of on_foo, like this: > > sub on_get_size { shift->parent_get_size (@_) } > > that uses caller() to find the calling context, so it can find the > parent of that package. (this hack is necessary because GObjects > always show up as the bottom of the hierarchy.) > > > my only complaint about this version is the new syntax is ugly: > > use Glib::Object::Subclass ......; > __PACKAGE__->_install_overrides; > > it would be possible to create another pragma-like module to wrap > that up for us, a la Glib::Object::Subclass, but i hesitate to do > this because it most likely would entail duplicating Subclass.pm. > > on the plus side, this is all self-contained -- everything is > implemented in Base.xs, and could easily be dropped into > Gtk2/xs/GtkCellRenderer.xs without any problems. > > > whatchoo think? muppet, I'm not sure why, but I've got some problems here. "example.pl" dumps core on me. It happens whenever I click on the drop-down list to start editing it. Is it supposed to do this? I noticed it was slightly changed from 0.03, so I have assumed that it was re-written for the new stuff in 0.04? I never got around to trying out version 0.03 before 0.04. Also, comparing the patches released with version 0.03 to the changes in 0.04, I thought (and still do) that the Glib-patch was no longer necessary. So I patched up the Gtk2 library and installed it. The patches seem innocent enough that I didn't bother with setting up a parallel installation for testing. "example.pl" dumped core. Next step was to install the Glib patch as well. I could have been wrong about it's importance. No difference, still a core dump. I then went back to version 0.03, and this one didn't core dump. So it's something introduced in 0.04. "fancy.pl" does not *not* throw a segmentation violation. That's where I am so far. I might continue digging, but that's probably a waste of time until you can give me a hint at which direction you want me to go. I'm sorry I don't have my environment/installation set up to do proper C-level debugging. I actually think I haven't started up "gdb" in years, I was rather surprised at myself that I still remembered how to get a back-trace from a core. So rather basic information, I'm afraid. This is from 0.04 *after* installing the glib-patch: (gdb) bt #0 0x4083fec8 in gtk2perl_cell_renderer_start_editing () from /usr/lib/perl5/site_perl/5.8.0/i686-linux/auto/Gtk2/CellRenderer/Base/Base.so #1 0x40526746 in gtk_cell_renderer_start_editing () from /usr/lib/libgtk-x11-2.0.so.0 #2 0x4069a308 in gtk_tree_view_column_cell_process_action () from /usr/lib/libgtk-x11-2.0.so.0 #3 0x406982bf in _gtk_tree_view_column_cell_event () from /usr/lib/libgtk-x11-2.0.so.0 #4 0x40681dd5 in gtk_tree_view_button_press () from /usr/lib/libgtk-x11-2.0.so.0 #5 0x405b411f in _gtk_marshal_BOOLEAN__BOXED () from /usr/lib/libgtk-x11-2.0.so.0 #6 0x40245477 in g_type_class_meta_marshal () from /usr/lib/libgobject-2.0.so.0 #7 0x40244e18 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0 #8 0x40256e79 in signal_emit_unlocked_R () from /usr/lib/libgobject-2.0.so.0 #9 0x40256111 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0 #10 0x40256634 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0 #11 0x406a6580 in gtk_widget_event_internal () from /usr/lib/libgtk-x11-2.0.so.0 #12 0x405b3506 in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0 #13 0x405b25e6 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0 #14 0x4077fd73 in gdk_event_dispatch () from /usr/lib/libgdk-x11-2.0.so.0 #15 0x402974d0 in g_main_dispatch () from /usr/lib/libglib-2.0.so.0 #16 0x40295912 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #17 0x40297988 in g_main_context_iterate () from /usr/lib/libglib-2.0.so.0 #18 0x40295ee2 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0 #19 0x405b205f in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0 #20 0x4033bb6e in XS_Gtk2_main () from /usr/lib/perl5/site_perl/5.8.0/i686-linux/auto/Gtk2/Gtk2.so #21 0x080c041e in Perl_pp_entersub () #22 0x080ba489 in Perl_runops_standard () #23 0x08062674 in S_run_body () #24 0x0806243d in perl_run () #25 0x0805effc in main () #26 0x400c4be7 in __libc_start_main () from /lib/libc.so.6 Bjarne From bosteins@broadpark.no Sat Oct 18 06:47:05 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.broadpark.no (mail.broadpark.no [217.13.4.2]) by mail.gnome.org (Postfix) with ESMTP id 3052D18304 for ; Sat, 18 Oct 2003 06:47:05 -0400 (EDT) Received: from broadpark.no (169.80-203-5.nextgentel.com [80.203.5.169]) by mail.broadpark.no (Postfix) with ESMTP id ADBA87A30A; Sat, 18 Oct 2003 12:47:20 +0200 (MEST) Message-ID: <3F9119EF.8060705@broadpark.no> Date: Sat, 18 Oct 2003 12:46:07 +0200 From: =?ISO-8859-1?Q?Bjarne_Steinsb=F8?= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 X-Accept-Language: en-us, en MIME-Version: 1.0 To: =?ISO-8859-1?Q?Bjarne_Steinsb=F8?= Cc: muppet , gtk-perl list Subject: Re: the latest cellrenderer scoop References: <3F9114C7.3020002@broadpark.no> In-Reply-To: <3F9114C7.3020002@broadpark.no> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Bjarne Steinsbø wrote: I know, I know... Answering my own messages... > muppet wrote: > >> i just put Gtk2::CellRenderer::Base 0.04 on my website, >> http://asofyet.org/muppet/software/gtk2-perl/Gtk2-CellRenderer-Base- >> 0.04.tar.gz >> ... >> >> >> >> whatchoo think? > ... > > > That's where I am so far. I might continue digging, but that's > probably a waste of time until you can give me a hint at which > direction you want me to go. I couldn't stop myself when I noticed your printfs in the xs code. I put in some of my own, and the segmentation violation is indeed at the most suspicious place, at the "call_sv" in line 215. A print before the PUTBACK; came out, a print after the SPAGAIN; didn't. Bjarne From kaffeetisch@web.de Sat Oct 18 07:41:57 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp.web.de (smtp02.web.de [217.72.192.151]) by mail.gnome.org (Postfix) with ESMTP id 0FA9A181C6 for ; Sat, 18 Oct 2003 07:41:57 -0400 (EDT) Received: from [217.5.51.243] (helo=6-allhosts) by smtp.web.de with esmtp (WEB.DE 4.99 #459) id 1AApTH-0002cd-00 for gtk-perl-list@gnome.org; Sat, 18 Oct 2003 13:42:12 +0200 Subject: Re: the latest cellrenderer scoop From: Torsten Schoenfeld To: gtk-perl list In-Reply-To: <3F9114C7.3020002@broadpark.no> References: <3F9114C7.3020002@broadpark.no> Content-Type: multipart/mixed; boundary="=-+PsFExysKe8UfmERJlH/" Message-Id: <1066477336.5352.1.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Sat, 18 Oct 2003 13:42:16 +0200 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: --=-+PsFExysKe8UfmERJlH/ Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: quoted-printable On Sat, 2003-10-18 at 12:24, Bjarne Steinsb=F8 wrote: > > i just put Gtk2::CellRenderer::Base 0.04 on my website, > > http://asofyet.org/muppet/software/gtk2-perl/Gtk2-CellRenderer-Base- > > 0.04.tar.gz >=20 > I'm not sure why, but I've got some problems here. "example.pl" dumps=20 > core on me. [...] The attached patch fixed it for me. HTH, -Torsten --=-+PsFExysKe8UfmERJlH/ Content-Disposition: attachment; filename=Gtk2-CellRenderer-Base-0.04.patch Content-Type: text/x-patch; name=Gtk2-CellRenderer-Base-0.04.patch; charset=iso-8859-15 Content-Transfer-Encoding: 7bit diff -Naur Gtk2-CellRenderer-Base-0.04/Base.xs Gtk2-CellRenderer-Base-0.04-patched/Base.xs --- Gtk2-CellRenderer-Base-0.04/Base.xs 2003-10-16 22:04:20.000000000 +0200 +++ Gtk2-CellRenderer-Base-0.04-patched/Base.xs 2003-10-18 11:51:11.000000000 +0200 @@ -223,8 +223,7 @@ FREETMPS; LEAVE; } -warn ("editable %p (%d)", editable, G_OBJECT (editable)->ref_count); - + /* warn ("editable %p (%d)", editable, G_OBJECT (editable)->ref_count); */ return editable; } --=-+PsFExysKe8UfmERJlH/-- From bosteins@broadpark.no Sat Oct 18 08:15:53 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.broadpark.no (mail.broadpark.no [217.13.4.2]) by mail.gnome.org (Postfix) with ESMTP id 7EA5618326 for ; Sat, 18 Oct 2003 08:15:53 -0400 (EDT) Received: from broadpark.no (169.80-203-5.nextgentel.com [80.203.5.169]) by mail.broadpark.no (Postfix) with ESMTP id A14B47A441; Sat, 18 Oct 2003 14:16:07 +0200 (MEST) Message-ID: <3F912EBE.40001@broadpark.no> Date: Sat, 18 Oct 2003 14:14:54 +0200 From: =?ISO-8859-15?Q?Bjarne_Steinsb=F8?= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Torsten Schoenfeld Cc: gtk-perl list Subject: Re: the latest cellrenderer scoop References: <3F9114C7.3020002@broadpark.no> <1066477336.5352.1.camel@localhost> In-Reply-To: <1066477336.5352.1.camel@localhost> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Torsten Schoenfeld wrote: >On Sat, 2003-10-18 at 12:24, Bjarne Steinsbø wrote: > > > >>>i just put Gtk2::CellRenderer::Base 0.04 on my website, >>>http://asofyet.org/muppet/software/gtk2-perl/Gtk2-CellRenderer-Base- >>>0.04.tar.gz >>> >>> >>I'm not sure why, but I've got some problems here. "example.pl" dumps >>core on me. [...] >> >> > >The attached patch fixed it for me. > >HTH, >-Torsten > > Thanks Torsten. You're right and my mistake. I must have been running the old version when I inserted a print after the call_sv and concluded that was where it went bang. Bjarne From Wolfgang@Contre.COM Sat Oct 18 18:26:00 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from VL-MO-MR005.ip.videotron.ca (relais.videotron.ca [24.201.245.36]) by mail.gnome.org (Postfix) with ESMTP id B005B1817C for ; Sat, 18 Oct 2003 18:26:00 -0400 (EDT) Received: from Luhmann.Contre.COM ([24.200.44.210]) by VL-MO-MR005.ip.videotron.ca (iPlanet Messaging Server 5.2 HotFix 1.16 (built May 14 2003)) with ESMTP id <0HMZ009XF4YCEH@VL-MO-MR005.ip.videotron.ca> for gtk-perl-list@gnome.org; Sat, 18 Oct 2003 18:25:24 -0400 (EDT) Received: by Luhmann.Contre.COM (Postfix, from userid 504) id CA17F13962; Sat, 18 Oct 2003 18:25:23 -0400 (EDT) Date: Sat, 18 Oct 2003 18:25:23 -0400 From: Wolfgang Sourdeau Subject: debian packaging To: gtk-perl-list@gnome.org Message-id: <20031018222523.GA1317@Contre.COM> MIME-version: 1.0 Content-type: multipart/signed; boundary=mYCpIKhGyMATD0i+; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-disposition: inline User-Agent: Mutt/1.3.28i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: --mYCpIKhGyMATD0i+ Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline Hi, Since I am an official debian maintainer, I'd loke to announce to this list that I am (finally) ready to take over the package or to co-maintain it with James Curbo. Where can I find James' source archives? Regards, Wolfgang --mYCpIKhGyMATD0i+ Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: Pour information voir http://www.gnupg.org iEYEARECAAYFAj+RvdMACgkQUP8yyofKtg+6CwCePKRw+oQwhIwiA3MEd8wbxZSj y3oAnjf/RBLS/m7w2lN7eNpba9MW+Nv1 =OHxV -----END PGP SIGNATURE----- --mYCpIKhGyMATD0i+-- From peter@angua.rince.de Sat Oct 18 18:57:17 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from angua.rince.de (fate.rince.de [212.126.219.54]) by mail.gnome.org (Postfix) with ESMTP id 736FF18220 for ; Sat, 18 Oct 2003 18:57:17 -0400 (EDT) Received: by angua.rince.de (Postfix, from userid 1025) id 5EF1AD83C; Sun, 19 Oct 2003 00:57:24 +0200 (CEST) Date: Sun, 19 Oct 2003 00:57:24 +0200 From: Peter Samuelson To: Wolfgang Sourdeau Cc: gtk-perl-list@gnome.org Subject: Re: debian packaging Message-ID: <20031018225724.GA9322@angua.rince.de> References: <20031018222523.GA1317@Contre.COM> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20031018222523.GA1317@Contre.COM> User-Agent: Mutt/1.4.1i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: [Wolfgang Sourdeau] > Since I am an official debian maintainer, I'd loke to announce to this > list that I am (finally) ready to take over the package or to > co-maintain it with James Curbo. Hope it works out - I get a little tired of posting the url below when debian users ask about Gtk2.pm on irc (: > Where can I find James' source archives? http://www.raspberryheaven.net/~hannibal/debs/ Peter From Wolfgang@Contre.COM Sat Oct 18 18:58:59 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from VL-MO-MR005.ip.videotron.ca (relais.videotron.ca [24.201.245.36]) by mail.gnome.org (Postfix) with ESMTP id 07D211817C for ; Sat, 18 Oct 2003 18:58:59 -0400 (EDT) Received: from Luhmann.Contre.COM ([24.200.44.210]) by VL-MO-MR005.ip.videotron.ca (iPlanet Messaging Server 5.2 HotFix 1.16 (built May 14 2003)) with ESMTP id <0HMZ00B3C6HYY0@VL-MO-MR005.ip.videotron.ca> for gtk-perl-list@gnome.org; Sat, 18 Oct 2003 18:58:46 -0400 (EDT) Received: by Luhmann.Contre.COM (Postfix, from userid 504) id 38DBB13962; Sat, 18 Oct 2003 18:58:46 -0400 (EDT) Date: Sat, 18 Oct 2003 18:58:46 -0400 From: Wolfgang Sourdeau Subject: Re: debian packaging In-reply-to: <20031018225724.GA9322@angua.rince.de> To: gtk-perl-list@gnome.org Message-id: <20031018225846.GA1566@Contre.COM> MIME-version: 1.0 Content-type: text/plain; charset=iso-8859-15 Content-transfer-encoding: 8BIT Content-disposition: inline User-Agent: Mutt/1.3.28i References: <20031018222523.GA1317@Contre.COM> <20031018225724.GA9322@angua.rince.de> Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: La plume légère, vers Sun, Oct 19, 2003 at 12:57:24AM +0200, heure d'inspiration, Peter Samuelson écrivait en ces mots: > http://www.raspberryheaven.net/~hannibal/debs/ Nope. Those are the binary archives only. No source file there. W. From peter@angua.rince.de Sat Oct 18 19:03:34 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from angua.rince.de (fate.rince.de [212.126.219.54]) by mail.gnome.org (Postfix) with ESMTP id 9318C1817C for ; Sat, 18 Oct 2003 19:03:34 -0400 (EDT) Received: by angua.rince.de (Postfix, from userid 1025) id 9EBB7D83C; Sun, 19 Oct 2003 01:03:42 +0200 (CEST) Date: Sun, 19 Oct 2003 01:03:42 +0200 From: Peter Samuelson To: Wolfgang Sourdeau Cc: gtk-perl-list@gnome.org Subject: Re: debian packaging Message-ID: <20031018230342.GB9322@angua.rince.de> References: <20031018222523.GA1317@Contre.COM> <20031018225724.GA9322@angua.rince.de> <20031018225846.GA1566@Contre.COM> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20031018225846.GA1566@Contre.COM> User-Agent: Mutt/1.4.1i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: [Wolfgang Sourdeau] > Nope. Those are the binary archives only. No source file there. He's working off more or less pristine sources from Sourceforge. I.e. Debian packaging is in the upstream already. Peter From Wolfgang@Contre.COM Sat Oct 18 19:07:31 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from VL-MO-MR001.ip.videotron.ca (relais.videotron.ca [24.201.245.36]) by mail.gnome.org (Postfix) with ESMTP id BF74818449 for ; Sat, 18 Oct 2003 19:07:31 -0400 (EDT) Received: from Luhmann.Contre.COM ([24.200.44.210]) by VL-MO-MR001.ip.videotron.ca (iPlanet Messaging Server 5.2 HotFix 1.16 (built May 14 2003)) with ESMTP id <0HMZ00LM26WZ9L@VL-MO-MR001.ip.videotron.ca> for gtk-perl-list@gnome.org; Sat, 18 Oct 2003 19:07:47 -0400 (EDT) Received: by Luhmann.Contre.COM (Postfix, from userid 504) id A161013962; Sat, 18 Oct 2003 19:07:47 -0400 (EDT) Date: Sat, 18 Oct 2003 19:07:47 -0400 From: Wolfgang Sourdeau Subject: Re: debian packaging In-reply-to: <20031018230342.GB9322@angua.rince.de> To: gtk-perl-list@gnome.org Message-id: <20031018230747.GA1632@Contre.COM> MIME-version: 1.0 Content-type: text/plain; charset=iso-8859-15 Content-transfer-encoding: 8BIT Content-disposition: inline User-Agent: Mutt/1.3.28i References: <20031018222523.GA1317@Contre.COM> <20031018225724.GA9322@angua.rince.de> <20031018225846.GA1566@Contre.COM> <20031018230342.GB9322@angua.rince.de> Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: La plume légère, vers Sun, Oct 19, 2003 at 01:03:42AM +0200, heure d'inspiration, Peter Samuelson écrivait en ces mots: > > [Wolfgang Sourdeau] > > Nope. Those are the binary archives only. No source file there. > > He's working off more or less pristine sources from Sourceforge. > I.e. Debian packaging is in the upstream already. Alright, I'll download that then. Is it possible to separate de debian/ subdir from the upstream archive? Otherwise, it'll be difficult to manage for me. W. From evilynux@yahoo.com Sat Oct 18 19:13:40 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from web40708.mail.yahoo.com (web40708.mail.yahoo.com [66.218.78.165]) by mail.gnome.org (Postfix) with SMTP id A6A09184B0 for ; Sat, 18 Oct 2003 19:13:39 -0400 (EDT) Message-ID: <20031018231355.95359.qmail@web40708.mail.yahoo.com> Received: from [65.94.59.49] by web40708.mail.yahoo.com via HTTP; Sun, 19 Oct 2003 01:13:55 CEST Date: Sun, 19 Oct 2003 01:13:55 +0200 (CEST) From: =?iso-8859-1?q?Pascal=20Giard?= Subject: Re: debian packaging To: gtk-perl-list@gnome.org In-Reply-To: <20031018230747.GA1632@Contre.COM> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: > > He's working off more or less pristine sources from Sourceforge. > > I.e. Debian packaging is in the upstream already. > > Alright, I'll download that then. unfortunatly James seems to have forgotten some pkgs... there are no debian/ for: - ExtUtils-PkgConfig - Gnome2-Wnck - Gtk2-TrayIcon correct me if i'm wrong, but i think ExtUtils-PkgConfig is particularly important... -Pascal ___________________________________________________________ Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français ! Yahoo! Mail : http://fr.mail.yahoo.com From phoenix@sandwich.net Sat Oct 18 19:53:36 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from pioneer (pppoe0204.spt.centurytel.net [64.91.29.205]) by mail.gnome.org (Postfix) with ESMTP id 7D71318102 for ; Sat, 18 Oct 2003 19:53:36 -0400 (EDT) Received: from james by pioneer with local (Exim 3.36 #1 (Debian)) id 1AB0tI-00020p-00; Sat, 18 Oct 2003 18:53:48 -0500 Subject: Re: debian packaging From: James Curbo Reply-To: james@teyandei.net To: Wolfgang Sourdeau Cc: muppet , gtk perl mailing list In-Reply-To: <20031018230747.GA1632@Contre.COM> References: <20031018222523.GA1317@Contre.COM> <20031018225724.GA9322@angua.rince.de> <20031018225846.GA1566@Contre.COM> <20031018230342.GB9322@angua.rince.de> <20031018230747.GA1632@Contre.COM> Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Message-Id: <1066521228.7275.18.camel@pioneer> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Sat, 18 Oct 2003 18:53:48 -0500 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Sat, 2003-10-18 at 18:07, Wolfgang Sourdeau wrote: > La plume l=E9g=E8re, vers Sun, Oct 19, 2003 at 01:03:42AM +0200, heure d'= inspiration, > Peter Samuelson =E9crivait en ces mots: > >=20 > > [Wolfgang Sourdeau] > > > Nope. Those are the binary archives only. No source file there. > >=20 > > He's working off more or less pristine sources from Sourceforge. > > I.e. Debian packaging is in the upstream already. >=20 > Alright, I'll download that then. >=20 > Is it possible to separate de debian/ subdir from the upstream archive? > Otherwise, it'll be difficult to manage for me. >=20 Hi, I've been talking to Pascal in private mail, and just checked the list. I just uploaded the debian directories for everything to http://www.raspberryheaven.net/~hannibal/debs/debian_dirs/ They need a lot of work (proper copyright files, better descriptions in debian/control, dependancies checked, especially Build-Depends) but they work well enough... One note, I haven't built libgnome2-print-perl in the last batch I did because 0.5 still uses Glib::PkgConfig (should be ExtUtils::Pkgconfig) CVS is fixed, so I'm waiting for 0.6 before I package it. muppet, you might want to use these to apply to CVS. > W. James From rwmcfa1@neces.com Sun Oct 19 01:07:42 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smaug.dreamhost.com (smaug.dreamhost.com [66.33.209.15]) by mail.gnome.org (Postfix) with ESMTP id 1D15C180E7 for ; Sun, 19 Oct 2003 01:07:42 -0400 (EDT) Received: from beta.local (12-222-230-66.client.insightBB.com [12.222.230.66]) by smaug.dreamhost.com (Postfix) with ESMTP id 259605B77A; Sat, 18 Oct 2003 22:07:57 -0700 (PDT) Subject: Re: debian packaging From: Ross McFarland To: Wolfgang@Contre.COM, Gtk-Perl-List In-Reply-To: <20031018231355.95359.qmail@web40708.mail.yahoo.com> References: <20031018231355.95359.qmail@web40708.mail.yahoo.com> Content-Type: text/plain Message-Id: <1066540076.2753.67.camel@beta.local> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Sun, 19 Oct 2003 01:07:56 -0400 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Sat, 2003-10-18 at 19:13, Pascal Giard wrote: > correct me if i'm wrong, but i think ExtUtils-PkgConfig is particularly important... you are correct, insomuch as it is required to build most of the rest of the packages. binary installs would have no need for it. there should be a package of it along with the rest. as of right now all of the debian files are under s.f. cvs control, but they don't seem to be up to date as far as requirements and such go (at least the last time i looked) i don't know how all of the debian stuff works so maybe that's all done auto-magically. if it would be any help we have facilities in the Makefile.PL's to create the rpm spec files with the correct dependency information on the fly the same could be done for the debian pkgs if need/want be. let me know if you're interested. -rm From evilynux@yahoo.com Sun Oct 19 02:01:38 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from web40702.mail.yahoo.com (web40702.mail.yahoo.com [66.218.78.159]) by mail.gnome.org (Postfix) with SMTP id AD5D31830E for ; Sun, 19 Oct 2003 02:01:37 -0400 (EDT) Message-ID: <20031019060153.25965.qmail@web40702.mail.yahoo.com> Received: from [65.94.59.49] by web40702.mail.yahoo.com via HTTP; Sun, 19 Oct 2003 08:01:53 CEST Date: Sun, 19 Oct 2003 08:01:53 +0200 (CEST) From: =?iso-8859-1?q?Pascal=20Giard?= Subject: Re: debian packaging To: gtk-perl-list@gnome.org In-Reply-To: <1066540076.2753.67.camel@beta.local> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: --- Ross McFarland a écrit : > as of right now all of the debian files are under s.f. cvs control, but > they don't seem to be up to date as far as requirements and such go (at > least the last time i looked) i don't know how all of the debian stuff > works so maybe that's all done auto-magically. > if it would be any help we have facilities in the Makefile.PL's to > create the rpm spec files with the correct dependency information on the > fly the same could be done for the debian pkgs if need/want be. let me > know if you're interested. Wolfgang should answer this one, but i think it would be relevant to do so as the dependancies are defined [manually] in the debian/control file. -Pascal ___________________________________________________________ Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français ! Yahoo! Mail : http://fr.mail.yahoo.com From phoenix@sandwich.net Sun Oct 19 02:32:54 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from pioneer (pppoe0204.spt.centurytel.net [64.91.29.205]) by mail.gnome.org (Postfix) with ESMTP id A4A1B18364 for ; Sun, 19 Oct 2003 02:32:54 -0400 (EDT) Received: from james by pioneer with local (Exim 3.36 #1 (Debian)) id 1AB77k-00046o-00; Sun, 19 Oct 2003 01:33:08 -0500 Subject: Re: debian packaging From: James Curbo To: Pascal Giard Cc: gtk perl mailing list In-Reply-To: <20031019060153.25965.qmail@web40702.mail.yahoo.com> References: <20031019060153.25965.qmail@web40702.mail.yahoo.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Message-Id: <1066545188.15764.2.camel@pioneer> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Sun, 19 Oct 2003 01:33:08 -0500 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Sun, 2003-10-19 at 01:01, Pascal Giard wrote: > --- Ross McFarland a =C3=A9crit :=20 >=20 > > as of right now all of the debian files are under s.f. cvs control, but > > they don't seem to be up to date as far as requirements and such go (at > > least the last time i looked) i don't know how all of the debian stuff > > works so maybe that's all done auto-magically.=20 > =20 > > if it would be any help we have facilities in the Makefile.PL's to > > create the rpm spec files with the correct dependency information on th= e > > fly the same could be done for the debian pkgs if need/want be. let me > > know if you're interested.=20 >=20 > Wolfgang should answer this one, but i think it would be relevant to do s= o as the dependancies are > defined [manually] in the debian/control file. ${perl:Depends} gets most of them, fortunately. You just have to make sure to get the ones in there that may not be explicit. For example, ${perl:Depends} generates this for Gtk2: Depends: perl (>=3D 5.8.1-2), perlapi-5.8.1, libatk1.0-0 (>=3D 1.2.4), libc= 6 (>=3D 2.3.2-1), libglib2.0-0 (>=3D 2.2.3), libgtk2.0-0 (>=3D 2.2.1), libpango1.0-0 (>=3D 1.2.1), libglib-perl (>=3D 1.00) Build-Depends is the tricky one. >=20 > -Pascal James From scott@asofyet.org Sun Oct 19 02:56:47 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from frodo.dreamhost.com (frodo.dreamhost.com [66.33.209.11]) by mail.gnome.org (Postfix) with ESMTP id 5E420185B5 for ; Sun, 19 Oct 2003 02:56:47 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by frodo.dreamhost.com (Postfix) with ESMTP id 8641313BE0 for ; Sat, 18 Oct 2003 23:57:00 -0700 (PDT) Date: Sun, 19 Oct 2003 02:57:12 -0400 Mime-Version: 1.0 (Apple Message framework v552) Content-Type: text/plain; charset=US-ASCII; format=flowed Subject: examples From: muppet To: gtk-perl list Content-Transfer-Encoding: 7bit Message-Id: <7740F569-0201-11D8-8562-000A9580E5E0@asofyet.org> X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: because i have trouble sleeping... http://gtk2-perl.sourceforge.net/doc/examples/ that's basically two from Gtk2/examples, two from something i wrote for the list, and one i whipped up from the synopsis of SimpleList. syntax highlighting by gvim. i hereby request comments, suggestions, and contributions. fyi, the page is generated from the contents of the examples directory, which contains files named like: foo.pl the raw program source foo.pl.html the colorized source foo.desc html describing the example. link to other examples by using #other-example (e.g., without the extension). currently there's no notion of order. we could probably do with better descriptions, categories, and all that sort of stuff, but this is just a simple thing to get the ball rolling. -- muppet From phoenix@sandwich.net Sun Oct 19 03:16:42 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from pioneer (pppoe0204.spt.centurytel.net [64.91.29.205]) by mail.gnome.org (Postfix) with ESMTP id 527221852E for ; Sun, 19 Oct 2003 03:16:42 -0400 (EDT) Received: from james by pioneer with local (Exim 3.36 #1 (Debian)) id 1AB7o8-0004AI-00; Sun, 19 Oct 2003 02:16:56 -0500 Subject: Re: examples From: James Curbo To: muppet Cc: gtk perl mailing list In-Reply-To: <7740F569-0201-11D8-8562-000A9580E5E0@asofyet.org> References: <7740F569-0201-11D8-8562-000A9580E5E0@asofyet.org> Content-Type: text/plain Content-Transfer-Encoding: 7bit Message-Id: <1066547816.15764.5.camel@pioneer> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Sun, 19 Oct 2003 02:16:56 -0500 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Sun, 2003-10-19 at 01:57, muppet wrote: > because i have trouble sleeping... > > http://gtk2-perl.sourceforge.net/doc/examples/ > That's pretty cool. Personally, I learned a lot from the perl gtk-demo, and used it as a 'how do I do this' reference a few times. Perhaps those parts could be broken back out into this and expanded upon. James From bassi-e@libero.it Sun Oct 19 17:18:17 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp0.libero.it (smtp0.libero.it [193.70.192.33]) by mail.gnome.org (Postfix) with ESMTP id 30F42187CA for ; Sun, 19 Oct 2003 17:18:17 -0400 (EDT) Received: from wolverine.lohacker.net (151.29.199.128) by smtp0.libero.it (7.0.020-DD01) id 3F6F1CE70094D4EE for gtk-perl-list@gnome.org; Sun, 19 Oct 2003 23:18:32 +0200 Received: by wolverine.lohacker.net (Postfix, from userid 1001) id EE55E1439D; Sun, 19 Oct 2003 23:19:20 +0200 (CEST) Date: Sun, 19 Oct 2003 23:19:20 +0200 From: Emmanuele Bassi To: gtk perl mailing list Subject: Re: debian packaging Message-ID: <20031019211920.GA4412@wolverine.lohacker.net> Mail-Followup-To: gtk perl mailing list References: <20031018222523.GA1317@Contre.COM> <20031018225724.GA9322@angua.rince.de> <20031018225846.GA1566@Contre.COM> <20031018230342.GB9322@angua.rince.de> <20031018230747.GA1632@Contre.COM> <1066521228.7275.18.camel@pioneer> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <1066521228.7275.18.camel@pioneer> X-Mailer: Mutt 1.5.4i (2003-03-19) X-OperatingSystem: Linux 2.6.0-test6-mm3 i686 X-message-flag: Usa un vero mailreader! http://www.mutt.org User-Agent: Mutt/1.5.4i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: * James Curbo : > One note, I haven't built libgnome2-print-perl in the last batch I did > because 0.5 still uses Glib::PkgConfig (should be ExtUtils::Pkgconfig) > CVS is fixed, so I'm waiting for 0.6 before I package it. If muppet agrees, I could tag current CVS for release... Since Gnome2::Print binding is pretty much done, I've bumped version to 0.51 (some methods that requires libart structures[1] are yet to be bound, but I think I could commit my changes in 24/48 hours). +++ [1] simple opaque structures representing pojnt, rectangles and bezier paths for font glyphs; I'll transform them in tuples/matrices, since that's what they are in the end, and since we do not have a binding for libart-2.0. Regards, Emmanuele. -- Emmanuele Bassi (Zefram) [ http://digilander.libero.it/ebassi/blog ] GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738 08BD 8ECC DB8F A432 0FF4 From phoenix@sandwich.net Sun Oct 19 17:56:20 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from pioneer (pppoe0204.spt.centurytel.net [64.91.29.205]) by mail.gnome.org (Postfix) with ESMTP id 78C25182CF for ; Sun, 19 Oct 2003 17:56:20 -0400 (EDT) Received: from james by pioneer with local (Exim 3.36 #1 (Debian)) id 1ABLXM-0004qh-00; Sun, 19 Oct 2003 16:56:32 -0500 Subject: Re: debian packaging From: James Curbo To: Emmanuele Bassi Cc: gtk perl mailing list In-Reply-To: <20031019211920.GA4412@wolverine.lohacker.net> References: <20031018222523.GA1317@Contre.COM> <20031018225724.GA9322@angua.rince.de> <20031018225846.GA1566@Contre.COM> <20031018230342.GB9322@angua.rince.de> <20031018230747.GA1632@Contre.COM> <1066521228.7275.18.camel@pioneer> <20031019211920.GA4412@wolverine.lohacker.net> Content-Type: text/plain Content-Transfer-Encoding: 7bit Message-Id: <1066600591.15764.8.camel@pioneer> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Sun, 19 Oct 2003 16:56:32 -0500 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Sun, 2003-10-19 at 16:19, Emmanuele Bassi wrote: > * James Curbo : > > > One note, I haven't built libgnome2-print-perl in the last batch I did > > because 0.5 still uses Glib::PkgConfig (should be ExtUtils::Pkgconfig) > > CVS is fixed, so I'm waiting for 0.6 before I package it. > > If muppet agrees, I could tag current CVS for release... Since > Gnome2::Print binding is pretty much done, I've bumped version to 0.51 > (some methods that requires libart structures[1] are yet to be bound, > but I think I could commit my changes in 24/48 hours). > Ah, whatever works for you. I was waiting on you to do another release, and had already mentioned the problem to muppet, and was probably going to get around to mailing you about it sometime. > Regards, > Emmanuele. James From scott@asofyet.org Sun Oct 19 19:40:18 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smaug.dreamhost.com (smaug.dreamhost.com [66.33.209.15]) by mail.gnome.org (Postfix) with ESMTP id 52F43181C1 for ; Sun, 19 Oct 2003 19:40:18 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by smaug.dreamhost.com (Postfix) with ESMTP id 7F2295B786; Sun, 19 Oct 2003 16:40:33 -0700 (PDT) Date: Sun, 19 Oct 2003 19:40:45 -0400 Subject: Re: debian packaging Content-Type: text/plain; charset=US-ASCII; format=flowed Mime-Version: 1.0 (Apple Message framework v552) Cc: gtk perl mailing list To: Emmanuele Bassi From: muppet In-Reply-To: <20031019211920.GA4412@wolverine.lohacker.net> Message-Id: Content-Transfer-Encoding: 7bit X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Sunday, October 19, 2003, at 05:19 PM, Emmanuele Bassi wrote: > * James Curbo : > >> One note, I haven't built libgnome2-print-perl in the last batch I did >> because 0.5 still uses Glib::PkgConfig (should be ExtUtils::Pkgconfig) >> CVS is fixed, so I'm waiting for 0.6 before I package it. > > If muppet agrees, I could tag current CVS for release... go for it! > Since Gnome2::Print binding is pretty much done, I've bumped version > to 0.51 (some methods that requires libart structures[1] are yet to be > bound, but I think I could commit my changes in 24/48 hours). let me know when you have a tarball ready, and i'll put it up on sourceforge. as for the libart stuff... anything that you come up with for libart structures will probably also be useful to Gnome2::Canvas. -- muppet From Aratnaweera@virtusa.com Mon Oct 20 04:27:20 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from ENETSLMAILI.enetsl.Virtusa.com (unknown [203.94.74.174]) by mail.gnome.org (Postfix) with ESMTP id 7E62A18854 for ; Mon, 20 Oct 2003 04:27:16 -0400 (EDT) Received: from 6-allhosts ([10.2.6.137]) by ENETSLMAILI.enetsl.Virtusa.com with Microsoft SMTPSVC(5.0.2195.5329); Mon, 20 Oct 2003 14:27:15 +0600 Subject: Re: debian packaging From: Anuradha Ratnaweera To: Wolfgang Sourdeau Cc: gtk-perl-list@gnome.org In-Reply-To: <20031018230747.GA1632@Contre.COM> References: <20031018222523.GA1317@Contre.COM> <20031018225724.GA9322@angua.rince.de> <20031018225846.GA1566@Contre.COM> <20031018230342.GB9322@angua.rince.de> <20031018230747.GA1632@Contre.COM> Content-Type: text/plain Organization: Virtusa Corporation Message-Id: <1066638436.20574.2.camel@aratnaweera.enetsl.virtusa.com> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Mon, 20 Oct 2003 14:27:16 +0600 Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 20 Oct 2003 08:27:15.0827 (UTC) FILETIME=[F7F4E430:01C396E3] Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Sun, 2003-10-19 at 05:07, Wolfgang Sourdeau wrote: > > Is it possible to separate de debian/ subdir from the upstream archive? > Otherwise, it'll be difficult to manage for me. The debian/ subdir in upstream is very useful for some (like me - although I took the liberty of using "some" in plural ;-) who normally install the homemade debs of the latest versions, but not running sid. Anuradha From rwmcfa1@neces.com Mon Oct 20 09:13:27 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from pochacco.sd.dreamhost.com (pochacco.sd.dreamhost.com [66.33.206.17]) by mail.gnome.org (Postfix) with ESMTP id AEECB181DE for ; Mon, 20 Oct 2003 09:13:27 -0400 (EDT) Received: from webmail.neces.com (localhost [127.0.0.1]) by pochacco.sd.dreamhost.com (Postfix) with SMTP id 4CDEB8FE81 for ; Mon, 20 Oct 2003 06:13:38 -0700 (PDT) Received: from 192.146.101.12 (SquirrelMail authenticated user rwmcfa1@neces.com) by webmail.neces.com with HTTP; Mon, 20 Oct 2003 09:13:38 -0400 (EDT) Message-ID: <34399.192.146.101.12.1066655618.spork@webmail.neces.com> Date: Mon, 20 Oct 2003 09:13:38 -0400 (EDT) Subject: GnomeVFS make test failture From: "Ross McFarland" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: on redhat 9.0, current head of cvs. $ pkg-config gnome-vfs-2.0 --modversion 2.2.2 i seem to remember muppet or someone seeing similar things in the past. -rm make[1]: Entering directory `/home/rmcfarla/lib/gtk2-perl-xs/Gnome2-VFS' PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/GnomeVFS.............ok t/GnomeVFSDirectory....ok t/GnomeVFSOps..........ok t/GnomeVFSURI..........# Failed test (t/GnomeVFSURI.t at line 24) # got: 'http://bla.html' # expected: 'http://www.freenet.de/bla.html' # Looks like you failed 1 tests of 29. t/GnomeVFSURI..........dubious Test returned status 1 (wstat 256, 0x100) DIED. FAILED test 6 Failed 1/29 tests, 96.55% okay t/GnomeVFSXfer.........ok Failed Test Stat Wstat Total Fail Failed List of Failed ------------------------------------------------------------------------------- t/GnomeVFSURI.t 1 256 29 1 3.45% 6 Failed 1/5 test scripts, 80.00% okay. 1/164 subtests failed, 99.39% okay. From kaffeetisch@web.de Mon Oct 20 11:31:27 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp.web.de (smtp01.web.de [217.72.192.180]) by mail.gnome.org (Postfix) with ESMTP id 2A53918200 for ; Mon, 20 Oct 2003 11:31:27 -0400 (EDT) Received: from [217.224.250.240] (helo=6-allhosts) by smtp.web.de with esmtp (WEB.DE 4.99 #459) id 1ABc0U-0007wh-00 for gtk-perl-list@gnome.org; Mon, 20 Oct 2003 17:31:42 +0200 Subject: Re: GnomeVFS make test failture From: Torsten Schoenfeld To: gtk-perl-list@gnome.org In-Reply-To: <34399.192.146.101.12.1066655618.spork@webmail.neces.com> References: <34399.192.146.101.12.1066655618.spork@webmail.neces.com> Content-Type: text/plain Message-Id: <1066663910.11481.3.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Mon, 20 Oct 2003 17:31:50 +0200 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Mon, 2003-10-20 at 15:13, Ross McFarland wrote: > i seem to remember muppet or someone seeing similar things in the past. > t/GnomeVFSURI..........# Failed test (t/GnomeVFSURI.t at line 24) Yeah, muppet had the exact same error. I thought I fixed it by checking if we're younger than 1.9.1. That made no sense, apparently - I already require at least version 2.0.0. So I digged further in the ChangeLog and found that one of the helper functions that resolve_relative uses has been heavily changed just before 2.3.1 was released. In the hope that that's the cause, I committed a change that skips this specific test if the version is smaller than 2.3.1. Thanks for testing, -Torsten From james@teyandei.net Mon Oct 20 13:31:56 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from plain.rackshack.net (unknown [66.98.136.24]) by mail.gnome.org (Postfix) with ESMTP id E445E185AC for ; Mon, 20 Oct 2003 13:31:55 -0400 (EDT) Received: (qmail 15113 invoked from network); 20 Oct 2003 17:30:38 -0000 Received: from pppoe0204.spt.centurytel.net (HELO teyandei.net) (64.91.29.205) by 66.98.136.24 with AES256-SHA encrypted SMTP; 20 Oct 2003 17:30:38 -0000 Message-ID: <3F941C14.1030509@teyandei.net> Date: Mon, 20 Oct 2003 12:32:04 -0500 From: James Curbo User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20031013 Thunderbird/0.3 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Ross McFarland Cc: gtk-perl-list@gnome.org, kaffeetisch@web.de Subject: Re: GnomeVFS make test failture References: <34399.192.146.101.12.1066655618.spork@webmail.neces.com> In-Reply-To: <34399.192.146.101.12.1066655618.spork@webmail.neces.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Ross McFarland wrote: > on redhat 9.0, current head of cvs. > > $ pkg-config gnome-vfs-2.0 --modversion > 2.2.2 > > i seem to remember muppet or someone seeing similar things in the past. For the record, it passed all tests for me on Debian unstable, which has 2.4.1. While we're on this note, Torsten, you might put an example in the pod about using it with HTTP or FTP urls, something other than local filesystem things. I had forgotten it could do this until I read the gnomevfs C API documents. It works quite well, and is kind of neat. > > -rm James From bassi-e@libero.it Mon Oct 20 15:12:37 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp2.libero.it (smtp2.libero.it [193.70.192.52]) by mail.gnome.org (Postfix) with ESMTP id F0502183A8 for ; Mon, 20 Oct 2003 15:12:36 -0400 (EDT) Received: from wolverine.lohacker.net (151.29.209.158) by smtp2.libero.it (7.0.020-DD01) id 3F6F0DA9009A94E6 for gtk-perl-list@gnome.org; Mon, 20 Oct 2003 21:13:31 +0200 Received: by wolverine.lohacker.net (Postfix, from userid 1001) id 5DD431438A; Mon, 20 Oct 2003 21:13:43 +0200 (CEST) Date: Mon, 20 Oct 2003 21:13:43 +0200 From: Emmanuele Bassi To: gtk perl mailing list Subject: Re: debian packaging Message-ID: <20031020191343.GA4076@wolverine.lohacker.net> Mail-Followup-To: gtk perl mailing list References: <20031019211920.GA4412@wolverine.lohacker.net> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: X-Mailer: Mutt 1.5.4i (2003-03-19) X-OperatingSystem: Linux 2.6.0-test6-mm3 i686 X-message-flag: Usa un vero mailreader! http://www.mutt.org User-Agent: Mutt/1.5.4i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: * muppet : > >If muppet agrees, I could tag current CVS for release... > > go for it! Done. Every method passed the tests, but, shortly of rewriting GtkSourceView in Perl, I don't have any real test cases for added methods. > >Since Gnome2::Print binding is pretty much done, I've bumped version > >to 0.51 (some methods that requires libart structures[1] are yet to be > >bound, but I think I could commit my changes in 24/48 hours). > > let me know when you have a tarball ready, and i'll put it up on > sourceforge. Here is it: http://digilander.libero.it/ebassi/perl/Gnome2-Print-0.52.tar.gz > as for the libart stuff... anything that you come up with for libart > structures will probably also be useful to Gnome2::Canvas. I thought so. Basically, I've implemented ArtPoint and ArtDRect as a reference to arrays of doubles (since that's what they are). Bezier paths (ArtBpath) are more tricky, since they are 2x3 matrices of doubles, plus a field indicating the position inside the bezier curve (move to, curve to, line to, end, etc); the field is an enumerated integer, but its relative enumerator is not a type. +++ On a sidenote: Gnome2::GConf is mssing GConfChangeSet and error handling, at this moment. As soon as I implement both, it will be ready for inclusion. After that, these modules still require binding (should this be added inside Gnome2/TODO ?): * libpanel-applet-2.0 I'm already doing some preliminary work on this. * librsvg This will be needed more and more, so it should go in too * libnautilus-2.2 As for libbonobo and libbonobo-ui: I don't think they should go under the Gnome2 namespace, even though they're used by GNOME. Regards, Emmanuele. -- Emmanuele Bassi (Zefram) [ http://digilander.libero.it/ebassi/blog ] GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738 08BD 8ECC DB8F A432 0FF4 From vega@roc-66-67-55-11.rochester.rr.com Mon Oct 20 21:48:25 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from roc-66-67-55-11.rochester.rr.com (roc-66-67-55-11.rochester.rr.com [66.67.55.11]) by mail.gnome.org (Postfix) with ESMTP id A8DB4180DD for ; Mon, 20 Oct 2003 21:48:24 -0400 (EDT) Received: by roc-66-67-55-11.rochester.rr.com (Postfix, from userid 1000) id 64937901F40; Mon, 20 Oct 2003 21:49:21 -0400 (EDT) Date: Mon, 20 Oct 2003 21:49:21 -0400 From: mpd To: gtk-perl-list@gnome.org Subject: get_selection_info equivalent for treeview? Message-ID: <20031021014921.GA99662@rochester.rr.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.4i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Hi, As the subject says, I'm having an annoying time getting data out of a TreeView (actually a SimpleList) when a mouse button is clicked on it. I've tried to connect the handler to 'button_press_event'. This allows me to differentiate between which mouse buttons were pressed, whether it's a single/double click, etc, but I'm stuck at this point. The CList widget for Gtk1 handles this hurdle w/ get_selection_info. I briefly looked at connecting the handler to 'cursor-changed' instead, but then I could find no way to differentiate different aspects of the event (button pressed, single/double etc.) thanks in advance, mike -- ___________________________________________________________ Pokey's Twin: "WHAT IS ON THE MENU POKEY?" Pokey the Penguin: "GRITS!" - from "POKEY HAS AN IDENTICAL TWIN" From scott@asofyet.org Tue Oct 21 08:42:45 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smeagol.dreamhost.com (smeagol.dreamhost.com [66.33.209.5]) by mail.gnome.org (Postfix) with ESMTP id 86E7C1897F for ; Tue, 21 Oct 2003 08:42:45 -0400 (EDT) Received: from [192.168.1.51] (adsl-1116.mis.net [12.162.183.102]) by smeagol.dreamhost.com (Postfix) with ESMTP id 38D6C23A1B; Tue, 21 Oct 2003 05:43:01 -0700 (PDT) Subject: Re: get_selection_info equivalent for treeview? From: muppet To: mpd Cc: gtk-perl mailing list In-Reply-To: <20031021014921.GA99662@rochester.rr.com> References: <20031021014921.GA99662@rochester.rr.com> Content-Type: text/plain Organization: Message-Id: <1066740250.27399.13.camel@tetsuo> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.2.1 Date: 21 Oct 2003 08:44:10 -0400 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Mon, 2003-10-20 at 21:49, mpd wrote: > As the subject says, I'm having an annoying time getting > data out of a TreeView (actually a SimpleList) when a > mouse button is clicked on it. the tree widget in Gtk2 uses a separate object to manage selections. http://developer.gnome.org/doc/API/2.0/gtk/GtkTreeSelection.html the api is very C-ish in that some of the functions return lists and/or optional parameters and most functions write through a parameter, so the perl api is a different from C in a couple of important places. be sure to have a look at the "differences" section of Gtk2::api. fetch the selection object from the treeview: $treeselection = $treeview->get_selection; the selection can have different modes, like 'single', 'multiple', 'browse', and 'extended'... if ($treeselection->get_mode eq 'single') { my $iter = $treeselection->get_selected; # -or- my ($model, $iter) = $treeselection->get_selected; } else { # fetch all selected, which may be zero or all) my @paths = $treeselection->get_selected_rows; } if you already have an iter, e.g. you have button click coordinates, and you ask the treeview for the iter at that position, you can find out if that iter is selected: bool = $treeselection->iter_is_selected ($iter); you can also supply a function to be run on all selected nodes, or a function to be called just before a node is selected, so you can determine whether it should be selected or not. -- muppet From kaffeetisch@web.de Tue Oct 21 11:48:11 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp.web.de (smtp03.web.de [217.72.192.158]) by mail.gnome.org (Postfix) with ESMTP id E55F4180EC for ; Tue, 21 Oct 2003 11:48:10 -0400 (EDT) Received: from [217.224.249.215] (helo=6-allhosts) by smtp.web.de with esmtp (WEB.DE 4.99 #459) id 1ABykA-0005ZS-00 for gtk-perl-list@gnome.org; Tue, 21 Oct 2003 17:48:23 +0200 Subject: Re: GnomeVFS make test failture From: Torsten Schoenfeld To: gtk-perl-list@gnome.org In-Reply-To: <3F941C14.1030509@teyandei.net> References: <34399.192.146.101.12.1066655618.spork@webmail.neces.com> <3F941C14.1030509@teyandei.net> Content-Type: text/plain Message-Id: <1066751294.2245.0.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Tue, 21 Oct 2003 17:48:16 +0200 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Mon, 2003-10-20 at 19:32, James Curbo wrote: > While we're on this note, Torsten, you might put an example in the pod > about using it with HTTP or FTP urls, something other than local > filesystem things. I had forgotten it could do this until I read the > gnomevfs C API documents. It works quite well, and is kind of neat. Yeah, good idea. From kaffeetisch@web.de Tue Oct 21 11:50:02 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp.web.de (smtp02.web.de [217.72.192.151]) by mail.gnome.org (Postfix) with ESMTP id 8CC6D189C7 for ; Tue, 21 Oct 2003 11:50:02 -0400 (EDT) Received: from [217.224.249.215] (helo=6-allhosts) by smtp.web.de with esmtp (WEB.DE 4.99 #459) id 1ABym1-00042J-00 for gtk-perl-list@gnome.org; Tue, 21 Oct 2003 17:50:17 +0200 Subject: Re: debian packaging From: Torsten Schoenfeld To: gtk perl mailing list In-Reply-To: <20031020191343.GA4076@wolverine.lohacker.net> References: <20031019211920.GA4412@wolverine.lohacker.net> <20031020191343.GA4076@wolverine.lohacker.net> Content-Type: text/plain Message-Id: <1066751417.2245.3.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Tue, 21 Oct 2003 17:50:17 +0200 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Mon, 2003-10-20 at 21:13, Emmanuele Bassi wrote: > On a sidenote: Gnome2::GConf is mssing GConfChangeSet and error > handling, at this moment. As soon as I implement both, it will be ready > for inclusion. After that, these modules still require binding (should > this be added inside Gnome2/TODO ?): > > * libpanel-applet-2.0 > I'm already doing some preliminary work on this. > > * librsvg > This will be needed more and more, so it should go in too > > * libnautilus-2.2 Cool. Feel free to add them to the TODO list. > As for libbonobo and libbonobo-ui: I don't think they should go under > the Gnome2 namespace, even though they're used by GNOME. Yeah, that's probably true - we just put them in Gnome2's TODO list due to a lack of other potential places. Bye, -Torsten From gavin.brown@uk.com Tue Oct 21 14:30:27 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp-out8.blueyonder.co.uk (smtp-out8.blueyonder.co.uk [195.188.213.11]) by mail.gnome.org (Postfix) with ESMTP id DDAFC180E0 for ; Tue, 21 Oct 2003 14:30:26 -0400 (EDT) Received: from devel.jodrell.net ([82.34.166.218]) by smtp-out8.blueyonder.co.uk with Microsoft SMTPSVC(5.0.2195.5600); Tue, 21 Oct 2003 19:30:42 +0100 Subject: Bundle::Gnome2 now in CPAN From: Gavin Brown Reply-To: gavin.brown@uk.com To: gtk-perl-list@gnome.org Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-4eBVnfERgJv2nHBAcZfs" Message-Id: <1066761289.2457.2.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.4 Date: Tue, 21 Oct 2003 19:34:49 +0100 X-OriginalArrivalTime: 21 Oct 2003 18:30:42.0848 (UTC) FILETIME=[6F6F9A00:01C39801] Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: --=-4eBVnfERgJv2nHBAcZfs Content-Type: text/plain Content-Transfer-Encoding: quoted-printable I've just uploaded version 0.01 of Bundle::Gnome2 to CPAN. When it's been processed and distributed, you'll be able to install almost every module related to Gtk2-Perl in one go by running this command: perl -MCPAN -e 'install Bundle::Gnome2' Note that there are a handful of modules that exist but are not in the Bundle - this is because they're not yet on CPAN. Marc - if you can let me know if/when you upload a new module then I will update the bundle. Gavin. --=20 Gavin Brown e: gavin.brown@uk.com w: http://jodrell.net/ PGP/GPG key ID: 891D8FCA --=-4eBVnfERgJv2nHBAcZfs Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQA/lXxJqQJAZYkdj8oRAqDkAJ9gHHWK+CD5Mdwjez4ZI/GYkGR/XQCfTOMF nNvbaBbAX/nSlmewejWH+/8= =D7Za -----END PGP SIGNATURE----- --=-4eBVnfERgJv2nHBAcZfs-- From rwmcfa1@neces.com Tue Oct 21 19:08:50 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smaug.dreamhost.com (smaug.dreamhost.com [66.33.209.15]) by mail.gnome.org (Postfix) with ESMTP id 0CA9B182F1 for ; Tue, 21 Oct 2003 19:08:50 -0400 (EDT) Received: from beta.local (12-222-230-66.client.insightBB.com [12.222.230.66]) by smaug.dreamhost.com (Postfix) with ESMTP id D34695B803 for ; Tue, 21 Oct 2003 16:09:03 -0700 (PDT) Subject: Gtk2-Perl API documentation project From: Ross McFarland To: Gtk-Perl-List Content-Type: text/plain Message-Id: <1066777742.3988.9.camel@beta.local> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Tue, 21 Oct 2003 19:09:03 -0400 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: lots and lots of people want it and nobody really thinks it's a bad idea, it's just a lot of work, and somewhat of a duplication of effort. well the best solution i've come up with is a group effort (that means anyone and everyone) there's a page up on the site (that currently isn't linked to from the main page) http://gtk2-perl.sourceforge.net/doc/api/ take a look at it. there's an example of how to do this for Gtk2::Button. already up there. first i'd like comments on the idea as a whole and on the format/content of the Gtk2::Button documentation up there. after that we'll go live and everyone can start helping out. we'll link in the from the documentation page and probably put up a news item about it. if a bunch of people would each pick a few widgets to document then it would quickly get done. there are some obvious issues of consistency with this and that's why having a good example and pretty strictly adhering to it is important. if there's enough interest then this will happen if not then oh well, i'm fine with using the C api doc as i always have. i really think this is a good idea and would prove endlessly useful especially to people who are new to Gtk2 and/or perl. so give back, we're not asking that much, just a few minutes of your time. it's the gift that will keep on giving. pretty please, ... enough of that. -rm From gavin.brown@uk.com Tue Oct 21 19:24:49 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp-out7.blueyonder.co.uk (smtp-out7.blueyonder.co.uk [195.188.213.10]) by mail.gnome.org (Postfix) with ESMTP id 63EE918289 for ; Tue, 21 Oct 2003 19:24:49 -0400 (EDT) Received: from devel.jodrell.net ([82.34.166.218]) by smtp-out7.blueyonder.co.uk with Microsoft SMTPSVC(5.0.2195.5600); Wed, 22 Oct 2003 00:25:05 +0100 Subject: Re: Gtk2-Perl API documentation project From: Gavin Brown Reply-To: gavin.brown@uk.com To: gtk-perl-list@gnome.org In-Reply-To: <1066777742.3988.9.camel@beta.local> References: <1066777742.3988.9.camel@beta.local> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-6GFsxZWibT7kzo8UbP4B" Message-Id: <1066778705.2457.6.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.4 Date: Wed, 22 Oct 2003 00:25:05 +0100 X-OriginalArrivalTime: 21 Oct 2003 23:25:05.0753 (UTC) FILETIME=[8F590490:01C3982A] Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: --=-6GFsxZWibT7kzo8UbP4B Content-Type: text/plain Content-Transfer-Encoding: quoted-printable > lots and lots of people want it and nobody really thinks it's a bad > idea, it's just a lot of work, and somewhat of a duplication of effort. I have to say I agree with all those points. I think that I while back we discussed the possibility of manipulating gtk-doc data to generate this stuff automatically - any more thoughts on that? Otherwise Ross is setting himself up for a job that'll never be done. Gavin. --=20 Gavin Brown e: gavin.brown@uk.com w: http://jodrell.net/ PGP/GPG key ID: 891D8FCA --=-6GFsxZWibT7kzo8UbP4B Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQA/lcBRqQJAZYkdj8oRAtN6AJwIZlaS2ky3Pd1fjkLJncTvCjI+oQCgjUML CYbcaQ7ukPhKFwlDDNAcUcE= =RM9h -----END PGP SIGNATURE----- --=-6GFsxZWibT7kzo8UbP4B-- From evilynux@yahoo.com Tue Oct 21 21:25:51 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from web40712.mail.yahoo.com (web40712.mail.yahoo.com [66.218.78.169]) by mail.gnome.org (Postfix) with SMTP id 92CCC1815B for ; Tue, 21 Oct 2003 21:25:50 -0400 (EDT) Message-ID: <20031022012602.37183.qmail@web40712.mail.yahoo.com> Received: from [65.94.59.49] by web40712.mail.yahoo.com via HTTP; Wed, 22 Oct 2003 03:26:02 CEST Date: Wed, 22 Oct 2003 03:26:02 +0200 (CEST) From: =?iso-8859-1?q?Pascal=20Giard?= Subject: Re: Gtk2-Perl API documentation project To: gtk-perl-list@gnome.org In-Reply-To: <1066778705.2457.6.camel@localhost.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: --- Gavin Brown a écrit : > > lots and lots of people want it and nobody really thinks it's a bad > > idea, it's just a lot of work, and somewhat of a duplication of effort. > > I have to say I agree with all those points. I think that I while back > we discussed the possibility of manipulating gtk-doc data to generate > this stuff automatically - any more thoughts on that? Otherwise Ross is > setting himself up for a job that'll never be done. i don't think Ross is setting himself for this job, at least, he shouldn't. i think it has to be a collective effort, or that it shouldn't happen. it's not only my opinion, it is also what i felt in ross' email. concerning a possible gtk-doc modif, i'm somewhat out of context... are you talking about the doc generated from the PODs using gtk-doc ? or are the gtk-doc simply the documented C APIs ? in either way, it'd surely be nice if the most part was automagically generated. -Pascal ___________________________________________________________ Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français ! Yahoo! Mail : http://fr.mail.yahoo.com From james@teyandei.net Tue Oct 21 22:09:41 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from plain.rackshack.net (unknown [66.98.136.24]) by mail.gnome.org (Postfix) with ESMTP id A02691810B for ; Tue, 21 Oct 2003 22:09:41 -0400 (EDT) Received: (qmail 17377 invoked from network); 22 Oct 2003 02:08:14 -0000 Received: from pppoe0204.spt.centurytel.net (HELO teyandei.net) (64.91.29.205) by 66.98.136.24 with AES256-SHA encrypted SMTP; 22 Oct 2003 02:08:14 -0000 Message-ID: <3F95E6E8.8010909@teyandei.net> Date: Tue, 21 Oct 2003 21:09:44 -0500 From: James Curbo User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20031013 Thunderbird/0.3 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Pascal Giard Cc: gtk-perl-list@gnome.org Subject: Re: Gtk2-Perl API documentation project References: <20031022012602.37183.qmail@web40712.mail.yahoo.com> In-Reply-To: <20031022012602.37183.qmail@web40712.mail.yahoo.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Pascal Giard wrote: > --- Gavin Brown a écrit : > >>>lots and lots of people want it and nobody really thinks it's a bad >>>idea, it's just a lot of work, and somewhat of a duplication of effort. >> >>I have to say I agree with all those points. I think that I while back >>we discussed the possibility of manipulating gtk-doc data to generate >>this stuff automatically - any more thoughts on that? Otherwise Ross is >>setting himself up for a job that'll never be done. > > > i don't think Ross is setting himself for this job, at least, he shouldn't. > i think it has to be a collective effort, or that it shouldn't happen. > it's not only my opinion, it is also what i felt in ross' email. > > concerning a possible gtk-doc modif, i'm somewhat out of context... > are you talking about the doc generated from the PODs using gtk-doc ? > or are the gtk-doc simply the documented C APIs ? > > in either way, it'd surely be nice if the most part was automagically generated. He's talking about using the program. I just glanced at gtk-doc but still don't know if it'd be easy or hard to do. I would venture to say that a pure POD approach is probably best, with maybe some sort of script to generate the pod from the XS. I already wrote a simple IRC bot that would parse the XS and get function names from it (C names to Perl names, e.g. gtk_button_new -> Gtk2::Button::new), so I don't suppose it would be too hard to grab them in a similar manner, Perl-ize them, and throw them in a pod. If I was doing it, I'd probably make it generate output like so: Gtk2::Button::new C API function: gtk_button_new (maybe other specific stuff here, perhaps in some sort of external file like gtk-doc kind of does; could include an example) This would make it easy to say at the beginning, "Use the C API listing to look up information about the call," since what most people are wanting to know is how to map C names to Perl names (explicitly, instead of "read Gtk2::api") What about function arguments though? I don't know much about XS so I don't know how they are presented. > > -Pascal > James From scott@asofyet.org Tue Oct 21 22:10:59 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from frodo.dreamhost.com (frodo.dreamhost.com [66.33.209.11]) by mail.gnome.org (Postfix) with ESMTP id A7416182FA for ; Tue, 21 Oct 2003 22:10:59 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by frodo.dreamhost.com (Postfix) with ESMTP id 6E6A213BF6 for ; Tue, 21 Oct 2003 19:11:13 -0700 (PDT) Date: Tue, 21 Oct 2003 22:11:26 -0400 Subject: Gnome2::Print 0.52 Content-Type: text/plain; charset=US-ASCII; format=flowed Mime-Version: 1.0 (Apple Message framework v552) From: muppet To: gtk perl mailing list Content-Transfer-Encoding: 7bit In-Reply-To: <20031020191343.GA4076@wolverine.lohacker.net> Message-Id: <0A57725A-0435-11D8-9B41-000A9580E5E0@asofyet.org> X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Monday, October 20, 2003, at 03:13 PM, Emmanuele Bassi wrote: > http://digilander.libero.it/ebassi/perl/Gnome2-Print-0.52.tar.gz and it's now available from http://gtk2-perl.sf.net/ -- in fact, it's the top story. :-) -- muppet From james@teyandei.net Tue Oct 21 22:21:49 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from plain.rackshack.net (unknown [66.98.136.24]) by mail.gnome.org (Postfix) with ESMTP id E03CD1810B for ; Tue, 21 Oct 2003 22:21:48 -0400 (EDT) Received: (qmail 18131 invoked from network); 22 Oct 2003 02:20:27 -0000 Received: from pppoe0204.spt.centurytel.net (HELO teyandei.net) (64.91.29.205) by 66.98.136.24 with AES256-SHA encrypted SMTP; 22 Oct 2003 02:20:27 -0000 Message-ID: <3F95E9BE.3010709@teyandei.net> Date: Tue, 21 Oct 2003 21:21:50 -0500 From: James Curbo User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20031013 Thunderbird/0.3 X-Accept-Language: en-us, en MIME-Version: 1.0 To: muppet Cc: gtk perl mailing list Subject: Re: Gnome2::Print 0.52 References: <0A57725A-0435-11D8-9B41-000A9580E5E0@asofyet.org> In-Reply-To: <0A57725A-0435-11D8-9B41-000A9580E5E0@asofyet.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: muppet wrote: > > On Monday, October 20, 2003, at 03:13 PM, Emmanuele Bassi wrote: > >> http://digilander.libero.it/ebassi/perl/Gnome2-Print-0.52.tar.gz > > > and it's now available from http://gtk2-perl.sf.net/ -- in fact, it's > the top story. :-) I'd build a deb but my build machine is down at work because I'm moving :( (a good thing, really) .. so I'll get to it tomorrow hopefully. > > -- > muppet > James From rwmcfa1@neces.com Tue Oct 21 23:17:53 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smaug.dreamhost.com (smaug.dreamhost.com [66.33.209.15]) by mail.gnome.org (Postfix) with ESMTP id BCED91810B for ; Tue, 21 Oct 2003 23:17:53 -0400 (EDT) Received: from beta.local (12-222-230-66.client.insightBB.com [12.222.230.66]) by smaug.dreamhost.com (Postfix) with ESMTP id C9EC15B7CC for ; Tue, 21 Oct 2003 20:18:09 -0700 (PDT) Subject: Re: Gtk2-Perl API documentation project From: Ross McFarland To: Gtk-Perl-List In-Reply-To: <3F95E6E8.8010909@teyandei.net> References: <20031022012602.37183.qmail@web40712.mail.yahoo.com> <3F95E6E8.8010909@teyandei.net> Content-Type: text/plain; charset=ISO-8859-1 Message-Id: <1066792688.3988.22.camel@beta.local> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Tue, 21 Oct 2003 23:18:08 -0400 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Tue, 2003-10-21 at 22:09, James Curbo wrote: > Pascal Giard wrote: > > --- Gavin Brown a écrit : > > > >>>lots and lots of people want it and nobody really thinks it's a bad > >>>idea, it's just a lot of work, and somewhat of a duplication of effort. > >> > >>I have to say I agree with all those points. I think that I while back > >>we discussed the possibility of manipulating gtk-doc data to generate > >>this stuff automatically - any more thoughts on that? Otherwise Ross is > >>setting himself up for a job that'll never be done. the method that would be employed as described on the page would be to put POD comments in the xs files (which is legal, see man perlxs) the pod would probably just be tagged onto the end of the file, although interspersed would also be a possibility, http://gtk2-perl.sourceforge.net/doc/api/GtkButton.xs ExtUtils::MakeMaker either has facilities or can be coerced into creating the man-pages/perldoc from that with out any real magic. 'pod2html GtkButton.xs > GtkButton.html' was used to create the example html page. so far as i know no one ever came up with a good way to convert any of the C doc (in gtk-doc format) to perl. beyond that it wouldn't really provide for the situations where the perl api has been modified. speaking from experience at work, gtk-doc makes nice pages once it's done but it's a horrible system. the way it is set up is a message and requires 5 times as much work as should be necessary. i don't have much faith in there being a good way to auto-generate anything from it that would be worth the effort. it took about 15 mins to do the doc for Gtk2::Button and it is about an average size widget. if 10 or so people stepped up to do 4 or 5 widgets then it could be knocked out in a few hours work (each.) do i have faith that this will happen, not really, but i figured no more effort that it would take to try to get people to i would try just that. (reverse psychology) the possibility exists, although it's not at all trivial, to generate call signature api listings (no info other than parameters) but personally i think this is useless, or at the very least not worth the effort. -rm From scott@asofyet.org Wed Oct 22 00:52:06 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from gollum.dreamhost.com (gollum.dreamhost.com [66.33.209.16]) by mail.gnome.org (Postfix) with ESMTP id 26D42180E4 for ; Wed, 22 Oct 2003 00:52:06 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by gollum.dreamhost.com (Postfix) with ESMTP id 64A4B5B783 for ; Tue, 21 Oct 2003 21:52:19 -0700 (PDT) Date: Wed, 22 Oct 2003 00:52:33 -0400 Subject: Re: Gtk2-Perl API documentation project Content-Type: text/plain; charset=US-ASCII; format=flowed Mime-Version: 1.0 (Apple Message framework v552) From: muppet To: Gtk-Perl-List Content-Transfer-Encoding: 7bit In-Reply-To: <1066792688.3988.22.camel@beta.local> Message-Id: <8CE0E5F2-044B-11D8-9B41-000A9580E5E0@asofyet.org> X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Tuesday, October 21, 2003, at 11:18 PM, Ross McFarland wrote: > the possibility exists, although it's not at all trivial, to generate > call signature api listings (no info other than parameters) but > personally i think this is useless, or at the very least not worth the > effort. it's not useless. a call signature listing would form the basis of a real api reference doc system. here's what i have in mind: we have a script which parses the xs files for call signatures and embedded pod. the call signatures would come from direct parsing of the actual XS code, using the PACKAGE, PREFIX, and ALIAS to make sure you get them all, and the typemaps and possibly our maps files to turn the C types into perl package types. this method would extract at the very least a usable list of the available functions for an object, which would be like Gtk::reference. where Gtk::reference fell down was the absence of any useful descriptions of the functions, and the fact that the object information (like property and signal listings) was all in another file (Gtk::objects). to get around this, we have embedded pod, which is near the function it describes, so it can be dumped into that description: =for apidoc ret=($foo, $bar, @baz) This function returns a list of all the important shizzle for your fizzle to wizzle right. It has lots of side effects and uses lots of global variables, and trying to understand it will rob you of all your sanity points. You'd be better off searching for cthulu. you have been warned. =cut void some_crazy_function (Frobnicator * frob, FrobType type) PPCODE: ... note the use of some metadata on the =for line of the pod .... we could use something like this to explain what the actual return values are for the PPCODE function. CODE functions with OUTLIST could be filled out automagically. we should also build an introspection program which will spit out listings of all the object properties and signals, and the object hierarchy. we'd then process the output of our xs parsing magic filter into a bunch of pods that we'd install. a manpage for each object, which lists the type, the lineage, the methods, properties, and signals. basically, we'd implement something very much like gtk-doc, but tailored to work with gtk2-perl and to create pod output. boosh. this would give us the api listing for all the people who don't grok C, and would be a starting point for filling out the descriptions -- which is where the duplication comes in, but i think with terse and to the point descriptions we can rely on well-named functions to get us by. *cough* ross has a point, that the embedded pod makes the xs code cumbersome; this is why i say that we need to generate the listings rather than type them in. the annotations will be needed for the most part only on non-trivial functions, so it's less clutter to document only the ones that need it. but i think we can do this, and do it well enough that we could use it on any of the add-on projects, too (Gnome2, Gnome2::Canvas, Gnome2::Print, etc, etc). an mockup manpage containing the information we could extract via code parsing and introspection: NAME Gtk2::Button - SYNOPSIS Gtk2::Button->new (mnemonic=undef) Gtk2::Button->new_from_stock (stock_id) $button->pressed $button->released $button->clicked ... DESCRIPTION any text that may be available. if there's no text, this section doesn't appear. METHODS $widget = Gtk2::Button->new (mnemonic=undef) - mnemonic: string $button->clicked here is some descriptive text from a =for apidoc pod. $button->set_use_underline (use_underline) - use_underline: boolean ... PROPERTIES use-underline - boolean - read/write blurb text ... SIGNALS clicked ... -- muppet From gavin.brown@uk.com Wed Oct 22 05:29:03 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.centralnic.net (unknown [212.18.224.18]) by mail.gnome.org (Postfix) with ESMTP id 76FB918188 for ; Wed, 22 Oct 2003 05:29:03 -0400 (EDT) Received: from lon-staffgw-1.centralnic.net ([212.18.224.152] helo=aqua.jodrell.net) by mail.centralnic.net with esmtp (Exim 4.22) id 1ACFIu-0000Ci-01 for gtk-perl-list@gnome.org; Wed, 22 Oct 2003 10:29:20 +0100 From: Gavin Brown Reply-To: gavin.brown@uk.com To: gtk-perl-list@gnome.org In-Reply-To: <8CE0E5F2-044B-11D8-9B41-000A9580E5E0@asofyet.org> References: <8CE0E5F2-044B-11D8-9B41-000A9580E5E0@asofyet.org> Message-Id: <1066814959.24725.4.camel@scimitar.jodrell.net> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.3 Date: 22 Oct 2003 10:29:20 +0100 Subject: Re: Gtk2-Perl API documentation project Content-Type: text/plain Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Just a thought - if we can generate a list of widgets and their methods and properties, we could pass it to a wiki on the website, which would make the collaboration much easier, and allow anyone to add notes, comments and other useful stuff. G. -- Gavin Brown e: gavin.brown@uk.com w: http://jodrell.net/ PGP/GPG key ID: 891D8FCA From rwmcfa1@neces.com Wed Oct 22 08:28:30 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from frodo.dreamhost.com (frodo.dreamhost.com [66.33.209.11]) by mail.gnome.org (Postfix) with ESMTP id 24686180FD for ; Wed, 22 Oct 2003 08:28:29 -0400 (EDT) Received: from beta.local (12-222-230-66.client.insightBB.com [12.222.230.66]) by frodo.dreamhost.com (Postfix) with ESMTP id 9231513C13 for ; Wed, 22 Oct 2003 05:28:45 -0700 (PDT) Subject: Re: Gtk2-Perl API documentation project From: Ross McFarland To: Gtk-Perl-List In-Reply-To: <8CE0E5F2-044B-11D8-9B41-000A9580E5E0@asofyet.org> References: <8CE0E5F2-044B-11D8-9B41-000A9580E5E0@asofyet.org> Content-Type: text/plain Message-Id: <1066825724.3988.42.camel@beta.local> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Wed, 22 Oct 2003 08:28:44 -0400 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Wed, 2003-10-22 at 00:52, muppet wrote: > =for apidoc ret=($foo, $bar, @baz) > > This function returns a list of all the important shizzle for your > fizzle to wizzle right. It has lots of side effects and uses lots > of global variables, and trying to understand it will rob you > of all your sanity points. You'd be better off searching for > cthulu. you have been warned. > > =cut > void > some_crazy_function (Frobnicator * frob, FrobType type) > PPCODE: > ... we can/could parse the xsubpp generated c file with an algorithm something like: while( ) { # XS(XS_Gtk2__Button_new_from_stock) $fname = $1 if /^XS(\(.*\))$/; # ...Usage:Gtk2::Button::new_from_stock(class, stock_id). if /Usage:/ { $sig = $_; $sig =~ s/.*(\(.*\)).*/$1/; $funcs{$fname} = $sig; } } we could find the perl names of functions by looking at newXS calls in the BOOT section. if the first parameter is class then Gtk2:XXX->$fname ($sig), otherwise $class_obj->$fname ($sig). this would even work for ALIAS and PPCODE functions even resolving all of their names correctly. the only questions remaining are how you come up with the class object ($class_obj,) maybe they could always be the same thing $obj or something. the other question is how you associate descriptions with a function. then something like the =for apidoc above could work. parsing the xs file building up the list of for apidoc's. something like: =for apidoc fname_here foo bar blah blah blah =cut the only thing this doesn't deal with are return values, but they could likely be fitted into this scheme somehow. -rm From Wolfgang@Contre.COM Wed Oct 22 10:43:41 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from tomts20-srv.bellnexxia.net (tomts20.bellnexxia.net [209.226.175.74]) by mail.gnome.org (Postfix) with ESMTP id 4169B18173 for ; Wed, 22 Oct 2003 10:43:41 -0400 (EDT) Received: from uSh2ieyu.ws ([65.94.59.49]) by tomts20-srv.bellnexxia.net (InterMail vM.5.01.06.05 201-253-122-130-105-20030824) with ESMTP id <20031022144357.YUCT22704.tomts20-srv.bellnexxia.net@uSh2ieyu.ws> for ; Wed, 22 Oct 2003 10:43:57 -0400 Received: from wolfgang by uSh2ieyu.ws with local (Exim 3.36 #1 (Debian)) id 1ACKDM-0000JX-00 for ; Wed, 22 Oct 2003 10:43:56 -0400 Subject: Re: debian packaging From: Wolfgang Sourdeau To: gtk-perl-list@gnome.org In-Reply-To: <1066638436.20574.2.camel@aratnaweera.enetsl.virtusa.com> References: <20031018222523.GA1317@Contre.COM> <20031018225724.GA9322@angua.rince.de> <20031018225846.GA1566@Contre.COM> <20031018230342.GB9322@angua.rince.de> <20031018230747.GA1632@Contre.COM> <1066638436.20574.2.camel@aratnaweera.enetsl.virtusa.com> Content-Type: text/plain Content-Transfer-Encoding: 7bit Message-Id: <1066833835.1131.1.camel@uSh2ieyu.ws> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Wed, 22 Oct 2003 10:43:56 -0400 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: > The debian/ subdir in upstream is very useful for some (like me - > although I took the liberty of using "some" in plural ;-) who normally > install the homemade debs of the latest versions, but not running sid. > > Anuradha There will be only one file more to download instead of one. Nothing will prevent you of doing that. The requirement is that the debian/ subdir get out of the main archive, it won't disappear per se. You can configure your debian system by specifying another source registry pointing to sid. Wolfgang From Wolfgang@Contre.COM Wed Oct 22 10:45:41 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from tomts20-srv.bellnexxia.net (tomts20.bellnexxia.net [209.226.175.74]) by mail.gnome.org (Postfix) with ESMTP id 0890B18173 for ; Wed, 22 Oct 2003 10:45:41 -0400 (EDT) Received: from uSh2ieyu.ws ([65.94.59.49]) by tomts20-srv.bellnexxia.net (InterMail vM.5.01.06.05 201-253-122-130-105-20030824) with ESMTP id <20031022144557.YVZP22704.tomts20-srv.bellnexxia.net@uSh2ieyu.ws> for ; Wed, 22 Oct 2003 10:45:57 -0400 Received: from wolfgang by uSh2ieyu.ws with local (Exim 3.36 #1 (Debian)) id 1ACKFI-0000Jd-00 for ; Wed, 22 Oct 2003 10:45:56 -0400 Subject: Re: debian packaging From: Wolfgang Sourdeau To: gtk perl mailing list In-Reply-To: <1066545188.15764.2.camel@pioneer> References: <20031019060153.25965.qmail@web40702.mail.yahoo.com> <1066545188.15764.2.camel@pioneer> Content-Type: text/plain Content-Transfer-Encoding: 7bit Message-Id: <1066833956.1121.3.camel@uSh2ieyu.ws> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Wed, 22 Oct 2003 10:45:56 -0400 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: > Build-Depends is the tricky one. It's far less volatile than Depends. So it has to be configured manually once and updated here and then. Nothing really complicated. Wolfgang From scott@asofyet.org Wed Oct 22 18:00:19 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id B0ACD1836F for ; Wed, 22 Oct 2003 18:00:18 -0400 (EDT) Received: from webmail.asofyet.org (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id 0E77EFA74 for ; Wed, 22 Oct 2003 15:00:35 -0700 (PDT) Received: from 192.146.101.12 (SquirrelMail authenticated user scott@asofyet.org) by webmail.asofyet.org with HTTP; Wed, 22 Oct 2003 18:00:35 -0400 (EDT) Message-ID: <13224.192.146.101.12.1066860035.spork@webmail.asofyet.org> Date: Wed, 22 Oct 2003 18:00:35 -0400 (EDT) Subject: reference documentation generator From: "muppet" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: multipart/mixed;boundary="----=_20031022180035_68842" Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: ------=_20031022180035_68842 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit because my mind doesn't let go of things like this, i've hacked up a couple of scripts which implement the core of what i discussed in a previous message. i want, nay, need your comments and suggestions. in this corner, weighing in at 245 lines of pure perl code, we have parseem.pl, the script that knows how to parse 'em. he scans xs files for xsub prototypes and pod comments, and prints to stdout the Data::Dumper output of an array of xsub description hashes and an array of pod lines. in the other corner, weighing in at 215 lines of pure perl code, we have printem.pl, the script that knows how to print 'em. he reads in the data structures created by parseem.pl and a maps file and writes pod to stdout. the sticky point is the maps file. printem.pl needs to know how to convert C typedefs into relevant perl type names. it knows a small table of built-ins (e.g., gboolean => boolean, gint => integer, gdouble => double, SV => scalar, gchar => string), but to get other types, e.g. GtkButton => Gtk2::Button, it needs to have a map of such things. the obvious answer is to use the maps file which Gtk2 already has, so printem.pl looks for "./maps" and "../maps". that's a sticky point because i'd like to use this same mechanism on projects which don't use a maps file, e.g. Glib. printem.pl basically just prints out a listing of all the functions found in file, with call signatures. if the XS file contains pod comments, it picks those up, too. there are two ways to associate a comment with a function: - have the comment immediately precede the function it documents. there must be NO blank lines between the =cut and the xsub. - have a first line in the comment which specifies the function it documents. e.g. =for apidoc Gtk2::Button::new this is an important distinction. the attached "documented.xs" (which started out as GtkButton.xs) uses the explicit association to put a comment on only one of the three subs aliased together with new, and uses the normal attached style to document new_from_stock. here's the output of that script pair on documented.xs: -=-=-=-=- muppet:~/gtk2-perl-xs/Gtk2/xs$ ./parseem.pl documented.xs | ./printem.pl | pod2text METHODS widget = Gtk2::Button->new (label) - label (string) The default new takes an optional mnemonic string. If you don't like that, use new_with_label() explicitly. widget = Gtk2::Button->new_with_mnemonic (label) - label (string) widget = Gtk2::Button->new_with_label (label) - label (string) widget = Gtk2::Button->new_from_stock (stock_id) - stock_id (string) Create a new button containing a stock icon. The *stock_id* is the string which is #defined in the gtk+ source; see the C api reference for a listing. $button->pressed $button->released $button->clicked $button->enter $button->leave $button->set_relief (newstyle) - newstyle (Gtk2::ReliefStyle) reliefstyle = $button->get_relief $button->set_label (label) - label (string) string = $button->get_label $button->set_use_underline (use_underline) - use_underline (boolean) boolean = $button->get_use_underline $button->set_use_stock (use_stock) - use_stock (boolean) -=-=-=- this implementation is a prototype, and is missing quite a few things: - descriptions for parameters. - handling for preprocessor directives. currently i just ignore them, so the docs wind up having multiple declarations and documenting things that your build of the library may not actually have. - a way to override return types. any function seen to have a PPCODE: section will simply have the return type of "list", because that's all we can determine from scanning. i want the pod to be able to override and elaborate on that, e.g. =for apidoc =return list(model, iter) =return scalar(iter) Get the iter of the currently selected row. =cut void gtk_tree_selection_get_selected (GtkTreeSelection * selection) PPCODE: /* code returns just the iter in scalar context, but * the model and the iter in list context. */ ... should result in =item iter = $treeselection->get_selected =item (model, iter) = $treeselection->get_selected Get the iter of the currently selected row. that's not too hard to do, but to do it we need to define the format of the doc comments. - support for introspection --- we need to ask the type system at runtime what properties and signals an object has, who its ascestors are, what values an enum or flag can have, etc. to do this right, we need to define some other pod directives to go in other parts of the XS file, so that we know to spit out all the relevant information for GtkButton in the pod file for Gtk2::Button. for the enums and flags, i guess we'll either have to use a "put this type's values here" directive or glop them all into one file. i'm out of time to write up the description, so here are the scripts and the sample input. you can also run the scripts on all the files in the Gtk2/xs subdir --- i've been doing it like this: for i in *.xs ; do \ j=`basename $i .xs`; \ echo $j ; \ ./parseem.pl $j.xs | \ tee $j.docpl | \ ./printem.pl > $j.pod ; \ done -- muppet ------=_20031022180035_68842 Content-Type: application/octet-stream; name="documented.xs" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="documented.xs" LyoKICogQ29weXJpZ2h0IChjKSAyMDAzIGJ5IHRoZSBndGsyLXBlcmwgdGVhbSAoc2VlIHRoZSBm aWxlIEFVVEhPUlMpCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRo ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBU aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0 aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIAogKiBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgCiAqIEJvc3Rvbiwg TUEgIDAyMTExLTEzMDcgIFVTQS4KICoKICogJEhlYWRlcjogL2N2c3Jvb3QvZ3RrMi1wZXJsL2d0 azItcGVybC14cy9HdGsyL3hzL0d0a0J1dHRvbi54cyx2IDEuOCAyMDAzLzEwLzEyIDE3OjU3OjMw IHJ3bWNmYTEgRXhwICQKICovCgojaW5jbHVkZSAiZ3RrMnBlcmwuaCIKCk1PRFVMRSA9IEd0azI6 OkJ1dHRvbglQQUNLQUdFID0gR3RrMjo6QnV0dG9uCVBSRUZJWCA9IGd0a19idXR0b25fCgo9Zm9y IGFwaWRvYyBHdGsyOjpCdXR0b246Om5ldwoKVGhlIGRlZmF1bHQgbmV3IHRha2VzIGFuIG9wdGlv bmFsIG1uZW1vbmljIHN0cmluZy4gIElmIHlvdSBkb24ndCBsaWtlIHRoYXQsCnVzZSBuZXdfd2l0 aF9sYWJlbCgpIGV4cGxpY2l0bHkuCgo9Y3V0CgojIHRoZSBibGFuayBsaW5lIHRoZXJlIGlzIHZl cnkgaW1wb3J0YW50Ckd0a1dpZGdldCAqCmd0a19idXR0b25fbmV3cyAoY2xhc3MsIGxhYmVsPU5V TEwpCgljb25zdCBnY2hhciAqIGxhYmVsCiAgICBBTElBUzoKCUd0azI6OkJ1dHRvbjo6bmV3ID0g MAoJR3RrMjo6QnV0dG9uOjpuZXdfd2l0aF9tbmVtb25pYyA9IDEKCUd0azI6OkJ1dHRvbjo6bmV3 X3dpdGhfbGFiZWwgPSAyCiAgICBDT0RFOgoJaWYgKGxhYmVsKSB7CgkJaWYgKGl4ID09IDIpCgkJ CVJFVFZBTCA9IGd0a19idXR0b25fbmV3X3dpdGhfbGFiZWwgKGxhYmVsKTsKCQllbHNlCgkJCVJF VFZBTCA9IGd0a19idXR0b25fbmV3X3dpdGhfbW5lbW9uaWMgKGxhYmVsKTsKCX0gZWxzZQoJCVJF VFZBTCA9IGd0a19idXR0b25fbmV3ICgpOwogICAgT1VUUFVUOgoJUkVUVkFMCgo9Zm9yIGFwaWRv YwoKQ3JlYXRlIGEgbmV3IGJ1dHRvbiBjb250YWluaW5nIGEgc3RvY2sgaWNvbi4gIFRoZSBJPHN0 b2NrX2lkPiBpcyB0aGUKc3RyaW5nIHdoaWNoIGlzICNkZWZpbmVkIGluIHRoZSBndGsrIHNvdXJj ZTsgc2VlIHRoZSBDIGFwaSByZWZlcmVuY2UgZm9yCmEgbGlzdGluZy4KCj1jdXQKR3RrV2lkZ2V0 ICoKZ3RrX2J1dHRvbl9uZXdfZnJvbV9zdG9jayAoY2xhc3MsIHN0b2NrX2lkKQoJY29uc3QgZ2No YXIgKiBzdG9ja19pZAogICAgQ19BUkdTOgoJc3RvY2tfaWQKCnZvaWQKZ3RrX2J1dHRvbl9wcmVz c2VkIChidXR0b24pCglHdGtCdXR0b24gKiBidXR0b24KCnZvaWQKZ3RrX2J1dHRvbl9yZWxlYXNl ZCAoYnV0dG9uKQoJR3RrQnV0dG9uICogYnV0dG9uCgp2b2lkCmd0a19idXR0b25fY2xpY2tlZCAo YnV0dG9uKQoJR3RrQnV0dG9uICogYnV0dG9uCgp2b2lkCmd0a19idXR0b25fZW50ZXIgKGJ1dHRv bikKCUd0a0J1dHRvbiAqIGJ1dHRvbgoKdm9pZApndGtfYnV0dG9uX2xlYXZlIChidXR0b24pCglH dGtCdXR0b24gKiBidXR0b24KCnZvaWQKZ3RrX2J1dHRvbl9zZXRfcmVsaWVmIChidXR0b24sIG5l d3N0eWxlKQoJR3RrQnV0dG9uICogYnV0dG9uCglHdGtSZWxpZWZTdHlsZSAgbmV3c3R5bGUKCkd0 a1JlbGllZlN0eWxlCmd0a19idXR0b25fZ2V0X3JlbGllZiAoYnV0dG9uKQoJR3RrQnV0dG9uICog YnV0dG9uCgoKdm9pZApndGtfYnV0dG9uX3NldF9sYWJlbCAoYnV0dG9uLCBsYWJlbCkKCUd0a0J1 dHRvbiAqIGJ1dHRvbgoJY29uc3QgZ2NoYXIgKiBsYWJlbAoKIyBoYWQgR19DT05TVF9SRVRVUk4K Y29uc3QgZ2NoYXIgKgpndGtfYnV0dG9uX2dldF9sYWJlbCAoYnV0dG9uKQoJR3RrQnV0dG9uICog YnV0dG9uCgp2b2lkCmd0a19idXR0b25fc2V0X3VzZV91bmRlcmxpbmUgKGJ1dHRvbiwgdXNlX3Vu ZGVybGluZSkKCUd0a0J1dHRvbiAqIGJ1dHRvbgoJZ2Jvb2xlYW4gICAgIHVzZV91bmRlcmxpbmUK Cmdib29sZWFuCmd0a19idXR0b25fZ2V0X3VzZV91bmRlcmxpbmUgKGJ1dHRvbikKCUd0a0J1dHRv biAqIGJ1dHRvbgoKdm9pZApndGtfYnV0dG9uX3NldF91c2Vfc3RvY2sgKGJ1dHRvbiwgdXNlX3N0 b2NrKQoJR3RrQnV0dG9uICogYnV0dG9uCglnYm9vbGVhbiAgICAgdXNlX3N0b2NrCgpnYm9vbGVh bgpndGtfYnV0dG9uX2dldF91c2Vfc3RvY2sgKGJ1dHRvbikKCUd0a0J1dHRvbiAqIGJ1dHRvbgo= ------=_20031022180035_68842 Content-Type: application/octet-stream; name="parseem.pl" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="parseem.pl" IyEvdXNyL2Jpbi9wZXJsIC13Cgp1c2UgRGF0YTo6RHVtcGVyOwoKJGZpbGVuYW1lID0gJEFSR1Zb MF0gfHwgIihzdGRpbikiOwoKIyBzb21lIGltcG9ydGFudCBzdGF0ZToKJG1vZHVsZSAgPSB1bmRl ZjsKJHBhY2thZ2UgPSB1bmRlZjsKJHByZWZpeCAgPSB1bmRlZjsKCiMgdGhlIHRleHQgb2YgdGhl IGN1cnJlbnRseS1iZWluZy1yZWFkIHBvZC4KQHRoaXNwb2QgPSAoKTsKIyBhbGwgZGV0ZWN0ZWQg cG9kcy4KQHBvZHMgPSAoKTsKCiMgdGhlIGxpbmVzIHRoZSBtYWtlIHVwIHRoZSB4c3ViIGN1cnJl bnRseSBiZWluZyBwYXJzZWQKQHRoaXN4c3ViID0gKCk7CiMgbGlzdCBvZiBhbGwgZGV0ZWN0ZWQg eHN1YnMKQHhzdWJzID0gKCk7CgojIHBhcnNlciBzdGF0ZXMuCkBzdGF0ZSA9ICgncHJlJyk7CnN1 YiBjdXJyZW50X3N0YXRlIHsgJHN0YXRlWzBdIH07CnN1YiBwdXNoX3N0YXRlIHsKCSN3YXJuICJu ZXcgc3RhdGUgJF9bMF1cbiI7Cgl1bnNoaWZ0IEBzdGF0ZSwgJF9bMF07Cn0Kc3ViIHBvcF9zdGF0 ZSB7CglzaGlmdCBAc3RhdGU7Cgkjd2FybiAicG9wIHRvIHN0YXRlICRzdGF0ZVswXVxuIjsKfQoK d2hpbGUgKDw+KSB7CgljaG9tcDsKCW15ICRzID0gY3VycmVudF9zdGF0ZTsKCWlmICgkcyBlcSAn cHJlJykgewoJCWlmIChpc19tb2R1bGVfbGluZSAoJF8pKSB7CgkJCXB1c2hfc3RhdGUgJ3NlZWtp bmcnOwoJCX0KCX0gZWxzaWYgKCRzIGVxICdjY29tbWVudCcpIHsKCX0gZWxzaWYgKCRzIGVxICdz ZWVraW5nJykgewoJCWlmIChpc19tb2R1bGVfbGluZSAoJF8pKSB7CgkJCSRsYXN0cG9kID0gdW5k ZWY7CgkJfSBlbHNpZiAoL15ccyokLykgewoJCQkjIGlnbm9yZSBibGFuayBsaW5lczsgYnV0IGEg YmxhbmsgbGluZSBhZnRlciBhIHBvZAoJCQkjIG1lYW5zIGl0IGNhbid0IGJlIGFzc29jaWF0ZWQg d2l0aCBhbiB4c3ViLgoJCQkkbGFzdHBvZCA9IHVuZGVmOwojCQl9IGVsc2lmICgvXlxzKiNccypp ZlxzKjAoXHMuKik/JC8pIHsKIwkJCXB1c2hfc3RhdGUgJ2lmMCc7CgkJfSBlbHNpZiAoL15ccyoj XHMqKGlmfGlmZGVmfGlmbmRlZilccyooXHMuKikkLykgewoJCQkjd2FybiAiY29uZGl0aW9uYWwg JDEgJDJcbiI7CgkJCXB1c2ggQGNvbmQsICQyOwoJCQkjcHJpbnQgRHVtcGVyKFxAY29uZCk7CgkJ fSBlbHNpZiAoL15ccyojXHMqZWxzZVxzKihccy4qKT8kLykgewoJCQkjd2FybiAiZWxzZSAkY29u ZFstMV1cbiI7CgkJfSBlbHNpZiAoL15ccyojXHMqZW5kaWZccyooXHMuKik/JC8pIHsKCQkJI3dh cm4gImVuZGlmICRjb25kWy0xXVxuIjsKCQkJcG9wIEBjb25kOwoJCX0gZWxzaWYgKC9ePS8pIHsK CQkJcHVzaF9zdGF0ZSAncG9kJzsKCQkJcHVzaCBAdGhpc3BvZCwgJF87CgkJfSBlbHNpZiAoL15c cyojLykgewoJCQkjIGlnbm9yZSBjb21tZW50cwoJCX0gZWxzaWYgKC9eKEJPT1R8UFJPVE9UWVBF UykvKSB7CgkJCSMgaWdub3JlIGtleXdvcmQgbGluZXMgaW4gd2hpY2ggd2UgYXJlbid0IGludGVy ZXN0ZWQKCQl9IGVsc2lmICgvXlx3Ky8pIHsKCQkJIyB0aGVyZSdzIHNvbWV0aGluZyBhdCB0aGUg YmVnaW5uaW5nIG9mIHRoZSBsaW5lIQoJCQlwdXNoIEB0aGlzeHN1YiwgJF87CgkJCXB1c2hfc3Rh dGUgJ3hzdWInOwoJCX0KCX0gZWxzaWYgKCRzIGVxICdpZjAnKSB7Cgl9IGVsc2lmICgkcyBlcSAn cG9kJykgewoJCXB1c2ggQHRoaXNwb2QsICRfOwoJCWlmICgvXj1jdXRccyokLykgewoJCQkjIHN0 b3JlIHRoaXMgcG9kCgkJCSRsYXN0cG9kID0gW0B0aGlzcG9kXTsKCQkJcHVzaCBAcG9kcywgJGxh c3Rwb2Q7CgkJCUB0aGlzcG9kID0gKCk7CgkJCXBvcF9zdGF0ZTsKCQl9IGVsc2UgewoJCX0KCX0g ZWxzaWYgKCRzIGVxICd4c3ViJykgewoJCWlmICgvXlxzKiQvKSB7CgkJCXByb2NfdGhpc3hzdWIg KCk7CgkJCUB0aGlzeHN1YiA9ICgpOwoJCQlpZiAoJGxhc3Rwb2QpIHsKCQkJCSMgYWhhISB3ZSds bCBsYXkgY2xhaW0gdG8gdGhhdC4uLgoJCQkJcG9wIEBwb2RzOwoJCQkJJHhzdWJzWy0xXXtwb2R9 ID0gJGxhc3Rwb2Q7CgkJCQkkbGFzdHBvZCA9IHVuZGVmOwoJCQl9CgkJCXBvcF9zdGF0ZTsKCQl9 IGVsc2UgewoJCQlwdXNoIEB0aGlzeHN1YiwgJF87CgkJfQoJfSBlbHNlIHsKCX0KfQoKCiMgCiMg c2F2ZSB0aGUgZGF0YQojCnByaW50IERhdGE6OkR1bXBlci0+RHVtcChbXEBwb2RzLCBcQHhzdWJz XSwgW3F3KCRwb2RzICR4c3VicyldKTsKCiMgZmluCgojID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKc3ViIGlzX21vZHVsZV9s aW5lIHsKCW15ICRsID0gc2hpZnQ7CglpZiAoJGwgPX4gL15NT0RVTEVccyo9XHMqKFs6XHddKykK CQkgICAgKD86XHMrUEFDS0FHRVxzKj1ccyooWzpcd10rKQoJCSAgICAgKD86XHMrUFJFRklYXHMq PVxzKihbOlx3XSspKT8pPwoJCSAgICAveCkgewoJCSRtb2R1bGUgID0gJDE7CgkJJHBhY2thZ2Ug PSAkMjsKCQkkcHJlZml4ICA9ICQzOwoJCSN3YXJuICJuZXcgbW9kdWxlOiAiCgkJIyAgIC4gam9p bigiIC8gIiwgJG1vZHVsZXx8IiIsICAkcGFja2FnZXx8IiIsICRwcmVmaXh8fCIiKQoJCSMgICAu ICJcbiI7CgkJcmV0dXJuIDE7Cgl9IGVsc2UgewoJCXJldHVybiAwOwoJfQp9CgoKc3ViIHByb2Nf dGhpc3hzdWIgewoJbWFwIHsgcy8jLiokLy8gfSBAdGhpc3hzdWI7CgokU0lHe19fV0FSTl9ffSA9 IHN1YiB7IHdhcm4gIiRmaWxlbmFtZTokLjogICRtb2R1bGUgLyAkcGFja2FnZVxuICAgICRfWzBd XG4gICAiLkR1bXBlcihcQHRoaXN4c3ViKSB9OwoKCW15ICRsaW5lbm8gPSAkLiAtIEB0aGlzeHN1 YjsKCW15ICV4c3ViID0gKAoJCSdwYWNrYWdlJyA9PiAoJHBhY2thZ2UgfHwgJG1vZHVsZSksCgkp OwoJbXkgJGFyZ3M7CgoJI3dhcm4gRHVtcGVyKFxAdGhpc3hzdWIpOwoKCWlmICgkdGhpc3hzdWJb MF0gPX4gL14oW14oXStccytcKj8pXGIoWzpcd10rKVxzKlwoXHMqKC4rKVxzKlwpOz9ccyokLykg ewoJCSMgYWxsIG9uIG9uZSBsaW5lCgkJJHhzdWJ7cmV0dXJuX3R5cGV9ID0gWyQxXQoJCQl1bmxl c3MgJDEgZXEgJ3ZvaWQnOwoJCSR4c3Vie3N5bW5hbWV9ID0gJDI7CgkJJGFyZ3MgPSAkMzsKCQlz aGlmdCBAdGhpc3hzdWI7ICRsaW5lbm8rKzsKCX0gZWxzaWYgKCR0aGlzeHN1YlsxXSA9fiAvXihc UyspXHMqXCgoLispXCk7P1xzKiQvKSB7CgkJIyBtdWx0aXBsZSBsaW5lcwoJCSR4c3Vie3N5bW5h bWV9ID0gJDE7CgkJJGFyZ3MgPSAkMjsKCQkjIHJldHVybiB0eXBlIGlzIG9uIGxpbmUgMAoJCSR0 aGlzeHN1YlswXSA9fiBzL1xzKiQvLzsKCQkkeHN1YntyZXR1cm5fdHlwZX0gPSBbJHRoaXN4c3Vi WzBdXQoJCQl1bmxlc3MgJHRoaXN4c3ViWzBdIGVxICd2b2lkJzsKCQlzaGlmdCBAdGhpc3hzdWI7 ICRsaW5lbm8rKzsKCQlzaGlmdCBAdGhpc3hzdWI7ICRsaW5lbm8rKzsKCX0KCgl3YXJuICIkZmls ZW5hbWU6JGxpbmVubzogV1RGIDogYXJncyBzdHJpbmcgaXMgZW1wdHlcbiIKCQlpZiBub3QgZGVm aW5lZCAkYXJnczsKCglteSAlYXJncyA9ICgpOwoJbXkgQGFyZ3N0ciA9IHNwbGl0IC9ccyosXHMq LywgJGFyZ3M7CgkjcHJpbnQgRHVtcGVyKFskYXJncywgXEBhcmdzXSk7Cglmb3IgKG15ICRpID0g MCA7ICRpIDwgQGFyZ3N0ciA7ICRpKyspIHsKCQkjIHRoZSBsYXN0IG9uZSBjYW4gYmUgYW4gZWxs aXBzaXMsIGxldCdzIGhhbmRsZSB0aGF0IHNwZWNpYWxseQoJCWlmICgkaSA9PSAkI2FyZ3N0ciBh bmQgJGFyZ3N0clskaV0gZXEgJy4uLicpIHsKCQkJJGFyZ3N7Jy4uLid9ID0geyBuYW1lID0+ICcu Li4nLCB9OwoJCQlwdXNoIEB7ICR4c3Vie2FyZ3N9IH0sICRhcmdzeycuLi4nfTsKCQkJbGFzdDsK CQl9CgkJJGFyZ3N0clskaV0gPX4gL14oT1VUTElTVFxzKyk/ICAgICAgIyBPVVRMSVNUIHdvdWxk IGJlIDFzdAoJCSAgICAgICAgICAgICAgICAgKFtePV0rKD86XGJ8XHMpKT8gICMgYXJnIHR5cGUg aXMgb3B0aW9uYWwsIHRvbwoJCQkgICAgICAgICAoXHcrKSAgICAgICAgICAgICAgIyBhcmcgbmFt ZQoJCQkgICAgICAgICAoPzpccyo9XHMqKC4rKSk/ICAgIyBwb3NzaWJseSBhIGRlZmF1bHQgdmFs dWUKCQkJICAgICAgICAkL3g7CgkJaWYgKGRlZmluZWQgJDEpIHsKCQkJcHVzaCBAeyAkeHN1Yntv dXRsaXN0fSB9LCB7CgkJCQl0eXBlID0+ICQyLAoJCQkJbmFtZSA9PiAkMywKCQkJfTsKCQkJCgkJ fSBlbHNlIHsKCQkJJGFyZ3N7JDN9ID0gewoJCQkJdHlwZSA9PiAkMiwKCQkJCW5hbWUgPT4gJDMs CgkJCX07CgkJCSRhcmdzeyQzfXtkZWZhdWx0fSA9ICQ0IGlmIGRlZmluZWQgJDQ7CgkJCXB1c2gg QHsgJHhzdWJ7YXJnc30gfSwgJGFyZ3N7JDN9OwoJCX0KCX0KCgkKCglteSAkeHN0YXRlID0gJ2Fy Z3MnOwoJd2hpbGUgKCRfID0gc2hpZnQgQHRoaXN4c3ViKSB7CgkJaWYgKC9eXHMqQUxJQVM6Lykg ewoJCQkkeHN0YXRlID0gJ2FsaWFzJzsKCQl9IGVsc2lmICgvXHMqKFBSRUlOSVR8Q0xFQU5VUHxP VVRQVVR8Q19BUkdTKTovKSB7CgkJCSR4c3RhdGUgPSAnY29kZSc7CgkJfSBlbHNpZiAoL1xzKihQ UENPREV8Q09ERSk6LykgewoJCQkkeHN1Yntjb2RldHlwZX0gPSAkMTsKCQkJbGFzdDsKCQl9IGVs c2lmICgkeHN0YXRlIGVxICdhbGlhcycpIHsKCQkJL15ccyooWzpcd10rKVxzKj1ccyooXGQrKVxz KiQvOwoJCQlpZiAoZGVmaW5lZCAkMikgewoJCQkJJHhzdWJ7YWxpYXN9eyQxfSA9ICQyOwoJCQl9 IGVsc2UgewoJCQkJd2FybiAiJGZpbGVuYW1lOiRsaW5lbm86IFdURiA6IHNlZWtpbmcgYWxpYXMg b24gbGluZSAkX1xuIjsKCQkJfQoJCX0gZWxzaWYgKCR4c3RhdGUgZXEgJ2FyZ3MnKSB7CgkJCWlm ICgvXlxzKgoJCQkgICAgICAoLisoPzpcYnxccykpICAgICAgIyBkYXRhdHlwZQoJCQkgICAgICAo XHcrKSAgICAgICAgICAgICAgIyBhcmcgbmFtZQoJCQkgICAgICA7PyAgICAgICAgICAgICAgICAg IyBvcHRpb25hbCB0cmFpbGluZyBzZW1pY29sb24KCQkJICAgICAgXHMqJC94KQoJCQl7CgkJCQlp ZiAoZXhpc3RzICRhcmdzeyQyfSkgewoJCQkJCSRhcmdzeyQyfXt0eXBlfSA9ICQxCgkJCQl9IGVs c2UgewoJCQkJCXdhcm4gIiRmaWxlbmFtZTokbGluZW5vOiB1bnVzZWQgYXJnICQyXG4iOwoJCQkJ CXdhcm4gIiAgbGluZSB3YXMgJyRfJ1xuIjsKCQkJCX0KCQkJfSBlbHNpZiAoL15ccyovKSB7CgkJ CQkjIG11c3QndmUgc3RyaXBwZWQgYSBjb21tZW50LgoJCQl9IGVsc2UgewoJCQkJd2FybiAiJGZp bGVuYW1lOiRsaW5lbm86IFdURiA6IHNlZWtpbmcgYXJncyBvbiBsaW5lICRfXG4iOwoJCQl9CgkJ fQoJCSRsaW5lbm8rKzsKCX0KCglpZiAoZGVmaW5lZCAkcHJlZml4KSB7CgkJJHhzdWJ7c3ltbmFt ZX0gPX4gcy9eKCRwcmVmaXgpPy8kcGFja2FnZVw6Oi87Cgl9IGVsc2UgewoJCSR4c3Vie3N5bW5h bWV9ID0gKCRwYWNrYWdlfHwkbW9kdWxlKS4iOjoiLiR4c3Vie3N5bW5hbWV9OwoJfQoKZGVsZXRl ICRTSUd7X19XQVJOX199OwkKCglwdXNoIEB4c3VicywgXCV4c3ViOwp9Cg== ------=_20031022180035_68842 Content-Type: application/octet-stream; name="printem.pl" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="printem.pl" IyEvdXNyL2Jpbi9wZXJsIC13Cgp1c2UgRGF0YTo6RHVtcGVyOwp1c2UgQ2FycCBxdy9jbHVjay87 CgpvdXIgJHhzdWJzOwojJGZpbGVuYW1lID0gJEFSR1ZbMF0gfHwgIihzdGRpbikiOwoKIyRTSUd7 X19XQVJOX199ID0gc3ViIHsgY2x1Y2sgJF9bMF07IH07CgolcGFja2FnZXNfYnlfY3R5cGUgPSAo KTsKJWN0eXBlc19ieV9wYWNrYWdlID0gKCk7CmxvYWRfbWFwcygpOwoKJC89dW5kZWY7CiRkYXRh ID0gPD47CgpldmFsICRkYXRhOwoKcHJpbnQgRHVtcGVyKCRwb2RzKTsKCiNwcmludCBEdW1wZXIo JHhzdWJzKTsKCnByaW50ICJcbj1oZWFkMSBNRVRIT0RTXG5cbiI7CnByaW50ICI9b3ZlclxuIjsK CmZvcmVhY2ggbXkgJHhzdWIgKEAkeHN1YnMpIHsKCWlmICgkeHN1Yi0+e2FsaWFzfSkgewoJCW15 IEBhbGlhc2VzID0gc29ydCB7CgkJCQkkeHN1Yi0+e2FsaWFzfXskYX0gPD0+ICR4c3ViLT57YWxp YXN9eyRifQoJCQl9IGtleXMgJXsgJHhzdWItPnthbGlhc30gfTsKCQlmb3JlYWNoIG15ICRhIChA YWxpYXNlcykgewoJCQl4c3ViX3RvX3BvZCAoJHhzdWIsICRhKTsKCQl9Cgl9IGVsc2UgewoJCXhz dWJfdG9fcG9kICgkeHN1Yik7Cgl9Cn0KcHJpbnQgIj1iYWNrXG5cbiI7CgoKc3ViIHhzdWJfdG9f cG9kIHsKCW15ICR4c3ViID0gc2hpZnQ7CglteSAkYWxpYXMgPSBzaGlmdCB8fCAkeHN1Yi0+e3N5 bW5hbWV9OwoKCXByaW50ICJcbiIKCSAgICAuICI9aXRlbSAiIC4gY29tcGlsZV9zaWduYXR1cmUg KCRhbGlhcywgJHhzdWIpIC4gIlxuIgoJICAgIC4gIlxuIjsKCgkjIGxpc3QgYWxsIHRoZSBhcmcg dHlwZXMuCglteSAodW5kZWYsIEBhcmdzKSA9IEB7ICR4c3ViLT57YXJnc30gfTsKCXByaW50ICI9 b3ZlclxuXG4iOwoJZm9yZWFjaCBteSAkYSAoQGFyZ3MpIHsKCQkjd2FybiBEdW1wZXIoJGEpOwoJ CWlmICgkYS0+e25hbWV9IGVxICcuLi4nKSB7CgkJCSR0eXBlID0gJy4uLic7CgkJfSBlbHNlIHsK CQkJaWYgKG5vdCBkZWZpbmVkICRhLT57dHlwZX0pIHsKCQkJCXdhcm4gIiRhbGlhczogbm8gdHlw ZSBkZWZpbmVkIGZvciBhcmciCgkJCQkgICAuICIgJGEtPntuYW1lfVxuIjsKCQkJCSR0eXBlID0g Iih1bmtub3duKSI7CgkJCX0gZWxzZSB7CgkJCQkkdHlwZSA9IGNvbnZlcnRfYXJnX3R5cGUgKCRh LT57dHlwZX0pOwoJCQl9CgkJfQoJCXByaW50ICI9aXRlbSAtICRhLT57bmFtZX0gKCR0eXBlKVxu XG4iOwoJCSMgVE9ETyBzZWUgaWYgdGhlcmUncyBwb2QgZm9yIHRoaXMgcGFyYW1ldGVyCgl9Cglw cmludCAiPWJhY2tcblxuIjsKCglteSBAcG9kbGluZXMgPSAoKTsKCWlmIChkZWZpbmVkICR4c3Vi LT57cG9kfSkgewoJCUBwb2RsaW5lcyA9IEB7ICR4c3ViLT57cG9kfSB9OwoJfSBlbHNlIHsKCQlm b3IgKG15ICRpID0gMCA7ICRpIDwgQCRwb2RzIDsgJGkrKykgewoJCQlpZiAoJHBvZHMtPlskaV1b MF0gPX4gL149Zm9yXHMrYXBpZG9jXHMrKFs6XHddKylccyokLwoJCQkgICAgYW5kICgkMSBlcSAk YWxpYXMpKQoJCQl7CgkJCQlAcG9kbGluZXMgPSBAeyAkcG9kcy0+WyRpXSB9OwoJCQkJIyBkb24n dCBsb29rIGF0IGhpbSBhZ2Fpbi4KCQkJCXNwbGljZSBAJHBvZHMsICRpLCAxOwoJCQkJbGFzdDsK CQkJfQoJCX0KCX0KCglpZiAoQHBvZGxpbmVzKSB7CgkJc2hpZnQgQGxpbmVzOwoJCXBvcCBAbGlu ZXM7CgkJcHJpbnQgam9pbigiXG4iLCBAcG9kbGluZXMpLiJcbiI7Cgl9CgoJcHJpbnQgIlxuIjsK fQoKCnN1YiBjb21waWxlX3NpZ25hdHVyZSB7CglteSAoJG1ldGhvZCwgJHhzdWIpID0gQF87CgoJ aWYgKG5vdCBkZWZpbmVkICR4c3ViLT57YXJnc30pIHsKCQl3YXJuIER1bXBlcigkeHN1Yik7Cgl9 CglteSAoJGluc3RhbmNlLCBAYXJncykgPSBAeyAkeHN1Yi0+e2FyZ3N9IH07CgoJIyBmaW5kIHRo ZSBtZXRob2QncyBzaG9ydCBuYW1lCgkkbWV0aG9kID1+IHMvXiguKik6Oi8vOwoJbXkgJHBhY2th Z2UgPSAkMSB8fCAkeHN1Yi0+e3BhY2thZ2V9OwoJaWYgKGRlZmluZWQgJGluc3RhbmNlLT57dHlw ZX0pIHsKCQkkb2JqID0gbGMgJHBhY2thZ2U7CgkJJG9iaiA9fiBzL14oLiopOjovXCQvOwoJfSBl bHNlIHsKCQkkb2JqID0gJHBhY2thZ2U7Cgl9CgoJIyBjb21waWxlIHRoZSBhcmcgbGlzdCBzdHJp bmcKCW15ICRhcmdzdHIgPSBqb2luICIsICIsIG1hcCB7ICRfLT57bmFtZX0gfSBAYXJnczsKCgkj IGNvbXBpbGUgdGhlIHJldHVybiBsaXN0IHN0cmluZwoJbXkgQG91dGxpc3QgPSBtYXAgeyAkXy0+ e25hbWV9IH0gQHsgJHhzdWItPntvdXRsaXN0fSB9OwoJaWYgKGRlZmluZWQgJHhzdWItPntyZXR1 cm5fdHlwZX0pIHsKCQlteSBAcmV0bmFtZXMgPSBtYXAgeyBjb252ZXJ0X3JldHVybl90eXBlX3Rv X25hbWUgKCRfKSB9CgkJCQlAeyAkeHN1Yi0+e3JldHVybl90eXBlfSB9OwoJCXVuc2hpZnQgQG91 dGxpc3QsIEByZXRuYW1lczsKCX0KCW15ICRyZXRzdHIgPSBAb3V0bGlzdAoJICAgICAgICAgICA/ IChAb3V0bGlzdCA+IDEKCQkgICAgICA/ICIoIi5qb2luICgiLCAiLCBAb3V0bGlzdCkuIikiCgkJ ICAgICAgOiAkb3V0bGlzdFswXQoJCSAgICAgKS4iID0gIgoJCSAgIDogKGRlZmluZWQgJHhzdWIt Pntjb2RldHlwZX0gYW5kCgkJICAgICAgJHhzdWItPntjb2RldHlwZX0gZXEgJ1BQQ09ERScKCQkg ICAgICA/ICdsaXN0ID0gJwoJCSAgICAgIDogJycKCQkgICAgICk7CgoJIiRyZXRzdHIkb2JqXC0+ JG1ldGhvZCAiLigkYXJnc3RyID8gIigkYXJnc3RyKSIgOiAiIik7Cn0KCgoKCgoKc3ViIGxvYWRf bWFwcyB7CglvcGVuIElOLCAibWFwcyIgb3Igb3BlbiBJTiwgIi4uL21hcHMiIG9yIGRpZSAiY2Fu J3QgZmluZCBtYXBzIGluIC4vbWFwcyBvciAuLi9tYXBzIjsKCgl3aGlsZSAoPElOPikgewoJCWNo b21wOwoJCXMvIy4qJC8vOwoJCSMoJG1hY3JvLCAkY19uYW1lLCAkYmFzaWNfdHlwZSwgJHBhY2th Z2UpID0gc3BsaXQgL1x0LzsKCQkodW5kZWYsICRjX25hbWUsIHVuZGVmLCAkcGFja2FnZSkgPSBz cGxpdCAvXHQvOwoJCW5leHQgdW5sZXNzICRwYWNrYWdlOwoKCQkkcGFja2FnZXNfYnlfY3R5cGV7 JGNfbmFtZX0gPSAkcGFja2FnZTsKCQkkY3R5cGVzX2J5X3BhY2thZ2V7JHBhY2thZ2V9ID0gJGNf bmFtZTsKCX0KCgljbG9zZSBJTjsKCgklYmFzaWNfdHlwZXMgPSAoCgkJZ2Jvb2xlYW4gPT4gJ2Jv b2xlYW4nLAoJCWdpbnQgICAgID0+ICdpbnRlZ2VyJywKCQlnY2hhciAgICA9PiAnaW50ZWdlcics CgkJZ3VpbnQgICAgPT4gJ2ludGVnZXInLAoJCWdmbG9hdCAgID0+ICdkb3VibGUnLAoJCWdkb3Vi bGUgID0+ICdkb3VibGUnLAoJCWdjaGFyICAgID0+ICdzdHJpbmcnLAoJCVNWICAgICAgID0+ICdz Y2FsYXInLAoJKTsKCgkjd2FybiBEdW1wZXIoXCVwYWNrYWdlc19ieV9jdHlwZSk7Cn0KCnN1YiBj b252ZXJ0X3R5cGUgewoJbXkgJHR5cGVzdHIgPSBzaGlmdDsKCgkkdHlwZXN0ciA9fiAvXlxzKgkJ CQkJIyBsZWFkaW5nIHNwYWNlCgkgICAgICAgICAgICAgICg/OmNvbnN0XHMrKT8JCQkJIyBtYXli ZSBhIGNvbnN0CgkgICAgICAgICAgICAgIChcdyspCQkJCQkjIHRoZSBuYW1lCgkgICAgICAgICAg ICAgIChccypcKik/CQkJCQkjIG1heWJlIGEgc3RhcgoJICAgICAgICAgICAgICBccyokL3g7CQkJ CQkjIHRyYWlsaW5nIHNwYWNlCglteSAkY3R5cGUgICA9ICQxIHx8ICchISc7CgoJIyB2YXJpYW50 IHR5cGUKCSRjdHlwZSA9fiBzLyg/Ol8ob3JudWxsfG93bnxjb3B5fG93bl9vcm51bGx8bm9pbmMp KSQvLzsKCW15ICR2YXJpYW50ID0gJDEgfHwgIiI7CgoJbXkgJHBlcmxfdHlwZTsKCglpZiAoZXhp c3RzICRiYXNpY190eXBlc3skY3R5cGV9KSB7CgkJJHBlcmxfdHlwZSA9ICRiYXNpY190eXBlc3sk Y3R5cGV9OwoJfSBlbHNpZiAoZXhpc3RzICRwYWNrYWdlc19ieV9jdHlwZXskY3R5cGV9KSB7CgkJ JHBlcmxfdHlwZSA9ICRwYWNrYWdlc19ieV9jdHlwZXskY3R5cGV9OwoJfSBlbHNlIHsKCQkkcGVy bF90eXBlID0gJGN0eXBlOwoJfQoKCWlmICgkdmFyaWFudCAmJiAkdmFyaWFudCA9fiBtL29ybnVs bC8pIHsKCQkkcGVybF90eXBlIC49ICIgb3IgdW5kZWYiOwoJfQoKCSN3YXJuICJ0eXBlc3RyICck dHlwZXN0cicgIGN0eXBlICckY3R5cGUnICB2YXJpYW50ICckdmFyaWFudCcgIHBlcmxfdHlwZSAn JHBlcmxfdHlwZSdcbiI7CgoJJHBlcmxfdHlwZQp9CgpzdWIgY29udmVydF9hcmdfdHlwZSB7IGNv bnZlcnRfdHlwZSBAXyB9CgpzdWIgY29udmVydF9yZXR1cm5fdHlwZV90b19uYW1lIHsKCW15ICR0 eXBlID0gY29udmVydF90eXBlIEBfOwoJaWYgKCR0eXBlID1+IHMvXi4qOjovLykgewoJCSR0eXBl ID0gbGMgJHR5cGU7Cgl9CglyZXR1cm4gJHR5cGU7Cn0K ------=_20031022180035_68842-- From glen_gibson@maxnet.co.nz Wed Oct 22 22:44:25 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp02.maxnet.net.nz (smtp02.maxnet.net.nz [202.89.32.10]) by mail.gnome.org (Postfix) with ESMTP id 55DD61811D for ; Wed, 22 Oct 2003 22:44:25 -0400 (EDT) Received: from webmail.maxnet.co.nz (www01.maxnet.co.nz [210.55.230.196]) by smtp02.maxnet.net.nz (Postfix) with SMTP id BC76B391ED for ; Thu, 23 Oct 2003 15:44:39 +1300 (NZDT) Received: from 210.55.230.204 (SquirrelMail authenticated user glen_gibson) by webmail.maxnet.co.nz with HTTP; Thu, 23 Oct 2003 15:44:45 +1300 (NZDT) Message-ID: <3159.210.55.230.204.1066877085.squirrel@webmail.maxnet.co.nz> Date: Thu, 23 Oct 2003 15:44:45 +1300 (NZDT) Subject: start buttons? From: glen_gibson@maxnet.co.nz To: gtk-perl-list@gnome.org User-Agent: SquirrelMail/1.4.2 MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 Importance: Normal Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: This is probably a dumb question, but.... I've always wondered how to code something similar to the taskbar like what you'd get with KDE or Gnome where you have a main button you click on which pops upward with menu options? Dare I say it "like the start button in Windows" Anyone able to show me a coding example? Would it just be something like a button that's smart enough to know where to put a popup menu in relation to where it is itself? Glen From scott@asofyet.org Thu Oct 23 00:07:59 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from frodo.dreamhost.com (frodo.dreamhost.com [66.33.209.11]) by mail.gnome.org (Postfix) with ESMTP id CA949181B2 for ; Thu, 23 Oct 2003 00:07:59 -0400 (EDT) Received: from asofyet.org (unknown [12.162.183.102]) by frodo.dreamhost.com (Postfix) with ESMTP id CD38513BE1 for ; Wed, 22 Oct 2003 21:07:53 -0700 (PDT) Date: Thu, 23 Oct 2003 00:07:51 -0400 Subject: Re: start buttons? Content-Type: text/plain; charset=US-ASCII; format=flowed Mime-Version: 1.0 (Apple Message framework v552) From: muppet To: gtk-perl list Content-Transfer-Encoding: 7bit In-Reply-To: <3159.210.55.230.204.1066877085.squirrel@webmail.maxnet.co.nz> Message-Id: <7836D3B7-050E-11D8-BB0F-000A9580E5E0@asofyet.org> X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Wednesday, October 22, 2003, at 10:44 PM, glen_gibson@maxnet.co.nz wrote: > I've always wondered how to code something similar to the taskbar like > what you'd get with KDE or Gnome where you have a main button you > click on > which pops upward with menu options? mostly you need to know how to create a menu, and then how to pop that menu up when the user clicks on the button. the fun part is using a menu positioning function to move the bottom of the menu to the top of your button. -- muppet From glen_gibson@maxnet.co.nz Thu Oct 23 00:39:47 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp01.maxnet.net.nz (smtp01.maxnet.net.nz [202.89.32.6]) by mail.gnome.org (Postfix) with ESMTP id 5272D183A3 for ; Thu, 23 Oct 2003 00:39:47 -0400 (EDT) Received: from webmail.maxnet.co.nz (www01.maxnet.co.nz [210.55.230.196]) by smtp01.maxnet.net.nz (Postfix) with SMTP id 5C2E4858F7 for ; Thu, 23 Oct 2003 17:40:03 +1300 (NZDT) Received: from 156.62.3.22 (proxying for 156.62.84.66) (SquirrelMail authenticated user glen_gibson) by webmail.maxnet.co.nz with HTTP; Thu, 23 Oct 2003 17:40:08 +1300 (NZDT) Message-ID: <56936.156.62.3.22.1066884008.squirrel@webmail.maxnet.co.nz> In-Reply-To: <7836D3B7-050E-11D8-BB0F-000A9580E5E0@asofyet.org> References: <3159.210.55.230.204.1066877085.squirrel@webmail.maxnet.co.nz> <7836D3B7-050E-11D8-BB0F-000A9580E5E0@asofyet.org> Date: Thu, 23 Oct 2003 17:40:08 +1300 (NZDT) Subject: Re: start buttons? From: "Glen Gibson" To: "gtk-perl list" User-Agent: SquirrelMail/1.4.2 MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 Importance: Normal Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Yeah, doesn't positioning go by top-left on a popup menu though? So it'd have to be forced to display in a specific position on the screen. If it was made to be customizable that would have some weird results. I'm probably going off on the completely wrong angle. Would some sort of function have to be written that would make the popup menu aware of the size and the position of the toplevel window and alter its own size and positioning based on how many options it contained itself? Sounds more and more complex and scary as I think about it more. Glen > > On Wednesday, October 22, 2003, at 10:44 PM, glen_gibson@maxnet.co.nz > wrote: > >> I've always wondered how to code something similar to the taskbar like >> what you'd get with KDE or Gnome where you have a main button you >> click on >> which pops upward with menu options? > > mostly you need to know how to create a menu, and then how to pop that > menu up when the user clicks on the button. the fun part is using a > menu positioning function to move the bottom of the menu to the top of > your button. > > -- > muppet > > _______________________________________________ > gtk-perl-list mailing list > gtk-perl-list@gnome.org > http://mail.gnome.org/mailman/listinfo/gtk-perl-list > From gavin.brown@uk.com Thu Oct 23 04:08:52 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.centralnic.net (unknown [212.18.224.18]) by mail.gnome.org (Postfix) with ESMTP id D65C218228 for ; Thu, 23 Oct 2003 04:08:49 -0400 (EDT) Received: from lon-staffgw-1.centralnic.net ([212.18.224.152] helo=aqua.jodrell.net) by mail.centralnic.net with esmtp (Exim 4.22) id 1ACaWo-0004Ah-IJ; Thu, 23 Oct 2003 09:09:06 +0100 From: Gavin Brown Reply-To: gavin.brown@uk.com To: glen_gibson@maxnet.co.nz Cc: gtk-perl-list@gnome.org In-Reply-To: <3159.210.55.230.204.1066877085.squirrel@webmail.maxnet.co.nz> References: <3159.210.55.230.204.1066877085.squirrel@webmail.maxnet.co.nz> Message-Id: <1066896545.28820.0.camel@scimitar.jodrell.net> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.3 Date: 23 Oct 2003 09:09:06 +0100 Subject: Re: start buttons? Content-Type: text/plain Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: > This is probably a dumb question, but.... > > I've always wondered how to code something similar to the taskbar like > what you'd get with KDE or Gnome where you have a main button you click on > which pops upward with menu options? > > Dare I say it "like the start button in Windows" > > Anyone able to show me a coding example? Would it just be something like > a button that's smart enough to know where to put a popup menu in relation > to where it is itself? http://jodrell.net/projects/perlpanel G. -- Gavin Brown e: gavin.brown@uk.com w: http://jodrell.net/ PGP/GPG key ID: 891D8FCA From scott@asofyet.org Thu Oct 23 09:09:00 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from frodo.dreamhost.com (frodo.dreamhost.com [66.33.209.11]) by mail.gnome.org (Postfix) with ESMTP id 7196C18107 for ; Thu, 23 Oct 2003 09:09:00 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by frodo.dreamhost.com (Postfix) with ESMTP id 66BFC13C08 for ; Thu, 23 Oct 2003 06:09:16 -0700 (PDT) Date: Thu, 23 Oct 2003 09:09:29 -0400 Subject: Re: start buttons? Content-Type: text/plain; charset=US-ASCII; format=flowed Mime-Version: 1.0 (Apple Message framework v552) From: muppet To: "gtk-perl list" Content-Transfer-Encoding: 7bit In-Reply-To: <56936.156.62.3.22.1066884008.squirrel@webmail.maxnet.co.nz> Message-Id: <22BF8196-055A-11D8-86FA-000A9580E5E0@asofyet.org> X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Thursday, October 23, 2003, at 12:40 AM, Glen Gibson wrote: > Yeah, doesn't positioning go by top-left on a popup menu though? So > it'd > have to be forced to display in a specific position on the screen. right. the difference is you'll have to ask the popup how big it is, and adjust the location by that, like x = left of button y = top of button - height of menu but one snag you will hit is trying to get the size of the menu before it's been shown --- that requires $widget->get_child_requisition, which is bound in CVS but not in 1.00. (discovered that while writing the menu position function for the CellRendererPopup.) there may be other workarounds, though, including actually realizing the menu in the position function, etc. (i haven't tried specifically what you're asking for, but i've done stuff like it.) > Would some sort of function have to be written that would make the > popup > menu aware of the size and the position of the toplevel window and > alter > its own size and positioning based on how many options it contained > itself? the menu doesn't care where the toplevel is. $menu->popup () allows you to supply a function which returns the coordinates of where the menu's upper left corner should be when it gets shown. the menu will figure out on its own how big it needs to be, like pretty much every other widget in Gtk. the complication here is that we need to know that size *before* it has been calculated; so you have to get the menu to calculate its desired size and return that. -- muppet From glen_gibson@maxnet.co.nz Fri Oct 24 01:17:33 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp02.maxnet.net.nz (smtp02.maxnet.net.nz [202.89.32.10]) by mail.gnome.org (Postfix) with ESMTP id C794E18122 for ; Fri, 24 Oct 2003 01:17:32 -0400 (EDT) Received: from glensdesktop (adsl89-38-52.netguardian.co.nz [202.89.38.52]) by smtp02.maxnet.net.nz (Postfix) with SMTP id CE60B397FC for ; Fri, 24 Oct 2003 18:17:46 +1300 (NZDT) Message-ID: <000d01c399ee$33881b90$0a01a8c0@glensdesktop> From: "Glen Gibson" To: Subject: How do I define x & y for Window positioning? Date: Fri, 24 Oct 2003 18:18:03 +1300 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2720.3000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2727.1300 Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Another easy one. I'm trying to figure out how to positition a window (type is toplevel incase it's relevant). With Gtk2::Window::set_position($window,'[position parameter]'); I can centre it and stuff, but how the heck do I give it an x & y value to fix it to? (e.g. if I wanted to attach it to the bottom of the screen or the top of the screen?) Glen From scott@asofyet.org Fri Oct 24 01:58:28 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from gollum.dreamhost.com (gollum.dreamhost.com [66.33.209.16]) by mail.gnome.org (Postfix) with ESMTP id 4632818108 for ; Fri, 24 Oct 2003 01:58:27 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by gollum.dreamhost.com (Postfix) with ESMTP id 21EA15B80E for ; Thu, 23 Oct 2003 22:58:44 -0700 (PDT) Date: Fri, 24 Oct 2003 01:58:57 -0400 Subject: Re: How do I define x & y for Window positioning? Content-Type: text/plain; delsp=yes; charset=US-ASCII; format=flowed Mime-Version: 1.0 (Apple Message framework v552) From: muppet To: Content-Transfer-Encoding: 7bit In-Reply-To: <000d01c399ee$33881b90$0a01a8c0@glensdesktop> Message-Id: <2816A598-05E7-11D8-A7FE-000A9580E5E0@asofyet.org> X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Friday, October 24, 2003, at 01:18 AM, Glen Gibson wrote: > I'm trying to figure out how to positition a window (type is toplevel > incase > it's relevant). > > With Gtk2::Window::set_position($window,'[position parameter]'); > > I can centre it and stuff, but how the heck do I give it an x & y > value to > fix it to? (e.g. if I wanted to attach it to the bottom of the screen > or > the top of the screen?) you don't want to set it's position class, you want to move it. http://developer.gnome.org/doc/API/2.0/gtk/GtkWindow.html#gtk-window- move -- muppet From scott@asofyet.org Sat Oct 25 03:55:32 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smaug.dreamhost.com (smaug.dreamhost.com [66.33.209.15]) by mail.gnome.org (Postfix) with ESMTP id 830D418162 for ; Sat, 25 Oct 2003 03:55:32 -0400 (EDT) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by smaug.dreamhost.com (Postfix) with ESMTP id BB8445B7D1 for ; Sat, 25 Oct 2003 00:55:48 -0700 (PDT) Date: Sat, 25 Oct 2003 03:56:04 -0400 Mime-Version: 1.0 (Apple Message framework v552) Content-Type: text/plain; charset=US-ASCII; format=flowed Subject: Gtk+-2.3.0 From: muppet To: gtk-perl list Content-Transfer-Encoding: 7bit Message-Id: X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: the Gtk+ team has come out of the cvs shell and released the first in the unstable 2.3.x series, 2.3.0. ftp://ftp.gtk.org/pub/gtk/v2.3/ this release includes many of the new things that are going to be in 2.4.x, but carries the warning that it is not guaranteed to be stable, in terms of API and such. if you want to play with the new features in gtk2-perl before 2.4.0 gets here, i whipped up an add-on module that adds support for the new features to the existing gtk2-perl code (e.g. the 1.00 releases or cvs HEAD) -- it even works *without* recompiling your installed Glib and Gtk2 modules, so long as you force the new gtk+ libs to load first (hint: LD_PRELOAD)! http://asofyet.org/muppet/software/gtk2-perl/Gtk2-3-0.01.tar.gz this includes Gtk2::FileChooserDialog, Gtk2::ComboBox, Gtk2::Expander, Gtk2::ToolButton, and other fun things. there are also a couple of demo programs that exercise a couple of the widgets. oh yeah, it also includes a listing of methods by package, as generated by the xsub collector i wrote the other day. i'd just like to point out that gtk2-perl makes writing bindings so easy, i went from compiling and installing a testbed version of gtk+-2.3.0 to posting this tarball in only four hours. (i really wanted to see the new file selector. :-) just in case you don't get the LD_PRELOAD hint, here's how i ran this: tetsuo:$ GTKLIB=/home/scott/gtk23/lib tetsuo:$ LD_LIBRARY_PATH=$GTKLIB \ LD_PRELOAD=$GTKLIB/libglib-2.0.so:\ $GTKLIB/libgthread-2.0.so:\ $GTKLIB/libgobject-2.0.so:\ $GTKLIB/libgtk-x11-2.0.so \ perl -I blib/lib/ -I blib/arch/ ./file_chooser_demo.pl -- muppet From jens@wilke.org Tue Oct 28 13:31:18 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from server03.ebyserver.de (unknown [62.67.214.154]) by mail.gnome.org (Postfix) with ESMTP id D473A180FA for ; Tue, 28 Oct 2003 13:31:17 -0500 (EST) Received: from clarissen.home (pD9509370.dip0.t-ipconnect.de [217.80.147.112]) by server03.ebyserver.de (Postfix on SuSE Linux 7.3 (i386)) with ESMTP id B941B26D6C for ; Tue, 28 Oct 2003 19:24:07 +0100 (CET) Received: from localhost ([127.0.0.1] ident=jens) by clarissen.home with esmtp (Exim 3.36 #1 (Debian)) id 1AEYeR-0002o5-00 for ; Tue, 28 Oct 2003 19:33:07 +0100 From: Jens Wilke To: gtk-perl list Subject: Gtk2-1.00 make test errors Date: Tue, 28 Oct 2003 19:33:06 +0100 User-Agent: KMail/1.5 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200310281933.06356.jens@wilke.org> Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Hello, i get the following errors on 'make test' for Gtk2-1.00 on my debian box. Everything else works fine. Rgds, Jens t/19.GtkSimpleList........NOK 1# Failed test (t/19.GtkSimpleList.t at line 19) # Tried to require 'Gtk2::SimpleList'. # Error: Can't find 'boot_Gtk2__GType' symbol in /usr/src/Gtk2-1.00/blib/arch/auto/Gtk2/Gtk2.so # at /usr/local/lib/perl/5.8.0/Gtk2/_config.pm line 0 # ...propagated at /usr/local/lib/perl/5.8.0/Gtk2/GType.pm line 11. # BEGIN failed--compilation aborted at /usr/local/lib/perl/5.8.0/Gtk2/GType.pm line 11. # Compilation failed in require at /usr/local/lib/perl/5.8.0/Gtk2/_Object.pm line 18. # BEGIN failed--compilation aborted at /usr/local/lib/perl/5.8.0/Gtk2/_Object.pm line 18. # Compilation failed in require at (eval 3) line 3. # ...propagated at /usr/share/perl/5.8.0/base.pm line 20. # BEGIN failed--compilation aborted at /usr/local/lib/perl/5.8.0/Gtk2/GObject.pm line 11. # Compilation failed in require at /usr/local/lib/perl/5.8.0/Gtk2/Object.pm line 13. # BEGIN failed--compilation aborted at /usr/local/lib/perl/5.8.0/Gtk2/Object.pm line 13. # Compilation failed in require at /usr/local/lib/perl/5.8.0/Gtk2/Widget.pm line 13. # BEGIN failed--compilation aborted at /usr/local/lib/perl/5.8.0/Gtk2/Widget.pm line 13. # Compilation failed in require at /usr/local/lib/perl/5.8.0/Gtk2/Container.pm line 13. # BEGIN failed--compilation aborted at /usr/local/lib/perl/5.8.0/Gtk2/Container.pm line 13. # Compilation failed in require at /usr/local/lib/perl/5.8.0/Gtk2/TreeView.pm line 13. # BEGIN failed--compilation aborted at /usr/local/lib/perl/5.8.0/Gtk2/TreeView.pm line 13. # Compilation failed in require at (eval 2) line 3. # ...propagated at /usr/share/perl/5.8.0/base.pm line 20. # BEGIN failed--compilation aborted at /usr/src/Gtk2-1.00/blib/lib/Gtk2/SimpleList.pm line 11. # Compilation failed in require at (eval 1) line 2. Can't locate object method "add_column_type" via package "Gtk2::SimpleList" at t/19.GtkSimpleList.t line 40. # Looks like you planned 36 tests but only ran 1. # Looks like your test died just after 1. t/19.GtkSimpleList........dubious Test returned status 255 (wstat 65280, 0xff00) Constant subroutine __need_size_t redefined at /usr/lib/perl/5.8.0/stddef.ph line 146. DIED. FAILED tests 1-36 Failed 36/36 tests, 0.00% okay t/20.GdkColor.............ok t/21.GtkContainer.........ok t/22.GtkListStore.........ok t/23.GtkTreeStore.........ok t/24.GtkTreeView..........ok t/25.GtkTreeSelection.....ok t/26.GtkSimpleMenu........NOK 1# Failed test (t/26.GtkSimpleMenu.t at line 19) # Tried to require 'Gtk2::SimpleMenu'. # Error: Can't find 'boot_Gtk2__GType' symbol in /usr/src/Gtk2-1.00/blib/arch/auto/Gtk2/Gtk2.so # at /usr/local/lib/perl/5.8.0/Gtk2/_config.pm line 0 # ...propagated at /usr/local/lib/perl/5.8.0/Gtk2/GType.pm line 11. # BEGIN failed--compilation aborted at /usr/local/lib/perl/5.8.0/Gtk2/GType.pm line 11. # Compilation failed in require at /usr/local/lib/perl/5.8.0/Gtk2/_Object.pm line 18. # BEGIN failed--compilation aborted at /usr/local/lib/perl/5.8.0/Gtk2/_Object.pm line 18. # Compilation failed in require at (eval 3) line 3. # ...propagated at /usr/share/perl/5.8.0/base.pm line 20. # BEGIN failed--compilation aborted at /usr/local/lib/perl/5.8.0/Gtk2/GObject.pm line 11. # Compilation failed in require at /usr/local/lib/perl/5.8.0/Gtk2/Object.pm line 13. # BEGIN failed--compilation aborted at /usr/local/lib/perl/5.8.0/Gtk2/Object.pm line 13. # Compilation failed in require at /usr/local/lib/perl/5.8.0/Gtk2/ItemFactory.pm line 13. # BEGIN failed--compilation aborted at /usr/local/lib/perl/5.8.0/Gtk2/ItemFactory.pm line 13. # Compilation failed in require at (eval 2) line 3. # ...propagated at /usr/share/perl/5.8.0/base.pm line 20. # BEGIN failed--compilation aborted at /usr/src/Gtk2-1.00/blib/lib/Gtk2/SimpleMenu.pm line 11. # Compilation failed in require at (eval 1) line 2. Can't locate object method "new" via package "Gtk2::SimpleMenu" at t/26.GtkSimpleMenu.t line 147. # Looks like you planned 43 tests but only ran 1. # Looks like your test died just after 1. t/26.GtkSimpleMenu........dubious Test returned status 255 (wstat 65280, 0xff00) DIED. FAILED tests 1-43 Failed 43/43 tests, 0.00% okay t/27.GtkClipboard.........ok Failed Test Stat Wstat Total Fail Failed List of Failed ------------------------------------------------------------------------------- t/19.GtkSimpleList.t 255 65280 36 36 100.00% 1-36 t/26.GtkSimpleMenu.t 255 65280 43 43 100.00% 1-43 Failed 2/28 test scripts, 92.86% okay. 79/834 subtests failed, 90.53% okay. make: *** [test_dynamic] Fehler 29 From scott@asofyet.org Tue Oct 28 15:02:47 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id A236818AE5 for ; Tue, 28 Oct 2003 15:02:47 -0500 (EST) Received: from webmail.asofyet.org (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id 5DAB2FA8C for ; Tue, 28 Oct 2003 12:02:58 -0800 (PST) Received: from 192.146.101.7 (SquirrelMail authenticated user scott@asofyet.org) by webmail.asofyet.org with HTTP; Tue, 28 Oct 2003 15:02:58 -0500 (EST) Message-ID: <32957.192.146.101.7.1067371378.spork@webmail.asofyet.org> In-Reply-To: <200310281933.06356.jens@wilke.org> References: <200310281933.06356.jens@wilke.org> Date: Tue, 28 Oct 2003 15:02:58 -0500 (EST) Subject: Re: Gtk2-1.00 make test errors From: "muppet" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Jens Wilke said: > Hello, > > i get the following errors on 'make test' for Gtk2-1.00 on my debian box. > Everything else works fine. > > Rgds, Jens > > t/19.GtkSimpleList........NOK 1# Failed test (t/19.GtkSimpleList.t at line > 19) > # Tried to require 'Gtk2::SimpleList'. > # Error: Can't find 'boot_Gtk2__GType' symbol in > /usr/src/Gtk2-1.00/blib/arch/auto/Gtk2/Gtk2.so > # at /usr/local/lib/perl/5.8.0/Gtk2/_config.pm line 0 > # ...propagated at /usr/local/lib/perl/5.8.0/Gtk2/GType.pm line 11. _config.pm, GType.pm, /usr/local/lib --- that's a dead giveaway. you have gtk2-perl < 0.20 installed. the test is trying to use the installed .pm with the uninstalled .so, and things of course go very, very badly. i have no idea why this happens, because we do nothing special to 'make test'. however, it happens to the pure-perl tests, and then only sometimes. installing gtk2-perl>=0.20 over top of gtk2-perl < 0.20 can result in heisenbugs, because they install to slightly different portions of the library tree; that means that the old stuff can still be there, waiting to get used in the right place at the wrong time. the best solution is to wipe the Gtk2 directory out of your Perl library before installing 1.00. -- muppet From scott@asofyet.org Wed Oct 29 02:15:31 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smaug.dreamhost.com (smaug.dreamhost.com [66.33.209.15]) by mail.gnome.org (Postfix) with ESMTP id 1E86718970 for ; Wed, 29 Oct 2003 02:15:00 -0500 (EST) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by smaug.dreamhost.com (Postfix) with ESMTP id 327435B7F1 for ; Tue, 28 Oct 2003 23:15:18 -0800 (PST) Date: Wed, 29 Oct 2003 02:15:36 -0500 Mime-Version: 1.0 (Apple Message framework v552) Content-Type: text/plain; charset=US-ASCII; format=flowed Subject: cool stuff in cvs head From: muppet To: gtk-perl list Content-Transfer-Encoding: 7bit Message-Id: X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: we've been working furiously for the past several days on Glib and Gtk2 in cvs... here's a heads-up: - documentation autogeneration experimentation building from the xsub scanner i posted last week, ross and i have crafted an elaborate scheme involving parser and podifier modules (Glib::ParseXSDoc and Glib::GenPod), some nifty makefile rules, and special POD directives in the xs source... all of which results in readable, usable, automagically generated api reference documentation. - makefile automation the Makefile.PLs for the gtk2-perl modules are ridiculous, and the documentation stuff only made it worse. to cut down on the copy and paste tedium, we created Glib::MakeHelper, which generates some of the more tedious portions of your Makefile.PL for you. - CellRenderer subclassing i've merged the Gtk2::CellRenderer subclassing code from a couple of weeks ago into Gtk2, with torsten's examples. planning on the next set of releases, Glib and Gtk2 1.02, "real soon now". stay tuned. -- "that's it! you're a genius!" "yes. that's what i think. do you think i deserve a raise?" - dialogue from 'Godzilla versus Mothra', 1964 From gdsword@williamsword.co.uk Wed Oct 29 07:15:38 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.williamsword.co.uk (unknown [195.157.206.197]) by mail.gnome.org (Postfix) with ESMTP id 0D82A18108 for ; Wed, 29 Oct 2003 07:15:38 -0500 (EST) Received: from eigg.williamsword.co.uk (unknown [192.168.0.4]) by mail.williamsword.co.uk (Postfix) with ESMTP id 3473A13B6F5 for ; Wed, 29 Oct 2003 13:15:56 +0000 (GMT) Subject: newbie: increasing size of widgets From: David Sword To: gtk-perl list Content-Type: text/plain Organization: William Sword Ltd Message-Id: <1067431916.16627.24.camel@eigg.williamsword.co.uk> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.2.2 (1.2.2-5) Date: 29 Oct 2003 12:51:57 +0000 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Hi I am slowly trying to figure out how to make all of this stuff work, but I am having difficulty with a most basic problem, which I am sure is easily resolved. I am using a table layout in my main window, and I can control the position of buttons etc no problem. However, I have a scrolled window, containing a simplelist. The simple list only shows one or two lines, and is very cramped - the adjusters on the scrolledwindow have no room to move. How do I increase the size of the scrolledwindow/simplelist so that it shows more of the simplelist? I am sure it is easy, but i have tried any number of things without success, and I would sure appreciate some pointers! Thanks -- Regards David Sword From rwmcfa1@neces.com Wed Oct 29 08:32:11 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from gollum.dreamhost.com (gollum.dreamhost.com [66.33.209.16]) by mail.gnome.org (Postfix) with ESMTP id 6AF081815D for ; Wed, 29 Oct 2003 08:32:11 -0500 (EST) Received: from beta.local (12-222-230-66.client.insightBB.com [12.222.230.66]) by gollum.dreamhost.com (Postfix) with ESMTP id 1E0DA5B7BE; Wed, 29 Oct 2003 05:32:29 -0800 (PST) Subject: Re: newbie: increasing size of widgets From: Ross McFarland To: David Sword Cc: gtk-perl list In-Reply-To: <1067431916.16627.24.camel@eigg.williamsword.co.uk> References: <1067431916.16627.24.camel@eigg.williamsword.co.uk> Content-Type: text/plain Message-Id: <1067434347.17076.13.camel@beta.local> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Wed, 29 Oct 2003 08:32:28 -0500 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Wed, 2003-10-29 at 07:51, David Sword wrote: > How do I increase the size of the scrolledwindow/simplelist so that it > shows more of the simplelist? one thing to look at is how the widget is being packed into it's container. if it's packed into a vbox or hbox then you'll want to make sure that the expand and fill parameters are true in the pack_start/end call in which it's packed. if you're packing it into a table similar things probably apply (i'm not really familiar with tables, never had occasion to use them) failing that you may want to have a look at http://developer.gnome.org/doc/API/2.0/gtk/GtkWidget.html#gtk-widget-set-size-request for info on how to request that a widget be no smaller than a given width and height. -rm From scott@asofyet.org Wed Oct 29 08:36:48 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from frodo.dreamhost.com (frodo.dreamhost.com [66.33.209.11]) by mail.gnome.org (Postfix) with ESMTP id 382E118121 for ; Wed, 29 Oct 2003 08:36:48 -0500 (EST) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by frodo.dreamhost.com (Postfix) with ESMTP id 77BB213BE4; Wed, 29 Oct 2003 05:37:05 -0800 (PST) Date: Wed, 29 Oct 2003 08:37:24 -0500 Subject: Re: newbie: increasing size of widgets Content-Type: text/plain; delsp=yes; charset=US-ASCII; format=flowed Mime-Version: 1.0 (Apple Message framework v552) Cc: gtk-perl list To: David Sword From: muppet In-Reply-To: <1067431916.16627.24.camel@eigg.williamsword.co.uk> Message-Id: <076802AA-0A15-11D8-B668-000A9580E5E0@asofyet.org> Content-Transfer-Encoding: 7bit X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Wednesday, October 29, 2003, at 07:51 AM, David Sword wrote: > How do I increase the size of the scrolledwindow/simplelist so that it > shows more of the simplelist? the simplest way is to ask the window to be bigger, with set_default_size(). if you set things up correctly and the scrolled window will expand to fill the available space, then this is what you want. http://developer.gnome.org/doc/API/2.0/gtk/GtkWindow.html#gtk-window- set-default-size the discussion explains some of the options and caveats. another way would be to use set_size_request() http://developer.gnome.org/doc/API/2.0/gtk/GtkWidget.html#gtk-widget- set-size-request on the scrolled window, but that would mean the user couldn't shrink the window beyond that size. -- "that's it! you're a genius!" "yes. that's what i think. do you think i deserve a raise?" - dialogue from 'Godzilla versus Mothra', 1964 From bosteins@broadpark.no Wed Oct 29 08:50:14 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.broadpark.no (mail.broadpark.no [217.13.4.2]) by mail.gnome.org (Postfix) with ESMTP id 1871618C7C for ; Wed, 29 Oct 2003 08:50:14 -0500 (EST) Received: from broadpark.no (146.80-202-36.nextgentel.com [80.202.36.146]) by mail.broadpark.no (Postfix) with ESMTP id 8DE76786F6; Wed, 29 Oct 2003 14:50:30 +0100 (MET) Message-ID: <3F9FD34E.3080108@broadpark.no> Date: Wed, 29 Oct 2003 15:48:46 +0100 From: =?ISO-8859-1?Q?Bjarne_Steinsb=F8?= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 X-Accept-Language: en-us, en MIME-Version: 1.0 To: muppet Cc: gtk-perl list Subject: Re: cool stuff in cvs head References: In-Reply-To: Content-Type: multipart/mixed; boundary="------------070405040307060000090001" Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: This is a multi-part message in MIME format. --------------070405040307060000090001 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit muppet wrote: > - CellRenderer subclassing > i've merged the Gtk2::CellRenderer subclassing code from a couple of > weeks ago into Gtk2, with torsten's examples. Thanks, appreciated as always. I've been playing around with the cell-renderer lately, and I'm running into problems. I had hoped that this latest "release" would fix some of these problems, but no such luck. BTW, it compiles cleanly on my system, but not all tests run successfully in Gtk2. The problems in the renderers show up in two cases: 1) When row drap'n'drog is enabled 2) When a full tree is used instead of a list. The first case is easily shown by just a few changes to the cellrenderer_popup.pl example. Please see attached diff. There are two main problems: - The current renderer code gets some unexpected parameters when a dnd operation is started. It looks to me as if the renderer in this case is used to render the selected row to a pixmap instead of a window, the pixmap is then dragged around following the cursor. I haven't looked into fixing this problem, it was too easy to work around it by just ignoring the rendering request... - After using the popup to select a new entry, the treeview will consider a dnd operation to have started as soon as the cursor enters the window. Looks really weird... The "workaround" is for the user to do the drop outside the window... I've tried various stuff to try to track this one down, but no luck so far. In the process I also ran into a problem when trying to do a "$menu->get_flags". The xs-code for Gtk2::Widget said "inhandled case in flag_get - shouldn't happen", but it certainly did. The second case is a bit more difficult to show. None of the existing examples is using the TreeStore, and that's where it shows up. I've attached my own testcase (warning: work-in-progress) which of course contains lots of stuff that has nothing to with this problem. Anyway, the problem is that the window doesn't update correctly when expanding the list. This causes the renderers to put data the data at the position they used before, not to the new position.... He*l, look for yourselves, it's too difficult to explain in words for a poor tung-stuck Norwegian. Please note that this problem is not limited to the custom renderers, it also happens when only stock Gtk renderers are used. A Gtk bug? I haven't tried to go back to letting the treeview pick up the data directly from the model, so it could have something to do with the cell_data_func, I guess. Does anybody have some working code of how to listen in to all the signal activity going on in a Gtk2 app? There seems to be a way to listen in to the signals using g_signal_add_emission_hook(), and this certainly could be useful for debugging purposes. But the xs-code is commented out. What's the full story? Bjarne --------------070405040307060000090001 Content-Type: text/plain; name="cellrenderer_popup.pl.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="cellrenderer_popup.pl.diff" *** /usr/src/Gtk2-perl/cvs_20031029_gtk2-perl-xs/Gtk2/examples/cellrenderer_popup.pl Mon Oct 27 20:37:27 2003 --- cellrenderer_popup.pl Wed Oct 29 14:43:50 2003 *************** *** 97,102 **** --- 97,103 ---- sub on_render { my ($cell, $window, $widget, $background_area, $cell_area, $expose_area, $flags) = @_; + return if ref $window eq 'Gtk2::Gdk::Pixmap'; # XXX FIXME my $state = 'normal'; if ($cell->{show_box}) { *************** *** 227,232 **** --- 228,236 ---- # now a view $treeview = Gtk2::TreeView->new ($model); + #$treeview->set_rules_hint (1); + $treeview->set_reorderable (1); + # # regular editable text column for column 0, the string --------------070405040307060000090001 Content-Type: text/plain; name="testcase" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="testcase" #! /usr/bin/perl -w use Gtk2 -init; use Data::Dumper; # An application will be using TreeView to present data from a database. # - The data from the database is stored in lists of objects. Access to the # data is through these objects only. # - All cells in one column have the same format, i.e. there is only list of # valid values for all cells in a column using the EnumRenderer. The # data-objects from the database know the format. (For testing purposes, # they provide the formats in a compatible way, the class to do # type-conversion between database types and Glib types is left out). # This set of packages tries to emulate this application. use strict; package DateRenderer; use Glib::Object::Subclass "Gtk2::CellRenderer", signals => { edited => { flags => [qw(run-last)], param_types => [qw(Glib::String Glib::Scalar)], }, }, properties => [ Glib::ParamSpec->boolean ( "editable", "Editable", "Can I change that?", 0, [qw(readable writable)] ), Glib::ParamSpec->string ( "date", "Date", "What's the date again?", "", [qw(readable writable)] ), Glib::ParamSpec->int ( 'xpad', 'Xpad', 'Internal horizontal padding', 0, 65535, 3, [qw/readable writable/] ), Glib::ParamSpec->int ( 'ypad', 'Ypad', 'Internal vertical padding', 0, 65535, 2, [qw/readable writable/] ), Glib::ParamSpec->int ( 'arrow_width', 'Arrow_width', 'Width of arrow', 0, 65535, 15, [qw/readable writable/] ), ], ; __PACKAGE__->_install_overrides; sub INIT_INSTANCE { my $self = shift; $self->{xpad} = 3; $self->{ypad} = 2; $self->{arrow_width} = 15; } our $popup_window; our $arrow = Gtk2::Arrow->new ("down", "none"); sub get_date_string { my ($cell) = @_; return if $cell->{date} eq ''; my ($year, $month, $day) = split(/\//, $cell->{date}); return sprintf ("%04d/%02d/%02d", $year, $month, $day); } sub calc_size { my ($cell, $layout) = @_; my ($width, $height) = $layout->get_pixel_size; return ( 0, 0, $width + $cell->{xpad}*2 + $cell->{arrow_width}, $height + $cell->{ypad}*2 ); } sub on_get_size { my ($cell, $widget, $cell_area) = @_; my $layout = $cell->get_layout ($widget); $layout->set_text ($cell->get_date_string || ''); return $cell->calc_size ($layout); } sub get_layout { my ($cell, $widget) = @_; return $cell->{layout} if defined $cell->{layout}; return $cell->{layout} = $widget->create_pango_layout (""); } sub on_render { my ( $cell, $window, $widget, $background_area, $cell_area, $expose_area, $flags ) = @_; return if ref $window eq 'Gtk2::Gdk::Pixmap'; # XXX FIXME my $state = 'normal'; if (grep {/selected/} @$flags) { $state = $widget->has_focus ? 'selected' : 'active'; } else { $state = $widget->state eq 'insensitive' ? 'insensitive' : 'normal'; } my $layout = $cell->get_layout ($widget); $layout->set_text ($cell->get_date_string || ''); my ($xoff, $yoff, $width, $height) = $cell->calc_size ($layout); $widget->get_style->paint_layout ( $window, $state, 1, $cell_area, $widget, "cellrenderertext", $cell_area->x + $xoff + $cell->{xpad}, $cell_area->y + $yoff + $cell->{ypad}, $layout ); $widget->get_style->paint_arrow ($window, $widget->state, 'none', $cell_area, $arrow, '', 'down', 1, $cell_area->x + $cell_area->width - $cell->{arrow_width}, $cell_area->y + $cell_area->height - ($cell_area->height - 2), $cell->{arrow_width} - 3, $cell_area->height - 2 ); } sub on_start_editing { my ( $cell, $event, $view, $path, $background_area, $cell_area, $flags ) = @_; if (defined($popup_window)) { $popup_window->destroy; $popup_window = undef; } my ($xorig, $yorig) = $view->get_bin_window->get_origin; my ($xcell, $ycell) = $view->tree_to_widget_coords ( $cell_area->x, $cell_area->y ); $popup_window = Gtk2::Window->new ('popup'); my $calendar = Gtk2::Calendar->new; my ($year, $month, $day); if (defined $cell->get_date_string) { ($year, $month, $day) = split(/\//, $cell->get_date_string); } else { ($year, $month, $day) = (localtime (time))[5,4,3]; $year += 1900; ++$month; } $calendar->select_month ($month - 1, $year); $calendar->select_day ($day); $calendar->display_options ( [qw(show_heading show_day_names week_start_monday)] ); $calendar->signal_connect (day_selected_double_click => sub { my ($calendar) = @_; $cell->signal_emit (edited => $path, [$calendar->get_date]); $popup_window->destroy; $popup_window = undef; }); $popup_window->move ($xorig + $xcell, $yorig + $ycell + $cell_area->height); $popup_window->add ($calendar); $popup_window->show_all; return; } 1; package EnumRenderer; use Glib::Object::Subclass Gtk2::CellRenderer::, signals => { edited => { flags => [qw/run-last/], # path index param_types => [qw/Glib::String Glib::Int/], }, }, properties => [ Glib::ParamSpec->boolean ( 'show_box', 'Show Box', 'If true, draw an option menu-looking background on the cell', 1, ['readable', 'writable'] ), Glib::ParamSpec->boolean ( 'editable', 'Editable', 'Can i change that?', 0, ['readable', 'writable'] ), Glib::ParamSpec->int ( 'xpad', 'Xpad', 'Internal horizontal padding', 0, 65535, 3, [qw/readable writable/] ), Glib::ParamSpec->int ( 'ypad', 'Ypad', 'Internal vertical padding', 0, 65535, 2, [qw/readable writable/] ), Glib::ParamSpec->int ( 'arrow_width', 'Arrow_width', 'Width of arrow', 0, 65535, 15, [qw/readable writable/] ), Glib::ParamSpec->int ( 'index', 'Index', 'Index of selected list item', 0, 65535, 0, [qw/readable writable/] ), Glib::ParamSpec->boxed ( 'list', 'List', 'List of possible values', 'Glib::Scalar', [qw/readable writable/] ), ], ; __PACKAGE__->_install_overrides; sub INIT_INSTANCE { my $self = shift; $self->{show_box} = 1; $self->{xpad} = 3; $self->{ypad} = 2; $self->{arrow_width} = 15; # $self->set (mode => 'editable') if $self->{editable}; } sub calc_size { my ($cell, $layout) = @_; my ($w, $h) = $layout->get_pixel_size; return ( 0, 0, $w + $cell->{xpad} * 2 + $cell->{arrow_width}, $h + $cell->{ypad} * 2 ); } sub on_get_size { my ($cell, $widget, $area) = @_; return ( 3, 3, $area->width - $cell->{arrow_width} - 2*$cell->{xpad} - 4, $area->height - 6 ) if $area; my $layout = $cell->get_layout ($widget); $layout->set_text ($cell->{list}[$cell->{index}] || ""); return $cell->calc_size ($layout); } sub get_layout { my ($cell, $widget) = @_; return $cell->{layout} if defined $cell->{layout}; return $cell->{layout} = $widget->create_pango_layout (""); } sub on_render { my ( $cell, $window, $widget, $background_area, $cell_area, $expose_area, $flags ) = @_; return if ref $window eq 'Gtk2::Gdk::Pixmap'; warn Data::Dumper::Dumper (\@_) unless ref $window eq 'Gtk2::Gdk::Window'; my $state = 'normal'; if ($cell->{'show_box'}) { $widget->get_style->paint_box ( $window, $widget->state, 'out', $cell_area, undef, "optionmenu", $cell_area->x, $cell_area->y, $cell_area->width, $cell_area->height ); } else { if (grep {/selected/} @$flags) { $state = $widget->has_focus ? 'selected' : 'active'; } else { $state = $widget->state eq 'insensitive' ? 'insensitive' : 'normal'; } } my $layout = $cell->get_layout ($widget); $layout->set_text ($cell->{list}[$cell->{index}] || ""); my ($xoff, $yoff, $width, $height) = $cell->calc_size ($layout); $widget->get_style->paint_layout ( $window, $state, 1, $cell_area, $widget, "cellrenderertext", $cell_area->x + $xoff + $cell->{xpad}, $cell_area->y + $yoff + $cell->{ypad}, $layout ); $widget->get_style->paint_arrow ( $window, $state, 'none', $cell_area, $widget, "", 'down', 0, $cell_area->x+$cell_area->width - $cell->{arrow_width}, $cell_area->y+$cell_area->height - ($cell_area->height - 2), $cell->{arrow_width} - 3, $cell_area->height - 2 ); } sub menu_pos_func { my ($menu, $x, $y, $data) = @_; my ($treeview, $cell, $cell_area) = @$data; my ($wx, $wy) = $treeview->get_bin_window->get_origin; my ($tx, $ty) = $treeview->tree_to_widget_coords ( $cell_area->x, $cell_area->y ); $x = $wx + $tx + $cell->{xpad}; $y = $wy + $ty + $cell_area->height / 2 - 2; # center the menu vertically around the selected item. # this is inspired heavily by GtkOptionMenu. my $active = $menu->get_active; $y -= $active->get_child_requisition->height / 2 if $active; foreach my $i ($menu->get_children) { last if $i == $active; $y -= $i->get_child_requisition->height if $i->visible; } # play nicely with rtl languages if ($treeview->get_direction eq 'rtl') { $x =$wx + $tx + $cell_area->width - $menu->get_child_requisition->width; } return ($x, $y, 1); } sub editing_done { my ($item, $udata) = @_; my ($cell, $path, $idx, $menu) = @$udata; $menu->popdown; $cell->signal_emit ('edited', $path, $idx); $menu->destroy; } sub on_start_editing { my ( $cell, $event, $widget, $path, $background_area, $cell_area, $flags ) = @_; my $menu = Gtk2::Menu->new; my @data = @{ $cell->{list} }; for (my $i = 0 ; $i < @data ; $i++) { my $item = Gtk2::MenuItem->new ($data[$i]); $item->show; $menu->append ($item); # $item->{path} = $path; # $item->{index} = $i; # $item->{text} = $data[$i]; #$item->{menu} = $menu; $item->signal_connect ( activate => \&editing_done, [$cell, $path, $i, $menu] ); } $menu->set_active ($cell->{index}); # XXX: Shouldn't happen, but it does... # my $widget_flags = $menu->get_flags; # warn Data::Dumper::Dumper ($widget_flags); $menu->popup ( undef, undef, \&menu_pos_func, [$widget, $cell, $cell_area], $event ? $event->button : 0, 0 ); # my $item = $menu->get_active; # $menu->select_item ($item) if $item; return; } 1; package Database; # Emulate the data objects. The "constructor" just returns a pre-set list # of objects, where it normally should return a list based on a database # query. Undef is a NULL. # The data is hierarchic. # Common sub for data types using 'Gtk2::CellRendererText' sub _get_text_renderer_data { my ($col, $cell, $model, $iter, $info) = @_; my $row = $model->get ($iter, 0); my $get_meth = $info->{get_meth}; my $a = $row->$get_meth; my $t = defined $a ? sprintf ($info->{fmt}, $a) : ''; $t = substr ($t, 0, $info->{maxlen}) if defined $info->{maxlen}; $cell->set (text => $t); } sub _get_toggle_renderer_data { my ($col, $cell, $model, $iter, $info) = @_; my $row = $model->get ($iter, 0); my $get_meth = $info->{get_meth}; my $a = $row->$get_meth; $a = 0 unless defined $a; $cell->set_active ($a); } sub _get_enum_renderer_data { my ($col, $cell, $model, $iter, $info) = @_; my $row = $model->get ($iter, 0); my $get_meth = $info->{get_meth}; my $a = $row->$get_meth; $a = 'NULL' unless defined $a; my $i = $info->{lookup}->{$a} || 0; $cell->set ('index' => $i); } sub _get_date_renderer_data { my ($col, $cell, $model, $iter, $info) = @_; my $row = $model->get ($iter, 0); my $get_meth = $info->{get_meth}; my $d = $row->$get_meth; my $t = $d || ''; $t = substr ($t, 0, $info->{maxlen}) if defined $info->{maxlen}; $cell->set (date => $t); } sub _editing_text_finished { my ($cell, $path, $new_text, $udata) = @_; my ($model, $info) = @$udata; $path = Gtk2::TreePath->new_from_string ($path); my $iter = $model->get_iter ($path); my $row = $model->get ($iter, 0); my $set_meth = $info->{set_meth}; $row->$set_meth ($new_text); } sub _editing_toggle_finished { my ($cell, $path, $udata) = @_; my ($model, $info) = @$udata; $path = Gtk2::TreePath->new_from_string ($path); my $iter = $model->get_iter ($path); my $row = $model->get ($iter, 0); my $set_meth = $info->{set_meth}; my $get_meth = $info->{get_meth}; $row->$set_meth (!$row->$get_meth); } sub _editing_enum_finished { my ($cell, $path, $new_index, $udata) = @_; my ($model, $info) = @$udata; $path = Gtk2::TreePath->new_from_string ($path); my $iter = $model->get_iter ($path); my $row = $model->get ($iter, 0); my $set_meth = $info->{set_meth}; my $val = $info->{renderer_props}->{list}->[$new_index]; $val = undef if $val eq 'NULL'; $row->$set_meth ($val); } sub _editing_date_finished { my ($cell, $path, $new_date, $udata) = @_; my ($year, $month, $day) = @$new_date; ++$month; $new_date = sprintf ("%04d/%02d/%02d", $year, $month, $day); my ($model, $info) = @$udata; $path = Gtk2::TreePath->new_from_string ($path); my $iter = $model->get_iter ($path); my $row = $model->get ($iter, 0); my $set_meth = $info->{set_meth}; $new_date = undef if $new_date eq ''; $row->$set_meth ($new_date); } use constant METADATA => [ id => { is_parent => 1, renderer => 'Gtk2::CellRendererText', renderer_props => {xalign => 1.0}, fmt => '%d', maxlen => 8, alignment => 1.0, cell_cb => \&_get_text_renderer_data, }, str => { renderer => 'Gtk2::CellRendererText', fmt => '%s', maxlen => 40, cell_cb => \&_get_text_renderer_data, renderer_props => {'editable' => 1}, edited_cb => \&_editing_text_finished, edited_signal => 'edited', }, float => { renderer => 'Gtk2::CellRendererText', fmt => '%.2f', maxlen => 8, alignment => 1.0, cell_cb => \&_get_text_renderer_data, renderer_props => {'editable' => 1, xalign => 1.0}, edited_cb => \&_editing_text_finished, edited_signal => 'edited', }, bool => { renderer => 'Gtk2::CellRendererToggle', renderer_props => {'activatable' => 1}, edited_cb => \&_editing_toggle_finished, edited_signal => 'toggled', cell_cb => \&_get_toggle_renderer_data, }, date => { renderer => 'DateRenderer', renderer_props => {'mode' => 'editable'}, edited_cb => \&_editing_date_finished, edited_signal => 'edited', cell_cb => \&_get_date_renderer_data, }, enum => { renderer => 'EnumRenderer', renderer_props => { list => [qw(NULL KB SL DF GR)], mode => 'editable', }, lookup => { NULL => 0, KB => 1, SL => 2, DF => 3, GR => 4, }, cell_cb => \&_get_enum_renderer_data, fmt => '%s', maxlen => 8, edited_cb => \&_editing_enum_finished, edited_signal => 'edited', }, set => { renderer => 'SetRenderer', fmt => sub { return '[' . join (",", @_) . ']'; }, maxlen => 20, legal => ['PROC', 'RAW', 'SHIFT'], skip => 1, }, ]; # Add get/set method names for (my $i = 0; $i < scalar @{METADATA()}; $i += 2) { METADATA->[$i + 1]->{get_meth} = 'get_' . METADATA->[$i]; METADATA->[$i + 1]->{set_meth} = 'set_' . METADATA->[$i]; } # Simulate a database query sub query { my ($class, $db_connection, $query) = @_; # Not using these much... my @table = ( # 0: %8d # 1: %-40s # 2: %8.2f # 3: Yes/No (bool), # 4: Date in yyyy/mm/dd format # 5: Enum ('KB', 'SL', 'DF', 'GR') # 6: Set ('PROC', 'RAW', 'SHIFT') # 7: Ref to parent row bless ([ 1000, 'A string', 12.3567, undef, '1970/01/01', 'KB', ['RAW'] ], $class), bless ([ 1001, 'B string', 12.3, 1, '1970/01/01', 'RT', ['PROC', 'RAW'] ], $class), bless ([ 1002, 'C string', 12.45, undef, '1970/01/01', 'SL', ['PROC', 'SHIFT', 'RAW']], $class), bless ([ 1003, 'D string', 123567.87, 1, '1970/01/01', undef, ['RAW', 'PROC'] ], $class), bless ([ 1004, 'E string', 12345.678, undef, '1970/01/01', 'GR', [undef] ], $class), bless ([ 1005, 'F string', 1231.3567, 1, '1970/01/01', undef, ['RAW'] ], $class), bless ([ 1006, 'G string', 122.3567, 1, undef, 'KB', ['RAW'] ], $class), bless ([ 1007, undef, 12.3567, undef, '1970/01/01', 'KB', ['RAW'] ], $class), ); # Make hierarchy $table[1]->[7] = $table[0]; $table[2]->[7] = $table[0]; $table[3]->[7] = $table[2]; $table[4]->[7] = $table[3]; $table[5]->[7] = $table[4]; $table[7]->[7] = $table[6]; return \@table; } # Accessors sub get_id {$_[0]->[0]}; sub get_str {$_[0]->[1]}; sub get_float {$_[0]->[2]}; sub get_bool {$_[0]->[3]}; sub get_date {$_[0]->[4]}; sub get_enum {$_[0]->[5]}; sub get_set {$_[0]->[6]}; sub set_id {$_[0]->[0] = $_[1]}; sub set_str {$_[0]->[1] = $_[1]}; sub set_float {$_[0]->[2] = $_[1]}; sub set_bool {$_[0]->[3] = $_[1]}; sub set_date {$_[0]->[4] = $_[1]}; sub set_enum {$_[0]->[5] = $_[1]}; sub set_set {$_[0]->[6] = $_[1]}; sub parent {$_[0]->[7]}; sub reparent {$_[0]->[7] = $_[1]}; 1; package main; my $window = Gtk2::Window->new; $window->set_title ("Bjarne's cell renderer test"); $window->signal_connect (delete_event => sub { Gtk2->main_quit; 0; }); my $vbox = Gtk2::VBox->new; $window->add ($vbox); my $label = Gtk2::Label->new; $label->set_markup ('Test-table'); $vbox->pack_start ($label, 0, 0, 0); # Create and load the model. The model only contains one single column, # which is the reference to the object. my $model = Gtk2::TreeStore->new ('Glib::Scalar'); my $flags = $model->get_flags; for my $fl (@$flags) { print STDERR "Model has flag $fl set\n"; } my $data = Database->query; my %iter_by_row = (); for my $row (@$data) { my $iter; my $parent = $row->parent; # Assume tsorted data if (defined $parent) { $iter = $model->append ($iter_by_row{$row->parent}); } else { $iter = $model->append (0); } $model->set ($iter, 0 => $row); $iter_by_row{$row} = $iter; } undef %iter_by_row; $model->signal_connect ('row-inserted' => sub { my ($model, $path, $iter, $udata) = @_; return; # For now warn Data::Dumper::Dumper (\@_); unless ($model->iter_is_valid ($iter)) { printf STDERR "row-inserted: Invalid iterator!\n"; return; } my $row = $model->get_value ($iter, 0); # XXX: model returns undef for row. Why??? my $piter = $model->iter_parent ($iter); my $parent_row; $parent_row = $model->get ($piter, 0) if defined $piter; if (defined $parent_row) { printf STDERR "Row %d reparented to %d from %d\n", $row->get_id, $parent_row->get_id, $row->parent->get_id; } else { printf STDERR "Row %d reparented to toplevel\n", $row->get_id; } $row->reparent ($parent_row); }, 'drop'); my $mdata = Database->METADATA; # The view is more complicated, or rather the columns/renderers are my $view = Gtk2::TreeView->new ($model); $view->set_rules_hint (1); $view->set_reorderable (1); for (my $i = 0; $i < @$mdata; $i += 2) { my $title = $mdata->[$i]; my $cinfo = $mdata->[$i + 1]; next if $cinfo->{skip}; my $renderer = $cinfo->{renderer}->new; $renderer->set (%{$cinfo->{renderer_props}}) if exists $cinfo->{renderer_props}; $renderer->signal_connect ( $cinfo->{edited_signal} => $cinfo->{edited_cb}, [$model, $cinfo] ) if exists $cinfo->{edited_cb}; my $col = Gtk2::TreeViewColumn->new_with_attributes ($title, $renderer); $col->set ( reorderable => 1, resizable => 1, alignment => 0.5, ); $renderer->{column} = $col; $col->{legal_vals} = $cinfo->{legal} if exists $cinfo->{legal}; $col->set_cell_data_func ($renderer, $cinfo->{cell_cb}, $cinfo); $view->append_column ($col); $view->set_expander_column ($col) if exists $cinfo->{is_parent}; } $vbox->pack_start ($view, 0, 0, 0); my @cols = $view->get_columns; printf "Nr columns = %d\n", scalar @cols; $window->show_all; Gtk2->main; --------------070405040307060000090001-- From rwmcfa1@neces.com Wed Oct 29 09:19:59 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id B678818112 for ; Wed, 29 Oct 2003 09:19:59 -0500 (EST) Received: from webmail.neces.com (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id 66805FA46; Wed, 29 Oct 2003 06:20:17 -0800 (PST) Received: from 192.146.101.12 (SquirrelMail authenticated user rwmcfa1@neces.com) by webmail.neces.com with HTTP; Wed, 29 Oct 2003 09:20:17 -0500 (EST) Message-ID: <8439.192.146.101.12.1067437217.spork@webmail.neces.com> In-Reply-To: <3F9FD34E.3080108@broadpark.no> References: <3F9FD34E.3080108@broadpark.no> Date: Wed, 29 Oct 2003 09:20:17 -0500 (EST) Subject: Re: cool stuff in cvs head From: "Ross McFarland" To: Bjarne =?iso-8859-1?Q?Steinsb=F8?= Cc: "muppet" , "gtk-perl list" User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Bjarne Steinsbø said: > - After using the popup to select a new entry, the treeview will > consider a dnd operation to have started as soon as the cursor enters > the window. Looks really weird... The "workaround" is for the user to > do the drop outside the window... I've tried various stuff to try to > track this one down, but no luck so far. In the process I also ran into > a problem when trying to do a "$menu->get_flags". The xs-code for > Gtk2::Widget said "inhandled case in flag_get - shouldn't happen", but > it certainly did. after looking at the code there seems the only way you could get that error message would be to try to set a flag that is read only, drawable or is_sensitive so i would assume you're trying to set one of those and you shouldn't be, according to the comments there, but i they don't seem to be in line with the GtkWidgetFlags structure. drawable isn't a flag its a macro that looks at whether the widget is visible and mapped. is_sensitive is also a macro, it looks at whether the widget is sensitive and whether its parent is as well. however there is also a sensitive (no is_) that is both readable and writable so that one should be avaible. from the looks of it some work on it is needed. i'll reply back to this thread with what i find. i've fixed the error message while i was at it: unhandled case (%d) in get/set_flags - shouldn't happen hopefully soon it won't happen. i'll leave your cell renderer problems for someone familiar with the subject. -rm From rwmcfa1@neces.com Wed Oct 29 09:26:29 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from pochacco.sd.dreamhost.com (pochacco.sd.dreamhost.com [66.33.206.17]) by mail.gnome.org (Postfix) with ESMTP id 8667C180FE for ; Wed, 29 Oct 2003 09:26:29 -0500 (EST) Received: from webmail.neces.com (localhost [127.0.0.1]) by pochacco.sd.dreamhost.com (Postfix) with SMTP id 073F58FF15 for ; Wed, 29 Oct 2003 06:26:00 -0800 (PST) Received: from 192.146.101.12 (SquirrelMail authenticated user rwmcfa1@neces.com) by webmail.neces.com with HTTP; Wed, 29 Oct 2003 09:26:01 -0500 (EST) Message-ID: <33523.192.146.101.12.1067437561.spork@webmail.neces.com> In-Reply-To: <8439.192.146.101.12.1067437217.spork@webmail.neces.com> References: <3F9FD34E.3080108@broadpark.no> <8439.192.146.101.12.1067437217.spork@webmail.neces.com> Date: Wed, 29 Oct 2003 09:26:01 -0500 (EST) Subject: Re: cool stuff in cvs head From: "Ross McFarland" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Ross McFarland said: > from the looks of it some work on it is needed. i'll reply back to this thread > with what i find. scratch that, well some of it anyway. is_sensitive is mapped and read only as it should be. sensitive is also mapped and read/write. drawable is mapped and read only as it should be. i still have improved error message stuff that's going in very soon so. so bascially the only way you could get the message, so far as i can tell, would be to try to set something that is read only (because it's a macro that looks at multiple flags, rather than a singular flag.) is this something that get's called really often? like in a drawing function? if so then the whole case thing might need an investigation as that many jumps can be a bad thing in time sensitive code. -rm From bosteins@broadpark.no Wed Oct 29 10:18:19 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.broadpark.no (mail.broadpark.no [217.13.4.2]) by mail.gnome.org (Postfix) with ESMTP id BAB3D18135 for ; Wed, 29 Oct 2003 10:18:18 -0500 (EST) Received: from broadpark.no (146.80-202-36.nextgentel.com [80.202.36.146]) by mail.broadpark.no (Postfix) with ESMTP id 1834578C7B; Wed, 29 Oct 2003 16:18:36 +0100 (MET) Message-ID: <3F9FE7F3.9080100@broadpark.no> Date: Wed, 29 Oct 2003 17:16:51 +0100 From: =?ISO-8859-1?Q?Bjarne_Steinsb=F8?= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Ross McFarland Cc: gtk-perl-list@gnome.org Subject: Re: cool stuff in cvs head References: <3F9FD34E.3080108@broadpark.no> <8439.192.146.101.12.1067437217.spork@webmail.neces.com> <33523.192.146.101.12.1067437561.spork@webmail.neces.com> In-Reply-To: <33523.192.146.101.12.1067437561.spork@webmail.neces.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Ross McFarland wrote: >is this something that get's called really often? like in a drawing function? >if so then the whole case thing might need an investigation as that many jumps >can be a bad thing in time sensitive code. > > Ross, I only tried this as a help to debug the problems with the renderer. Yes, in this context it would be called often, but it's not code that I intended to leave in there. Basically I'm feeling my way around Gtk, bumping into limits and bugs some times, but mostly bumping into my own ignorance. I have no idea if looking at the flags of a menu would have helped me, but that kind of error message is something I report back when I see it. Point is, this is not high priority from my side. - "Doctor, it hurts when I touch myself right there." - "So don't do that, then." Bjarne From scott@asofyet.org Wed Oct 29 10:56:56 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id BA3A418D13 for ; Wed, 29 Oct 2003 10:56:56 -0500 (EST) Received: from webmail.asofyet.org (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id 0E48AFA72 for ; Wed, 29 Oct 2003 07:57:15 -0800 (PST) Received: from 192.146.101.12 (SquirrelMail authenticated user scott@asofyet.org) by webmail.asofyet.org with HTTP; Wed, 29 Oct 2003 10:57:15 -0500 (EST) Message-ID: <36138.192.146.101.12.1067443035.spork@webmail.asofyet.org> In-Reply-To: <3F9FD34E.3080108@broadpark.no> References: <3F9FD34E.3080108@broadpark.no> Date: Wed, 29 Oct 2003 10:57:15 -0500 (EST) Subject: Re: cool stuff in cvs head From: "muppet" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Bjarne Steinsbø said: > BTW, it compiles cleanly on my > system, but not all tests run successfully in Gtk2. which tests fail? > - The current renderer code gets some unexpected parameters when a dnd > operation is started. It looks to me as if the renderer in this case is > used to render the selected row to a pixmap instead of a window, the > pixmap is then dragged around following the cursor. I haven't looked > into fixing this problem, it was too easy to work around it by just > ignoring the rendering request... this is an API thing, it looks like. all of the gtk_paint_* functions ask for a GdkWindow*, but pass those on to gdk_draw_* and gdk_drawable_* functions. note that a pixmap and a window are both GdkDrawables. so, i can fix this problem by changing all of the Gtk2::Style->paint_whatever xsubs to ask for GdkDrawables instead of GdkWindows. i haven't heard back from the gtk+ guys on whether this is valid (i only asked five minutes ago), but i think it will be the fix. > - After using the popup to select a new entry, the treeview will > consider a dnd operation to have started as soon as the cursor enters > the window. Looks really weird... The "workaround" is for the user to > do the drop outside the window... I've tried various stuff to try to > track this one down, but no luck so far. i can duplicate this. it has something to do with how the mouse events are being handled, which is something that i tend to figure out only by trial and error, but appears to be related only to app code, not the bindings. i'll get back to you on that. > Anyway, > the problem is that the window doesn't update correctly when expanding > the list. This causes the renderers to put data the data at the > position they used before, not to the new position.... i think this is a side effect of the fact that your columns are resizable. > Does anybody have some working code of how to listen in to all the > signal activity going on in a Gtk2 app? There seems to be a way to > listen in to the signals using g_signal_add_emission_hook(), and this > certainly could be useful for debugging purposes. But the xs-code is > commented out. What's the full story? most of that sort of thing is unwrapped because of either lack of interest (yet) or the thought that "gee, that's esoteric, let's look at other stuff first." you may be more interested in monitoring all events, rather than single signals (some don't allow hooks, you see). you should be able to uncomment the necessary functions and play with them as you like; if you have any problems, email me offlist and i'll help you out (some of them require callbacks, which aren't straightforward if you aren't used to C). -- muppet From bosteins@broadpark.no Wed Oct 29 12:27:08 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.broadpark.no (mail.broadpark.no [217.13.4.2]) by mail.gnome.org (Postfix) with ESMTP id B46271837C for ; Wed, 29 Oct 2003 12:27:07 -0500 (EST) Received: from broadpark.no (146.80-202-36.nextgentel.com [80.202.36.146]) by mail.broadpark.no (Postfix) with ESMTP id EC77478E73; Wed, 29 Oct 2003 18:27:17 +0100 (MET) Message-ID: <3FA0061D.4030707@broadpark.no> Date: Wed, 29 Oct 2003 19:25:33 +0100 From: =?ISO-8859-1?Q?Bjarne_Steinsb=F8?= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 X-Accept-Language: en-us, en MIME-Version: 1.0 To: muppet Cc: gtk-perl-list@gnome.org Subject: Re: cool stuff in cvs head References: <3F9FD34E.3080108@broadpark.no> <36138.192.146.101.12.1067443035.spork@webmail.asofyet.org> In-Reply-To: <36138.192.146.101.12.1067443035.spork@webmail.asofyet.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: muppet wrote: >Bjarne Steinsbø said: > > >>BTW, it compiles cleanly on my >>system, but not all tests run successfully in Gtk2. >> >> > >which tests fail? > > > PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/00.Gtk2.................ok t/01.GtkWindow............ok t/02.GtkButton............ok t/03.GtkGammaCurve........ok t/04.GtkSocket-GtkPlug....ok 3/4Gtk-CRITICAL **: file gtkxembed.c: line 188 (_gtk_xembed_send_focus_message): assertion `GDK_IS_WINDOW (recipient)' failed at t/04.GtkSocket-GtkPlug.t line 87. t/04.GtkSocket-GtkPlug....ok t/05.GtkListStore-etc.....ok t/06.GtkLabel.............ok t/07.GtkBoxes.............ok t/08.GtkCombo.............ok t/09.GtkRadioButton.......ok t/10.GtkProgressBar.......ok t/11.GtkStatusBar.........ok t/12.GtkDialog............ok t/13.GtkTooltips..........ok t/14.GtkToolbar...........ok t/15.GtkHandleBox.........ok t/16.GtkMenu-etc..........ok t/17.GtkItemFactory.......ok t/18.GtkNotebook..........ok t/19.GtkSimpleList........ok t/20.GdkColor.............ok t/21.GtkContainer.........ok t/22.GtkListStore.........ok t/23.GtkTreeStore.........ok t/24.GtkTreeView..........ok t/25.GtkTreeSelection.....ok t/26.GtkSimpleMenu........ok t/27.GtkClipboard.........ok t/30.GtkCellRenderer......ok 29/21# Looks like you planned 21 tests but ran 8 extra. t/30.GtkCellRenderer......dubious Test returned status 8 (wstat 2048, 0x800) DIED. FAILED test Failed 0/21 tests, 100.00% okay Failed Test Stat Wstat Total Fail Failed List of Failed ------------------------------------------------------------------------------- t/30.GtkCellRenderer.t 8 2048 21 0 0.00% Failed 1/29 test scripts, 96.55% okay. -8/855 subtests failed, 100.94% okay. make: *** [test_dynamic] Error 2 I'm running perl-5.8.0 (haven't upgraded yet), Gnome-2.4 with associated libraries, and gcc-3.2.2. (It's starting to show that it's several months since I last update the tool-chain....). Compiled with "-O3 -march=athlon-mp", and my perl is compiled with threading support. >> - After using the popup to select a new entry, the treeview will >>consider a dnd operation to have started as soon as the cursor enters >>the window. Looks really weird... The "workaround" is for the user to >>do the drop outside the window... I've tried various stuff to try to >>track this one down, but no luck so far. >> >> > >i can duplicate this. it has something to do with how the mouse events are >being handled, which is something that i tend to figure out only by trial and >error, but appears to be related only to app code, not the bindings. i'll get >back to you on that. > > I'll keep looking also, just don't expect me to find anything... >>Anyway, >>the problem is that the window doesn't update correctly when expanding >>the list. This causes the renderers to put data the data at the >>position they used before, not to the new position.... >> >> > >i think this is a side effect of the fact that your columns are resizable. > > I hadn't tested that... (clickety, clickety...) But nope, that's not it. I turned off resizable, and even dropped reorderable and the center-alignment, but no change. Does that mean that you don't see it? >>Does anybody have some working code of how to listen in to all the >>signal activity going on in a Gtk2 app? There seems to be a way to >>listen in to the signals using g_signal_add_emission_hook(), and this >>certainly could be useful for debugging purposes. But the xs-code is >>commented out. What's the full story? >> >> > >most of that sort of thing is unwrapped because of either lack of interest >(yet) or the thought that "gee, that's esoteric, let's look at other stuff >first." > >you may be more interested in monitoring all events, rather than single >signals (some don't allow hooks, you see). you should be able to uncomment >the necessary functions and play with them as you like; if you have any >problems, email me offlist and i'll help you out (some of them require >callbacks, which aren't straightforward if you aren't used to C). > As I feared then. I'm on my own... No promises on me spending much time on this, but I still feel that it could be useful. (Going away to read some more documentation.... Ahhh! So *that's* where the ocumentation about events have been hiding) Ah, I see what you mean by listening in to the events and not the signals. It seems that Gdk has some useful functions, provided Gtk is compiled in some kind of debug mode. I might have a go at this, probably combining it with setting up a test-environment for 2.5. Off the top of your head, do you know if signals are implemented by stuffing artificial events back on the event-queue, or do they take a more direct route? Please don't bother spending time on this, just in case you should happen to know... Bjarne From scott@asofyet.org Wed Oct 29 13:04:05 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from pochacco.sd.dreamhost.com (pochacco.sd.dreamhost.com [66.33.206.17]) by mail.gnome.org (Postfix) with ESMTP id BD654184C6 for ; Wed, 29 Oct 2003 13:04:04 -0500 (EST) Received: from webmail.asofyet.org (localhost [127.0.0.1]) by pochacco.sd.dreamhost.com (Postfix) with SMTP id 283C78FE6B for ; Wed, 29 Oct 2003 10:04:09 -0800 (PST) Received: from 192.146.101.12 (SquirrelMail authenticated user scott@asofyet.org) by webmail.asofyet.org with HTTP; Wed, 29 Oct 2003 13:04:09 -0500 (EST) Message-ID: <23409.192.146.101.12.1067450649.spork@webmail.asofyet.org> In-Reply-To: <36138.192.146.101.12.1067443035.spork@webmail.asofyet.org> References: <3F9FD34E.3080108@broadpark.no> <36138.192.146.101.12.1067443035.spork@webmail.asofyet.org> Date: Wed, 29 Oct 2003 13:04:09 -0500 (EST) Subject: Re: cool stuff in cvs head From: "muppet" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: multipart/mixed;boundary="----=_20031029130409_45637" Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: ------=_20031029130409_45637 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit muppet said: >> - After using the popup to select a new entry, the treeview will >> consider a dnd operation to have started as soon as the cursor enters >> the window. Looks really weird... The "workaround" is for the user to >> do the drop outside the window... I've tried various stuff to try to >> track this one down, but no luck so far. > > i can duplicate this. it has something to do with how the mouse events are > being handled, which is something that i tend to figure out only by trial and > error, but appears to be related only to app code, not the bindings. i'll get > back to you on that. #gtk+ pointed me to http://scentric.net/tutorial/sec-custom-cell-renderers.html#sec-custom-cell-renderers-external , which links to cell renderers implemented for MrProject and others. MrProject creates a base class for any renderer which uses a popup window, and then derives the list and date cellrenderers from that. this sounds like a good idea, because that would take care of the popup handling issues of the cellrenderer_date.pl example. but that's beside the point. from looking at that code i figured out how to fix the dragging bug you're seeing in examples/cellrenderer_popup.pl (which looks very similar to your testcase). the basic problem is that Mup::CellRendererPopup's on_start_editing() returns undef. this says to the calling code, "we didn't do anything about it, we aren't editing, feel free to do what you like." since the treeview is set reorderable, that means the treeview proceeds to start dragging. so, even though we don't intend to use a GtkCellEditable to edit this cell, we need to create and return one, anyway. we destroy it as soon as the menu is handled. on my system, i never even saw the entry widget show up, probably because i never called start_editing on it. the attached patch shows what i mean. if you just use that patch on whatever version of Gtk2 you have, it will give you trapped exception warnings, saying that remove_widget cannot be found --- that's because @Gtk2::Entry::ISA is not correctly set up to designate Gtk2::Entry as an implementor of Gtk2::Cell::Editable. that's fixed in CVS, as are several other things. it looks like SourceForge's anon CVS is faster than it was, but still doesn't yet show the changes i've made since this morning. -- muppet ------=_20031029130409_45637 Content-Type: application/octet-stream; name="cellrenderer_popup.pl.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="cellrenderer_popup.pl.patch" SW5kZXg6IGV4YW1wbGVzL2NlbGxyZW5kZXJlcl9wb3B1cC5wbAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiAvY3Zzcm9vdC9ndGsyLXBlcmwvZ3RrMi1wZXJsLXhzL0d0azIvZXhhbXBsZXMvY2VsbHJlbmRl cmVyX3BvcHVwLnBsLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEKcmV0cmlldmluZyByZXZpc2lv biAxLjIKZGlmZiAtdSAtcjEuMSAtcjEuMgotLS0gZXhhbXBsZXMvY2VsbHJlbmRlcmVyX3BvcHVw LnBsCTI3IE9jdCAyMDAzIDE5OjM3OjI3IC0wMDAwCTEuMQorKysgZXhhbXBsZXMvY2VsbHJlbmRl cmVyX3BvcHVwLnBsCTI5IE9jdCAyMDAzIDE3OjQ4OjIyIC0wMDAwCTEuMgpAQCAtMjUsNyArMjUs NyBAQAogIyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAogIyA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz MzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQS4KICMKLSMgJEhlYWRlcjogL2N2c3Jvb3Qv Z3RrMi1wZXJsL2d0azItcGVybC14cy9HdGsyL2V4YW1wbGVzL2NlbGxyZW5kZXJlcl9wb3B1cC5w bCx2IDEuMSAyMDAzLzEwLzI3IDE5OjM3OjI3IG11cHBldG1hbiBFeHAgJAorIyAkSGVhZGVyOiAv Y3Zzcm9vdC9ndGsyLXBlcmwvZ3RrMi1wZXJsLXhzL0d0azIvZXhhbXBsZXMvY2VsbHJlbmRlcmVy X3BvcHVwLnBsLHYgMS4yIDIwMDMvMTAvMjkgMTc6NDg6MjIgbXVwcGV0bWFuIEV4cCAkCiAjCiAK IHVzZSBHdGsyIC1pbml0OwpAQCAtOTYsMTEgKzk2LDExIEBACiB9CiAKIHN1YiBvbl9yZW5kZXIg ewotCW15ICgkY2VsbCwgJHdpbmRvdywgJHdpZGdldCwgJGJhY2tncm91bmRfYXJlYSwgJGNlbGxf YXJlYSwgJGV4cG9zZV9hcmVhLCAkZmxhZ3MpID0gQF87CisJbXkgKCRjZWxsLCAkZHJhd2FibGUs ICR3aWRnZXQsICRiYWNrZ3JvdW5kX2FyZWEsICRjZWxsX2FyZWEsICRleHBvc2VfYXJlYSwgJGZs YWdzKSA9IEBfOwogCW15ICRzdGF0ZSA9ICdub3JtYWwnOwogCiAJaWYgKCRjZWxsLT57c2hvd19i b3h9KSB7Ci0JCSR3aWRnZXQtPmdldF9zdHlsZS0+cGFpbnRfYm94ICgkd2luZG93LCAkd2lkZ2V0 LT5zdGF0ZSwKKwkJJHdpZGdldC0+Z2V0X3N0eWxlLT5wYWludF9ib3ggKCRkcmF3YWJsZSwgJHdp ZGdldC0+c3RhdGUsCiAJCQkJCSAnb3V0JywgJGNlbGxfYXJlYSwKIAkJCQkJIHVuZGVmLCAib3B0 aW9ubWVudSIsCiAJCQkJCSAkY2VsbF9hcmVhLT54LApAQCAtMTIzLDE0ICsxMjMsMTQgQEAKIAkk bGF5b3V0LT5zZXRfdGV4dCAoJGNlbGwtPntsaXN0fVskY2VsbC0+e2luZGV4fV0gfHwgIiIpOwog CW15ICgkeG9mZiwgJHlvZmYsICR3aWR0aCwgJGhlaWdodCkgPSAkY2VsbC0+Y2FsY19zaXplICgk bGF5b3V0KTsKIAotCSR3aWRnZXQtPmdldF9zdHlsZS0+cGFpbnRfbGF5b3V0ICgkd2luZG93LAor CSR3aWRnZXQtPmdldF9zdHlsZS0+cGFpbnRfbGF5b3V0ICgkZHJhd2FibGUsCiAJCQkJICRzdGF0 ZSwKIAkJCSAgICAgICAgIDEsICRjZWxsX2FyZWEsCiAJCQkJICR3aWRnZXQsICJjZWxscmVuZGVy ZXJ0ZXh0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjZWxsX2FyZWEtPngg KyAkeG9mZiArIHhwYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2VsbF9h cmVhLT55ICsgJHlvZmYgKyB5cGFkLAogCQkJCSAkbGF5b3V0KTsKLQkkd2lkZ2V0LT5nZXRfc3R5 bGUtPnBhaW50X2Fycm93ICgkd2luZG93LCAkc3RhdGUsICdub25lJywKKwkkd2lkZ2V0LT5nZXRf c3R5bGUtPnBhaW50X2Fycm93ICgkZHJhd2FibGUsICRzdGF0ZSwgJ25vbmUnLAogCQkJCSRjZWxs X2FyZWEsICR3aWRnZXQsICIiLAogCQkJCSdkb3duJywgMCwKIAkJCQkkY2VsbF9hcmVhLT54KyRj ZWxsX2FyZWEtPndpZHRoIC0gYXJyb3dfd2lkdGgsCkBAIC0xNjUsMTUgKzE2NSwyNSBAQAogCiAK IHN1YiBlZGl0aW5nX2RvbmUgewotCXdhcm4gRHVtcGVyKFxAXyk7Ci0JbXkgKCRpdGVtLCAkY2Vs bCkgPSBAXzsKKwlteSAoJGl0ZW0sICRpbmZvKSA9IEBfOworCW15ICgkY2VsbCwgJGVkaXRhYmxl KSA9IEAkaW5mbzsKIAkkY2VsbC0+c2lnbmFsX2VtaXQgKCdlZGl0ZWQnLCAkaXRlbS0+e3BhdGh9 LCAkaXRlbS0+e2luZGV4fSk7CisJIyBzZWUgdGhlIGV2aWwgdHJpY2sgZGVzY3JpcHRpb24gYmVs b3cKKwkkZWRpdGFibGUtPnJlbW92ZV93aWRnZXQ7CiB9CiAKIHN1YiBvbl9zdGFydF9lZGl0aW5n IHsKIAlteSAoJGNlbGwsICRldmVudCwgJHdpZGdldCwgJHBhdGgsICRiYWNrZ3JvdW5kX2FyZWEs ICRjZWxsX2FyZWEsICRmbGFncykgPSBAXzsKIAlteSAkbWVudSA9IEd0azI6Ok1lbnUtPm5ldzsK IAlteSBAZGF0YSA9IEB7ICRjZWxsLT57bGlzdH0gfTsKKworCSMgdGhpcyBpcyBhbiBldmlsIHRy aWNrLiAgd2UncmUgY3JlYXRpbmcgYSBjdXN0b20gd2lkZ2V0IGFuZCBoYW5kbGluZworCSMgdGhl IGVkaXRpbmcgb3Vyc2VsdmVzLCBidXQgdGhlIGhpZ2hlciBsZXZlbCBjb2RlIG9ubHkgdGhpbmtz IHdlJ3JlCisJIyBlZGl0aW5nIGlmIHdlIHJldHVybiBhbiBlZGl0YWJsZS4gIHNvIHdlIHJldHVy biBhbiBlZGl0YWJsZS4gIG9mCisJIyBjb3Vyc2UsIHdlIGhhdmUgdG8gcmVtb3ZlIGl0IGluIHRo ZSBtZW51IGFjdGl2YXRlIGNhbGxiYWNrcyBzbyB0aGF0CisJIyBpdCBkb2Vzbid0IHN0aWNrIGFy b3VuZC4KKwlteSAkZWRpdGFibGUgPSBHdGsyOjpFbnRyeS0+bmV3OworCiAJZm9yIChteSAkaSA9 IDAgOyAkaSA8IEBkYXRhIDsgJGkrKykgewogCQlteSAkaXRlbSA9IEd0azI6Ok1lbnVJdGVtLT5u ZXcgKCRkYXRhWyRpXSk7CiAJCSRpdGVtLT5zaG93OwpAQCAtMTgxLDcgKzE5MSw4IEBACiAJCSRp dGVtLT57cGF0aH0gPSAkcGF0aDsKIAkJJGl0ZW0tPntpbmRleH0gPSAkaTsKIAkJJGl0ZW0tPnt0 ZXh0fSA9ICRkYXRhWyRpXTsKLQkJJGl0ZW0tPnNpZ25hbF9jb25uZWN0IChhY3RpdmF0ZSA9PiBc JmVkaXRpbmdfZG9uZSwgJGNlbGwpOworCQkjJGl0ZW0tPnNpZ25hbF9jb25uZWN0IChhY3RpdmF0 ZSA9PiBcJmVkaXRpbmdfZG9uZSwgJGNlbGwpOworCQkkaXRlbS0+c2lnbmFsX2Nvbm5lY3QgKGFj dGl2YXRlID0+IFwmZWRpdGluZ19kb25lLCBbJGNlbGwsICRlZGl0YWJsZV0pOwogCX0KIAkkbWVu dS0+c2V0X2FjdGl2ZSAoJGNlbGwtPntpbmRleH0pOwogCSRtZW51LT5wb3B1cCAodW5kZWYsIHVu ZGVmLApAQCAtMTg5LDcgKzIwMCw5IEBACiAJICAgICAgICAgICAgICAkZXZlbnQgPyAkZXZlbnQt PmJ1dHRvbiA6IDAsIDApOwogCSRpdGVtID0gJG1lbnUtPmdldF9hY3RpdmU7CiAJJG1lbnUtPnNl bGVjdF9pdGVtICgkaXRlbSkgaWYgJGl0ZW07Ci0JdW5kZWY7CisKKwkjIHNlZSB0aGUgZXZpbCB0 cmljayBtZW50aW9uZWQgYWJvdmUuCisJJGVkaXRhYmxlOwogfQogCiAKQEAgLTIyNyw2ICsyNDAs OSBAQAogCiAjIG5vdyBhIHZpZXcKICR0cmVldmlldyA9IEd0azI6OlRyZWVWaWV3LT5uZXcgKCRt b2RlbCk7CiskdHJlZXZpZXctPnNldF9ydWxlc19oaW50ICgxKTsKKyR0cmVldmlldy0+c2V0X3Jl b3JkZXJhYmxlICgxKTsKKwogCiAjCiAjIHJlZ3VsYXIgZWRpdGFibGUgdGV4dCBjb2x1bW4gZm9y IGNvbHVtbiAwLCB0aGUgc3RyaW5nCg== ------=_20031029130409_45637-- From rwmcfa1@neces.com Wed Oct 29 14:54:37 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from chococat.sd.dreamhost.com (chococat.sd.dreamhost.com [66.33.206.16]) by mail.gnome.org (Postfix) with ESMTP id 07B2A18E48 for ; Wed, 29 Oct 2003 14:54:37 -0500 (EST) Received: from webmail.neces.com (localhost [127.0.0.1]) by chococat.sd.dreamhost.com (Postfix) with SMTP id 19ADBFA78 for ; Wed, 29 Oct 2003 11:54:52 -0800 (PST) Received: from 192.146.101.12 (SquirrelMail authenticated user rwmcfa1@neces.com) by webmail.neces.com with HTTP; Wed, 29 Oct 2003 14:54:52 -0500 (EST) Message-ID: <33955.192.146.101.12.1067457292.spork@webmail.neces.com> Date: Wed, 29 Oct 2003 14:54:52 -0500 (EST) Subject: Properties as hash keys, damn perl is cool! From: "Ross McFarland" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: multipart/mixed;boundary="----=_20031029145452_54999" Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: ------=_20031029145452_54999 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit accessing GObject properties as keys in the object hash sould cool to you, $button->{label} = 'This is the text on the button', then read on. for various reasons, not the least of which is that it's really cool. i'd been thinking about ways of doing this which would of been really complicated, really ulgy and required non-trivial overhead for just about everything. though it all i kept saying to my self i just want to tie certian keys, not the whole hash. well fast forward to this morning when i realized, hey i can just tie the certian keys i don't have to tie the whole hash, duh. so here it is. some of the coding done for the documentation project came in handy as well, namely list_properties. it makes the following possible: my $button = Gtk2::Button->new ('foo'); $button->tie_properties; print $button->{label}."\n"; # prints foo $button->{label} = 'bar'; # now when text label on the button will be bar. print $button->{label}."\n"; # prints bar just run the attached script on a system with Glib/Gtk2 installed and you'll see demonstrations. take a look at it to see how 'simple' it really is. consider this a request for comments, let me know what you think. assumming no one comes up with major issues with it then this will be rolled into Glib somewhere and be avaiable in the next release, which as muppet said will be pretty soon. all it takes is 76 lines of code, counting whitespace, that's pretty cool. -rm ------=_20031029145452_54999 Content-Type: application/octet-stream; name="properties.pl" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="properties.pl" IyEvdXNyL2Jpbi9wZXJsCgpwYWNrYWdlIEdsaWI6Ok9iamVjdDo6UHJvcGVydHk7Cgp1c2UgQ2Fy cDsKCnN1YiBUSUVTQ0FMQVIKewojIGluIHRoZSBhcnJheSByZWZlcmVuY2UgdGhlIGVsZW1lbnRz IGFyZToKIwlbMF0gR2xpYjo6T2JqZWN0CiMJWzFdIHByb3BlcnR5IG5hbWUKCglibGVzcyBbICRf WzFdLCAkX1syXSBdLCAkX1swXTsKfQoKc3ViIFNUT1JFIHsgY3JvYWsgJ3Byb3BlcnR5ICcuJF9b MF1bMV0uJyBpcyByZWFkLW9ubHknOyB9CgpzdWIgRkVUQ0ggeyBjcm9hayAncHJvcGVydHkgJy4k X1swXVsxXS4nIGlzIHdyaXRlLW9ubHknOyB9CgpwYWNrYWdlIEdsaWI6Ok9iamVjdDo6UHJvcGVy dHk6OlJlYWRhYmxlOwoKb3VyIEBJU0EgPSBxdy9HbGliOjpPYmplY3Q6OlByb3BlcnR5LzsKCnN1 YiBGRVRDSCB7ICRfWzBdWzBdLT5nZXRfcHJvcGVydHkgKCRfWzBdWzFdKTsgfQoKcGFja2FnZSBH bGliOjpPYmplY3Q6OlByb3BlcnR5OjpXcml0YWJsZTsKCm91ciBASVNBID0gcXcvR2xpYjo6T2Jq ZWN0OjpQcm9wZXJ0eS87CgpzdWIgU1RPUkUgeyAkX1swXVswXS0+c2V0X3Byb3BlcnR5ICgkX1sw XVsxXSwgJF9bMV0pOyB9CgpwYWNrYWdlIEdsaWI6Ok9iamVjdDo6UHJvcGVydHk6OlJlYWRXcml0 ZTsKCm91ciBASVNBID0gcXcvR2xpYjo6T2JqZWN0OjpQcm9wZXJ0eS87CgoqRkVUQ0ggPSBcJkds aWI6Ok9iamVjdDo6UHJvcGVydHk6OlJlYWRhYmxlOjpGRVRDSDsKKlNUT1JFID0gXCZHbGliOjpP YmplY3Q6OlByb3BlcnR5OjpXcml0YWJsZTo6U1RPUkU7CgpwYWNrYWdlIEdsaWI6Ok9iamVjdDsK CnN1YiB0aWVfcHJvcGVydGllcwp7CglteSAkc2VsZiA9IHNoaWZ0OwkjIHRoZSBvYmplY3QKCW15 ICRhbGwgPSBzaGlmdDsJIyBhZGQgYWxsIHByb3BlcnRpZXMsIHVwIGhlaXJhcmNoeQoKCW15IEBw cm9wcyA9ICRzZWxmLT5saXN0X3Byb3BlcnRpZXM7CglteSAkcGFja2FnZSA9IHJlZiAkc2VsZjsK CWZvcmVhY2ggbXkgJHByb3AgKEBwcm9wcykKCXsKCQluZXh0IGlmICgkcHJvcC0+e293bmVyX3R5 cGV9IG5lICRwYWNrYWdlIGFuZCBub3QgJGFsbCk7CgkJbXkgJGZsYWdzID0gIkB7JHByb3AtPntm bGFnc319IjsKCQkkcHJvcC0+e25hbWV9ID1+IHMvLS9fL2c7CgkJaWYgKCRmbGFncyA9fiAvcmVh ZGFibGUvKQoJCXsKCQkJaWYgKCRmbGFncyA9fiAvd3JpdGFibGUvKQoJCQl7CgkJCQl0aWUgJHNl bGYtPnskcHJvcC0+e25hbWV9fSwgCgkJCQkJJ0dsaWI6Ok9iamVjdDo6UHJvcGVydHk6OlJlYWRX cml0ZScsCgkJCQkJJHNlbGYsICRwcm9wLT57bmFtZX07CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQl0 aWUgJHNlbGYtPnskcHJvcC0+e25hbWV9fSwgCgkJCQkJJ0dsaWI6Ok9iamVjdDo6UHJvcGVydHk6 OlJlYWRhYmxlJywKCQkJCQkkc2VsZiwgJHByb3AtPntuYW1lfTsKCQkJfQoJCX0KCQllbHNpZiAo JGZsYWdzID1+IC93cml0ZWFibGUvKQoJCXsKCQkJdGllICRzZWxmLT57JHByb3AtPntuYW1lfX0s IAoJCQkJJ0dsaWI6Ok9iamVjdDo6UHJvcGVydHk6OldyaXRhYmxlJywKCQkJCSRzZWxmLCAkcHJv cC0+e25hbWV9OwoJCX0KCQkjIGlmIGl0J3Mgbm90IHJlYWRhYmxlIGFuZCBub3Qgd3JpdGFibGUg d2hhdCBpcyBpdAoJfQp9CgpwYWNrYWdlIG1haW47CgoKCgoKdXNlIHN0cmljdDsKdXNlIHdhcm5p bmdzOwp1c2UgRGF0YTo6RHVtcGVyOwp1c2UgR3RrMiAnLWluaXQnOwoKbXkgJHdpbiA9IEd0azI6 OldpbmRvdy0+bmV3IDsKJHdpbi0+c2V0X3RpdGxlICgnVGllZCBUZXN0Jyk7CiR3aW4tPnNldF9k ZWZhdWx0X3NpemUgKDMwMCwgMTI1KTsKJHdpbi0+c2lnbmFsX2Nvbm5lY3QgKGRlc3Ryb3kgPT4g c3ViIHsgR3RrMi0+bWFpbl9xdWl0OyB9KTsKbXkgJGJ1dHRvbiA9IEd0azI6OkJ1dHRvbi0+bmV3 ICgnSGVsbG8gV29ybGQhJyk7CiR3aW4tPmFkZCAoJGJ1dHRvbik7CgokYnV0dG9uLT50aWVfcHJv cGVydGllczsKJGJ1dHRvbi0+dGllX3Byb3BlcnRpZXMoMSk7CgpwcmludCAkYnV0dG9uLT57bGFi ZWx9LiJcbiI7CiRidXR0b24tPnNldF9wcm9wZXJ0eSAoJ2xhYmVsJywgNDIpOwpwcmludCAkYnV0 dG9uLT57bGFiZWx9LiJcbiI7CiRidXR0b24tPntsYWJlbH0gPSA0NDsKcHJpbnQgJGJ1dHRvbi0+ e2xhYmVsfS4iXG4iOwoKcHJpbnQgRHVtcGVyKCAkYnV0dG9uICk7CmRlbGV0ZSAkYnV0dG9uLT57 bGFiZWx9OwpwcmludCBEdW1wZXIoICRidXR0b24gKTsKJGJ1dHRvbi0+e2xhYmVsfSA9ICd0aGlz IHdvblwndCBzaG93JzsKCiR3aW4tPnNob3dfYWxsOwpHdGsyLT5tYWluOwo= ------=_20031029145452_54999-- From bassi-e@libero.it Wed Oct 29 17:13:14 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp2.libero.it (smtp2.libero.it [193.70.192.52]) by mail.gnome.org (Postfix) with ESMTP id 3B4E3184AB for ; Wed, 29 Oct 2003 17:13:14 -0500 (EST) Received: from wolverine.lohacker.net (151.29.203.219) by smtp2.libero.it (7.0.020-DD01) id 3F6F0DA900C8FB48 for gtk-perl-list@gnome.org; Wed, 29 Oct 2003 23:14:10 +0100 Received: by wolverine.lohacker.net (Postfix, from userid 1001) id AD8FD13EC9; Wed, 29 Oct 2003 23:14:41 +0100 (CET) Date: Wed, 29 Oct 2003 23:14:41 +0100 From: Emmanuele Bassi To: gtk-perl-list@gnome.org Subject: Re: Properties as hash keys, damn perl is cool! Message-ID: <20031029221441.GB5799@wolverine.lohacker.net> Mail-Followup-To: gtk-perl-list@gnome.org References: <33955.192.146.101.12.1067457292.spork@webmail.neces.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <33955.192.146.101.12.1067457292.spork@webmail.neces.com> X-Mailer: Mutt 1.5.4i (2003-03-19) X-OperatingSystem: Linux 2.6.0-test6-mm3 i686 X-message-flag: Usa un vero mailreader! http://www.mutt.org User-Agent: Mutt/1.5.4i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: * Ross McFarland : > accessing GObject properties as keys in the object hash sould cool to you, > $button->{label} = 'This is the text on the button', then read on. First of all, this is very cool and neat stuff, and I've been thinking just a week ago how cool and neat would have been if Perl had this feature that other bindings (see Gtk#) do have right now. Apparently, you've been reading my mind. :-) I've even thought about implementing something myself, but I'm not a Perl hacker half as good as you or muppet are. ;-) The pros of this feature are, obviously, a more clean and object-oriented approach to GObjects' properties. That was the over-enthusiastic part. Now, I'll have to state the cons that I came up with when I was thinking about exposing properties as keys of the object's hashref: first of all, and major annoyance, this feature could end up breaking existing code (that is also the reason why, in PyGTK, this exposure of properties wasn't done). The other major issue regards memory use: a button has a few properties, but a thing like a CellRendererText has some 30+ properties, some of them bound to other objects and not to simple scalar values; exposing all of those properties could result in a memory hog in, for instance, a cell-data function (where, according to my personal experience, you'll end up modifing most of the cell rendererer's properties). +++ In the end, I strongly suggest of keeping this feature to be explicitely called by the programmer, or to implement a pragmatic module that does this on developer's behalf, and not trying to be "smart", and doing this "under the hood" of gtk2-perl. Regards, Emmanuele. -- Emmanuele Bassi (Zefram) [ http://digilander.libero.it/ebassi/blog ] GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738 08BD 8ECC DB8F A432 0FF4 From rwmcfa1@neces.com Wed Oct 29 17:55:28 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smaug.dreamhost.com (smaug.dreamhost.com [66.33.209.15]) by mail.gnome.org (Postfix) with ESMTP id A9357184E4 for ; Wed, 29 Oct 2003 17:55:28 -0500 (EST) Received: from beta.local (12-222-230-66.client.insightBB.com [12.222.230.66]) by smaug.dreamhost.com (Postfix) with ESMTP id 6DCCE5B78B for ; Wed, 29 Oct 2003 14:55:46 -0800 (PST) Subject: Re: Properties as hash keys, damn perl is cool! From: Ross McFarland To: Gtk-Perl-List In-Reply-To: <20031029221441.GB5799@wolverine.lohacker.net> References: <33955.192.146.101.12.1067457292.spork@webmail.neces.com> <20031029221441.GB5799@wolverine.lohacker.net> Content-Type: text/plain Message-Id: <1067468145.17076.25.camel@beta.local> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Wed, 29 Oct 2003 17:55:45 -0500 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Wed, 2003-10-29 at 17:14, Emmanuele Bassi wrote: > I've even thought about implementing something myself, but I'm not > a Perl hacker half as good as you or muppet are. ;-) don't know about that, but thanks. > That was the over-enthusiastic part. Now, I'll have to state the cons > that I came up with when I was thinking about exposing properties as > keys of the object's hashref: first of all, and major annoyance, this > feature could end up breaking existing code (that is also the reason > why, in PyGTK, this exposure of properties wasn't done). The other > major issue regards memory use: a button has a few properties, but a > thing like a CellRendererText has some 30+ properties, some of them bound > to other objects and not to simple scalar values; exposing all of those > properties could result in a memory hog in, for instance, a cell-data > function (where, according to my personal experience, you'll end up > modifing most of the cell rendererer's properties). exactly why it is not 'on' by default. there are several scenarios in my mind now, but as far as i'm concerned none of them involved being on by default. as it stands now, the code sent out a while ago, there is no overhead, memory usage and/or processing time, unless you call $object->tie_properties. (obviously there's the code to implement the stuff that will take up a couple of k, but that's insignificant and would never be executed unless you tie_properties) the other possibility is there being some setting that would cause the new method of Glib::Object to tie_properties if turned on (off by default again for same reasons.) so for new code written you could do something like. (this is totally brainstorming, so i haven't thought it through) use Gtk2 '-init'; Glib::Objects->tied_objects = TRUE; there's obvious overhead involved here, but it's an opt in so you it's your own fault if you ask for it. point by point: * break existing code - no, off by default, you turn it on you deal with what it breaks. * memory usage - not really issue, none used unless you ask for it, if you ask for it then it's assumed that you know it's going to take up some memory and you want it to. -rm > +++ > > In the end, I strongly suggest of keeping this feature to be explicitely > called by the programmer, or to implement a pragmatic module that does > this on developer's behalf, and not trying to be "smart", and doing this > "under the hood" of gtk2-perl. that was muppet's thoughts, separate module, but after we saw how little code it was it just makes sense for it to be in Glib by default, but as you suggest and we think, off by default. (with lots of documentation showing you how to use it) -rm From pagaltzis@gmx.de Wed Oct 29 21:27:44 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.gmx.net (pop.gmx.net [213.165.64.20]) by mail.gnome.org (Postfix) with SMTP id 23637181E7 for ; Wed, 29 Oct 2003 21:27:44 -0500 (EST) Received: (qmail 28199 invoked by uid 65534); 30 Oct 2003 02:28:01 -0000 Received: from xdsl-213-168-119-174.netcologne.de (EHLO klangraum) (213.168.119.174) by mail.gmx.net (mp015) with SMTP; 30 Oct 2003 03:28:01 +0100 X-Authenticated: #163624 Received: (qmail 5629 invoked by uid 1000); 30 Oct 2003 02:27:29 -0000 Date: Thu, 30 Oct 2003 03:27:29 +0100 From: "A. Pagaltzis" To: gtk-perl-list@gnome.org Subject: Re: Properties as hash keys, damn perl is cool! Message-ID: <20031030022729.GA5577@klangraum> Mail-Followup-To: gtk-perl-list@gnome.org References: <33955.192.146.101.12.1067457292.spork@webmail.neces.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <33955.192.146.101.12.1067457292.spork@webmail.neces.com> User-Agent: Mutt/1.4.1i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: * Ross McFarland [2003-10-29 20:57]: > accessing GObject properties as keys in the object hash sould > cool to you, $button->{label} = 'This is the text on the > button', then read on. Not really. Typos won't be caught (not even at runtime), and it's not subclassing friendly. Now if you want to AUTOLOAD for something like ->prop_label() ... -- Regards, Aristotle "If you can't laugh at yourself, you don't take life seriously enough." From rwmcfa1@neces.com Wed Oct 29 22:11:20 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from gollum.dreamhost.com (gollum.dreamhost.com [66.33.209.16]) by mail.gnome.org (Postfix) with ESMTP id 87311186B3 for ; Wed, 29 Oct 2003 22:11:20 -0500 (EST) Received: from beta.local (12-222-230-66.client.insightBB.com [12.222.230.66]) by gollum.dreamhost.com (Postfix) with ESMTP id 210915B8DE for ; Wed, 29 Oct 2003 19:11:38 -0800 (PST) Subject: Re: Properties as hash keys, damn perl is cool! From: Ross McFarland To: Gtk-Perl-List In-Reply-To: <20031030022729.GA5577@klangraum> References: <33955.192.146.101.12.1067457292.spork@webmail.neces.com> <20031030022729.GA5577@klangraum> Content-Type: text/plain Message-Id: <1067483497.17076.41.camel@beta.local> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Wed, 29 Oct 2003 22:11:37 -0500 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Wed, 2003-10-29 at 21:27, A. Pagaltzis wrote: > * Ross McFarland [2003-10-29 20:57]: > > accessing GObject properties as keys in the object hash sould > > cool to you, $button->{label} = 'This is the text on the > > button', then read on. > > Not really. Typos won't be caught (not even at runtime), and it's > not subclassing friendly. by design, i had no intentions of preventing the use of the object as a standard hash, only providing the properties in a more perl like fashion, hash keys. basically my response would be that if you want this type of checking/validation use the existing get/set methods this doesn't change them. as an added bonus if you want be able to dump the all properties, Data::Dumper, this will allow you to do so. point taken though, just wasn't my intention or desire. > Now if you want to AUTOLOAD for something like ->prop_label() ... not sure what exactly you're suggesting here. i can thing of things that could be done with AUTOLOAD, but they wouldn't have anything to do with the object properties being hash keys. having the properties be methods wouldn't seem very intuitive and in fact could cause name space clashes if/when/where properties and methods collide. that and i don't see the value in replacing $obj->set(foo => 'bar'); with something like $object->foo('bar'); that isn't more perlish, it's just a different and un-obvious way of doing something already available. only my opinions of course. -rm From gdsword@williamsword.co.uk Thu Oct 30 09:18:08 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.williamsword.co.uk (unknown [195.157.206.197]) by mail.gnome.org (Postfix) with ESMTP id 4D54A18CF6 for ; Thu, 30 Oct 2003 09:18:08 -0500 (EST) Received: from eigg.williamsword.co.uk (unknown [192.168.0.4]) by mail.williamsword.co.uk (Postfix) with ESMTP id F251413B6F6 for ; Thu, 30 Oct 2003 15:18:25 +0000 (GMT) Subject: progressbar From: David Sword To: gtk-perl list Content-Type: text/plain Organization: William Sword Ltd Message-Id: <1067525640.11694.9.camel@eigg.williamsword.co.uk> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.2.2 (1.2.2-5) Date: 30 Oct 2003 14:54:00 +0000 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Hi I have added a progressbar to my window, and I am calling set_fraction within a subroutine which processes a bunch of report items. The progressbar does not update until the subroutine exits. I am sure there is something basic I don't understand - could somebody enlighten me please? The progressbar is created in the main part of the program : my $pbar = new Gtk2::ProgessBar in the subroutine I call foreach $value (@indices){ $counter++; $percent = $counter/$number_items; print "counter is $counter $percent\n"; $pbar->set_fraction( $percent ); $pct = $percent*100; $pbar->set_text( "($pct% complete" ); ...... The values are all correct, but no update!! Thanks -- Regards David Sword From kaffeetisch@web.de Thu Oct 30 09:56:36 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smtp.web.de (smtp01.web.de [217.72.192.180]) by mail.gnome.org (Postfix) with ESMTP id 1F8571871E for ; Thu, 30 Oct 2003 09:56:36 -0500 (EST) Received: from [217.224.247.139] (helo=6-allhosts) by smtp.web.de with esmtp (WEB.DE 4.99 #516) id 1AFEEH-0000sK-00 for gtk-perl-list@gnome.org; Thu, 30 Oct 2003 15:56:53 +0100 Subject: Re: progressbar From: Torsten Schoenfeld To: gtk-perl list In-Reply-To: <1067525640.11694.9.camel@eigg.williamsword.co.uk> References: <1067525640.11694.9.camel@eigg.williamsword.co.uk> Content-Type: text/plain Message-Id: <1067525379.6594.3.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Thu, 30 Oct 2003 15:55:55 +0100 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Thu, 2003-10-30 at 15:54, David Sword wrote: > I have added a progressbar to my window, and I am calling set_fraction > within a subroutine which processes a bunch of report items. The > progressbar does not update until the subroutine exits. I am sure there > is something basic I don't understand - could somebody enlighten me > please? You're routine is blocking GTK's main loop - thus it has no chance to do the necessary drawings. Use Gtk2 -> main_iteration() while (Gtk2 -> events_pending()); at the end of your loop, after the set_fraction and set_text calls, to circumvent that problem. HTH, -Torsten From gdsword@williamsword.co.uk Thu Oct 30 10:36:40 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.williamsword.co.uk (unknown [195.157.206.197]) by mail.gnome.org (Postfix) with ESMTP id 2609E18251 for ; Thu, 30 Oct 2003 10:36:40 -0500 (EST) Received: from eigg.williamsword.co.uk (unknown [192.168.0.4]) by mail.williamsword.co.uk (Postfix) with ESMTP id 992F513B6F5; Thu, 30 Oct 2003 16:36:59 +0000 (GMT) Subject: Re: progressbar From: David Sword To: Torsten Schoenfeld Cc: gtk-perl list In-Reply-To: <1067525379.6594.3.camel@localhost> References: <1067525640.11694.9.camel@eigg.williamsword.co.uk> <1067525379.6594.3.camel@localhost> Content-Type: text/plain Organization: William Sword Ltd Message-Id: <1067530352.11694.14.camel@eigg.williamsword.co.uk> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.2.2 (1.2.2-5) Date: 30 Oct 2003 16:12:33 +0000 Content-Transfer-Encoding: 7bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Thu, 2003-10-30 at 14:55, Torsten Schoenfeld wrote: > On Thu, 2003-10-30 at 15:54, David Sword wrote: > > > I have added a progressbar to my window, and I am calling set_fraction > > within a subroutine which processes a bunch of report items. The > > progressbar does not update until the subroutine exits. I am sure there > > is something basic I don't understand - could somebody enlighten me > > please? > > You're routine is blocking GTK's main loop - thus it has no chance to do > the necessary drawings. Use > > Gtk2 -> main_iteration() while (Gtk2 -> events_pending()); > > at the end of your loop, after the set_fraction and set_text calls, to > circumvent that problem. Marvellous! Thanks -- Regards David Sword From pagaltzis@gmx.de Thu Oct 30 22:11:45 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.gmx.net (mail.gmx.de [213.165.64.20]) by mail.gnome.org (Postfix) with SMTP id 3FEB018266 for ; Thu, 30 Oct 2003 22:11:44 -0500 (EST) Received: (qmail 24773 invoked by uid 65534); 31 Oct 2003 03:12:02 -0000 Received: from xdsl-213-196-240-14.netcologne.de (EHLO klangraum) (213.196.240.14) by mail.gmx.net (mp005) with SMTP; 31 Oct 2003 04:12:02 +0100 X-Authenticated: #163624 Received: (qmail 17964 invoked by uid 1000); 31 Oct 2003 03:11:21 -0000 Date: Fri, 31 Oct 2003 04:11:21 +0100 From: "A. Pagaltzis" To: Gtk-Perl-List Subject: Re: Properties as hash keys, damn perl is cool! Message-ID: <20031031031121.GA17948@klangraum> Mail-Followup-To: Gtk-Perl-List References: <33955.192.146.101.12.1067457292.spork@webmail.neces.com> <20031030022729.GA5577@klangraum> <1067483497.17076.41.camel@beta.local> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1067483497.17076.41.camel@beta.local> User-Agent: Mutt/1.4.1i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: * Ross McFarland [2003-10-30 04:13]: > that and i don't see the value in replacing $obj->set(foo => > 'bar'); with something like $object->foo('bar'); that isn't > more perlish, it's just a different and un-obvious way of doing > something already available. I would disagree it's not more Perlish. Combined setter/getters that set the value of a property if given parameters and return it if not are quite Perlish; for the final touch, they should return $self as a setter. Then you can do stuff like $obj ->foo(1) ->bar('baz') ->quux(answer => 42); Lots of modules employ this style, too. You're right that we have a potential for future collisions here though. -- Regards, Aristotle "If you can't laugh at yourself, you don't take life seriously enough." From jens@wilke.org Thu Oct 30 22:30:11 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from server03.ebyserver.de (unknown [62.67.214.154]) by mail.gnome.org (Postfix) with ESMTP id 45236186E6 for ; Thu, 30 Oct 2003 22:30:11 -0500 (EST) Received: from clarissen.home (pD950937C.dip0.t-ipconnect.de [217.80.147.124]) by server03.ebyserver.de (Postfix on SuSE Linux 7.3 (i386)) with ESMTP id 3931726D6D for ; Fri, 31 Oct 2003 04:22:23 +0100 (CET) Received: from localhost ([127.0.0.1] ident=jens) by clarissen.home with esmtp (Exim 3.36 #1 (Debian)) id 1AFQ1D-0003zf-00 for ; Fri, 31 Oct 2003 04:32:11 +0100 From: Jens Wilke To: gtk-perl-list@gnome.org Subject: local variable and event handler problem Date: Fri, 31 Oct 2003 04:32:10 +0100 User-Agent: KMail/1.5 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200310310432.10635.jens@wilke.org> Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Hello, i've got a problem with a button connected signal. local defined variables aren't available in the event called subroutine. Calling it directly works fine, but clicking the button results in an "Use of uninitialized value in concatenation" error. ($image and $file are uninitialized) How can i make the locally defined variables available for the event handler? Rgds, Jens local $image = Gtk2::Image->new(); local $file; my $bbutton = Gtk2::Button->new_from_stock ('gtk-go-forward'); $bbutton->signal_connect (clicked => \&loadimage, 1); # doesn't work &loadimage(0); # this works fine sub loadimage { ... $image->set_from_file($file); } From pagaltzis@gmx.de Thu Oct 30 22:38:44 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.gmx.net (mail.gmx.de [213.165.64.20]) by mail.gnome.org (Postfix) with SMTP id B8FAB18443 for ; Thu, 30 Oct 2003 22:38:43 -0500 (EST) Received: (qmail 20777 invoked by uid 65534); 31 Oct 2003 03:39:01 -0000 Received: from xdsl-213-196-240-14.netcologne.de (EHLO klangraum) (213.196.240.14) by mail.gmx.net (mp010) with SMTP; 31 Oct 2003 04:39:01 +0100 X-Authenticated: #163624 Received: (qmail 18108 invoked by uid 1000); 31 Oct 2003 03:38:10 -0000 Date: Fri, 31 Oct 2003 04:38:10 +0100 From: "A. Pagaltzis" To: gtk-perl-list@gnome.org Subject: Re: local variable and event handler problem Message-ID: <20031031033810.GB18009@klangraum> Mail-Followup-To: gtk-perl-list@gnome.org References: <200310310432.10635.jens@wilke.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200310310432.10635.jens@wilke.org> User-Agent: Mutt/1.4.1i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: * Jens Wilke [2003-10-31 04:33]: > How can i make the locally defined variables available for the > event handler? Repeat after me: I want to use "my", not "local". Then, please read http://perl.plover.com/FAQs/Namespaces.html local doesn't do what you think it does. Also, you would be well advised to learn working under "use strict;"; that article will help. -- Regards, Aristotle "If you can't laugh at yourself, you don't take life seriously enough." From scott@asofyet.org Thu Oct 30 23:22:04 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from smaug.dreamhost.com (smaug.dreamhost.com [66.33.209.15]) by mail.gnome.org (Postfix) with ESMTP id 3474318250 for ; Thu, 30 Oct 2003 23:22:04 -0500 (EST) Received: from asofyet.org (adsl-1116.mis.net [12.162.183.102]) by smaug.dreamhost.com (Postfix) with ESMTP id 0BE6C5B816 for ; Thu, 30 Oct 2003 20:22:21 -0800 (PST) Date: Thu, 30 Oct 2003 23:22:39 -0500 Subject: Re: Properties as hash keys, damn perl is cool! Content-Type: text/plain; charset=US-ASCII; format=flowed Mime-Version: 1.0 (Apple Message framework v552) From: muppet To: Gtk-Perl-List Content-Transfer-Encoding: 7bit In-Reply-To: <20031031031121.GA17948@klangraum> Message-Id: X-Mailer: Apple Mail (2.552) Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: On Thursday, October 30, 2003, at 10:11 PM, A. Pagaltzis wrote: > * Ross McFarland [2003-10-30 04:13]: >> that and i don't see the value in replacing $obj->set(foo => >> 'bar'); with something like $object->foo('bar'); that isn't >> more perlish, it's just a different and un-obvious way of doing >> something already available. > > I would disagree it's not more Perlish. Combined setter/getters > that set the value of a property if given parameters and return > it if not are quite Perlish; this could be done rather simply with an AUTOLOAD, i believe, and would eliminate the need for about 50% to 70% of the functions in the bindings (gtk has a get_foo/set_foo pair for just about every property). that said, i don't think it's a great idea, because it's a fundamental deviation from the API. but you could do it like this: use Glib; package Glib::Object; sub AUTOLOAD { my $object = shift; my $method = $AUTOLOAD; $method =~ s/^.*:://; print "method : $method\n"; $method =~ y/-/_/; my @properties = $object->list_properties; foreach my $p (@properties) { $p->{name} =~ y/-/_/; if ($p->{name} eq $method) { warn "auto-creating $p->{owner_type}::$p->{name}"; eval "sub $p->{owner_type}::$p->{name} { my \$ret = \$_[0]->get ('$p->{name}'); \$_[0]->set ('$p->{name}', \$_[1]) if \@_ > 1; return \$ret; }; 1;"; no strict 'refs'; return $object->$method (@_); } } use Carp; croak "$method is not a property or valid method"; } package Mup::Foo; use Glib::Object::Subclass Glib::Object::, properties => [ Glib::ParamSpec->boolean ('foo-bar', 'Foo Bar', 'It\'s fubarred', 1, [qw/readable writable/]), Glib::ParamSpec->string ('whammy_bar', 'Whammy Bar', 'A wiggle stick', 'whee', [qw/readable writable/]), ] ; sub INIT_INSTANCE { $_[0]->{'foo_bar'} = 1; $_[0]->{'whammy_bar'} = 'mama'; } package Mup::Bar; use Glib::Object::Subclass Mup::Foo::, properties => [ Glib::ParamSpec->int ('wiz', 'Wiz Wiz', 'wiz wiz wiz', 0, 10, 3, [qw/readable writable/]), ] ; sub INIT_INSTANCE { $_[0]->{'wiz'} = 42; } package main; use Data::Dumper; my $mupfoo = Mup::Foo->new (foo_bar => 0); my $mupbar = Mup::Bar->new; print Dumper($mupfoo); print Dumper($mupbar); print "foo-bar is ".$mupfoo->foo_bar."\n"; print "set :".$mupfoo->foo_bar(1)."\n"; print "foo-bar is ".$mupfoo->foo_bar."\n"; print "whammy_bar is ".$mupfoo->whammy_bar."\n"; $mupfoo->whammy_bar ('wwwwwizzzzzaaaaaah!'); print "whammy_bar is ".$mupfoo->whammy_bar."\n"; print "foo-bar is ".$mupbar->foo_bar."\n"; print "set :".$mupbar->foo_bar(1)."\n"; print "foo-bar is ".$mupbar->foo_bar."\n"; print "whammy_bar is ".$mupbar->whammy_bar."\n"; print "wiz is ".$mupbar->wiz."\n"; $mupbar->wiz (4); print "wiz is ".$mupbar->wiz."\n"; i'd just like to point out that not only did i make a reference to the reverend horton heat in that example, it's also the first time i've ever actually used perl's transliteration operator. but, for the record, i find that sort of AUTOLOAD to be rather obnoxious in that it makes the error messages you get when you misspell a method name be non-standard, possibly non-sensical. > for the final touch, they should > return $self as a setter. Then you can do stuff like > > $obj > ->foo(1) > ->bar('baz') > ->quux(answer => 42); oh my --- the potential for a flame war just increased a thousand-fold. i have always despised this VB-esq way of doing things. i much prefer setters that return the replaced value, so you can restore it later. $oldfoo = $obj->foo ($newfoo); ... $obj->foo ($oldfoo); > Lots of modules employ this style, too. hey, everybody can't be right all the time. /me ducks > You're right that we have a potential for future collisions here > though. had we had something like properties as hash keys for the initial release, i don't think it would really be an issue. the problem now is that we'd break existing code. whether that's really a problem is up for discussion, but i'd like not to break people's code, so it's not on by default. -- "that's it! you're a genius!" "yes. that's what i think. do you think i deserve a raise?" - dialogue from 'Godzilla versus Mothra', 1964 From pagaltzis@gmx.de Fri Oct 31 00:00:45 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.gmx.net (mail.gmx.de [213.165.64.20]) by mail.gnome.org (Postfix) with SMTP id 7D4E9181F0 for ; Fri, 31 Oct 2003 00:00:44 -0500 (EST) Received: (qmail 26183 invoked by uid 65534); 31 Oct 2003 05:01:02 -0000 Received: from xdsl-213-196-240-14.netcologne.de (EHLO klangraum) (213.196.240.14) by mail.gmx.net (mp009) with SMTP; 31 Oct 2003 06:01:02 +0100 X-Authenticated: #163624 Received: (qmail 18493 invoked by uid 1000); 31 Oct 2003 05:00:20 -0000 Date: Fri, 31 Oct 2003 06:00:20 +0100 From: "A. Pagaltzis" To: Gtk-Perl-List Subject: Re: Properties as hash keys, damn perl is cool! Message-ID: <20031031050020.GA18468@klangraum> Mail-Followup-To: Gtk-Perl-List References: <20031031031121.GA17948@klangraum> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.1i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: * muppet [2003-10-31 05:25]: > that said, i don't think it's a great idea, because it's a > fundamental deviation from the API. > > but, for the record, i find that sort of AUTOLOAD to be rather > obnoxious in that it makes the error messages you get when you > misspell a method name be non-standard, possibly non-sensical. > > i have always despised this VB-esq way of doing things. i much > prefer setters that return the replaced value, so you can > restore it later. Don't confuse my arguing in favour of this style with arguing in favour of this style. :-) I was actually arguing against the hash key approach; *if* you want simpler access, then IMHO you should go via setter/getter methods. Using the object hashref is naughty and dirty and not something I'd like to see promoted. Personally, I don't see what's wrong with taking the regular API route. -- Regards, Aristotle "If you can't laugh at yourself, you don't take life seriously enough." From scott@asofyet.org Fri Oct 31 09:44:27 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from pochacco.sd.dreamhost.com (pochacco.sd.dreamhost.com [66.33.206.17]) by mail.gnome.org (Postfix) with ESMTP id B1D6C18B9E for ; Fri, 31 Oct 2003 09:44:27 -0500 (EST) Received: from webmail.asofyet.org (localhost [127.0.0.1]) by pochacco.sd.dreamhost.com (Postfix) with SMTP id 175508FE90 for ; Fri, 31 Oct 2003 06:44:31 -0800 (PST) Received: from 192.146.101.7 (SquirrelMail authenticated user scott@asofyet.org) by webmail.asofyet.org with HTTP; Fri, 31 Oct 2003 09:44:31 -0500 (EST) Message-ID: <13740.192.146.101.7.1067611471.spork@webmail.asofyet.org> In-Reply-To: <200310310432.10635.jens@wilke.org> References: <200310310432.10635.jens@wilke.org> Date: Fri, 31 Oct 2003 09:44:31 -0500 (EST) Subject: Re: local variable and event handler problem From: "muppet" To: gtk-perl-list@gnome.org User-Agent: DreamHost Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Jens Wilke said: > i've got a problem with a button connected signal. > local defined variables aren't available in the event called subroutine. > Calling it directly works fine, but clicking the button results in an "Use of > uninitialized value in concatenation" error. ($image and $file are > uninitialized) > How can i make the locally defined variables available for the event handler? > > Rgds, Jens > > local $image = Gtk2::Image->new(); > local $file; > my $bbutton = Gtk2::Button->new_from_stock ('gtk-go-forward'); > $bbutton->signal_connect (clicked => \&loadimage, 1); # doesn't work > &loadimage(0); # this works fine > > sub loadimage { > ... > $image->set_from_file($file); > } by using 'local', $image and $file have their local values only for the duration of the block in which you connect the signal. thus, they are no longer set when the attached sub actually runs. 'local $image' actually gives a temporary value to a global variable, which is not what you're wanting to do. you need to use my instead of local, and either use a closure or pass the vars to the callback. my ($image, $file); ... $object->signal_connect (name => sub { # $image and $file are available # here, trapped in the closure's scope }); $object->signal_connect (name => \&callback, [ $image, $file ]); sub callback { my ($instance, ..., $user_data) = @_; my ($image, $file) = @$user_data; } -- muppet From mblaesing@gmx.de Fri Oct 31 11:07:11 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from mail.gmx.net (mail.gmx.de [213.165.64.20]) by mail.gnome.org (Postfix) with SMTP id 6D5B518B9E for ; Fri, 31 Oct 2003 11:07:11 -0500 (EST) Received: (qmail 25902 invoked by uid 65534); 31 Oct 2003 16:07:29 -0000 Received: from p508F2F60.dip.t-dialin.net (EHLO defiant) (80.143.47.96) by mail.gmx.net (mp001) with SMTP; 31 Oct 2003 17:07:29 +0100 X-Authenticated: #2262083 Received: from mblaesing by defiant with local (Exim 3.36 #1 (Debian)) id 1AFblS-0000te-00 for ; Fri, 31 Oct 2003 17:04:42 +0100 Date: Fri, 31 Oct 2003 17:04:42 +0100 From: Matthias =?iso-8859-1?Q?Bl=E4sing?= To: gtk-perl-list@gnome.org Subject: gstreamer bindings Message-ID: <20031031160442.GA3424@linuxfun.dyndns.org> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit User-Agent: Mutt/1.5.4i Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: Hello everyone, does anyone know whether there are gstreamer bindings for perl available? Matthias -- Matthias Bläsing jabber: linuxfun@amessage.de aim: linuxfun81 icq: 84617206 e-mail: mblaesing@gmx.de msn: linuxfun From jam@mcquil.com Fri Oct 31 18:55:35 2003 Return-Path: Delivered-To: gtk-perl-list@gnome.org Received: from rwcrmhc12.comcast.net (rwcrmhc12.comcast.net [216.148.227.85]) by mail.gnome.org (Postfix) with ESMTP id 1D1E0189A6 for ; Fri, 31 Oct 2003 18:55:35 -0500 (EST) Received: from bigdog.mcquil.com ([68.60.39.11]) by comcast.net (rwcrmhc12) with ESMTP id <2003103123555301400cf5bje>; Fri, 31 Oct 2003 23:55:53 +0000 Received: from BigDog.mcquil.com (IDENT:7YvaJ89Oeg3tBxJQ7X5k0XsOEARBNFqS@BigDog.mcquil.com [192.168.254.254]) by BigDog.mcquil.com (8.11.6/8.11.6) with ESMTP id h9VNtqb10201 for ; Fri, 31 Oct 2003 18:55:52 -0500 Date: Fri, 31 Oct 2003 18:55:52 -0500 (EST) From: jam@McQuil.Com To: gtk-perl-list@gnome.org Subject: Is gtk-perl still actively developed ? Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: gtk-perl-list-admin@gnome.org Errors-To: gtk-perl-list-admin@gnome.org X-BeenThere: gtk-perl-list@gnome.org X-Loop: gtk-perl-list@gnome.org X-Mailman-Version: 2.0.12 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Using GTK+ with Perl List-Unsubscribe: , List-Archive: I'm looking for a GUI toolkit that I can use from Perl. gtk-perl seems like a good choice. I've also looked at perl/tk. Is gtk-perl still being actively maintained ? The latest download package i've seen is 2 years old. Thanks, Jim McQuillan jam@Ltsp.org