From gtk-list-request@redhat.com
Status: U
Return-Path: <gtk-list-request@redhat.com>
Received: from cornell.edu (cornell.edu [132.236.56.6])
	by postoffice.mail.cornell.edu (8.8.5/8.8.5) with ESMTP id QAA00683
	for <owt1@postoffice.mail.cornell.edu>; Thu, 1 May 1997 16:06:33 -0400 (EDT)
Received: (from daemon@localhost)
	by cornell.edu (8.8.5/8.8.5) id QAA28052
	for owt1@postoffice.mail.cornell.edu; Thu, 1 May 1997 16:06:32 -0400 (EDT)
Received: from mail2.redhat.com (mail2.redhat.com [199.183.24.247])
	by cornell.edu (8.8.5/8.8.5) with SMTP id QAA28027
	for <owt1@cornell.edu>; Thu, 1 May 1997 16:06:30 -0400 (EDT)
Received: (qmail 19395 invoked by uid 501); 1 May 1997 20:06:58 -0000
Resent-Date: 1 May 1997 20:06:58 -0000
Resent-Cc: recipient list not shown: ;
MBOX-Line: From gtk-list-request@redhat.com  Thu May  1 16:06:58 1997
Message-ID: <19970501160625.54339@redhat.com>
Date: Thu, 1 May 1997 16:06:25 -0400
X-PH: V4.1@cornell.edu (Cornell Modified) 
From: Otto Hammersmith <otto@redhat.com>
To: gtk-list@redhat.com
Subject: anyone here yet?
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-Mailer: Mutt 0.69
Resent-Message-ID: <"Skbwt3.0.xk4.YVFQp"@mail2.redhat.com>
Resent-From: gtk-list@redhat.com
Reply-To: gtk-list@redhat.com
X-Mailing-List: <gtk-list@redhat.com> archive/latest/3
X-Loop: gtk-list@redhat.com
Precedence: list
Resent-Sender: gtk-list-request@redhat.com
X-URL: http://www.redhat.com

Hello all,

Just wondering if there's anyone listening, yet. :)

If there are people out there, what is everyone doing with GTK?  I've
seen some interesting projects, but want to get a handle on what
people are trying to do... don't want to duplicate any effort, now do
we?:)

-- 
					-Otto.

From gtk-list-request@redhat.com
Status: U
Return-Path: <gtk-list-request@redhat.com>
Received: from cornell.edu (cornell.edu [132.236.56.6])
	by postoffice.mail.cornell.edu (8.8.5/8.8.5) with ESMTP id QAA21782
	for <owt1@postoffice.mail.cornell.edu>; Thu, 1 May 1997 16:58:54 -0400 (EDT)
Received: (from daemon@localhost)
	by cornell.edu (8.8.5/8.8.5) id QAA17941
	for owt1@postoffice.mail.cornell.edu; Thu, 1 May 1997 16:58:53 -0400 (EDT)
Received: from mail2.redhat.com (mail2.redhat.com [199.183.24.247])
	by cornell.edu (8.8.5/8.8.5) with SMTP id QAA17899
	for <owt1@cornell.edu>; Thu, 1 May 1997 16:58:50 -0400 (EDT)
Received: (qmail 8258 invoked by uid 501); 1 May 1997 20:56:35 -0000
Resent-Date: 1 May 1997 20:56:35 -0000
Resent-Cc: recipient list not shown: ;
MBOX-Line: From gtk-list-request@redhat.com  Thu May  1 16:56:35 1997
X-PH: V4.1@cornell.edu (Cornell Modified) 
From: Shawn T Amundson <amundson@cs.umn.edu>
Message-Id: <199705012055.PAA11068@augustus-239.cs.umn.edu>
Subject: Re: anyone here yet?
To: gtk-list@redhat.com
Date: Thu, 1 May 1997 15:55:48 -0500 (CDT)
In-Reply-To: <19970501160625.54339@redhat.com> from "Otto Hammersmith" 
at May 1, 97 04:06:25 pm
X-Mailer: ELM [version 2.4 PL25 PGP3 *ALPHA*]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Resent-Message-ID: <"jpXJo3.0.l02.2EGQp"@mail2.redhat.com>
Resent-From: gtk-list@redhat.com
Reply-To: gtk-list@redhat.com
X-Mailing-List: <gtk-list@redhat.com> archive/latest/5
X-Loop: gtk-list@redhat.com
Precedence: list
Resent-Sender: gtk-list-request@redhat.com
X-URL: http://www.redhat.com

Words Of Otto Hammersmith:
>
>Hello all,
>
>Just wondering if there's anyone listening, yet. :)
>
>If there are people out there, what is everyone doing with GTK?  I've
>seen some interesting projects, but want to get a handle on what
>people are trying to do... don't want to duplicate any effort, now do
>we?:)
>

I'm working on a calendar widget.  I have v0.01 done and will put it
up for ftp soon.  It really sucks right now because it is too slow
and is seriously lacking in the features it requires.  But it is a
starting place. ;-)

I'd like to do some docs in the tutorial area based on things I am 
quickly learning as I go along.  

Is this list going to be archived?  It would be a *very* good thing.

--
Shawn T. Amundson		University of Minnesota
Systems Administration	 	Computer Science System Staff
amundson@cs.umn.edu	  	http://www.cs.umn.edu/~amundson/     	

I'm fairly convinced that when God drinks beer, he drinks Guinness.

--
To unsubscribe: mail -s unsubscribe gtk-list-request@redhat.com < /dev/null

From gtk-list-request@redhat.com
Status: U
Return-Path: <gtk-list-request@redhat.com>
Received: from cornell.edu (cornell.edu [132.236.56.6])
	by postoffice.mail.cornell.edu (8.8.5/8.8.5) with ESMTP id RAA24358
	for <owt1@postoffice.mail.cornell.edu>; Thu, 1 May 1997 17:01:56 -0400 (EDT)
Received: (from daemon@localhost)
	by cornell.edu (8.8.5/8.8.5) id RAA20597
	for owt1@postoffice.mail.cornell.edu; Thu, 1 May 1997 17:01:55 -0400 (EDT)
Received: from mail2.redhat.com (mail2.redhat.com [199.183.24.247])
	by cornell.edu (8.8.5/8.8.5) with SMTP id RAA20564
	for <owt1@cornell.edu>; Thu, 1 May 1997 17:01:53 -0400 (EDT)
Received: (qmail 15824 invoked by uid 501); 1 May 1997 21:02:22 -0000
Resent-Date: 1 May 1997 21:02:21 -0000
Resent-Cc: recipient list not shown: ;
MBOX-Line: From gtk-list-request@redhat.com  Thu May  1 17:02:21 1997
Message-ID: <19970501170146.29220@redhat.com>
Date: Thu, 1 May 1997 17:01:46 -0400
X-PH: V4.1@cornell.edu (Cornell Modified) 
From: Otto Hammersmith <otto@redhat.com>
To: gtk-list@redhat.com
Subject: Re: anyone here yet?
References: <19970501160625.54339@redhat.com> 
<199705012055.PAA11068@augustus-239.cs.umn.edu>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-Mailer: Mutt 0.69
In-Reply-To: <199705012055.PAA11068@augustus-239.cs.umn.edu>; 
from Shawn T Amundson on Thu, May 01, 1997 at 03:55:48PM -0500
Resent-Message-ID: <"Gt4zA1.0.8t3.TJGQp"@mail2.redhat.com>
Resent-From: gtk-list@redhat.com
Reply-To: gtk-list@redhat.com
X-Mailing-List: <gtk-list@redhat.com> archive/latest/6
X-Loop: gtk-list@redhat.com
Precedence: list
Resent-Sender: gtk-list-request@redhat.com
X-URL: http://www.redhat.com

On Thu, May 01, 1997 at 03:55:48PM -0500, Shawn T Amundson wrote:
> Words Of Otto Hammersmith:
> >
> >Hello all,
> >
> >Just wondering if there's anyone listening, yet. :)
> >
> >If there are people out there, what is everyone doing with GTK?  I've
> >seen some interesting projects, but want to get a handle on what
> >people are trying to do... don't want to duplicate any effort, now do
> >we? :)
> >
> 
> I'm working on a calendar widget.  I have v0.01 done and will put it
> up for ftp soon.  It really sucks right now because it is too slow
> and is seriously lacking in the features it requires.  But it is a
> starting place. ;-)

:) Sounds pretty much like my perdiciment right now.
 
> I'd like to do some docs in the tutorial area based on things I am 
> quickly learning as I go along.  

That'd be very cool

> Is this list going to be archived?  It would be a *very* good thing.

Number two to ask in the short life of this list.

Yes, it's being archived right now.  Read the message you got when you
subscribed.. near the end, I think it says how to get the archive.

As for a web interface, it will probably have to wait until next week,
if it ever gets done.  If there's enough demand, I'll bug the right
people... but if no one cares, it's not worth the time. :)

-- 
					-Otto.

--
To unsubscribe: mail -s unsubscribe gtk-list-request@redhat.com < /dev/null

From gtk-list-request@redhat.com
Status: U
Return-Path: <gtk-list-request@redhat.com>
Received: from cornell.edu (cornell.edu [132.236.56.6])
	by postoffice.mail.cornell.edu (8.8.5/8.8.5) with ESMTP id RAA05404
	for <owt1@postoffice.mail.cornell.edu>; Thu, 1 May 1997 17:51:23 -0400 (EDT)
Received: (from daemon@localhost)
	by cornell.edu (8.8.5/8.8.5) id RAA04761
	for owt1@postoffice.mail.cornell.edu; Thu, 1 May 1997 17:51:23 -0400 (EDT)
Received: from mail2.redhat.com (mail2.redhat.com [199.183.24.247])
	by cornell.edu (8.8.5/8.8.5) with SMTP id RAA04738
	for <owt1@cornell.edu>; Thu, 1 May 1997 17:51:21 -0400 (EDT)
Received: (qmail 21746 invoked by uid 501); 1 May 1997 21:51:46 -0000
Resent-Date: 1 May 1997 21:51:46 -0000
Resent-Cc: recipient list not shown: ;
MBOX-Line: From gtk-list-request@redhat.com  Thu May  1 17:51:45 1997
Date: Thu, 1 May 1997 14:51:35 -0700 (PDT)
X-PH: V4.1@cornell.edu (Cornell Modified) 
From: Raph Levien <raph@acm.org>
X-Sender: raph@blacklodge.c2.net
To: gtk-list@redhat.com
Subject: Re: anyone here yet?
In-Reply-To: <19970501160625.54339@redhat.com>
Message-ID: <Pine.BSF.3.91.970501140423.24370A-100000@blacklodge.c2.net>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Resent-Message-ID: <"mOlY41.0.fJ5.n1HQp"@mail2.redhat.com>
Resent-From: gtk-list@redhat.com
Reply-To: gtk-list@redhat.com
X-Mailing-List: <gtk-list@redhat.com> archive/latest/7
X-Loop: gtk-list@redhat.com
Precedence: list
Resent-Sender: gtk-list-request@redhat.com
X-URL: http://www.redhat.com



On Thu, 1 May 1997, Otto Hammersmith wrote:

> Hello all,
> 
> Just wondering if there's anyone listening, yet. :)
> 
> If there are people out there, what is everyone doing with GTK?  I've
> seen some interesting projects, but want to get a handle on what
> people are trying to do... don't want to duplicate any effort, now do
> we? :)

Well, now that you ask, I'll fess up. I've just started working on 
gzilla. The name is a joke, really, because I have no intention of 
building a web browser empire. It's going to be a quick, dirty, fast toy 
Web browser. However, because it's built on top of GTK, it's going to be 
extremely cool.

My goal is to put together a reasonable HTML viewer, JPG and GIF image
viewers, and a minimalist HTTP layer. The one "fancy" goal is for it to be
completely streaming. As such, it ought to be a reasonable choice for the
help viewer in Gimp. If other people want to develop it further than that,
I'd welcome it, but I don't have the time or energy to devote to releasing
and maintaining (yet another) major piece of software. 

The architecture is roughly as follows:

                      Wedget
                     /      \
                  Html    WebImage
                           /     \
                         GIF    JPEG

A "Wedget" is a Web widget. It's just like an ordinary widget except for 
one call and a bunch of singals. The new call is more_bytes, which the 
application uses to push in bytes that come from the network (otherwise, 
it's pretty similar in concept to gtk_label_set). The signals will 
include things like link (emitted when a link is clicked), request_url 
(emitted whenever an IMG tag is parsed), and maybe a few more. I haven't 
designed this part thoroughly, so I'll make it up as I go along.

The Html wedget will be a pretty basic HTML displayer, with one cool 
trick: it also act as a container for other widgets or wedgets. This is 
how images will happen. It's also the obvious extension mechanism for 
forms, tables, applets, and such. I'll support the GTK size negotiation 
mechanism so it won't have to hold up page display if the hoser who wrote 
the page forgot the WIDTH and HEIGHT parameters in an IMG tag.

The parsing, streaming, and layout will be handled by the simplest 
possible mechanism. Html's more_bytes method will tokenize the input and 
dispatch on the tag. It will also maintain a stack containing (tag, 
attributes) tuples. For example, parsing <B> will just push B onto the 
tag stack, push the attribute stack, and set the BOLD bit in the 
attributes. Parsing </B> will just pop the stack down one. The text gets 
shoved into an array of lines, each of which is an array of words. Each 
word contains a string (the text of the word) and an index to the table 
of attributes. Word wrapping happens incrementally as the text comes in, 
but if the size changes (e.g. a window resize), the text gets rewrapped. 
There is a bit of extra information in the line and word structures to 
help with this. For example, each line contains a bit stating whether the 
line ends with a hard or a soft break, and each word contains the metrics 
of the word, to speed up both rewrap and display.

I'll keep you guys posted.

Raph

--
To unsubscribe: mail -s unsubscribe gtk-list-request@redhat.com < /dev/null

From gtk-list-request@redhat.com
Status: U
Return-Path: <gtk-list-request@redhat.com>
Received: from cornell.edu (cornell.edu [132.236.56.6])
	by postoffice.mail.cornell.edu (8.8.5/8.8.5) with ESMTP id CAA03324
	for <owt1@postoffice.mail.cornell.edu>; Sat, 3 May 1997 02:35:18 -0400 (EDT)
Received: (from daemon@localhost)
	by cornell.edu (8.8.5/8.8.5) id CAA04796
	for owt1@postoffice.mail.cornell.edu; Sat, 3 May 1997 02:35:18 -0400 (EDT)
Received: from mail2.redhat.com (mail2.redhat.com [199.183.24.247])
	by cornell.edu (8.8.5/8.8.5) with SMTP id CAA04787
	for <owt1@cornell.edu>; Sat, 3 May 1997 02:35:16 -0400 (EDT)
Received: (qmail 29047 invoked by uid 501); 3 May 1997 06:35:41 -0000
Resent-Date: 3 May 1997 06:35:41 -0000
Resent-Cc: recipient list not shown: ;
MBOX-Line: From gtk-list-request@redhat.com  Sat May  3 02:35:40 1997
X-PH: V4.1@cornell.edu (Cornell Modified) 
From: Shawn T Amundson <amundson@cs.umn.edu>
Message-Id: <199705030635.BAA28762@augustus-239.cs.umn.edu>
To: gtk-list@redhat.com
Date: Sat, 3 May 1997 01:35:02 -0500 (CDT)
X-Mailer: ELM [version 2.4 PL25 PGP3 *ALPHA*]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Resent-Message-ID: <"ep5oV2.0.f57.yojQp"@mail2.redhat.com>
Resent-From: gtk-list@redhat.com
Reply-To: gtk-list@redhat.com
X-Mailing-List: <gtk-list@redhat.com> archive/latest/39
X-Loop: gtk-list@redhat.com
Precedence: list
Resent-Sender: gtk-list-request@redhat.com
X-URL: http://www.redhat.com
Subject: [gtk-list] button speed way too slow


The design of the GtkButton is too slow for my calendar widget.
(42 buttons that have labels.  Labels all get changed when a 
button is clicked.)

I found that the offender was gtk_container_check_resize in the
gtk_label_set.  If I just replace that with a gtk_widget_draw
there are no speed problems.  However, this has some very messy
results.

I can make a few assumptions:  the buttons need not resize, and
the only data in the button label is one or two characters or 
nothing.  If there is only one character it needs to be right
justified.

How can I make changing a button's label faster?

--
Shawn T. Amundson		University of Minnesota
Systems Administration	 	Computer Science System Staff
amundson@cs.umn.edu	  	http://www.cs.umn.edu/~amundson/     	

You can't talk to a PSYCHO like a normal human being!!!!  -Poe

--
To unsubscribe: mail -s unsubscribe gtk-list-request@redhat.com < /dev/null

From gtk-list-request@redhat.com
Status: U
Return-Path: <gtk-list-request@redhat.com>
Received: from cornell.edu (cornell.edu [132.236.56.6])
	by postoffice.mail.cornell.edu (8.8.5/8.8.5) with ESMTP id RAA21626
	for <owt1@postoffice.mail.cornell.edu>; Wed, 7 May 1997 17:14:26 -0400 (EDT)
Received: (from daemon@localhost)
	by cornell.edu (8.8.5/8.8.5) id RAA24594
	for owt1@postoffice.mail.cornell.edu; Wed, 7 May 1997 17:14:23 -0400 (EDT)
Received: from mail2.redhat.com (mail2.redhat.com [199.183.24.247])
	by cornell.edu (8.8.5/8.8.5) with SMTP id RAA24428
	for <owt1@cornell.edu>; Wed, 7 May 1997 17:14:12 -0400 (EDT)
Received: (qmail 5453 invoked by uid 501); 7 May 1997 21:14:31 -0000
Resent-Date: 7 May 1997 21:14:30 -0000
Resent-Cc: recipient list not shown: ;
MBOX-Line: From gtk-list-request@redhat.com  Wed May  7 17:14:30 1997
Message-ID: <3370F0C5.58405A88@acm.org>
Date: Wed, 07 May 1997 14:14:45 -0700
X-PH: V4.1@cornell.edu (Cornell Modified) 
From: Raph Levien <raph@acm.org>
X-Mailer: Mozilla 3.0 (X11; U; Linux 1.2.13 i586)
MIME-Version: 1.0
To: gtk-list@redhat.com
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Resent-Message-ID: <"K_pEX.0.-K1.s2FSp"@mail2.redhat.com>
Resent-From: gtk-list@redhat.com
Reply-To: gtk-list@redhat.com
X-Mailing-List: <gtk-list@redhat.com> archive/latest/67
X-Loop: gtk-list@redhat.com
Precedence: list
Resent-Sender: gtk-list-request@redhat.com
X-URL: http://www.redhat.com
Subject: [gtk-list] gtk issues for gzilla

Work on gzilla continues apace. I have, however, run into a few small
glitches. Hopefully, the people here will have some answers.

* Only one qualifies as a bona fide bug in gtk. If a label is inside a
scrolledwindow, and you change the label using gtk_label_set, it is not
always redrawn. It should be easy to duplicate this bug by modifying
(say) the timeout example in testgtk. If anyone has trouble doing so,
let me know and I will post code.

* I'd like to set the initial size of the default window to something
like 500x600. Using gtk_widget_set_usize does _almost_ what I want, but
not quite: it sets a minimum size, after which it's possible to do a
window resize to make the window bigger but not smaller. Also, the
window size info displayed by fvwm95-2 while resizing measures how much
bigger the window is than minimum, not the absolute size of the window.
I suspect that this will cause problems when trying to specify the
geometry of the window as well.

* Removing a widget from a scrolledwindow throws one of these:

** WARNING **: file gtkwidget.c: line 767 (gtk_widget_size_request):
"widget != NULL"

   Originally, I was going to jump from doc to doc by removing the old
doc from the scrolledwindow and adding the new, but now I think I'll do
this in a box added between the page and scrolledwindow. There is a
another reason to do this other than just avioding the warning. Thus,
it's not a priority for me that this gets fixed.

* From looking at the code, it appears to me that gtk_preview_size won't
cause a check_resize if the widget is visible. I haven't verified this
in actual code yet. This will be important when an image of unknown size
is created, and the size becomes known later when the image starts
downloading from the network.

* What's the right way for the doc widget to find out the size of the
viewport of the enclosing scrolledwindow (minus the size of the padding
in the enclosing box if there's a box between them)? I think I'll just
walk up the tree by following the parent links until I find one that
meets the gtk_type_is_a predicate for scrolledwindow, then poke around
in the scrolledwindow structure. This feels a little gorpy though - I'd
prefer not to access the widget data structure internals if I can help
it.

* I hope the 0.99.10 release is soon so I can write the HTTP handling
code (which will rely heavily on gdk_input_add) without having to worry
about syntax changes.

   Lest this sound like a gripefest, I want to commend you guys for all
the things you did right. So far, the feeling I've been getting is that
gtk+ is working with me, rather than being the beast I have to fight
against to get the UI I want. Coupling gzilla tightly to the gtk+ widget
hierarchy is increasingly looking like a good idea. For example, the
gtk_table widget is going to make it _much_ easier for me to get tables
right. Gambai!

Raph

--
To unsubscribe: mail -s unsubscribe gtk-list-request@redhat.com < /dev/null

From jmacd@CS.Berkeley.EDU
Received: (qmail 31001 invoked from network); 13 May 1997 19:47:51 -0000
Received: from paris.CS.Berkeley.EDU (128.32.34.47)
  by mail2.redhat.com with SMTP; 13 May 1997 19:47:47 -0000
Received: from paris.CS.Berkeley.EDU (localhost.Berkeley.EDU [127.0.0.1]) 
by paris.CS.Berkeley.EDU (8.8.3/8.8.2) with ESMTP id MAA27860 for 
<gtk-list@redhat.com>; Tue, 13 May 1997 12:47:05 -0700 (PDT)
From: Josh MacDonald <jmacd@CS.Berkeley.EDU>
Message-Id: <199705131947.MAA27860@paris.CS.Berkeley.EDU>
To: gtk-list@redhat.com
Subject: GTK text widget (was Re: [gtk-list] Proposal for a new project)
In-reply-to: Your message of "13 May 1997 19:42:55 +0200."
             <x7vi4nw9nk.fsf@sn.no> 
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-ID: <27853.863552822.1@paris.CS.Berkeley.EDU>
Date: Tue, 13 May 1997 12:47:04 -0700

With all this talk of KDE and HTML and all sorts of other people starting
to really use GTK, it strikes me that someday, someone is going to notice
that the text widget doesn't really work.  I suppose I'll be having time
to finish it after finals, but have no immediate motivation because I have
no application demanding its completion.  Further, I realized that while
most of the technical details are mostly complete, I have no experience
actually connecting a text widget up to anything non-trivial, and therefore
the API is currently almost non-existent.

It seems to me, that an HTML widget isn't really much different from a
text widget, considering that the GTK text widget, in its current state,
supports variable width fonts.  I suspect that any HTML widget is going to
duplicate a lot of code.  It would seem to me that adding the ability to
do various justifications and centering, and treating things like images
and tables as things with a unique, specially sized font, gets you almost
all the way there (neglecting the boring part about parsing HTML).

I'm wondering if people have given this any thought to this or could 
recommend the appropriate path to completing the text widget and/or any of 
your other wild desires.  At the bare minimum, does anyone have suggestions 
for what the rest of the text widget API should look like?

-josh

From amundson@cs.umn.edu
Received: (qmail 17457 invoked from network); 13 May 1997 20:09:12 -0000
Received: from augustus-228.cs.umn.edu (HELO augustus-239.cs.umn.edu) 
(root@128.101.228.69)
  by mail2.redhat.com with SMTP; 13 May 1997 20:09:12 -0000
Received: from guinness.cs.umn.edu (amundson@guinness.cs.umn.edu [128.101.229.5])
	by augustus-239.cs.umn.edu (8.8.5/8.8.5) with ESMTP id PAA24684
	for <gtk-list@redhat.com>; Tue, 13 May 1997 15:08:43 -0500 (CDT)
From: Shawn T Amundson <amundson@cs.umn.edu>
Received: (from amundson@localhost) by guinness.cs.umn.edu (8.8.3/8.8.0) 
id PAA20196 for gtk-list@redhat.com; Tue, 13 May 1997 15:08:42 -0500
Message-Id: <199705132008.PAA20196@guinness.cs.umn.edu>
Subject: Re: [gtk-list] GTK text widget (was Re: Proposal for a new project)
To: gtk-list@redhat.com
Date: Tue, 13 May 1997 15:08:40 -0500 (CDT)
In-Reply-To: <199705131947.MAA27860@paris.CS.Berkeley.EDU> 
from "Josh MacDonald" at May 13, 97 12:47:04 pm
X-Mailer: ELM [version 2.4 PL25 PGP3 *ALPHA*]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

Words Of Josh MacDonald:
>
>With all this talk of KDE and HTML and all sorts of other people starting
>to really use GTK, it strikes me that someday, someone is going to notice
>that the text widget doesn't really work.  I suppose I'll be having time
>to finish it after finals, but have no immediate motivation because I have
>no application demanding its completion.  Further, I realized that while
>most of the technical details are mostly complete, I have no experience
>actually connecting a text widget up to anything non-trivial, and therefore
>the API is currently almost non-existent.

I'm glad I haven't tried to use it yet; Aorta will need it, and will
be a big enough app to test it out properly, I'm certain.  

I figure a cheap little calendar program that lets you type in stuff 
for each day and changes the color dependant on if it's got something 
for that day would be a good demo.  I don't know if that would constitute
a motivational force or not. ;-)

>
>It seems to me, that an HTML widget isn't really much different from a
>text widget, considering that the GTK text widget, in its current state,
>supports variable width fonts.  I suspect that any HTML widget is going to
>duplicate a lot of code.  It would seem to me that adding the ability to
>do various justifications and centering, and treating things like images
>and tables as things with a unique, specially sized font, gets you almost
>all the way there (neglecting the boring part about parsing HTML).

Which kind of gets back to my question about making it possible to insert
any old child widget into the text widget: wouldn't that be cool?

>I'm wondering if people have given this any thought to this or could 
>recommend the appropriate path to completing the text widget and/or any of 
>your other wild desires.  At the bare minimum, does anyone have suggestions 
>for what the rest of the text widget API should look like?

I've only mildly looked at the text widget, but I'll try and get some
ideas as I work on that demo.

--
Shawn T. Amundson		University of Minnesota
Systems Administration	 	Computer Science System Staff
amundson@cs.umn.edu	  	http://www.cs.umn.edu/~amundson/     	

while (i) { last }
    i, do exist.
    forever;

From otto@redhat.com
Received: (qmail 23389 invoked from network); 13 May 1997 20:22:24 -0000
Received: from nimrod.redhat.com (otto@199.183.24.13)
  by mail2.redhat.com with SMTP; 13 May 1997 20:22:24 -0000
Received: (from otto@localhost)
	by nimrod.redhat.com (8.8.5/8.8.5) id QAA01407;
	Tue, 13 May 1997 16:22:00 -0400
Message-ID: <19970513162159.55405@redhat.com>
Date: Tue, 13 May 1997 16:21:59 -0400
From: Otto Hammersmith <otto@redhat.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: GTK text widget (was Re: Proposal for a new project)
References: <199705131947.MAA27860@paris.CS.Berkeley.EDU> 
<199705132008.PAA20196@guinness.cs.umn.edu>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-Mailer: Mutt 0.69
In-Reply-To: <199705132008.PAA20196@guinness.cs.umn.edu>; 
from Shawn T Amundson on Tue, May 13, 1997 at 03:08:40PM -0500

On Tue, May 13, 1997 at 03:08:40PM -0500, Shawn T Amundson wrote:
> Words Of Josh MacDonald:
[snipage]
> 
> >It seems to me, that an HTML widget isn't really much different from a
> >text widget, considering that the GTK text widget, in its current state,
> >supports variable width fonts.  I suspect that any HTML widget is going to
> >duplicate a lot of code.  It would seem to me that adding the ability to
> >do various justifications and centering, and treating things like images
> >and tables as things with a unique, specially sized font, gets you almost
> >all the way there (neglecting the boring part about parsing HTML).
> 
> Which kind of gets back to my question about making it possible to insert
> any old child widget into the text widget: wouldn't that be cool?

Yes.

I've done some thinking... I wonder if it'd be useful to have two text
widgets.  One exteremely simple one with just plain text, and a second
for intense things that would allow embedding widgets and such.  I
suspect the former would be useful for small apps that don't need the
power of the later.

One comment, though... it should be a "rich text" widget, not and
"HTML widget".  I don't think HTML parsing code really belongs in the
widget proper.  I see something along the lines of the relationship
between gtk_rc_parse stuff and GtkStyle objects.

In any case, it should be easy to use the widget with something other
than HTML... SGML, texinfo, LaTeX (I'm sure the LyX people would
appreciate that one), and whatnot.

[more snipage]

-- 
					-Otto.

From otaylor@cu-dialup-2004.cit.cornell.edu
Received: (qmail 28842 invoked from network); 13 May 1997 20:32:25 -0000
Received: from cu-dialup-2004.cit.cornell.edu (qmailr@132.236.155.126)
  by mail2.redhat.com with SMTP; 13 May 1997 20:32:21 -0000
Received: (qmail 1363 invoked by uid 504); 13 May 1997 20:33:02 -0000
Sender: otaylor@cu-dialup-2004.cit.cornell.edu
To: gtk-list@redhat.com
Subject: Re: [gtk-list] GTK text widget (was Re: Proposal for a new project)
References: <199705131947.MAA27860@paris.CS.Berkeley.EDU>
From: Owen Taylor <owt1@cornell.edu>
Date: 13 May 1997 16:33:02 -0400
In-Reply-To: Josh MacDonald's message of Tue, 13 May 1997 12:47:04 -0700
Message-ID: <lzd8qvaz9d.fsf@cu-dialup-2004.cit.cornell.edu>
Lines: 38
X-Mailer: Gnus v5.4.9/Emacs 19.34


Josh MacDonald <jmacd@CS.Berkeley.EDU> writes:

> With all this talk of KDE and HTML and all sorts of other people starting
> to really use GTK, it strikes me that someday, someone is going to notice
> that the text widget doesn't really work. [ ... ]

Yes, I had noticed ... my first toy app for PerlGtk used a text widget, so
I wrote a bit of code to retrieve all the text from the text widget,
then I found that hitting return in a text widget caused a segfault ...
I looked at it some but it seemed pretty complex (but well designed).

I think having a text widget is important, and that performance should
be one of the design goals - often you want to bring up a bit
of text or have a few lines for the user to edit - and that's what
I see as the important role of a text widget. For major editing,
people will want to use their primary text editor anyways ...

Although combining a text widget and HTML widget is intriguing, I'm
not sure that it's very feasible to combine nice looking layout
with editability.

So it might be good to keep the text widget simple.

> I'm wondering if people have given this any thought to this or could 
> recommend the appropriate path to completing the text widget and/or any of 
> your other wild desires.  At the bare minimum, does anyone have suggestions 
> for what the rest of the text widget API should look like?

The minimum enhancements (from my point of view) would be:

1) Make editing work

2) $text_widget->set_point(0)
   $text_widget->get_text($text_widget->get_length)

Regards,
                                        Owen

From amundson@cs.umn.edu
Received: (qmail 29612 invoked from network); 13 May 1997 20:33:52 -0000
Received: from augustus-228.cs.umn.edu (HELO augustus-239.cs.umn.edu) 
(root@128.101.228.69)
  by mail2.redhat.com with SMTP; 13 May 1997 20:33:51 -0000
Received: from guinness.cs.umn.edu (amundson@guinness.cs.umn.edu [128.101.229.5])
	by augustus-239.cs.umn.edu (8.8.5/8.8.5) with ESMTP id PAA29117
	for <gtk-list@redhat.com>; Tue, 13 May 1997 15:33:11 -0500 (CDT)
From: Shawn T Amundson <amundson@cs.umn.edu>
Received: (from amundson@localhost) by guinness.cs.umn.edu (8.8.3/8.8.0) 
id PAA20256 for gtk-list@redhat.com; Tue, 13 May 1997 15:33:10 -0500
Message-Id: <199705132033.PAA20256@guinness.cs.umn.edu>
Subject: Re: [gtk-list] Re: GTK text widget (was Re: Proposal for a new project)
To: gtk-list@redhat.com
Date: Tue, 13 May 1997 15:33:09 -0500 (CDT)
In-Reply-To: <19970513162159.55405@redhat.com> from "Otto Hammersmith" 
at May 13, 97 04:21:59 pm
X-Mailer: ELM [version 2.4 PL25 PGP3 *ALPHA*]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

Words Of Otto Hammersmith:
>
>I've done some thinking... I wonder if it'd be useful to have two text
>widgets.  One exteremely simple one with just plain text, and a second
>for intense things that would allow embedding widgets and such.  I
>suspect the former would be useful for small apps that don't need the
>power of the later.

I was thinking this too.  But if the complex text widget, when used only 
with text, is no larger than the extremely simple one, then what's the 
point?  Would it take so much extra room in the struct to have the
embedding done?

>
>One comment, though... it should be a "rich text" widget, not and
>"HTML widget".  I don't think HTML parsing code really belongs in the
>widget proper.  I see something along the lines of the relationship
>between gtk_rc_parse stuff and GtkStyle objects.

I don't really want to have to submit any layout language when
working with the widget.  Except perhaps the normal packing code,
or how you control such things in TK.  Widgets should take up the
same space as a character and act accordingly.  You should be able
to insert by knowing the row and column of the text, or delete, etc.

Then a harder question:  What about doing tags like in TK?  Perhaps
an easy way to do links in widgets based off the text widgets, like
the HTML widget.

--
Shawn T. Amundson		University of Minnesota
Systems Administration	 	Computer Science System Staff
amundson@cs.umn.edu	  	http://www.cs.umn.edu/~amundson/     	

"My daydream screams bitter 'til the end" -- Smashing Pumpkins

From jmacd@CS.Berkeley.EDU
Received: (qmail 30027 invoked from network); 13 May 1997 20:35:01 -0000
Received: from paris.CS.Berkeley.EDU (128.32.34.47)
  by mail2.redhat.com with SMTP; 13 May 1997 20:35:00 -0000
Received: from paris.CS.Berkeley.EDU (localhost.Berkeley.EDU [127.0.0.1]) 
by paris.CS.Berkeley.EDU (8.8.3/8.8.2) with ESMTP id NAA28221 for 
<gtk-list@redhat.com>; Tue, 13 May 1997 13:34:35 -0700 (PDT)
From: Josh MacDonald <jmacd@CS.Berkeley.EDU>
Message-Id: <199705132034.NAA28221@paris.CS.Berkeley.EDU>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: GTK text widget (was Re: Proposal for a new project) 
In-reply-to: Your message of "13 May 1997 16:33:02 EDT."
             <lzd8qvaz9d.fsf@cu-dialup-2004.cit.cornell.edu> 
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-ID: <28214.863555673.1@paris.CS.Berkeley.EDU>
Date: Tue, 13 May 1997 13:34:34 -0700

> 
> The minimum enhancements (from my point of view) would be:
> 
> 1) Make editing work
> 
> 2) $text_widget->set_point(0)
>    $text_widget->get_text($text_widget->get_length)

Hmm, I thought it worked better than that.  I fixed a number of things
in the 41097 snapshot.  Was it in a later or ealier version?

-josh

From otto@redhat.com
Received: (qmail 31980 invoked from network); 13 May 1997 20:41:27 -0000
Received: from nimrod.redhat.com (otto@199.183.24.13)
  by mail2.redhat.com with SMTP; 13 May 1997 20:41:27 -0000
Received: (from otto@localhost)
	by nimrod.redhat.com (8.8.5/8.8.5) id QAA01486;
	Tue, 13 May 1997 16:41:03 -0400
Message-ID: <19970513164102.13489@redhat.com>
Date: Tue, 13 May 1997 16:41:02 -0400
From: Otto Hammersmith <otto@redhat.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: GTK text widget (was Re: Proposal for a new project)
References: <lzd8qvaz9d.fsf@cu-dialup-2004.cit.cornell.edu> 
<199705132034.NAA28221@paris.CS.Berkeley.EDU>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-Mailer: Mutt 0.69
In-Reply-To: <199705132034.NAA28221@paris.CS.Berkeley.EDU>; 
from Josh MacDonald on Tue, May 13, 1997 at 01:34:34PM -0700

On Tue, May 13, 1997 at 01:34:34PM -0700, Josh MacDonald wrote:
> > 
> > The minimum enhancements (from my point of view) would be:
> > 
> > 1) Make editing work
> > 
> > 2) $text_widget->set_point(0)
> >    $text_widget->get_text($text_widget->get_length)
> 
> Hmm, I thought it worked better than that.  I fixed a number of things
> in the 41097 snapshot.  Was it in a later or ealier version?
> 
> -josh

Now that you mention it...

would you like everyone to come up with bugs for the text widget?
I've seen a couple in my cursory playing with it... it just occured to
me that you might not have seen the same ones. 

(maybe we need a bug tracking thingy.... ;)

-- 
					-Otto.

From jmacd@CS.Berkeley.EDU
Received: (qmail 89 invoked from network); 13 May 1997 20:43:41 -0000
Received: from paris.CS.Berkeley.EDU (128.32.34.47)
  by mail2.redhat.com with SMTP; 13 May 1997 20:43:27 -0000
Received: from paris.CS.Berkeley.EDU (localhost.Berkeley.EDU [127.0.0.1]) 
by paris.CS.Berkeley.EDU (8.8.3/8.8.2) with ESMTP id NAA28301 for 
<gtk-list@redhat.com>; Tue, 13 May 1997 13:42:41 -0700 (PDT)
From: Josh MacDonald <jmacd@CS.Berkeley.EDU>
Message-Id: <199705132042.NAA28301@paris.CS.Berkeley.EDU>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: GTK text widget (was Re: Proposal for a new project) 
In-reply-to: Your message of "Tue, 13 May 1997 16:41:02 EDT."
             <19970513164102.13489@redhat.com> 
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-ID: <28294.863556159.1@paris.CS.Berkeley.EDU>
Date: Tue, 13 May 1997 13:42:40 -0700

> On Tue, May 13, 1997 at 01:34:34PM -0700, Josh MacDonald wrote:
> > > 
> > > The minimum enhancements (from my point of view) would be:
> > > 
> > > 1) Make editing work
> > > 
> > > 2) $text_widget->set_point(0)
> > >    $text_widget->get_text($text_widget->get_length)
> > 
> > Hmm, I thought it worked better than that.  I fixed a number of things
> > in the 41097 snapshot.  Was it in a later or ealier version?
> > 
> > -josh
> 
> Now that you mention it...
> 
> would you like everyone to come up with bugs for the text widget?
> I've seen a couple in my cursory playing with it... it just occured to
> me that you might not have seen the same ones. 
> 
> (maybe we need a bug tracking thingy.... ;)

You're welcome to send them.  I may know of some of them, but chances are
I don't.  I've debugged it very little.  One tends not to worry about 
minor details when there's things like selections and horizontal scrolling to
finish up.

-josh

From otaylor@cu-dialup-2004.cit.cornell.edu
Received: (qmail 2316 invoked from network); 13 May 1997 20:52:31 -0000
Received: from cu-dialup-2004.cit.cornell.edu (qmailr@132.236.155.126)
  by mail2.redhat.com with SMTP; 13 May 1997 20:52:30 -0000
Received: (qmail 4097 invoked by uid 504); 13 May 1997 20:53:18 -0000
Sender: otaylor@cu-dialup-2004.cit.cornell.edu
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: GTK text widget (was Re: Proposal for a new project)
References: <199705132034.NAA28221@paris.CS.Berkeley.EDU>
From: Owen Taylor <owt1@cornell.edu>
Date: 13 May 1997 16:53:17 -0400
In-Reply-To: Josh MacDonald's message of Tue, 13 May 1997 13:34:34 -0700
Message-ID: <lzbu6faybm.fsf@cu-dialup-2004.cit.cornell.edu>
Lines: 38
X-Mailer: Gnus v5.4.9/Emacs 19.34


> Hmm, I thought it worked better than that.  I fixed a number of things
> in the 41097 snapshot.  Was it in a later or ealier version?
> 
> -josh

Not sure when I first noticed it, but (using 0.99.9 gtk):

Bring up testgtk. Click somewhere to bring up the insertion cursor.
Hit return.

Program received signal SIGSEGV, Segmentation fault.
0x40070bb0 in find_line_params (text=0x8069f98, mark=0xbffff324, 
    tab_cont=0xbffff30c, next_cont=0xbffff318) at gtktext.c:2662
2662          font = MARK_CURRENT_FONT (&lp.end);
(gdb) 

#0  0x40070bb0 in find_line_params (text=0x8069f98, mark=0xbffff324, 
    tab_cont=0xbffff30c, next_cont=0xbffff318) at gtktext.c:2662
#1  0x4006d16e in line_params_iterate (text=0x8069f98, mark0=0xbffff38c, 
    tab_mark0=0x80701cc, alloc=1 '\001', data=0xbffff358, 
    iter=0x4006d270 <fetch_lines_iterator>) at gtktext.c:1173
#2  0x4006d3cd in fetch_lines (text=0x8069f98, mark0=0xbffff38c, 
    tab_cont0=0x80701cc, fl_type=FetchLinesCount, data=1) at gtktext.c:1232
#3  0x4006d538 in fetch_lines_forward (text=0x8069f98, line_count=1)
    at gtktext.c:1271
#4  0x400719b5 in expose (text=0x8069f98, area=0xbffff410, cursor=0 '\000')
    at gtktext.c:3061
#5  0x4006e01f in insert_char_line_expose (text=0x8069f98, key=10 '\n', 
    old_pixels=24) at gtktext.c:1537
#6  0x4006c159 in gtk_text_insert_1_at_point (text=0x8069f98, key=10 '\n')
    at gtktext.c:915
#7  0x4006c6fb in gtk_text_key_press (widget=0x8069f98, event=0xbffff70c)
    at gtktext.c:989

If this doesn't happen for you, I could provide more details.

                                        Owen

From otto@redhat.com
Received: (qmail 18948 invoked from network); 14 May 1997 14:42:40 -0000
Received: from nimrod.redhat.com (otto@199.183.24.13)
  by mail2.redhat.com with SMTP; 14 May 1997 14:42:40 -0000
Received: (from otto@localhost)
	by nimrod.redhat.com (8.8.5/8.8.5) id KAA05675;
	Wed, 14 May 1997 10:42:09 -0400
Message-ID: <19970514104209.52837@redhat.com>
Date: Wed, 14 May 1997 10:42:09 -0400
From: Otto Hammersmith <otto@redhat.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: GTK text widget (was Re: Proposal for a new project)
References: <19970513162159.55405@redhat.com> 
<199705132033.PAA20256@guinness.cs.umn.edu>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-Mailer: Mutt 0.69
In-Reply-To: <199705132033.PAA20256@guinness.cs.umn.edu>; 
from Shawn T Amundson on Tue, May 13, 1997 at 03:33:09PM -0500

On Tue, May 13, 1997 at 03:33:09PM -0500, Shawn T Amundson wrote:
> Words Of Otto Hammersmith:
> >
> >I've done some thinking... I wonder if it'd be useful to have two text
> >widgets.  One exteremely simple one with just plain text, and a second
> >for intense things that would allow embedding widgets and such.  I
> >suspect the former would be useful for small apps that don't need the
> >power of the later.
> 
> I was thinking this too.  But if the complex text widget, when used only 
> with text, is no larger than the extremely simple one, then what's the 
> point?  Would it take so much extra room in the struct to have the
> embedding done?

Very true, if it doesn't save any memory or resources, there's no
reason for it... but I suspect it will turn out to be otherwise.

> >One comment, though... it should be a "rich text" widget, not and
> >"HTML widget".  I don't think HTML parsing code really belongs in the
> >widget proper.  I see something along the lines of the relationship
> >between gtk_rc_parse stuff and GtkStyle objects.
> 
> I don't really want to have to submit any layout language when
> working with the widget.  Except perhaps the normal packing code,
> or how you control such things in TK.  Widgets should take up the
> same space as a character and act accordingly.  You should be able
> to insert by knowing the row and column of the text, or delete, etc.
> 
> Then a harder question:  What about doing tags like in TK?  Perhaps
> an easy way to do links in widgets based off the text widgets, like
> the HTML widget.

I think I'm being misunderstood.  I didn't mean "rich text" as in
RTF... I just meant a widget capable of displaying that kind of text. 

As for commenting on how Tk does things... I'm not familiar with Tk,
so someone will have to fill me in a bit. :)

-- 
					-Otto.

From raph@acm.org
Received: (qmail 8958 invoked from network); 15 May 1997 22:21:52 -0000
Received: from callisto.hip.berkeley.edu (136.152.64.218)
  by mail2.redhat.com with SMTP; 15 May 1997 22:21:51 -0000
Received: (from raph@localhost) by callisto.hip.berkeley.edu (8.6.12/8.6.12) 
id PAA07330 for gtk-list@redhat.com; Thu, 15 May 1997 15:22:44 -0700
Message-ID: <337B8CAF.1C3CB53F@acm.org>
Date: Thu, 15 May 1997 15:22:39 -0700
From: Raph Levien <raph@acm.org>
X-Mailer: Mozilla 3.0 (X11; U; Linux 1.2.13 i586)
MIME-Version: 1.0
To: gtk-list@redhat.com
Subject: Code escape: Gzilla 0.01
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hi gtk people,

   After a couple of weeks of hacking, I am eager to show an early
prototype of gzilla to the world. Well, ok, only to gtk developers for
now, at least until the UI gets a lot smoother.

   The code is available at http://www.levien.com/gzilla-0.01.tar.gz .
It is only a 30K download, and will probably only take a minute or so to
build.

   Here's a very rough outline of the architecture:

   In gzilla, the display of a file is handled by two separate, but
linked objects. The first is what I call a "bytesink." It's main purpose
is to implement a "write" method for writing bytes into the object. The
write method typically parses this input and passes it on to the second
object, which is a gtk+ widget.

   One reason I did this is so that I could reuse existing gtk+ widgets
when applicable. For example, for gif display, the widget is just a
gtk_preview. The gzilla_gif object is basically just a
progressive-rendering adaptation of giftopnm.

   HTML page rendering is also split in two in this way. The bytesink
(gzilla_html) handles the HTML parsing, and hands words, spaces,
linebreaks, attributes, and embedded widgets to the gtk_page widget,
which takes care of the actual formatting (including word wrapping) and
display. The interface between gzilla_html and gtk_page is actually
pretty simple. Of course, that's partly due to the fact that the text
formatting is not very rich yet.

   In general, I've tried to follow the gtk+ architecture very closely.
The gtk_page widget configures itself to be the size of the page. It's
displayed in the toplevel window simply by putting it into a
scrolledwindow.

   After having gotten this far, I'm having mixed feelings. In the fully
modular widget design, gtk+ simply cannot guarantee me the performance I
feel is necessary for a really cool Web browser. The main problem I'm
running up against is size changes. In _addition_ to the problems I
mentioned a few days ago (that come into play when you put a lot of
widgets into a gtk_page), doing a gdk_window_move_resize is causing the
entire window to be blanked. I _think_ it's the underlying X server
(XFree86 3.2 on an S3 in my case) that's doing this, but I'm not
positive. Either way, it's unacceptable - instead of smooth display when
a page downloads, it flickers like <BLINK> on methamphetamines. Not
good.

   I do see a few ways around this - most notably, I could suck the
scrollbar into the gtk_page widget, make gtk_page itself a fixed size
window, and handle all of the size changes and scrolling inside gtk_page
itself. But this has two drawbacks - first, I lose modularity within the
gtk+ framework, and second, I have to repaint the entire window on every
scroll. The way it works now, scrolling causes most of the window to be
preserved, with an expose event for the little bit that scrolled into
visibility. I'm pretty sure this is the approach that Netscape uses, by
the way.

   Another possiblility is the way qweb does it - throttle the rate of
window resize calls. This way, the flashing is reduced (so it now looks
like <BLINK> on barbiturates) but not entirely eliminated. Also, updates
don't appear to happen as quickly.

   If gzilla is to be used primarily to browse local files (e.g. as the
Gimp's help browser), then the window flashing problem is not nearly so
severe.

   So please take a look and let me know what you think. If you have any
ideas about the window flashing problem, I'd certainly like to hear
them.

Raph

From szi@lilly.ping.de
Received: (qmail 28195 invoked from network); 16 May 1997 06:49:15 -0000
Received: from lilly.ping.de (193.100.14.2)
  by mail2.redhat.com with SMTP; 16 May 1997 06:49:13 -0000
Received: (qmail 21960 invoked by uid 10); 16 May 1997 06:48:44 -0000
Sender: szi@lilly.ping.de
Message-ID: <337BFDD0.269B91A1@aibon.ping.de>
Date: Fri, 16 May 1997 08:25:20 +0200
From: Sascha Ziemann <szi@aibon.ping.de>
Organization: Chaos Emu v0.0 preAlpha
X-Mailer: Mozilla 3.01 (X11; I; Linux 2.0.29 i586)
MIME-Version: 1.0
To: gtk-list@redhat.com
Subject: Re: Code escape: Gzilla 0.01
References: <337B8CAF.1C3CB53F@acm.org>
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

Raph Levien wrote:

>    After a couple of weeks of hacking, I am eager to show an early
> prototype of gzilla to the world. Well, ok, only to gtk developers for
> now, at least until the UI gets a lot smoother.
> 
>    The code is available at http://www.levien.com/gzilla-0.01.tar.gz .
> It is only a 30K download, and will probably only take a minute or so to
> build.

Can not compile it:

szi@aibon:~/transfer/x/gzilla$ make
gcc -g -Wall -I/usr/ego/include   -c gzilla.c -o gzilla.o
gzilla.c: In function `gzilla_con_input_handler':
gzilla.c:198: warning: implicit declaration of function `GTK_CHECK_CAST'
gzilla.c:198: parse error before `GzillaByteSink'
gzilla.c: In function `gzilla_con_query_handler':
gzilla.c:239: parse error before `GzillaByteSink'
make: *** [gzilla.o] Error 1

-- bis später...
 - Sascha         ---<~>=( http://www.ping.de/sites/aibon/ )=<~>---

   () Free speech online
   /\ http://www.eff.org/BlueRibbon/bluehtml.html

From otto@redhat.com
Received: (qmail 2399 invoked from network); 16 May 1997 07:21:19 -0000
Received: from nimrod.redhat.com (otto@199.183.24.13)
  by mail2.redhat.com with SMTP; 16 May 1997 07:21:19 -0000
Received: (from otto@localhost)
	by nimrod.redhat.com (8.8.5/8.8.5) id DAA03616;
	Fri, 16 May 1997 03:20:55 -0400
Message-ID: <19970516032055.57369@redhat.com>
Date: Fri, 16 May 1997 03:20:55 -0400
From: Otto Hammersmith <otto@redhat.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: Code escape: Gzilla 0.01
References: <337B8CAF.1C3CB53F@acm.org> <337BFDD0.269B91A1@aibon.ping.de>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-Mailer: Mutt 0.69
In-Reply-To: <337BFDD0.269B91A1@aibon.ping.de>; from Sascha Ziemann on Fri, 
May 16, 1997 at 08:25:20AM +0200

On Fri, May 16, 1997 at 08:25:20AM +0200, Sascha Ziemann wrote:
> Raph Levien wrote:
> 
> >    After a couple of weeks of hacking, I am eager to show an early
> > prototype of gzilla to the world. Well, ok, only to gtk developers for
> > now, at least until the UI gets a lot smoother.
> > 
> >    The code is available at http://www.levien.com/gzilla-0.01.tar.gz .
> > It is only a 30K download, and will probably only take a minute or so to
> > build.
> 
> Can not compile it:
> 
> szi@aibon:~/transfer/x/gzilla$ make
> gcc -g -Wall -I/usr/ego/include   -c gzilla.c -o gzilla.o
> gzilla.c: In function `gzilla_con_input_handler':
> gzilla.c:198: warning: implicit declaration of function `GTK_CHECK_CAST'
> gzilla.c:198: parse error before `GzillaByteSink'
> gzilla.c: In function `gzilla_con_query_handler':
> gzilla.c:239: parse error before `GzillaByteSink'
> make: *** [gzilla.o] Error 1

FWIW, it built beautifully for me.  Two different Linux machines, one
using gtk+ from 0.99.8 and the other using 0.99.9. (both running Red
Hat) It also probably built just fine on a SPARC running Red Hat... I
presume I would've gotten a question or two had it not.

One thing that would be very nice, is if everyone would start
standardizing on how to include gtk.h (as well as gdk.h and glib.h)...

#include <gtk/gtk.h>

Works best, I think... usually means less fiddling with -I options to
the compiler.  Especially if you use the RPMs for gtk on
ftp.redhat.com:/pub/contrib... it puts the gtk include directory in
/usr/include so there's no tweaking necessary. (BTW, there are RPMS in
/pub/contrib... ignore the gimp-data one... 'tis from an older package
built by someone else. :)

In any case, I'm absolutely ecstatic that you released some code!  The
GzillaByteSink stuff is precisely what I needed...

Being 3:00am, I think I ought to stop rambling and get some sleep
before I get back to work. :)

Night all.

-- 
					-Otto.

From raph@acm.org
Received: (qmail 5178 invoked from network); 16 May 1997 17:37:32 -0000
Received: from blacklodge.c2.net (208.139.36.35)
  by mail2.redhat.com with SMTP; 16 May 1997 17:31:38 -0000
Received: (from raph@localhost) by blacklodge.c2.net (8.8.5/8.7.3) 
id KAA19614; Fri, 16 May 1997 10:32:00 -0700 (PDT)
Date: Fri, 16 May 1997 10:32:00 -0700 (PDT)
From: Raph Levien <raph@acm.org>
X-Sender: raph@blacklodge.c2.net
To: Otto Hammersmith <otto@redhat.com>
cc: gtk-list@redhat.com
Subject: Gtk app build issues
In-Reply-To: <19970516032055.57369@redhat.com>
Message-ID: <Pine.BSF.3.91.970516095422.18359B-100000@blacklodge.c2.net>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII



On Fri, 16 May 1997, Otto Hammersmith wrote:

> On Fri, May 16, 1997 at 08:25:20AM +0200, Sascha Ziemann wrote:
> > Can not compile it:
> > 
> > szi@aibon:~/transfer/x/gzilla$ make
> > gcc -g -Wall -I/usr/ego/include   -c gzilla.c -o gzilla.o
> > gzilla.c: In function `gzilla_con_input_handler':
> > gzilla.c:198: warning: implicit declaration of function `GTK_CHECK_CAST'
> > gzilla.c:198: parse error before `GzillaByteSink'
> > gzilla.c: In function `gzilla_con_query_handler':
> > gzilla.c:239: parse error before `GzillaByteSink'
> > make: *** [gzilla.o] Error 1

To compile 0.01 on your machine, you'll probably need -I/usr/ego/include 
and -I/usr/ego/include/gtk .

[...]

> One thing that would be very nice, is if everyone would start
> standardizing on how to include gtk.h (as well as gdk.h and glib.h)...
> 
> #include <gtk/gtk.h>
> 
> Works best, I think... usually means less fiddling with -I options to
> the compiler.  Especially if you use the RPMs for gtk on
> ftp.redhat.com:/pub/contrib... it puts the gtk include directory in
> /usr/include so there's no tweaking necessary. (BTW, there are RPMS in
> /pub/contrib... ignore the gimp-data one... 'tis from an older package
> built by someone else. :)

I agree, and have changed all of the #include directives to reflect this
suggestion.  It now builds on my system with just -I/usr/local/include .
This is a major improvement. Thanks, Otto! 

> In any case, I'm absolutely ecstatic that you released some code!  The
> GzillaByteSink stuff is precisely what I needed...

I'm glad...

> Being 3:00am, I think I ought to stop rambling and get some sleep
> before I get back to work. :)
> 
> Night all.

   Stepping back for a moment, I've noticed that a lot of the problems 
people are talking about on this list have to do with using simple.c as 
the "hello world" template for building apps. However, simple.c has a lot 
of things wrong with it:

+ #include "gtk.h" rather than #include <gtk/gtk.h>

+ signal handlers call gtk_exit (0) rather than gtk_main_quit ()

+ both signal handlers quit

+ no separate build process

   I've put a tentative hello world example up at
http://www.levien.com/gimp/hello.html .

One thing this example is sorely lacking is an autoconf script. I have no 
idea how to go about building one, but if anyone else here knows how and 
would be willing to contribute, I'd be happy to put it on the page.

Raph

From raph@acm.org
Received: (qmail 32622 invoked from network); 17 May 1997 05:19:49 -0000
Received: from callisto.hip.berkeley.edu (136.152.64.218)
  by mail2.redhat.com with SMTP; 17 May 1997 05:19:48 -0000
Received: (from raph@localhost) by callisto.hip.berkeley.edu (8.6.12/8.6.12) 
id WAA13328 for gtk-list@redhat.com; Fri, 16 May 1997 22:20:44 -0700
Message-ID: <337D4027.19822350@acm.org>
Date: Fri, 16 May 1997 22:20:39 -0700
From: Raph Levien <raph@acm.org>
X-Mailer: Mozilla 3.0 (X11; U; Linux 1.2.13 i586)
MIME-Version: 1.0
To: gtk-list@redhat.com
Subject: Gzilla 0.02
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hi gtk developers,

   The newest release of gzilla is available at:

      http://www.levien.com/gzilla-0.02.tar.gz

   It's still pretty "young" as Owen would say, but it's dramatically
more usable than the 0.01 release. Most importantly, it supports
clickable links and navigation. The flashing problem has been addressed
(although the redraw code is not perfect yet). The HTML layout is
steadily getting better, although still pretty minimal. I used it a
little this evening to surf the Web.

   One gtk+ issue: if clicking a button causes its state to go
insensitive (i.e. a function connected to the "clicked" signal handler
calls gtk_widget_set_sensitive on the button), then the background color
usually stays stuck in the prelight color. Similarly when the button
goes sensitive again - it stays in prelight until you pass the mouse
over it. You can see this in the behavior of the navigation buttons.

   Enjoy!

Raph

From otto@cu-online.com
Received: (qmail 26717 invoked from network); 19 May 1997 14:33:58 -0000
Received: from nimrod.redhat.com (otto@199.183.24.13)
  by mail2.redhat.com with SMTP; 19 May 1997 14:33:58 -0000
Received: (from otto@localhost)
	by nimrod.redhat.com (8.8.5/8.8.5) id KAA29725;
	Mon, 19 May 1997 10:33:35 -0400
Message-ID: <19970519103335.26202@redhat.com>
Date: Mon, 19 May 1997 10:33:35 -0400
From: Otto Hammersmith <otto@cu-online.com>
To: gtk-list@redhat.com, raph@acm.org
Subject: [patches] more tags for gzilla
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary=6c2NcOVqGQ03X4Wi
X-Mailer: Mutt 0.69


--6c2NcOVqGQ03X4Wi
Content-Type: text/plain; charset=us-ascii

Well, I spent some spare time this weekend writing some code for gzilla.
I should've been doing other things, but hey, it's my weekend, right?

This mail should have six patches attached to it.

gzilla-0.02-hr.patch: Added support for the <hr> tag.
gzilla-0.02-address.patch: Added <address> tag. (absolutely trivial)
gzilla-0.02-dl.patch: Added support for description lists.
gzilla-0.02-pre.patch: Added reasonable support for <pre> tags.
gzilla-0.02-jumbo1.patch: Everything up to this point in a single patch to 0.02.

Note that the <pre> tag support is mostly done, except that tabs
aren't handled properly.  There's a comment about it in the code... if
anyone can tell me the best way to solve it, I'd really like to know.

In any case, I noticed a few problems with gzilla while I was coding
this stuff.

Resize doesn't work at all.  When the window is resized, the text
remains the same size.  I presume you (Raph) already know that... just
thought I'd mention it.

Well, actually I suppose that was the only real problem I saw. :) It's
coming along quite nicely.. can't wait for the next code escape.

Thanks a bunch.

-- 
					-Otto.

From raph@acm.org
Received: (qmail 20900 invoked from network); 19 May 1997 21:50:04 -0000
Received: from blacklodge.c2.net (208.139.36.35)
  by mail2.redhat.com with SMTP; 19 May 1997 21:50:03 -0000
Received: (from raph@localhost) by blacklodge.c2.net (8.8.5/8.7.3) id OAA11112; 
Mon, 19 May 1997 14:51:03 -0700 (PDT)
Date: Mon, 19 May 1997 14:51:03 -0700 (PDT)
From: Raph Levien <raph@acm.org>
X-Sender: raph@blacklodge.c2.net
To: Otto Hammersmith <otto@cu-online.com>
cc: gtk-list@redhat.com
Subject: Re: [patches] more tags for gzilla
In-Reply-To: <19970519103335.26202@redhat.com>
Message-ID: <Pine.BSF.3.91.970519140528.26615A-100000@blacklodge.c2.net>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII



On Mon, 19 May 1997, Otto Hammersmith wrote:

> Well, I spent some spare time this weekend writing some code for gzilla.
> I should've been doing other things, but hey, it's my weekend, right?
> 
> This mail should have six patches attached to it.
> 
> gzilla-0.02-hr.patch: Added support for the <hr> tag.
> gzilla-0.02-address.patch: Added <address> tag. (absolutely trivial)
> gzilla-0.02-dl.patch: Added support for description lists.
> gzilla-0.02-pre.patch: Added reasonable support for <pre> tags.
> gzilla-0.02-jumbo1.patch: Everything up to this point in a single patch to 0.02.
> 
> Note that the <pre> tag support is mostly done, except that tabs
> aren't handled properly.  There's a comment about it in the code... if
> anyone can tell me the best way to solve it, I'd really like to know.

My original idea was to put the entire line, spaces and all, into a 
single add_text. This would ensure that the line doesn't get broken. For 
tabs (which, to be honest, I hadn't thought about), I'd expand them into 
spaces before handing the line to add_text.

I didn't understand your comment about spaces causing the thing to crash. 
If an add_text with embedded spaces caused a crash, it's probably just a 
silly bug somewhere. Spaces aren't treated any differently.

> In any case, I noticed a few problems with gzilla while I was coding
> this stuff.
> 
> Resize doesn't work at all.  When the window is resized, the text
> remains the same size.  I presume you (Raph) already know that... just
> thought I'd mention it.

Yeah, I know about this. It used to be that the size_alloc routine (the
one which attached to the size_alloc signal of the scrolledwindow) would
cause a gtk_page_set_width. However, gtk didn't like check_resize () being
called in the middle of a size_alloc operation, and, to register its
disapproval, would sometimes make the scrollbar state inconsistent.  Thus,
the best approach seems to be to defer the gtk_page_set_width call to an
idle routine, so as to let the original size_all finish its work first. 

A case can be made that _all_ check_resize calls should be deferred 
until the idle cycle, for performance reasons, but I'll worry about that 
later.

> Well, actually I suppose that was the only real problem I saw. :) It's
> coming along quite nicely.. can't wait for the next code escape.

It will probably be a week or so. I've got a paper that really needs to 
get written this week.

> Thanks a bunch.

Thanks for the patches. I'm happy to accept contributions, especially as 
it means less coding for me. Particular needs include text/plain and 
image/jpeg bytesinks. Neither of these is particularly difficult, and it 
should be possible to get a good start by looking over the text/html nad 
image/gif bytesinks.

The other major usability need is a cache. This one is tricker and should 
really only be undertaken by someone who knows the Web protocols and 
asynchronous network programming intimately.

> 					-Otto.

Raph

From otto@redhat.com
Received: (qmail 5400 invoked from network); 20 May 1997 03:22:34 -0000
Received: from nimrod.redhat.com (otto@199.183.24.13)
  by mail2.redhat.com with SMTP; 20 May 1997 03:22:34 -0000
Received: (from otto@localhost)
	by nimrod.redhat.com (8.8.5/8.8.5) id XAA14547;
	Mon, 19 May 1997 23:22:05 -0400
Message-ID: <19970519232204.21050@redhat.com>
Date: Mon, 19 May 1997 23:22:04 -0400
From: Otto Hammersmith <otto@redhat.com>
To: gtk-list@redhat.com, raph@acm.org
Subject: Re: [gtk-list] Re: [patches] more tags for gzilla
References: <19970519103335.26202@redhat.com> 
<Pine.BSF.3.91.970519140528.26615A-100000@blacklodge.c2.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-Mailer: Mutt 0.69
In-Reply-To: <Pine.BSF.3.91.970519140528.26615A-100000@blacklodge.c2.net>; 
from Raph Levien on Mon, May 19, 1997 at 02:51:03PM -0700

On Mon, May 19, 1997 at 02:51:03PM -0700, Raph Levien wrote:
> 
> On Mon, 19 May 1997, Otto Hammersmith wrote:
> 
> > Note that the <pre> tag support is mostly done, except that tabs
> > aren't handled properly.  There's a comment about it in the code... if
> > anyone can tell me the best way to solve it, I'd really like to know.
> 
> My original idea was to put the entire line, spaces and all, into a 
> single add_text. This would ensure that the line doesn't get broken. For 
> tabs (which, to be honest, I hadn't thought about), I'd expand them into 
> spaces before handing the line to add_text.

That's what I did, at first.  But it doesn't work...

gtk_page_add_text(page, "\n\t\tSome text");

The newline and tabs just end up disappearing.

Fortunately, the way things are parsed the any newline or tab in the
string is at the front, so they're easy to intercept.  So, when (I
forget which function) a newline is found, the function calls
gtk_page_linebreak()... the tricky part is the tabs.
 
> I didn't understand your comment about spaces causing the thing to crash. 
> If an add_text with embedded spaces caused a crash, it's probably just a 
> silly bug somewhere. Spaces aren't treated any differently.

When a tab is found, I tried using gtk_page_add_text(page, "       ")
but that caused seg faults on exit and when links were activated.

Multiple gtk_page_add_space()'s don't work either... only one space
ends up in the output.

I haven't really looked at the problem, since it wasn't that
important.  I presume it's some problem with a counter somewhere not
being updated as it should be... 

> > In any case, I noticed a few problems with gzilla while I was coding
> > this stuff.
> > 
> > Resize doesn't work at all.  When the window is resized, the text
> > remains the same size.  I presume you (Raph) already know that... just
> > thought I'd mention it.
> 
> Yeah, I know about this. It used to be that the size_alloc routine (the
> one which attached to the size_alloc signal of the scrolledwindow) would
> cause a gtk_page_set_width. However, gtk didn't like check_resize () being
> called in the middle of a size_alloc operation, and, to register its
> disapproval, would sometimes make the scrollbar state inconsistent.  Thus,
> the best approach seems to be to defer the gtk_page_set_width call to an
> idle routine, so as to let the original size_all finish its work first. 

Does this mean gtk_page_set_width can be used to expand the page after
it's first drawn?  I'll give it a try... there are some HTML I'd like
to use gzilla for (HTML source with Global) that's just a tad too big
for the default width.

> A case can be made that _all_ check_resize calls should be deferred 
> until the idle cycle, for performance reasons, but I'll worry about that 
> later.

Another nice thing would be to only call a redraw when the updates are
to text/graphics in the visable window... i.e., on a big page, there's
a lot of flicker due to data loading way down at the end of the page
off the viewable window.  Not sure how easy it would be to figure out
whether something is visable.

> > Well, actually I suppose that was the only real problem I saw. :) It's
> > coming along quite nicely.. can't wait for the next code escape.
> 
> It will probably be a week or so. I've got a paper that really needs to 
> get written this week.
> 
> > Thanks a bunch.
> 
> Thanks for the patches. I'm happy to accept contributions, especially as 
> it means less coding for me. Particular needs include text/plain and 
> image/jpeg bytesinks. Neither of these is particularly difficult, and it 
> should be possible to get a good start by looking over the text/html nad 
> image/gif bytesinks.

I should have some comments and ideas about the whole bytesink thing,
as soon as I can look at the code for a bit uninterrupted and see how
they fit in with my ideas for the filemanager.

> The other major usability need is a cache. This one is tricker and should 
> really only be undertaken by someone who knows the Web protocols and 
> asynchronous network programming intimately.

I've had some ideas on this, somewhat related to my thoughts on the
bytesink-similar constructs.... more to come.

I don't suppose you'd like to run the code through indent before the
next release?  I did it to a couple files to make it easier to read,
but futzed things around to make the patches minimal.

-- 
					-Otto.

From jmacd@CS.Berkeley.EDU
Received: (qmail 23640 invoked from network); 20 May 1997 11:56:44 -0000
Received: from paris.CS.Berkeley.EDU (128.32.34.47)
  by mail2.redhat.com with SMTP; 20 May 1997 11:56:43 -0000
Received: from paris.CS.Berkeley.EDU (localhost.Berkeley.EDU [127.0.0.1]) 
by paris.CS.Berkeley.EDU (8.8.3/8.8.2) with ESMTP id EAA22976 for 
<gtk-list@redhat.com>; Tue, 20 May 1997 04:56:20 -0700 (PDT)
From: Josh MacDonald <jmacd@CS.Berkeley.EDU>
Message-Id: <199705201156.EAA22976@paris.CS.Berkeley.EDU>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: [patches] more tags for gzilla 
In-reply-to: Your message of "Mon, 19 May 1997 23:22:04 EDT."
             <19970519232204.21050@redhat.com> 
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-ID: <22969.864129376.1@paris.CS.Berkeley.EDU>
Date: Tue, 20 May 1997 04:56:18 -0700

As I've said in the past, text formatting like this isn't easy.
Handling tabs is not a trivial matter, and was why I suggested
people try and share code with the text widget.  

You want tabs to work when you see:

	this text follows a tab.
blah	so does this, and it's aligned with the above despite the
	word "blah" preceding the tab.

I worked on the text widget few days ago and discovered why everyone 
had come to the conclusion that it totally didn't work.  The last 
version I gave Pete, as I said, worked (with a few things I knew
didn't work, but at least it didn't core dump).  Pete saw fit to
make a quick change without testing it between my last version 
which totally broke things.  I'll mail a version out sometime in 
the next few weeks that works.  In the interest of form over function,
the modifications I recently made were to disable all editing (because
Pete broke it) and make it support background pixmaps which scroll 
with the text (this is, of course, far more important than editing,
right?).

People working on a HTML browser without consulting the text widget
are throwing away nearly 3500 lines devoted to text formatting, 
drawing, and exposure.  It'll probably grow another 1500 by the
time I finish h-scrolling and selection.  It's well laid out.  I figure
it wouldn't be very difficult even, to allow images or child widgets
to be inserted in the text.  The only hard part about an HTML widget
from my perspective, using the text widget as a base, is handling
aligned images (a more general description would be, handling "flows"
in the FrameMaker sense). The text widget assumes there are lines of
text, where each element is a member of some font with known 
dimensions.  Using this abstraction, you can make embedded widgets
a special case--a unique element in a unique font with the correct
dimensions.  The problem is that HTML doesn't always work this way,
because you have images aside a column of text (or, more generally,
two columns of text or any other "flow").  I haven't come up
with the solution to this little complication, but I suspect there
is one--I haven't thought about it much (because its not required
by the text widget..  its required for a word processor or web browser).

Throwing away all that code is not, in my opinion, very wise.  Not
only is there a lot to do with simply drawing the text, there's a
lot more to do with efficiently caching the results of the computation
and being able to do reexposures and scrolling quickly.

>From the looks of it, you're charging in without thinking too much
about the design.  Doing so, you're likely to miss much more than
tabs.  I'm not trying to insult you guys, I'm just urging you to 
consider rethinking your approach before you get too commited.

Design is critical.  I assure you there's a 10x difference in the
complexity and line-count between a poorly and well-written web
browser.  Don't start with the assumption that since the goal is
to end up with something small you should use a small or incomplete
design (what would Brooks say about how much time to spend designing?).

-josh

> On Mon, May 19, 1997 at 02:51:03PM -0700, Raph Levien wrote:
> > 
> > On Mon, 19 May 1997, Otto Hammersmith wrote:
> > 
> > > Note that the <pre> tag support is mostly done, except that tabs
> > > aren't handled properly.  There's a comment about it in the code... if
> > > anyone can tell me the best way to solve it, I'd really like to know.
> > 
> > My original idea was to put the entire line, spaces and all, into a 
> > single add_text. This would ensure that the line doesn't get broken. For 
> > tabs (which, to be honest, I hadn't thought about), I'd expand them into 
> > spaces before handing the line to add_text.
> 
> That's what I did, at first.  But it doesn't work...
> 
> gtk_page_add_text(page, "\n\t\tSome text");
> 
> The newline and tabs just end up disappearing.
> 
> Fortunately, the way things are parsed the any newline or tab in the
> string is at the front, so they're easy to intercept.  So, when (I
> forget which function) a newline is found, the function calls
> gtk_page_linebreak()... the tricky part is the tabs.
>  
> > I didn't understand your comment about spaces causing the thing to crash. 
> > If an add_text with embedded spaces caused a crash, it's probably just a 
> > silly bug somewhere. Spaces aren't treated any differently.
> 
> When a tab is found, I tried using gtk_page_add_text(page, "       ")
> but that caused seg faults on exit and when links were activated.
> 
> Multiple gtk_page_add_space()'s don't work either... only one space
> ends up in the output.
> 
> I haven't really looked at the problem, since it wasn't that
> important.  I presume it's some problem with a counter somewhere not
> being updated as it should be... 
> 
> > > In any case, I noticed a few problems with gzilla while I was coding
> > > this stuff.
> > > 
> > > Resize doesn't work at all.  When the window is resized, the text
> > > remains the same size.  I presume you (Raph) already know that... just
> > > thought I'd mention it.
> > 
> > Yeah, I know about this. It used to be that the size_alloc routine (the
> > one which attached to the size_alloc signal of the scrolledwindow) would
> > cause a gtk_page_set_width. However, gtk didn't like check_resize () being
> > called in the middle of a size_alloc operation, and, to register its
> > disapproval, would sometimes make the scrollbar state inconsistent.  Thus,
> > the best approach seems to be to defer the gtk_page_set_width call to an
> > idle routine, so as to let the original size_all finish its work first. 
> 
> Does this mean gtk_page_set_width can be used to expand the page after
> it's first drawn?  I'll give it a try... there are some HTML I'd like
> to use gzilla for (HTML source with Global) that's just a tad too big
> for the default width.
> 
> > A case can be made that _all_ check_resize calls should be deferred 
> > until the idle cycle, for performance reasons, but I'll worry about that 
> > later.
> 
> Another nice thing would be to only call a redraw when the updates are
> to text/graphics in the visable window... i.e., on a big page, there's
> a lot of flicker due to data loading way down at the end of the page
> off the viewable window.  Not sure how easy it would be to figure out
> whether something is visable.
> 
> > > Well, actually I suppose that was the only real problem I saw. :) It's
> > > coming along quite nicely.. can't wait for the next code escape.
> > 
> > It will probably be a week or so. I've got a paper that really needs to 
> > get written this week.
> > 
> > > Thanks a bunch.
> > 
> > Thanks for the patches. I'm happy to accept contributions, especially as 
> > it means less coding for me. Particular needs include text/plain and 
> > image/jpeg bytesinks. Neither of these is particularly difficult, and it 
> > should be possible to get a good start by looking over the text/html nad 
> > image/gif bytesinks.
> 
> I should have some comments and ideas about the whole bytesink thing,
> as soon as I can look at the code for a bit uninterrupted and see how
> they fit in with my ideas for the filemanager.
> 
> > The other major usability need is a cache. This one is tricker and should 
> > really only be undertaken by someone who knows the Web protocols and 
> > asynchronous network programming intimately.
> 
> I've had some ideas on this, somewhat related to my thoughts on the
> bytesink-similar constructs.... more to come.
> 
> I don't suppose you'd like to run the code through indent before the
> next release?  I did it to a couple files to make it easier to read,
> but futzed things around to make the patches minimal.
> 
> -- 
> 					-Otto.
> 
> --
> To unsubscribe: mail -s unsubscribe gtk-list-request@redhat.com < /dev/null
> 

From raph@acm.org
Received: (qmail 1735 invoked from network); 22 May 1997 18:08:59 -0000
Received: from blacklodge.c2.net (208.139.36.35)
  by mail2.redhat.com with SMTP; 22 May 1997 18:08:59 -0000
Received: (from raph@localhost) by blacklodge.c2.net (8.8.5/8.7.3) 
id LAA25945; Thu, 22 May 1997 11:10:13 -0700 (PDT)
Date: Thu, 22 May 1997 11:10:12 -0700 (PDT)
From: Raph Levien <raph@acm.org>
X-Sender: raph@blacklodge.c2.net
To: Josh MacDonald <jmacd@CS.Berkeley.EDU>
cc: gtk-list@redhat.com
Subject: gtk_text vs. gtk_page
In-Reply-To: <199705201156.EAA22976@paris.CS.Berkeley.EDU>
Message-ID: <Pine.BSF.3.91.970522103114.23956A-100000@blacklodge.c2.net>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII



On Tue, 20 May 1997, Josh MacDonald wrote:

> As I've said in the past, text formatting like this isn't easy.
> Handling tabs is not a trivial matter, and was why I suggested
> people try and share code with the text widget.  
> 
> You want tabs to work when you see:
> 
> 	this text follows a tab.
> blah	so does this, and it's aligned with the above despite the
> 	word "blah" preceding the tab.

Actually, for Netscape-style HTML formatting, you don't ever need tabs 
with proportional fonts - you can always do the expansion into spaces 
before passing the text to the text widget.

> I worked on the text widget few days ago and discovered why everyone 
> had come to the conclusion that it totally didn't work.  The last 
> version I gave Pete, as I said, worked (with a few things I knew
> didn't work, but at least it didn't core dump).  Pete saw fit to
> make a quick change without testing it between my last version 
> which totally broke things.  I'll mail a version out sometime in 
> the next few weeks that works.  In the interest of form over function,
> the modifications I recently made were to disable all editing (because
> Pete broke it) and make it support background pixmaps which scroll 
> with the text (this is, of course, far more important than editing,
> right?).
> 
> People working on a HTML browser without consulting the text widget
> are throwing away nearly 3500 lines devoted to text formatting, 
> drawing, and exposure.  It'll probably grow another 1500 by the
> time I finish h-scrolling and selection.  It's well laid out.  I figure
> it wouldn't be very difficult even, to allow images or child widgets
> to be inserted in the text.  The only hard part about an HTML widget
> from my perspective, using the text widget as a base, is handling
> aligned images (a more general description would be, handling "flows"
> in the FrameMaker sense). The text widget assumes there are lines of
> text, where each element is a member of some font with known 
> dimensions.  Using this abstraction, you can make embedded widgets
> a special case--a unique element in a unique font with the correct
> dimensions.  The problem is that HTML doesn't always work this way,
> because you have images aside a column of text (or, more generally,
> two columns of text or any other "flow").  I haven't come up
> with the solution to this little complication, but I suspect there
> is one--I haven't thought about it much (because its not required
> by the text widget..  its required for a word processor or web browser).
>
> Throwing away all that code is not, in my opinion, very wise.  Not
> only is there a lot to do with simply drawing the text, there's a
> lot more to do with efficiently caching the results of the computation
> and being able to do reexposures and scrolling quickly.
> 
> >From the looks of it, you're charging in without thinking too much
> about the design.  Doing so, you're likely to miss much more than
> tabs.  I'm not trying to insult you guys, I'm just urging you to 
> consider rethinking your approach before you get too commited.
> 
> Design is critical.  I assure you there's a 10x difference in the
> complexity and line-count between a poorly and well-written web
> browser.  Don't start with the assumption that since the goal is
> to end up with something small you should use a small or incomplete
> design (what would Brooks say about how much time to spend designing?).

Ok, I sense that a gauntlet has been thrown here.

I agree that studying the gtk_text widget is essential for anyone trying
to build a Web browser. It would also be great if the gtk_text and
gtk_page widgets got unified, to avoid proliferation of widgets that do
similar things. However, at this point, I'm still not completely convinced
that's the way to go. 

Let's phrase the question in somewhat objective terms: would a unified 
gtk_text/gtk_page widget (a) have fewer lines of code and (b) have 
adequate features and performance for Web browsing? I'm not sure, but 
here are some thoughts.

First, the gtk_page widget, as currently implemented, has quite a few
features that the gtk_text widget, as currently implemented (at least in
my copy of the 0.99.9 sources) lacks. First and foremost is support for
embedded widgets. It also has support for real line wraps, indentation
(sensitive to both line and paragraph breaks), variable amounts of spacing
in both horizontal and vertical dimensions, a set_width method for
controlling the set width, and clickable links. Further, in combination
with scrolledwindows it implements horizontal scrolling. 

In the other direction (and I'll give the benefit of a doubt regarding
incompletely implemented features), gtk_text implements editing,
selection, and a scrollable background pixmap. Selection is definitely
useful for a Web browser, but editing is of questionable value. I suppose 
the background pixmap is required for full Netscape HTML compliance, but 
it's pretty low on my feature list.

gtk_page is 1500 lines of code, gtk_text is 3500. I think one of the
reasons gtk_page is more concise is its choice of a simpler data structure
to represent the page. gtk_page uses an array of lines, each of which is
an array of words, while gtk_text uses a combination of a gapped text
buffer, a doubly linked list of text properties, and a line start cache.
I'm not claiming that the gtk_page design is better, just that it's 
completely appropriate for the goals of gzilla.

You mention throwing away code to do text formatting, drawing, and
exposure. I played with the gtk_text widget demo in testgtk, and found it
to be far from smooth. In particular, inserting characters caused the
entire widget to flash. The gtk_page widget does not have that problem. 
(currently, child widget resizes _do_ cause the widget to flash, but that
will be fixed by the next code escape). Thus, you're going to have to make
a stronger case that gtk_text's handling of these issues is superior to
gtk_page's. I'm willing to make the claim that the exposure processing of 
gtk_page is about as good as you can get.

Also, adding floating images would be pretty straightforward. Basically, 
you'd just add {left,right}_float_{width,height} fields to the GtkPageLine
data structure. The width fields have obvious meaning, and the height 
field specifies the height of the rectangle relative to the top of the 
line. Thus, the routines that maintain the invariants of the GtkPageLine 
data structure would subtract the line height from the previous height 
field, saturating at zero. Then, the routine that handles indentation and 
alignment would look at the height fields, and if non-zero, treat the 
width fields as extra indentation.

I'll make the case that such a change is particularly easy to do in 
gtk_page because the data structure is organized around the geometric 
layout of the page. gtk_text, on the other hand, is organized around the 
structure of the data. It's certainly possible to do everything that you 
can do in gtk_page, but it requires at least another level of 
indirection. Thus, I think there's a significant chance that adding all 
of gtk_page's features to gtk_text will cause the code to grow more than 
the size of gtk_page itself.

It may look like I'm jumping into the code of gzilla without having done 
my design homework, but that's simply not true. I did a Java-based chat 
server that had its own small Web browser in it. The Java display 
engine was the prototype for gtk_page. I also thought pretty seriously 
about how to implement all the text formatting I needed before committing 
to the design.

The one thing I did jump into head first was GTK+ programming. It's been 
pretty good, but I feel I've definitely come up against its limitations 
(many of which are in the size negotiation mechanism, which I think could 
use some serious work). My original plan was to support tables through 
the gtk_table mechanism, but now I think there's a good chance that this 
would stress GTK+'s poor size negotation well past the breaking point.

There is one serious misfeature in gtk_page: because it creates an X
window to hold the entire page, the size of the page is limited to the
maximum size of an X window: 32767 pixels. gtk_text doesn't have this
problem. However, I'm concerned about the aesthetics of scrolling when
such a widget has embedded widgets (with their own windows). What would
happen is that the page widget would do a pixmap-based scroll, which would
be fine. However, some of the data would scroll to under the child
widget's windows, and be lost. Then, (using size_allocate, I suppose), 
the child windows would be moved, causing expose events to go through the 
X server, for the areas that the child windows uncovered. These would 
then be handled by the page widget. As a consequence, the embedded 
widgets would appear to lag behind the text on the page, and also the 
text near widgets would flicker. This just wouldn't be cool.

I'm not sure what the best solution is. I'm still open to ideas.

Raph

From jmacd@CS.Berkeley.EDU
Received: (qmail 28835 invoked from network); 22 May 1997 20:43:25 -0000
Received: from paris.CS.Berkeley.EDU (128.32.34.47)
  by mail2.redhat.com with SMTP; 22 May 1997 20:43:24 -0000
Received: from paris.CS.Berkeley.EDU (localhost.Berkeley.EDU [127.0.0.1]) 
by paris.CS.Berkeley.EDU (8.8.3/8.8.2) with ESMTP id NAA27156; 
Thu, 22 May 1997 13:42:40 -0700 (PDT)
From: Josh MacDonald <jmacd@CS.Berkeley.EDU>
Message-Id: <199705222042.NAA27156@paris.CS.Berkeley.EDU>
To: Raph Levien <raph@acm.org>
cc: gtk-list@redhat.com
Subject: Re: gtk_text vs. gtk_page 
In-reply-to: Your message of "Thu, 22 May 1997 11:10:12 PDT."
             <Pine.BSF.3.91.970522103114.23956A-100000@blacklodge.c2.net> 
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-ID: <27149.864333758.1@paris.CS.Berkeley.EDU>
Date: Thu, 22 May 1997 13:42:39 -0700

> First, the gtk_page widget, as currently implemented, has quite a few
> features that the gtk_text widget, as currently implemented (at least in
> my copy of the 0.99.9 sources) lacks. First and foremost is support for
> embedded widgets. It also has support for real line wraps, indentation
> (sensitive to both line and paragraph breaks), variable amounts of spacing
> in both horizontal and vertical dimensions, a set_width method for
> controlling the set width, and clickable links. Further, in combination
> with scrolledwindows it implements horizontal scrolling. 

A quick comment.  I guess I wasn't subtle enough in my last mail.  I hate
to do this to Pete.  Pete broke the text widget VERY BADLY since the last
version I gave him.  This is why it crashed when newlines were inserted.
This is why it redraws and recomputes everything when you run your test.
When I fix it once again, it won't redraw the whole widget at each insertion.
Also, selection doesn't work yet.  I'll get out a new version sometime.
I think I'll also try to implement embedded widgets, then we can decide
how the performance is.

Also, have you proposed how to fix the size negotiation stuff?

-josh

From amundson@cs.umn.edu
Received: (qmail 27727 invoked from network); 1 Jun 1997 07:41:15 -0000
Received: from augustus-148.cs.umn.edu (HELO augustus-239.cs.umn.edu) 
(root@160.94.148.171)
  by mail2.redhat.com with SMTP; 1 Jun 1997 07:41:14 -0000
Received: from caesar.cs.umn.edu (amundson@caesar.cs.umn.edu [128.101.230.60])
	by augustus-239.cs.umn.edu (8.8.5/8.8.5) with ESMTP id CAA09476
	for <gtk-list@redhat.com>; Sun, 1 Jun 1997 02:40:46 -0500 (CDT)
Received: from localhost (amundson@localhost) by caesar.cs.umn.edu (8.8.3/8.8.0) 
with SMTP id CAA03393 for <gtk-list@redhat.com>; Sun, 1 Jun 1997 02:40:44 -0500 (CDT)
X-Authentication-Warning: caesar.cs.umn.edu: amundson owned process doing -bs
Date: Sun, 1 Jun 1997 02:40:44 -0500 (CDT)
From: Shawn T Amundson <amundson@cs.umn.edu>
To: GTK Mailing List <gtk-list@redhat.com>
Subject: gtkcalendar-0.03 available
Message-ID: <Pine.GSO.3.95q.970601022048.3333A-100000@caesar.cs.umn.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII


This is just for those curious developers, because I told
Otto I'd put it up last Monday. ;-)  It may also help in 
some of the relief and borderwidth discussions as an example.

ftp://ftp.cs.umn.edu/dept/users/amundson/gtkcalendar/gtkcalendar-0.02.tar.gz

It is obviously in flux as I'm not sure how to do some of 
the things I have to implement in order to use it for Aorta.
The TODO list is a good list of where I want to go with the
widget.

gtkflattogglebutton.[ch] don't do anything because
the method of drawing the raised relief in gtktogglebutton is 
inconsistant with that of gtkbutton.

Suggestions/Comments/Code welcome.

--
Shawn T. Amundson		University of Minnesota
Systems Administration	 	Computer Science System Staff
amundson@cs.umn.edu	  	http://www.cs.umn.edu/~amundson/     	

WARNING:  This line TOXIC to health; please do not read this line.

From raph@acm.org
Received: (qmail 13350 invoked from network); 2 Jun 1997 19:11:08 -0000
Received: from callisto.hip.berkeley.edu (136.152.64.218)
  by mail2.redhat.com with SMTP; 2 Jun 1997 19:11:01 -0000
Received: (from raph@localhost) by callisto.hip.berkeley.edu (8.6.12/8.6.12) 
id MAA31286 for gtk-list@redhat.com; Mon, 2 Jun 1997 12:11:32 -0700
Message-ID: <33931ADF.E84B9D0@acm.org>
Date: Mon, 02 Jun 1997 12:11:27 -0700
From: Raph Levien <raph@acm.org>
X-Mailer: Mozilla 3.0 (X11; U; Linux 1.2.13 i586)
MIME-Version: 1.0
To: gtk-list@redhat.com
Subject: More gzilla/gtk issues
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hi gtk developers,

   I'm continuing to think about the issues involved in implementing
gzilla smoothly on gtk.

   I've decided that the page display widget should do its own
scrolling, rather than creating a large window and relying on
scrolledwindow to do the scrolling. The issue here is the 32767 pixel
limit on the height of the window. If I use a scrolledwindow, there just
isn't any good way of getting around it. I am still concerned about
aesthetics problems with doing the scrolling inside the page display
widget (most importantly, embedded widgets without the NO_WINDOW
property will lag slightly while scrolling, and will also cause some
flashing of the underlying text). However, this problem has two
solutions which preserve the interface to the page display widget. Thus,
it's possible to agree on an interface now and possibly fiddle with the
implementation later.

   The first possiblity (suggested by Owen Taylor) is to put each
paragraph in its own window. The page display widget would then juggle
these windows, only displaying the ones that were actually visible.
Scrolling would be done by moving each of the windows individually.

   The second possibility is to extend the gtk infrastructure to support
events in NO_WINDOW widgets, and retrofit all widgets that would be
included in a page to be NO_WINDOW. This requires a significant change
to all containers: they need to be able to dispatch mouse and keyboard
events to their child widgets. This is a fairly radical change to gtk,
but might be worthwhile anyway for the performance increase.

   But, as I said, it's definitely possible to go forward without
implementing either of these alternatives.

   Now that I've decided to redo a large part of the page display
widget, it reopens the possibility of merging gtk_page and gtk_text. The
advantages are clear. However, there are certain disadvantages as well.
For one, we'd have to coordinate between the two major developers of the
widget. What I think would work best is for Josh to polish it to the
point that he described a week or so ago, then hand it over to me for
adding all of the Web-specific stuff. Otherwise, I think we'd be
stepping on each other's toes too much. It would also help if Josh gave
me some guidelines on how new attributes should be added.

   A second disadvantage is that, to support all of the Web extensions,
the interface would have to change quite dramatically. We could either
go back and change all the code which uses gtk_text, or we could retain
a backwards compatible interface in addition to the extended one. This
may not be a big problem, because the only code that seems to use
gtk_text now is install.c in the Gimp.

   Finally, the widget would be huge. It's easy to imagine that it could
hit 10 kloc by the time all the floating images, alignment and spacing
options, etc., are added. It may be that two smaller widgets would be
more manageable than one large one, even if the total number of lines of
code comes out a little bigger.

   I'll leave the choice to Josh. If he agrees to hand over a reasonably
full-featured gtk_text widget to be extended for Web page display, I'll
scrap gtk_page and retrofit gtk_text to do what I need. Otherwise, I'll
just continue developing gtk_page.

   The next point is size negotiation. There are basically two problems
with size negotiation in the current gtk. The first is that check_resize
often forces a lot more work than really needs to be done. The second is
support for wrapping layouts in general (more on this later).

   I'm still not sure whether check_resize presents a real problem. The
disable_resize / enable_resize hack actually works pretty well. If not,
it should be possible for the page display widget to override
need_resize to add the child widget to a queue, and set an idle handler
which will resize only the child widgets that are in the queue. Perhaps
the same change should be made to boxes and tables as well, so as to
avoid the need for the disable_resize / enable_resize hack altogether.

   In any case, this doesn't bother me very much now. It's possible to
fix without changing any of the interfaces, and in any case it's just a
performance bug.

   The next big decision is how to handle tables. The original design
for gzilla called for a modular structure corresponding exactly with the
gtk widget hierarchy. Thus, a table would be implemented using an
embedded gtk_table widget, and each of the table entries would be a
child widget of the gtk_table. However, as clean as this idea seems
conceptually, in practice there would be a lot of problems:

* Tables would be limited to 32767 pixels in size

* The size negotiation of gtk is inadequate to handle wrapped text

* In the most straightforward implementation, each table entry would
have its own window. That could be a _lot_ of windows, which could be a
big performance hit (on my system, testgtk takes about 2 seconds to pop
up 400 buttons in the scrolledwindow test).

* The gtk_table widget doesn't draw borders, and would have to be
extended to do so

   I think I've pretty much figured out how to fix the size negotiation.
Just to recap, gtk's size negotiation is based around the size_request
and size_allocate methods. The size_request method is called as part of
the initialization phase of a widget's lifecycle. It returns a "minimum
comfortable size" for the widget. Containers generally try to allocate
at least this much space to their child widgets. Conversely,
size_allocate is called by the container to tell the child what size it
actually is. This is called at least once in the initialization phase,
and also whenever the container gets rearranged (for example, if the
window is resized).

   Whenever a child widget wants to resize, it calls
gtk_container_check_resize on its parent. This, in turn, causes
size_request to get called again on the child, then (after the container
is rearranged), size_allocate and then draw on the child. Most of the
time, size_allocate clears the widget, so draw is drawing on blank
pixels. Thus, check_resize causes a total redraw of the widget, whether
the size has actually changed or not. This is why many of the widgets do
a check_resize whenever their state changes - it's the easiest way to
force a total repaint, even though it may cause serious performance
implications.

   Ok, now for some ideas on how to extend this to "wrapping widgets."
Obviously, the way gtk_page wraps text makes it a wrapping widget, but
there are plenty of other possibilites. For example, menus may be
designed to take more than one line if there's not enough horizontal
space for the whole thing. If the gimp's toolbar was defined as a
wrapped collection of rectangles, it could reshape to 21x1, 3x7, 7x3, or
1x21, depending on the user's preference. So this may be something that
belongs in the gtk generally.

   The main property of wrapping widgets is that their requisition
height depends on their allocation width. If you make the window wider,
it will (usually) become less deep. In gtk's current size negotiation,
the requisition depends only on the internal state of the widget.

   My solution to this problem is to add another method to gtk_widget
called wrap_allocate. It takes a width as an argument, and returns a
height. For a container to do a size_allocate, it will (in general) want
to determine widths for each of its children, call wrap_allocate on each
of the children using this width, then do its usual size allocation,
treating the returned height as the child widget's requisition.

   This still leaves the question open of how the container determines
the width of the child widget. For some containers (vbox), it's pretty
simple, but for tables it needs to be a bit more complex. For example,
consider a table with two columns. In the first column of each row is a
single word. In the second column of each row is a good-sized paragraph.
A good table layout would give a hundred pixels or so to the first
column, and the rest of the window to the second. But how does the table
widget know to do this? Certainly, there's not enough information from
just the size_request call. My solution is to add a gtk_wrap_request
method to gtk_widget, which works just like size_request, but returns
both a "minimum comfortable width" and a "maximum comfortable width".
For wrapped text such as a web page, the minimum comfortable width is
the width of the narrowest unbreakable word (or embedded widget), and
the maximum comfortable width is the width of the widest paragraph if
there are no line breaks at all. Both of these are pretty
straightforward and efficient to calculate.

   This extra method makes table layout a bit more tricky, but it's not
too bad. Basically, it needs to allocate all of the minimum widths
first. Of the remaining space, it tries to fulfill the maximum width
requests of each of the columns, in order of increasing
(maximum-minimum) width. Finally, as soon as it reaches a column for
which it's not capable of filling the maximum width request, or if it
fills all of them, it distributes the extra space among the remaining
columns, using the same algorithm it already uses (i.e. if the expand
flags are set, it will distribute it evenly across all columns).

   In my opinion, this will get table layout exactly right. Have any of
you noticed how sloppy Netscape's table layout is (at least on Unix)? It
almost always causes the set width to exceed the window size, which
causes a horizontal scrollbar. I'm confident my approach will avoid this
problem.

   The changes to gtk are nontrivial but not too bad. The default
implementation for wrap_allocate should just be to return the
requisition height. Similarly, wrap_request just returns the requisition
width as both the minimum and maximum values. Thus, non-wrapping widgets
will not have to change at all. Containers will have to change, but not
too dramatically.

   I'm pretty comfortable with this recommendation, but am not sure if
the rest of the gtk community is willing to accept the extra complexity.
It's likely that wrapping widgets would only be heavily used in gzilla.
It wouldn't be too hard to just do tables within the page widget, and
I'd also avoid the 32767 pixel limit and thousands-of-teeny-windows
performance bug. But I'd like to avoid the duplication of code with
gtktable.c if it's at all practical.

   Again, I'm open to ideas.

   Finally, I've been experimenting with antialised text using t1lib.
The initial results are encouraging, but it's going to need a bit more
work. For one, t1lib's antialiasing code is very slow. It's also stuck
at 2x antialiasing, while I think the extra smoothness of 4x is worth
it. In any case, I sent some of my fast antialising code to Reiner, so
it's likely that a future release of t1lib will contain some really
spiffy antialising code. In any case, it's fun to play with.

Raph

From otto@redhat.com
Received: (qmail 31677 invoked from network); 3 Jun 1997 15:50:50 -0000
Received: from nimrod.redhat.com (otto@199.183.24.13)
  by mail2.redhat.com with SMTP; 3 Jun 1997 15:50:49 -0000
Received: (from otto@localhost)
	by nimrod.redhat.com (8.8.5/8.8.5) id LAA00405;
	Tue, 3 Jun 1997 11:50:37 -0400
Message-ID: <19970603115037.31665@redhat.com>
Date: Tue, 3 Jun 1997 11:50:37 -0400
From: Otto Hammersmith <otto@redhat.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] More gzilla/gtk issues
References: <33931ADF.E84B9D0@acm.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-Mailer: Mutt 0.74
In-Reply-To: <33931ADF.E84B9D0@acm.org>; from Raph Levien on Mon, Jun 02, 1997 
at 12:11:27PM -0700

On Mon, Jun 02, 1997 at 12:11:27PM -0700, Raph Levien wrote:
> 
[lots of thoughts snipped]
> 
>    I'm pretty comfortable with this recommendation, but am not sure if
> the rest of the gtk community is willing to accept the extra complexity.
> It's likely that wrapping widgets would only be heavily used in gzilla.
> It wouldn't be too hard to just do tables within the page widget, and
> I'd also avoid the 32767 pixel limit and thousands-of-teeny-windows
> performance bug. But I'd like to avoid the duplication of code with
> gtktable.c if it's at all practical.

I could also use some widget-wrapping stuff in gtk.  I haven't touched
any of that stuff with my filemanager, just yet... but I had intended
on writing something of the sort into the iconbox widget.

Plus, I like the idea of having menu bars that wrap appropriately, if
I feel like making a window smaller than it wants to be. :)
 
As for the specific implementation... I haven't given it much thought,
but it seems what you suggest is reasonably thought out.  I can't
really think of a good way to deal with it, without creating dozens of
new widgets for each special case. (the idea of having all the
wrapping code in one place gives me the warm fuzzies... I don't want
to debug the same code in a dozen different places)

>    Finally, I've been experimenting with antialised text using t1lib.
> The initial results are encouraging, but it's going to need a bit more
> work. For one, t1lib's antialiasing code is very slow. It's also stuck
> at 2x antialiasing, while I think the extra smoothness of 4x is worth
> it. In any case, I sent some of my fast antialising code to Reiner, so
> it's likely that a future release of t1lib will contain some really
> spiffy antialising code. In any case, it's fun to play with.

Ohh!  Finally, a web browser with antialised fonts... I'm truly sick
of the lousy job Netscape does. :)

-- 
					-Otto.

From raph@acm.org
Received: (qmail 20755 invoked from network); 5 Jun 1997 18:51:29 -0000
Received: from callisto.hip.berkeley.edu (136.152.64.218)
  by mail2.redhat.com with SMTP; 5 Jun 1997 18:51:27 -0000
Received: (from raph@localhost) by callisto.hip.berkeley.edu (8.6.12/8.6.12) 
id LAA06500 for gtk-list@redhat.com; Thu, 5 Jun 1997 11:52:50 -0700
Message-ID: <33970AF9.1A4858FF@acm.org>
Date: Thu, 05 Jun 1997 11:52:41 -0700
From: Raph Levien <raph@acm.org>
X-Mailer: Mozilla 3.0 (X11; U; Linux 1.2.13 i586)
MIME-Version: 1.0
To: gtk-list@redhat.com
Subject: gzilla 0.03
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Gzilla 0.03 is now up on the gzilla Web page:

   http://www.levien.com/gzilla/

It's definitely still alpha code, but it's coming along quite nicely.
Try it out and let me know what you think.

Raph

From raph@acm.org
Received: (qmail 26481 invoked from network); 24 Jun 1997 05:02:15 -0000
Received: from blacklodge.c2.net (208.139.36.35)
  by mail2.redhat.com with SMTP; 24 Jun 1997 05:02:15 -0000
Received: (from raph@localhost) by blacklodge.c2.net (8.8.5/8.7.3) 
id WAA17948; Mon, 23 Jun 1997 22:02:13 -0700 (PDT)
Date: Mon, 23 Jun 1997 22:02:13 -0700 (PDT)
From: Raph Levien <raph@acm.org>
X-Sender: raph@blacklodge.c2.net
To: gtk-list@redhat.com
Subject: Gzilla widget set design proposal
Message-ID: <Pine.BSF.3.91.970623215809.17798A-100000@blacklodge.c2.net>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

Here's the design proposal for the gzilla widget set. I think overall it's
pretty good, although I'm sure it's going to need some tinkering before
it's finished. 

Raph


Preliminary design for Gzilla widget set

23 June 1997
Raph Levien <raph@acm.org>

   I've decided that Gzilla will contain its own widget set
specialized for the display of Web pages. The original design for
Gzilla was to use GTK widgets entirely for this purpose, but now it
seems clear that this approach is not adequate. Here are the problems
I see:

1. GTK widgets inherit the 32767 pixel size limitation from X11. Since
Web pages can easily exceed this limit, it's not feasible to use a GTK
widget to represent the Web page (although this is what gzilla
currently does).

For the next two, I'm assuming that tables will be constructed with a
table widget (analogous to gtk_table) , and that each entry in the
table will also be a widget. This approach seems like a really good
idea from a modularity standpoint.

2. For GTK child widgets to get mouse events, they need to have their
own X11 windows. Thus, a good sized table could make hundreds or
thousands of these, probably swamping the X server. (Judging from the
scrolledwindow test in testgtk.c, the overhead for window creation is
in the 10ms range).

3. GTK size negotiation doesn't support wrapped text. In other words,
there's no way for the height of the widget to depend on the width.

4. Performance. When dealing dynamically with large numbers of child
widgets, GTK containers currently _suck_. Basically, they redraw the
entire container every time anything changes. In fairness, these
containers could almost certainly be tuned for better performance.
However, two issues remain: gtk_object method dispatch overhead, and
visibility (if changes happen outside the visible area, then
repainting can be avoided altogether).

   Josh MacDonald's gtk_text widget deals with some of these issues,
but cannot be extended in modular fashion to handle things like
tables, and also cannot cleanly support GTK child widgets.

   Thus, I propose a new Gzilla widget set to function alongside the
GTK widget set. Gzilla widgets will be extremely specialized - they
will lack all features not required for Web page display (I have in
mind grabs, focus, keyboard accelerators, key events, selections, and
connectable signals, leaving only size negotiation, exposure, and
mouse events). If any of these features are desired, do it in a GTK
widget and embed it in a Gzilla widget that contains embedded GTK
widgets. Similarly, there will be a scrolledwindow that is both a GTK
widget and a container for Gzilla widgets. This widget will handle all
of the gorp that's required to get widgets larger than 32767 pixels to
scroll cleanly.


Architecture

   To avoid the overhead of gtk_object signals, and also to make
better use of the C type system, Gzilla widgets will use a simple
class and function pointer dispatch technique.

   Specifically, one of the fields of a Gzilla widget will be a
pointer to a klass struct (so named to avoid conflict with a C++
reserved word). The klass struct contains function pointers for each
of the methods. Usually, the klass structures will be set up
statically, one for each type of widget. A method is invoked as
follows:

widget->klass->method (object, args...);

   The cost is two dereferences and an indirect function call. There
will be macros to hide some of this syntax, i.e.

#define gzilla_widget_destroy(widget) widget->klass->destroy (widget);

(note: perhaps "methods" would be a slightly better name than
"klass"?)

   Widgets will contain the following fields:

struct _GzillaWidget {
  gint req_width_min;     /* the minimum comfortable width */
  gint req_width_max;     /* the maximum comfortable width */

   /* If the widget is not to be baseline aligned, it sets its
      req_height to the height, and req_ascent zero. Conversely, if it
      wants to be baseline aligned, it sets req_height and
      req_ascent. The descent is the height minus the ascent.
   */
   gint req_height;
   gint req_ascent;

   /* Allocation is similar to GTK.

      x, y coordinates are relative to the toplevel Gzilla widget.
   */
   GzillaRect allocation;

   /* Flags include:

      + alignment options (baseline, vertical, horizontal?)

      + information about what's currently displayed, one of:
        + valid data (no need for repaint)
        + previously valid data (can incrementally repaint)
        + window background (don't need to clear before drawing)
        + good data underneath (don't clear before drawing; for layers)
        + unknown (better clear and repaint)

      + widget needs resize

      + widget contains embedded GTK widget (used to prune propagation
        of gtk_foreach calls)

   */
   gint flags;

   GzillaWidget *parent;

   /* Information about the enclosing gtk container. */
   GzillaContainerInfo *container;
};


struct _GzillaContainerInfo {
  /* The GTK widget that contains the toplevel Gzilla widget */
  GtkWidget *widget;

  /* x, y coordinates are relative to the toplevel Gzilla widget. */
  GzillaRect visibility;

  /* Add (x_offset, y_offset) to toplevel Gzilla coordinates to
     arrive at X11 window relative coordinates. */
  gint x_offset, y_offset;
};

   The following methods will be supported:

/* Determine the height of the widget given a width of width, and
   store in the req_height, req_ascent, and req_descent fields. */
void
alloc_width_req_height (GzillaWidget *widget, gint width);

/* Set the allocation rectangle in the widget, and propagate to child
   widgets if necessary. */
void
size_allocate (GzillaWidget *widget,
               GzillaRect *allocation);

/* Paint the expose rectangle. The x and y arguments contain the
   coordinates of the upper left corner of the widget with respect
   to the enclosing X11 window. This routine is also responsible for
   setting the flags to indicate that the window data is valid. */
void
paint (GzillaWidget *widget,
       gint x,
       gint y,
       GzillaRect *expose);

/* Handle a mouse event. The different events (button_press,
   button_release, and motion_notify) are combined to avoid code
   duplication in containers.

   Should we return a boolean to indicate whether the event was
   handled?   
   */
void
mouse_event (GzillaWidget *widget,
             GdkEventAny *event);

/* Do the callback once for every gtk widget inside the active
   rectangle. */ 
void
gtk_foreach (GzillaWidget *widget,
	     GtkCallback  callback,
	     gpointer     callback_data,
             GzillaRect   *active);


/* Destroy the widget, freeing all resources claimed by the widget. */
void
destroy (GzillaWidget *widget);

   In addition, two methods are supported only by containers (they
will never be called on child widgets):

/* Request that the widget be resized. */
void
request_resize (GzillaWidget *container,
                GzillaWidget *child);
/* include new widths as arguments, to support incremental updating? */

/* Request that the widget be repainted. */
void
request_repaint (GzillaWidget *container,
		 GzillaWidget *child);

   These requests will generally just set flags asking that the widget
get resized or repainted, then start a GTK idle process that calls
size_allocate to actually change the size. Thus, if a string of resize
requests comes in, the actual recalculation will only be done once.


Widget lifecycle

   The widget lifecycle is considerably simplified with respect to
GTK. In particular, the init, realize, and map methods are missing.
The width half of size_request is also missing.

   First, a *_new () call creates the widget, which is now in an
unmapped state (container is NULL). Additional calls can be used to
fill it with data, if necessary. At this point, the req_width_min and
req_width_max fields are valid. The widget is then either added to a
container or given to the scroller. Either way, a flag is set
indicating that the widget needs resize (setting the flag is the
responsibility of the container add). The request_resize request
propagates to the top of the widget hierarchy. If it's mapped, then
that starts an idle process which eventually starts the
process.

   The container add function loads the req_width_min and
req_width_max fields of the child widget, and updates its own
req_width_min and req_width_max accordingly. In most cases, this
recalculation can be done incrementally, without having to scan all
the child widgets. For example, a vbox container just sets its own
req_width_min to the child widget req_width_min if it's smaller, and
similarly for req_width_max.

   The idle process starts the next phase of size allocation with a
call to alloc_width_req_height on the toplevel widget. Now, the
toplevel widget knows how much width it is allocated, decides the
width of each of its child widgets, and propagates the
alloc_width_req_height down the tree.

   It then gathers the req_height information from each of its
children an calculates the height of the overall widget (for the vbox
widget, it's just the sum). It then returns to the toplevel container.

   The toplevel container then calls size_allocate on the toplevel
widget, which again propagates it to its children, almost entirely
analogous to GTK. Note that the width in the allocation can be
completely different than that in the alloc_width_req_height call
(perhaps the name of the latter should be changed). For example, in a
scrolling widget, the alloc_width_req_height is the width of the
window minus padding for the scrollbars, while the size_allocate width
is the maximum of that width and the req_width_min of the child.

   Finally, the toplevel container calls paint on the toplevel widget,
which again propagates it to its children. The window is now painted
and quiesces.

   When a widget needs to change size, it calls request_resize on its
container. In general, that just sets a bit and (if the bit was not
already set) propagates the request_resize to the top of the
hierarchy, where it's handled by an idle process associated with the
top container.

   When a widget's data changes, it has two choices. First, it can
call request_repaint on its container, which will propagate the "needs
repaint" bit to the top of the hierarchy for handling by an idle
process, much like the resize request. This is especially useful if
the changes might be bursty - they may get clumped together, saving
repaint time. The second choice is to just repaint the data. However,
if the widget is in need of resize, it should always defer the
repainting.


Widgets

   Initially, I envision that there would be exactly four Gzilla
widgets and one GTK widget that served as a Gzilla container. These
would be the page, bullet, GTK embedder, and table widgets, and
the scroller. The page widget would be very similar to the existing
gtk_page widget in gzilla 0.0.9. The bullet widget is trivial - it
just draws nice bullets. The GTK embedder would take care of embedding
a GTK widget in the Gzilla framework. The table widget would be quite
analogous to the GTK's table widget, but would be much smarter in
laying out wrapped text. It would also support HTML specific features
such as visible borders, size hints, and background colors for the
table entries.

   Finally, the scroller would be responsible for embedding the Gzilla
widget back into GTK. In functionality, it's basically the same as
GTK's scrolled_window widget, but it has to do a lot more to handle
the new size negotiation, especially with widgets greater than 32767
pixels. Implementation of this module will be fairly gorpy, which is
one of the main reasons why I'm proposing splitting the page display
into Gzilla widgets rather than doing a monolithic page widget with
wrapped text, tables, and embedded widgets. Ideally, the scroller can
be reused for other GTK programs that require scrolled windows that
may exceed 32767 pixels.


Scrolling architecture

   There are several possible ways to implement scrolling. Gzilla
0.0.9 currently defines a fixed size 32767 pixel window, and uses a
gdk_window_move_resize call (which in turn calls XMoveResizeWindow) to
move the window around inside the viewport. This has a lot of
advantages - child windows move around with the main one, and the X
server is responsible for generating expose events for the regions
that scroll into view. It's pretty nice, but limited to 32767 pixels.

   A different approach is taken by GTK's text widget. gtk_text has a
window that's the size of the viewport, and uses the scroll position
as an offset for drawing into the window. It uses a gdk_draw_pixmap
call (which in turn calls XCopyArea) to scroll the window contents.
This is also a pretty good approach, and is what I'd use if I didn't
have to worry about embedded widgets.

   However, in GTK, each widget that can accept keyboard and mouse
input must have its own X Window. Thus, in addition to scrolling the
contents of the page with XCopyArea, it would also be necessary to
move each of the child windows separately. The problem is that,
because the child windows can't be moved at the same time as the page
contents, they will uncover and then re-obscure actual page data. This
will generate expose events, so there will be flashing in the wake of
child widgets when the window is scrolled. Even without the flashing,
there would be a lag between the page and the child widgets, which
would not be aesthetically pleasing.

   Thus, for Gzilla I plan to use a hybrid approach. For all pages
smaller than 32767 pixels, it will behave exactly as Gzilla 0.0.9. For
larger pages, whenever the scrolling nears the edge of the 32767 pixel
window, the whole contents of the window get shifted by about 20000
pixels, and the page gets completely redrawn. Any child widgets that
jumped off the edge of the window become unmapped, and any that come
inside the new window's coordinates become mapped. Those that stay on
the window simply get moved with a size_allocate method invocation,
which turns into a gtk_window_move_resize call. The gtk_foreach method
will be used to dispatch the appropriate GTK method calls to the
embedded GTK widgets.

   Thus, the entire window will flash very infrequently, and only on
large pages. I consider this an acceptable compromise.


Tables

   The details of the table widget should help to motivate the design
of the size negotiation mechanism. In this section, I present a very
simplified table widget (no rowspan or colspan, no size hints) and
describe how the size negotiation could get implemented.

   Whenever table entries are added, the table widget incrementally
updates its req_width_min and req_width_max fields. The req_width
(either min or max) is the sum of the req widths of all columns, and
the req width of each column is the maximum of the req_width of its
entries.

   The next phase of size negotiation is the alloc_width_req_height
call. Here's where the core of the actual table layout happens -
deciding the width to allocate to each column. Expressed formally,
it's a matter of finding x_set such that:

           __
           \
 x_total = /  max (req_width_min (i), min (req_width_max (i), x_set))
           --
      i = 1..n_cols


   where req_width_{min,max} (i) is the minimum (or maximum)
requisition width for column i, and x_total is the total width given
in the alloc_width_req_height method invocation.

   There are a few ways to solve this. The bisection method will have
good performance and is really easy to code, so that's what I think
I'll use, even though there are no doubt fancier algorithms. The
bisection method will also scale up nicely when rowspans and such are
added.

   Once x_set is found, then the width of each column is just max
(req_width_min (i), min (req_width_max (i), x_set)). If you don't
understand the math, don't worry. It basically says that it tries to
make the columns all even width, to fill up the total space given, but
respects the minimum and maximum widths of each entry.

   Note: the equation above doesn't have a solution when x_total is
greater than the sum of the req_width_max for all columns. In that
case, you can do basically the same thing but ignoring the
req_width_max'es altogether.

   Once the column widths are determined, the table widget call
alloc_width_req_height on each of its children. The total height is
the sum of the heights of all of the columns, each of which is the
maximum of the heights of the entries within the column. Again, this
becomes slightly more complex in the face of colspans.

   When the _actual_ width is allocated, in the size_alloc call, the
table widths may be calculated again. However, in most cases the width
given will be the same as in the alloc_width_req_height call.

   Painting is pretty straightforward - just dispatching the paint
event to the children. One quirk is when table entries have
backgrounds. In that case, the table widget draws a filled rectangle
with the background color and set's the child widget's flags
indicating what's underneath to "good data underneath" before invoking
the paint method of the child.


Embedded GTK widgets

   When adding new GTK widgets, it is imperative to avoid repainting
the entire page. Yet, all GTK containers implement their add or pack
methods by adding the child widget to the data structure, then calling
gtk_container_check_resize on the container, which almost always does
result in a repaint of the entire container.

   The Gzilla widget that embeds GTK widgets will simply avoid calling
gtk_container_check_resize when adding new widgets. Instead, it will
directly invoke the GTK methods needed to get the child widget
displayed. Essentially, this sequence is size_request, size_allocate,
realize, and map. If the new widget is outside the visibility
rectangle, it may even be possible to defer the realize and map calls
until it actually does become visible.

   I'm not really sure what the hell happens when the child widget
requests a size change. I think the right answer may be as simple as
providing a need_resize method that invokes request_resize on the GTK
widget's Gzilla container, then returns FALSE indicating that no more
work is needed from GTK.

   I've just looked through the resize code in GTK, and must confess
that I'm lost. Some of it is clear to me, but it seems to me that the
topmost test in gtk_container_check_resize (i.e. the return value from
the gtk_container_needs_resize call) must always be true, otherwise
the child widget may not get redrawn. Actually, from testing I know
that bugs exist in which the child widget doesn't get redrawn
(especially when the topmost container is a viewport), so maybe the
code is flat out wrong. It looks like some careful hacking is needed.


Baseline alignment

   I should say a little about baseline alignment. Putting multiple
widgets on a line with baseline alignment (and perhaps also with other
text) is calculated the same way as a table with two rows. The first
row represents the ascent, and the second row represents the descent.
If a widget is not to be baseline aligned, then it's basically the
same as a colspan of two.

From camm@enhanced.com
Received: (qmail 13312 invoked from network); 25 Jun 1997 12:49:44 -0000
Received: from enhanced.ppp.cyberenet.net (HELO wisdom) (@208.17.129.184)
  by mail2.redhat.com with SMTP; 25 Jun 1997 12:49:43 -0000
Received: by enhanced.com
	id m0wgrRY-0004KDC
	(Debian Smail-3.2 1996-Jul-4 #2); Wed, 25 Jun 1997 08:45:04 -0400 (EDT)
Sender: camm@enhanced.com (Camm Maguire)
Sender: camm@wisdom.m.enhanced.com
To: gtk-list@redhat.com
Subject: New projects
References: <Pine.BSF.3.91.970624095825.29138E-100000@blacklodge.c2.net>
From: Camm Maguire <camm@enhanced.com>
Date: 25 Jun 1997 08:45:03 -0400
In-Reply-To: Raph Levien's message of Tue, 24 Jun 1997 10:07:56 -0700 (PDT)
Message-ID: <54soy697hs.fsf@wisdom.m.enhanced.com>
Lines: 17
X-Mailer: Gnus v5.3/Emacs 19.34

Greetings!  I am totally new to X-Wiindow programming, but faily
fluent in generic C.  I want to write a text indexing/searching
program, and am considering GTK from the positive reports I've heard
thus far and its GPL licensing.  

My question: I need some honest advice about whether the man hours
required for me to get up to speed with GTK are justified given the
sparse GTK documentation, the state of flux of the routines, and the
alternate widget sets available.  

Can anyone share their thoughts with me here?  

Keep up the good work on this project!
-- 
cmaguire@enhanced.com				      Camm Maguire
==================================================================
"The earth is one country, and mankind its citizens."  Baha'u'llah

From otto@redhat.com
Received: (qmail 15941 invoked from network); 25 Jun 1997 12:56:50 -0000
Received: from nimrod.redhat.com (otto@199.183.24.13)
  by mail2.redhat.com with SMTP; 25 Jun 1997 12:56:50 -0000
Received: (from otto@localhost)
	by nimrod.redhat.com (8.8.5/8.8.5) id IAA04192;
	Wed, 25 Jun 1997 08:56:51 -0400
Message-ID: <19970625085650.31814@redhat.com>
Date: Wed, 25 Jun 1997 08:56:50 -0400
From: Otto Hammersmith <otto@redhat.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] New projects
References: <Pine.BSF.3.91.970624095825.29138E-100000@blacklodge.c2.net> 
<54soy697hs.fsf@wisdom.m.enhanced.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-Mailer: Mutt 0.74
In-Reply-To: <54soy697hs.fsf@wisdom.m.enhanced.com>; 
from Camm Maguire on Wed, Jun 25, 1997 at 08:45:03AM -0400

On Wed, Jun 25, 1997 at 08:45:03AM -0400, Camm Maguire wrote:
> Greetings!  I am totally new to X-Wiindow programming, but faily
> fluent in generic C.  I want to write a text indexing/searching
> program, and am considering GTK from the positive reports I've heard
> thus far and its GPL licensing.  
> 
> My question: I need some honest advice about whether the man hours
> required for me to get up to speed with GTK are justified given the
> sparse GTK documentation, the state of flux of the routines, and the
> alternate widget sets available.  
> 
> Can anyone share their thoughts with me here?  
> 
> Keep up the good work on this project!

The time involved isn't really any more than you'd spend getting going
with most X toolkits, despite the lack of documentation.  I'd say Qt
is the only one that's comparable, but that's C++ so if you know C
gtk+ is the way to go. (I think it took me about two weeks to get
going with gtk+... longer to start writing new widgets, which I
haven't quite mastered just yet)

Not to mention the amount of money you'd end up spending on books to
lear something like Motif.  Very scarry thought. :)

Good luck.

-- 
					-Otto.

From slow@intergate.bc.ca
Received: (qmail 24654 invoked from network); 25 Jun 1997 20:55:59 -0000
Received: from diablo.intergate.bc.ca (root@205.206.192.2)
  by mail2.redhat.com with SMTP; 25 Jun 1997 20:55:58 -0000
Received: from slow (imain@pm19s27.intergate.bc.ca [207.34.180.42]) 
by diablo.intergate.bc.ca (8.8.5/8.6.9) with SMTP id OAA10464; 
Wed, 25 Jun 1997 14:09:51 -0700 (PDT)
Date: Wed, 25 Jun 1997 13:54:47 -0700 (PDT)
From: Ian Main <slow@intergate.bc.ca>
X-Sender: imain@slow
To: Camm Maguire <camm@enhanced.com>
cc: gtk-list@redhat.com
Subject: Re: [gtk-list] New projects
In-Reply-To: <54soy697hs.fsf@wisdom.m.enhanced.com>
Message-ID: <Pine.LNX.3.96.970625135002.3307B-100000@slow>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII



On 25 Jun 1997, Camm Maguire wrote:

> Greetings!  I am totally new to X-Wiindow programming, but faily
> fluent in generic C.  I want to write a text indexing/searching
> program, and am considering GTK from the positive reports I've heard
> thus far and its GPL licensing.  
> 
> My question: I need some honest advice about whether the man hours
> required for me to get up to speed with GTK are justified given the
> sparse GTK documentation, the state of flux of the routines, and the
> alternate widget sets available.  
> 
> Can anyone share their thoughts with me here?  

I just started using gtk about hmm.. 3 weeks ago, and can now write a
decent application with it.  There's certainly a lack of documentation,
but if you check out the testgtk.c and other examples, it doesn't take
long to figure it out. I find the API easy to grasp, and the header files
very useful too. The gtk source is well organized, so if you have an idea
of the function your after, its not too hard to find. 

If your good at C, it shouldn't take too long at all to figure out.
You should be able to make simple applications in a few hours. :)

Hope that helps,

Ian

From ricardo@calvin.net
Received: (qmail 6257 invoked from network); 18 Sep 1997 21:01:34 -0000
Received: from calvin.net (HELO al.calvin.net) (root@199.199.151.53)
  by mail2.redhat.com with SMTP; 18 Sep 1997 21:01:34 -0000
Received: from localhost (ricardo@localhost)
	by al.calvin.net (8.8.5/8.8.5) with SMTP id JAA19495
	for <gtk-list@redhat.com>; Thu, 18 Sep 1997 09:51:41 -0500
Date: Thu, 18 Sep 1997 09:51:41 -0500 (CDT)
From: Ricardo Muggli <ricardo@calvin.net>
To: gtk-list@redhat.com
Subject: GTK-- easy enough for beginners?
Message-ID: <Pine.LNX.3.96.970918093201.19486A-100000@al.calvin.net>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

I am interested in learning to program with GTK but I am more
knowledgeable with c++ than with c. The question I want to raise is if
there is a tutorial on using GTK-- or can I use Ian's with a little
modification. Is there a big difference between GTK+ with C and GTK-- with
C++? This is my first X tool kit I'm trying to learn. Is GTK-- stable and
advanced enough for a beginner X programmer to learn?

thanks for any response and any pointers to info

- ricardo@calvin.net

From landsh19@starnetinc.com
Received: (qmail 12299 invoked from network); 19 Sep 1997 04:25:50 -0000
Received: from email6.starnetinc.com (204.178.185.4)
  by mail2.redhat.com with SMTP; 19 Sep 1997 04:25:49 -0000
Received: from landshark (max01-030.starnetinc.com [207.227.180.30]) 
by email6.starnetinc.com (8.8.5/8.8.2) with ESMTP id XAA11961 for 
<gtk-list@redhat.com>; Thu, 18 Sep 1997 23:28:46 -0500 (CDT)
Message-Id: <199709190428.XAA11961@email6.starnetinc.com>
From: "Landshark" <landsh19@starnetinc.com>
To: <gtk-list@redhat.com>
Subject: Re: [gtk-list] GTK-- easy enough for beginners?
Date: Thu, 18 Sep 1997 23:29:36 -0500
X-MSMail-Priority: Normal
X-Priority: 3
X-Mailer: Microsoft Internet Mail 4.70.1155
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

> I am interested in learning to program with GTK but I am more
> knowledgeable with c++ than with c. The question I want to raise is if
> there is a tutorial on using GTK-- or can I use Ian's with a little
> modification. Is there a big difference between GTK+ with C and GTK--
with
> C++? This is my first X tool kit I'm trying to learn. Is GTK-- stable and
> advanced enough for a beginner X programmer to learn?

I don't have the url since I'm not at my linux box right now, but there is
a page which  has a good set of tutorials on many aspects of GTK.  

I started out messing around with plain Xlib, which I found to be rather
tedious and puzzling.  I then moved over to lesstif, which again, was quite
puzzling.  Next I went to QT, which seemed rather nice also.  Finally, I
moved  to GTK, which I like alot.  It's easier to use than most libraries,
and has an ever growing user base which functions as a great learning
resource -- everyone helps everyone along.  I don't think it would be
difficult at all for a new X programmer to learn GTK at all.

There is one thing I was wondering.  What if any restrictions are put on
programs made with GTK?  Can they be made commercial without worry?  Must
source code be released?  I haven't looked at the docs for it yet
concerning copyright'sh stuff, but I don't wish to worry about
misinterpreting them.

Dave Marotti
landsh19@starnetinc.com

From sopwith@cuc.edu
Received: (qmail 24261 invoked from network); 19 Sep 1997 04:47:42 -0000
Received: from helix.cs.cuc.edu (HELO cuc.edu) (sopwith@204.32.57.128)
  by mail2.redhat.com with SMTP; 19 Sep 1997 04:47:42 -0000
Received: from localhost (sopwith@localhost)
	by cuc.edu (8.8.5/8.8.5) with SMTP id AAA09896
	for <gtk-list@redhat.com>; Fri, 19 Sep 1997 00:47:43 -0400
Date: Fri, 19 Sep 1997 00:47:43 -0400 (EDT)
From: Elliot Lee <sopwith@cuc.edu>
X-Sender: sopwith@helix
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: GTK-- easy enough for beginners?
In-Reply-To: <199709190428.XAA11961@email6.starnetinc.com>
Message-ID: <Pine.LNX.3.95.970919004140.8780A-100000@helix>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Thu, 18 Sep 1997, Landshark wrote:

> There is one thing I was wondering.  What if any restrictions are put on
> programs made with GTK?  Can they be made commercial without worry? 
> Must source code be released?  I haven't looked at the docs for it yet
> concerning copyright'sh stuff, but I don't wish to worry about
> misinterpreting them. 

Gtk is under the LGPL, which basically says that the library itself must
be free and you must be able to provide the sources for the library...
Gtk source being online is providing, I guess. :) You can use whatever
license you wish on Gtk software you write, and not pay anything.

-- Elliot
#!/bin/sh -
set - `type $0` 'tr "[a-zA-Z]" "[n-za-mN-ZA-M]"';while [ "$2" != "" ];do \
shift;done; echo 'frq -a -rc '`echo "$0"| $1 `'>$UBZR/.`rpub signature|'`\
echo $1|$1`'`;rpub "Jr ner fvtangher bs obet. Erfvfgnapr vf shgvyr!"'|$1|sh

From raph@acm.org
Received: (qmail 22962 invoked from network); 10 Oct 1997 15:46:59 -0000
Received: from callisto.hip.berkeley.edu (136.152.64.218)
  by mail2.redhat.com with SMTP; 10 Oct 1997 15:46:59 -0000
Received: (from raph@localhost)
          by callisto.hip.berkeley.edu (8.8.4/8.8.4)
	  id JAA00254 for gtk-list@redhat.com; Fri, 10 Oct 1997 09:10:57 -0700
Date: Fri, 10 Oct 1997 09:10:57 -0700
Message-Id: <199710101610.JAA00254@callisto.hip.berkeley.edu>
From: raph@acm.org
To: gtk-list@redhat.com
Subject: Nits to pick on gtk+960925 (resend)

Hi gtk people,

   I've been working to integrate Gzilla with the latest GTK+, and
I've come across a number of problems, mostly what I'd categorize as
nits rather than serious bugs.

1. Pressing Enter in a file selection dialog does nothing.

   The Return button handling in gtk_entry has changed. In Gimp
0.99.10, it was not handled in the entry, so it would get passed up to
the window and down to the default action (pressing the Ok button),
but in gtk+970925, it does get handled in gtk_entry and throws an
activate signal.

   The fix is simple - in gtkfilesel.c:gtk_file_selection_init, hook
the activate signal (maybe a gtk_signal_connect_object, use
gtk_button_clicked as the handler, and filesel->ok_button as the
object.

2. size_request of a scrolled window is calculated wrong.

   Nobody ever uses the value of size_request of a scrolled window
because it's so damn tiny, but the code is wrong. The last assignment
to extra_width should be calculated using scrolled_window->vscrollbar
rather scrolled_window->hscrollbar.

3. expose of viewport is inefficient.

   The handling gtk_viewport_expose passes the widget event to the
child even if the expose event is in one of the viewport's own windows
rather than the child window. It's usually not a correctness problem
to expose in a window, but it still feels wrong.

   The fix is to do wrap the child even call in an if (event->window
== widget->window) test.

4. Size negotiation is fubar.

   I fear that the queued resize stuff may have made things worse. I
felt I understood the size negotiation in 0.99.10 pretty well and was
capable of working around its efficiency problems, but the cure in
970925 may be worse than the disease.

   The main problem is that widget lifecycle events can now occur
outside the order established in 0.99.10. Specifically, the widget can
be mapped and realized before it is size allocated. This is
generally an efficiency problem, because the X call sequence includes
making a dummy window during the realize, then moving it into position
during the size allocate, rather than just making it in the right
position. However, in Gzilla it caused some cosmetic problems as well,
because you could see the window move into position.

   I'm not sure what the best fix is to this problem. It's ok to leave
it as it is and take the efficiency hit, but that seems to go against
the whole point of the changes to the size negotiation. At the highest
level, I think now would be a very good idea to write down exactly
what the size negotiation methods are supposed to do, what order
they're supposed to happen in, and what invariants are supposed to be
maintained. I think this will help greatly to avoid bugs in size
negotiation, both in the GTK core and for people writing their own
container widgets, especially if there are going to be multiple people
working on it.

   To get a little more specific, what I think would work best is to
go back to the stricter order as in 0.99.10, but change the queued
resize code so that it enforces this order. Thus, the queued resize
handler should be responsible for realizing and mapping the widget
after size allocation, assuming the right conditions are met (as I
understand it, that the container and child widget are both visible,
and that the container is realized and mapped). The same code will
probably also be responsible for drawing the child widget if it's
NO_WINDOW. The responsibility to map and realize should be taken out
of container widgets like gtk_box_pack_start (as was correctly the
case in 0.99.10).

   However, I've got reasonable workarounds in Gzilla 0.1.2, so it's
not urgent. I just think this will cause more problems down the road
if it's not addressed now. I'm still having problems with the
scrollbars being out of step with the window size, but I can probably
find the problem and fix that too.

   On a personal note, I'm out of town for my father's funeral. I was
hoping to do a stable Gzilla release soon, but that may be a while
hence. If anyone wants to hack on the existing Gzilla code, let me
know and I'll post the most recent semistable source tree.

Raph

From raph@acm.org
Received: (qmail 5960 invoked from network); 26 Nov 1997 12:24:32 -0000
Received: from blacklodge.c2.net (208.139.36.35)
  by mail2.redhat.com with SMTP; 26 Nov 1997 12:24:32 -0000
Received: (from raph@localhost) by blacklodge.c2.net (8.8.5/8.7.3) 
id EAA12090; Wed, 26 Nov 1997 04:38:33 -0800 (PST)
Date: Wed, 26 Nov 1997 04:38:33 -0800 (PST)
From: Raph Levien <raph@acm.org>
X-Sender: raph@blacklodge.c2.net
To: gtk-list@redhat.com
Subject: Gzilla 0.1.4 released
Message-ID: <Pine.BSF.3.91.971126043242.11991A-100000@blacklodge.c2.net>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi gtk-developers,

   I've just put Gzilla 0.1.4 on the www.gzilla.com website. While still 
quite unfinished, this release is basically usable.

   This release uses the Gzw (Gzilla Widget) set and is able to scroll 
windows > 32kpixels with good performance, even when they contain 
embedded widgets. As such, the Gzw framework may be interesting to other 
Gtk developers. Gzw is not quite finished yet, but the API is pretty close.

   Between research deadlines and wanting to spend the holidays with my 
family, I'm not going to get much time to work on the code for a few 
weeks. If anyone else wants to bang on the code, now is your chance :).

Raph

From ondrej@idata.sk
Received: (qmail 27630 invoked from network); 17 Feb 1998 15:47:14 -0000
Received: from amber.idata.sk (mail@194.196.155.141)
  by mail2.redhat.com with SMTP; 17 Feb 1998 15:47:14 -0000
Received: (from mail@localhost)
	by amber.idata.sk (8.8.5/8.8.5) id QAA24922
	for <gtk-list@redhat.com>; Tue, 17 Feb 1998 16:46:45 +0100
Received: from corwin.idata.sk(194.196.155.142) by amber.idata.sk via smap (V2.0)
	id xma024920; Tue, 17 Feb 98 16:46:23 +0100
Received: from localhost by idata.sk; (5.65v3.2/1.1.8.2/02Dec96-0635PM)
	id AA06025; Tue, 17 Feb 1998 16:52:40 +0100
Date: Tue, 17 Feb 1998 16:52:40 +0100 (MET)
From: Ondrejicka Stefan <ondrej@idata.sk>
To: gtk-list@redhat.com
Subject: GtkCalendar widget
Message-Id: <Pine.OSF.3.95.980217164943.6202B-100000@axp.idata.sk>
Mime-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi all,

I yesterday rewrote my old Xtoolkit Calendar widget to Gtk.
If you want to use it, grab it from my homepage.

Bye,
Stevo.

---
Ondrejicka Stefan    <ondrej@idata.sk>
http://www.idata.sk/~ondrej/

From amundson@CompleteIS.com
Received: (qmail 5280 invoked from network); 18 Feb 1998 05:15:20 -0000
Received: from q.completeis.com (206.144.247.110)
  by mail2.redhat.com with SMTP; 18 Feb 1998 05:15:20 -0000
Received: from localhost (amundson@localhost)
	by q.CompleteIS.com (8.8.8/8.8.8) with SMTP id XAA05420
	for <gtk-list@redhat.com>; Tue, 17 Feb 1998 23:15:13 -0600 (CST)
X-Authentication-Warning: q.CompleteIS.com: amundson owned process doing -bs
Date: Tue, 17 Feb 1998 23:15:12 -0600 (CST)
From: "Shawn T. Amundson" <amundson@CompleteIS.com>
X-Sender: amundson@q
To: gtk-list@redhat.com
Subject: Re: [gtk-list] GtkCalendar widget
In-Reply-To: <Pine.OSF.3.95.980217164943.6202B-100000@axp.idata.sk>
Message-ID: <Pine.GSO.3.96.980217215009.5415A-100000@q>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Tue, 17 Feb 1998, Ondrejicka Stefan wrote:

> Hi all,
> 
> I yesterday rewrote my old Xtoolkit Calendar widget to Gtk.
> If you want to use it, grab it from my homepage.
> 
> Bye,
> Stevo.
> 

This makes the third GtkCalendar widget.  Mine was first about
a year ago, and admittably it was one super-hack and sucked.  
Cesar Miquel and I are working on one now; we started this one
with his code base, and I've put some of the code from mine
into it for the date calculation code and reworked portions 
to make it layout better.  

Ours doesn't quite work fully yet, but promises much more in
the way of flexibility.  We have an initial screenshot up
at http://www.gimp.org/~amundson/aorta/calendar-3.gif.  It is
by no means finished.  This is just an initial version screenshot,
the cool ones are on their way soon.

We have recently gotton permission to use C portions from the 
perl DateCalc module under the LGPL (hurray!), which claims
date calculations complying with ISO/R 2015-1917 and DIN 1355
standards (don't ask me, that's why I'm using his stuff).
This is important because of things years such as 2100 not leap 
years, etc.  (year divisible by 100 is not a leap year unless 
it is also divisible by 400) ;-)

Right now we have the following defined in our .h file (minus
obvious other widget stuff):

typedef enum
{
  GTK_CALENDAR_SHOW_MONTH_HEADING = 1 << 0,
  GTK_CALENDAR_SHOW_WEEKDAY_HEADING = 1 << 1,
} GtkCalendarDisplayOptions;

typedef enum
{
  GTK_CALENDAR_FONT_HEADING,
  GTK_CALENDAR_FONT_DAY_NAME,
  GTK_CALENDAR_FONT_DAY
} GtkCalendarFont;

typedef enum
{
  GTK_CALENDAR_COLOR_HEADING,
  GTK_CALENDAR_COLOR_DAY_NAME,
  GTK_CALENDAR_COLOR_PREV_MONTH,
  GTK_CALENDAR_COLOR_NEXT_MONTH,
  GTK_CALENDAR_COLOR_NORMAL_DAY
} GtkCalendarColor;

guint      gtk_calendar_get_type        (void);
GtkWidget* gtk_calendar_new             (void);

void       gtk_calendar_select_month    (GtkCalendar *calendar, 
                                         gint year, gint month);
void       gtk_calendar_select_day      (GtkCalendar *calendar, gint day);

void       gtk_calendar_mark_day        (GtkCalendar *calendar, gint day);
void       gtk_calendar_unmark_day      (GtkCalendar *calendar, gint day);
void       gtk_calendar_clear_marks     (GtkCalendar *calendar);

void       gtk_calendar_set_font        (GtkCalendar *calendar, 
                                         GtkCalendarFont type, 
                                         GdkFont *font);
void       gtk_calendar_set_color       (GtkCalendar *calendar, 
                                         GtkCalendarColor type, 
                                         GdkColor *color);

void       gtk_calendar_display_options (GtkCalendar *calendar,
                                         gint flags);

Suggestions welcome on the coding interface.  We need at minimum
to add support for changing the day of week and month strings.  

It was suggested we allow making all weekend days seperately marked
with their own color.  (Add GTK_CALENDAR_COLOR_WEEKEND_DAY or similar.)

I am toying with the idea of allowing setting pixmaps for some days via
some method so that things like birthdays can have an image of a cake,
etc.  (This may be needed for gncal I think.)

Also, perhaps expanding it to allow easy creation of a calendar like
in plan, where the calendar is quite large and can contain text in the
day boxes would be very useful.  (Also potentally usable by gncal.)

--
Shawn T. Amundson	
amundson@gimp.org

while (i) { last }
    i, do exist.
    forever;

From nexus@tatoosh.com
Received: (qmail 29673 invoked from network); 22 Feb 1998 18:15:36 -0000
Received: from dialups-83.gig-dial2.ptinet.net (HELO tatoosh.com) 
(root@208.157.242.83)
  by mail2.redhat.com with SMTP; 22 Feb 1998 18:15:36 -0000
Received: from kermit.tatoosh.com (nexus@kermit.tatoosh.com [192.168.100.3])
	by tatoosh.com (8.8.5/8.8.5) with SMTP id KAA09395
	for <gtk-list@redhat.com>; Sun, 22 Feb 1998 10:01:53 -0800
Date: Sun, 22 Feb 1998 09:56:10 -0800 (PST)
From: "Brian C. Lane" <nexus@tatoosh.com>
To: gtk-list@redhat.com
Subject: multi-tasking
Message-ID: <Pine.LNX.3.96.980222095116.10267A-100000@kermit.tatoosh.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII


  Hello,

  I'm new to GTK+ so I apologize if this is covered somewhere. I've
written a cd player control panel and it works, mostly. The problem I'm
having is that when the play, FF and REW buttons are pressed I set the
button's pixmap to its down image and then call the appropriate cdrom
routine.

  The problem is that the new pixmap doesn't get drawn until after the
cdrom routine is done and the button press event for the button is exited.
Most of the time the down image doesn't show up at all because you've
already released the mouse button by the time it is done switching to the
next track.

  Does anyone have a good solution for this? Someone should, since its
important to have a good user interface and still be able to interact with
real-world devices.

  One though I had was maybe starting a timer when the key is pressed and
doing the actual cdrom command when the timer goes off (after, say 100mS).

  Any better ideas?

  Brian

  (BTW, you can see a sample screenshot in the linux software section of
my webpage).

======================================================================
Nexus Computing                           http://www.eskimo.com/~nexus
Electronics, Embedded Software and Linux             nexus@tatoosh.com

From owt1@cornell.edu
Received: (qmail 23993 invoked from network); 22 Feb 1998 19:20:59 -0000
Received: from cu-dialup-0411.cit.cornell.edu (mail@132.236.236.199)
  by mail2.redhat.com with SMTP; 22 Feb 1998 19:20:59 -0000
Received: from otaylor by cu-dialup-0411.cit.cornell.edu with local (Exim 1.82 #1)
	id 0y6gzj-0003hX-00; Sun, 22 Feb 1998 14:23:23 -0500
To: "Brian C. Lane" <nexus@tatoosh.com>
Cc: gtk-list@redhat.com
Subject: Re: multi-tasking
References: <Pine.LNX.3.96.980222095116.10267A-100000@kermit.tatoosh.com>
From: Owen Taylor <owt1@cornell.edu>
Date: 22 Feb 1998 14:23:23 -0500
In-Reply-To: "Brian C. Lane"'s message of Sun, 22 Feb 1998 09:56:10 -0800 (PST)
Message-ID: <lzzpjj78b8.fsf@cu-dialup-0411.cit.cornell.edu>
Lines: 44
X-Mailer: Gnus v5.5/Emacs 20.2
X-Emacs: Emacs 20.2, MULE 3.0 (MOMIJINOGA)
MIME-Version: 1.0 (generated by SEMI MIME-Edit 0.98 - =?ISO-8859-4?Q?"D=F2?=
  =?ISO-8859-4?Q?h=F2ji"?=)
Content-Type: text/plain; charset=US-ASCII


"Brian C. Lane" <nexus@tatoosh.com> writes:

>   I'm new to GTK+ so I apologize if this is covered somewhere. I've
> written a cd player control panel and it works, mostly. The problem I'm
> having is that when the play, FF and REW buttons are pressed I set the
> button's pixmap to its down image and then call the appropriate cdrom
> routine.
>
>   The problem is that the new pixmap doesn't get drawn until after the
> cdrom routine is done and the button press event for the button is exited.
> Most of the time the down image doesn't show up at all because you've
> already released the mouse button by the time it is done switching to the
> next track.

Well, you should most likely actually be only setting the down
pixmap in the "button_press_event" callback. The actual triggering
should be on the "clicked" event. (Try fooling around some with
how a button triggers) If you unset your pixmap in the
"button_release_event", then that won't be displayed until your
command finishes, but that may be the right effect. 

But as of 0.99.4, you should be able to say, in the beginning
of your "clicked" routine:

  while (gtk_events_pending())
    gtk_main_iteration();

And everything will be redrawn, if that's what you want.

>   Does anyone have a good solution for this? Someone should, since its
> important to have a good user interface and still be able to interact with
> real-world devices.
> 
>   One though I had was maybe starting a timer when the key is pressed and
> doing the actual cdrom command when the timer goes off (after, say 100mS).

If you actually _want_ a button that triggers when the thing is
pressed. (Say you are implementing the typical CD "scan through
track when >> is held down") then this might be a good thing to do -
you can get autorepeat behavior in the bargain.

Hope this helps,
                                        Owen

From nexus@tatoosh.com
Received: (qmail 8749 invoked from network); 23 Feb 1998 02:15:38 -0000
Received: from dialups-44.gig-dial1.ptinet.net (HELO tatoosh.com) 
(root@208.157.242.44)
  by mail2.redhat.com with SMTP; 23 Feb 1998 02:15:38 -0000
Received: from kermit.tatoosh.com (nexus@kermit.tatoosh.com [192.168.100.3])
	by tatoosh.com (8.8.5/8.8.5) with SMTP id RAA21538
	for <gtk-list@redhat.com>; Sun, 22 Feb 1998 17:45:23 -0800
Date: Sun, 22 Feb 1998 17:39:43 -0800 (PST)
From: "Brian C. Lane" <nexus@tatoosh.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: multi-tasking
In-Reply-To: <lzzpjj78b8.fsf@cu-dialup-0411.cit.cornell.edu>
Message-ID: <Pine.LNX.3.96.980222173336.11901A-100000@kermit.tatoosh.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

On 22 Feb 1998, Owen Taylor wrote:

> Well, you should most likely actually be only setting the down
> pixmap in the "button_press_event" callback. The actual triggering
> should be on the "clicked" event. (Try fooling around some with
> how a button triggers) If you unset your pixmap in the
> "button_release_event", then that won't be displayed until your
> command finishes, but that may be the right effect. 

  Well, I was using a EventBox for each of the buttons, but apparently it
doesn't have a "clicked" event, so I've switched back to a button. The
reason I wasn't using a button is the border that is placed around the
pixmap -- is there a way to turn this off in butons?

  Now I have a problem where it sigsegv's on me when I press the button.
It is related to the clicked event because I have tried removing all other
events related to the button, also it isn't the clicked routine being
called because the routine is successfully called when attached to a
pressed or unpressed event! The other event, when on, all work.

  Does this sound like a bug or am I doing something else wrong? I'm using
GTK+ v0.99.3

> 
> But as of 0.99.4, you should be able to say, in the beginning
> of your "clicked" routine:
> 
>   while (gtk_events_pending())
>     gtk_main_iteration();

  It looks like using the "clicked" event, when I can get it to work, it a
cleaner way of doing it.

> If you actually _want_ a button that triggers when the thing is
> pressed. (Say you are implementing the typical CD "scan through
> track when >> is held down") then this might be a good thing to do -
> you can get autorepeat behavior in the bargain.

  That sounds like a good idea, I'd have to fake the advancement until the
mouse is released (moving to the next track takes about a second for some
reason), but that could be a pretty cool feature.

  Brian

======================================================================
Nexus Computing                           http://www.eskimo.com/~nexus
Electronics, Embedded Software and Linux             nexus@tatoosh.com

From nexus@tatoosh.com
Received: (qmail 15448 invoked from network); 23 Feb 1998 08:15:43 -0000
Received: from dialups-64.gig-dial2.ptinet.net (HELO tatoosh.com) 
(root@208.157.242.64)
  by mail2.redhat.com with SMTP; 23 Feb 1998 08:15:43 -0000
Received: from kermit.tatoosh.com (nexus@kermit.tatoosh.com [192.168.100.3])
	by tatoosh.com (8.8.5/8.8.5) with SMTP id XAA30358
	for <gtk-list@redhat.com>; Sun, 22 Feb 1998 23:40:00 -0800
Date: Sun, 22 Feb 1998 23:34:21 -0800 (PST)
From: "Brian C. Lane" <nexus@tatoosh.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: multi-tasking
In-Reply-To: <Pine.LNX.3.96.980222173336.11901A-100000@kermit.tatoosh.com>
Message-ID: <Pine.LNX.3.96.980222232951.12444A-100000@kermit.tatoosh.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Sun, 22 Feb 1998, Brian C. Lane wrote:

> reason I wasn't using a button is the border that is placed around the
> pixmap -- is there a way to turn this off in butons?

  I still have the above question, but...

> 
>   Now I have a problem where it sigsegv's on me when I press the button.
> It is related to the clicked event because I have tried removing all other
>   Does this sound like a bug or am I doing something else wrong? I'm using
> GTK+ v0.99.3

  I was trying to call a click callback with (GtkWidget *, GdkEvent *), so
I fixed that, and passed it the Widget* when connecting the clicked event.
But now that brings up another question, how do I tell which mouse button
was clicked to activate it? I have a volume button that increases the
volume with a left click and decreases it with a right click.

  Also, now my down image is drawn before executing the cdrom function,
but it isn't drawn as back up until it completes, even though my debugging
output shows that it is getting press_event, release_event, click_event.
Apparently the image isn't being redrawn between the release event (where
the image is  changed back to the up image) and the click event.

  Maybe I am really better off starting a timer when it is hit and letting
that handle the processing...

  Thanks!

    Brian

======================================================================
Nexus Computing                           http://www.eskimo.com/~nexus
Electronics, Embedded Software and Linux             nexus@tatoosh.com

From owt1@cornell.edu
Received: (qmail 5125 invoked from network); 23 Feb 1998 15:32:22 -0000
Received: from cu-dialup-0820.cit.cornell.edu (mail@132.236.155.66)
  by mail2.redhat.com with SMTP; 23 Feb 1998 15:32:22 -0000
Received: from otaylor by cu-dialup-0820.cit.cornell.edu with local (Exim 1.82 #1)
	id 0y6zts-0006Fe-00; Mon, 23 Feb 1998 10:34:36 -0500
To: gtk-list@redhat.com
Subject: Re: multi-tasking
References: <Pine.LNX.3.96.980222232951.12444A-100000@kermit.tatoosh.com>
From: Owen Taylor <owt1@cornell.edu>
Date: 23 Feb 1998 10:34:36 -0500
In-Reply-To: "Brian C. Lane"'s message of Sun, 22 Feb 1998 23:34:21 -0800 (PST)
Message-ID: <lzk9am72sz.fsf@cu-dialup-0411.cit.cornell.edu>
Lines: 56
X-Mailer: Gnus v5.5/Emacs 20.2
X-Emacs: Emacs 20.2, MULE 3.0 (MOMIJINOGA)
MIME-Version: 1.0 (generated by SEMI MIME-Edit 0.98 - =?ISO-8859-4?Q?"D=F2?=
  =?ISO-8859-4?Q?h=F2ji"?=)
Content-Type: text/plain; charset=US-ASCII


"Brian C. Lane" <nexus@tatoosh.com> writes:

> On Sun, 22 Feb 1998, Brian C. Lane wrote:
> 
> > reason I wasn't using a button is the border that is placed around the
> > pixmap -- is there a way to turn this off in butons?

No. (It will be part of the themeability support, but not now)
 
>   I still have the above question, but...
> 
> > 
> >   Now I have a problem where it sigsegv's on me when I press the button.
> > It is related to the clicked event because I have tried removing all other
> >   Does this sound like a bug or am I doing something else wrong? I'm using
> > GTK+ v0.99.3
> 
>   I was trying to call a click callback with (GtkWidget *, GdkEvent *), so
> I fixed that, and passed it the Widget* when connecting the clicked event.
> But now that brings up another question, how do I tell which mouse button
> was clicked to activate it? I have a volume button that increases the
> volume with a left click and decreases it with a right click.

You can't. If you really want that kind of control, you'll have to
go back to the EventBox. It shouldn't be too hard to even duplicate
the way buttons work. (The event triggers on the release, but only
if the pointer is within widget->allocation)

But have some pity on the user. Why not just make the volume control
a scale?
 
>   Also, now my down image is drawn before executing the cdrom function,
> but it isn't drawn as back up until it completes, even though my debugging
> output shows that it is getting press_event, release_event, click_event.
> Apparently the image isn't being redrawn between the release event (where
> the image is  changed back to the up image) and the click event.

True. It is just getting queued for redraw. In 0.99.4 you will be able to
fix that by doing the:

  while (gtk_events_pending())
    gtk_main_iteration();

thing, before going off and doing your long operation. But there is an
even easier way, that I didn't think of mentioning earlier: just call:

  gtk_widget_draw (button, NULL);

Which will make the button be redrawn immediately. It has the
downside that the button will later be drawn again, from the queued
idle redraw, but that shouldn't be noticeable.

Regards,
                                        Owen

From nexus@tatoosh.com
Received: (qmail 7460 invoked from network); 24 Feb 1998 02:17:25 -0000
Received: from dialups-39.gig-dial1.ptinet.net (HELO tatoosh.com) 
(root@208.157.242.39)
  by mail2.redhat.com with SMTP; 24 Feb 1998 02:17:25 -0000
Received: from kermit.tatoosh.com (nexus@kermit.tatoosh.com [192.168.100.3])
	by tatoosh.com (8.8.5/8.8.5) with SMTP id RAA24829
	for <gtk-list@redhat.com>; Mon, 23 Feb 1998 17:38:05 -0800
Date: Mon, 23 Feb 1998 17:32:40 -0800 (PST)
From: "Brian C. Lane" <nexus@tatoosh.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: multi-tasking
In-Reply-To: <lzk9am72sz.fsf@cu-dialup-0411.cit.cornell.edu>
Message-ID: <Pine.LNX.3.96.980223173016.13439A-100000@kermit.tatoosh.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

On 23 Feb 1998, Owen Taylor wrote:

> No. (It will be part of the themeability support, but not now)

  Thanks, that's what I groked from the code. I've switched back to an
eventBox. 

> But have some pity on the user. Why not just make the volume control
> a scale?

  No space for a slider, I'm trying to keep it as compact as possible
(actually it is a slight variation on freeCD for win95, using his
pixmaps).

> True. It is just getting queued for redraw. In 0.99.4 you will be able to
> fix that by doing the:
> 
>   while (gtk_events_pending())
>     gtk_main_iteration();

  I'll switch to that when 0.99.4 is released I guess.

> 
> thing, before going off and doing your long operation. But there is an
> even easier way, that I didn't think of mentioning earlier: just call:
> 
>   gtk_widget_draw (button, NULL);
> 

  Ah! I knew there had to be a call like that. Thanks!

  Brian

======================================================================
Nexus Computing                           http://www.eskimo.com/~nexus
Electronics, Embedded Software and Linux             nexus@tatoosh.com

From nexus@tatoosh.com
Received: (qmail 23083 invoked from network); 25 Feb 1998 05:08:52 -0000
Received: from dialups-57.gig-dial2.ptinet.net (HELO tatoosh.com) 
(root@208.157.242.57)
  by mail2.redhat.com with SMTP; 25 Feb 1998 05:08:52 -0000
Received: from kermit.tatoosh.com (nexus@kermit.tatoosh.com [192.168.100.3])
	by tatoosh.com (8.8.5/8.8.5) with SMTP id UAA01788;
	Tue, 24 Feb 1998 20:59:40 -0800
Date: Tue, 24 Feb 1998 20:54:13 -0800 (PST)
From: "Brian C. Lane" <nexus@tatoosh.com>
To: linux-announce@news.ornl.gov
Subject: XfreeCD v0.5 (beta) release
Message-ID: <Pine.LNX.3.96.980224205135.15612A-100000@kermit.tatoosh.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII


  XfreeCD is a Xwindows CD player written using GTK+ v.99.3

  This beta release is working perfectly for me, so its time to
release it to the world and watch it crash and burn <G>. It is available
from the Linux Software section of my webpage at:

  http://www.eskimo.com/~nexus

  Any and all feedback is welcome!

  Brian

======================================================================
Nexus Computing                           http://www.eskimo.com/~nexus
Electronics, Embedded Software and Linux             nexus@tatoosh.com

From timg@means.net
Received: (qmail 13742 invoked from network); 2 Mar 1998 16:34:28 -0000
Received: from halstad-59.dialup.means.net (HELO Camille) (timg@206.10.30.64)
  by mail2.redhat.com with SMTP; 2 Mar 1998 16:34:28 -0000
Received: from timg by Camille with local (Exim 1.58 #1)
	id 0y9YC8-0000tu-00; Mon, 2 Mar 1998 10:36:00 -0600
Message-ID: <19980302103600.52848@Camille.gerla.org>
Date: Mon, 2 Mar 1998 10:36:00 -0600
From: "Tim P. Gerla" <timg@means.net>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: multi-tasking
References: <lzk9am72sz.fsf@cu-dialup-0411.cit.cornell.edu> 
<Pine.LNX.3.96.980223173016.13439A-100000@kermit.tatoosh.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-Mailer: Mutt 0.81
In-Reply-To: <Pine.LNX.3.96.980223173016.13439A-100000@kermit.tatoosh.com>; 
from Brian C. Lane on Mon, Feb 23, 1998 at 05:32:40PM -0800
Sender: RHS Linux User <timg@Camille>

On Mon, Feb 23, 1998 at 05:32:40PM -0800, Brian C. Lane wrote:
> 
> > True. It is just getting queued for redraw. In 0.99.4 you will be able to
> > fix that by doing the:
> > 
> >   while (gtk_events_pending())
> >     gtk_main_iteration();
> 
Saw this a while back...I was wondering if it would be safe to put this in a
timeout? Thanks.

-- 
-Tim
timg@means.net | http://flow.ml.org/

From owt1@cornell.edu
Received: (qmail 12120 invoked from network); 2 Mar 1998 17:28:52 -0000
Received: from cu-dialup-0910.cit.cornell.edu (mail@132.236.155.88)
  by mail2.redhat.com with SMTP; 2 Mar 1998 17:28:52 -0000
Received: from otaylor by cu-dialup-0910.cit.cornell.edu with local (Exim 1.82 #1)
	id 0y9Z35-0001SO-00; Mon, 2 Mar 1998 12:30:43 -0500
To: "Tim P. Gerla" <timg@means.net>
Cc: gtk-list@redhat.com
Subject: Re: multi-tasking
References: <19980302103600.52848@Camille.gerla.org>
From: Owen Taylor <owt1@cornell.edu>
Date: 02 Mar 1998 12:30:42 -0500
In-Reply-To: "Tim P. Gerla"'s message of Mon, 2 Mar 1998 10:36:00 -0600
Message-ID: <lz3eh1vw3h.fsf@cu-dialup-0910.cit.cornell.edu>
Lines: 16
X-Mailer: Gnus v5.5/Emacs 20.2
X-Emacs: Emacs 20.2, MULE 3.0 (MOMIJINOGA)
MIME-Version: 1.0 (generated by SEMI MIME-Edit 0.98 - =?ISO-8859-4?Q?"D=F2?=
  =?ISO-8859-4?Q?h=F2ji"?=)
Content-Type: text/plain; charset=US-ASCII


"Tim P. Gerla" <timg@means.net> writes:

> On Mon, Feb 23, 1998 at 05:32:40PM -0800, Brian C. Lane wrote:
> > 
> > > True. It is just getting queued for redraw. In 0.99.4 you will be able to
> > > fix that by doing the:
> > > 
> > >   while (gtk_events_pending())
> > >     gtk_main_iteration();
> > 
> Saw this a while back...I was wondering if it would be safe to put this in a
> timeout? Thanks.

Yep.
                                        Owen

From petm@scam.XCF.Berkeley.EDU
Received: (qmail 27695 invoked from network); 12 Mar 1998 23:27:52 -0000
Received: from scam.xcf.berkeley.edu (HELO xcf.berkeley.edu) (128.32.43.201)
  by mail2.redhat.com with SMTP; 12 Mar 1998 23:27:52 -0000
Received: (qmail 16505 invoked from network); 12 Mar 1998 23:15:58 -0000
Received: from localhost (127.0.0.1)
  by localhost with SMTP; 12 Mar 1998 23:15:58 -0000
To: gtk-list@redhat.com
Date: Thu, 12 Mar 1998 15:15:57 -0800
From: Peter Mattis <petm@scam.XCF.Berkeley.EDU>


------- Forwarded Message

>From rdutt@voxel.net Thu Mar 12 09:58:31 1998
Return-Path: <rdutt@voxel.net>
Delivered-To: petm@xcf.berkeley.edu
Received: (qmail 26490 invoked from network); 12 Mar 1998 09:58:29 -0000
Received: from zinc.singnet.com.sg (165.21.7.31)
  by scam.xcf.berkeley.edu with SMTP; 12 Mar 1998 09:58:29 -0000
Received: from voxel.net (root@ts900-5614.singnet.com.sg [165.21.161.98])
	by zinc.singnet.com.sg (8.8.7/8.8.7) with ESMTP id SAA01799;
	Thu, 12 Mar 1998 18:10:17 +0800 (SGT)
Sender: root@zinc.singnet.com.sg
Message-ID: <3507B434.13728219@voxel.net>
Date: Thu, 12 Mar 1998 10:08:52 +0000
From: rdutt <rdutt@voxel.net>
X-Mailer: Mozilla 4.03 [en] (X11; I; Linux 2.0.33 i686)
MIME-Version: 1.0
To: petm@xcf.berkeley.edu, spencer@xcf.berkeley.edu, jmacd@xcf.berkeley.edu
Subject: gtk funding
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

gentlemen:

	my company (voxel systems - http://www.voxel.net) has recently set
aside a limited amount of money (very limited at this point since we are
a small startup) to help worthy linux projects.

	we feel that gtk can be classified as one of these 'worthy' projects,
as it has shown phenomenal growth in the past few months and an amazing
speed of development.

	we are currently thinking of something along the lines of registering a
domain name, providing some PC parts for needy core developers. as you
can see, we are talking about hundreds rather than thousands of dollars
per project. if you are interested, please contact me.

best regards,
	raj dutt
	rdutt@voxel.net

	http://www.voxel.net


------- End of Forwarded Message

From rdutt@voxel.net
Received: (qmail 3346 invoked from network); 15 Mar 1998 09:42:23 -0000
Received: from copper.singnet.com.sg (165.21.7.30)
  by mail2.redhat.com with SMTP; 15 Mar 1998 09:42:23 -0000
Received: from vx1.voxel (root@ts900-14124.singnet.com.sg [165.21.182.140])
	by copper.singnet.com.sg (8.8.7/8.8.7) with SMTP id RAA00513
	for gtk-list@redhat.com; Sun, 15 Mar 1998 17:42:19 +0800 (SGT)
Date: Sun, 15 Mar 1998 17:42:19 +0800 (SGT)
Message-Id: <199803150942.RAA00513@copper.singnet.com.sg>
From: Raj Dutt <rdutt@voxel.net>
To: gtk-list@redhat.com
Subject: gtk_statusbar_new
X-Mailer: XCmail 0.12.4 - with PGP support, PGP engine version 0.5
X-Mailerorigin: http://www.fsai.fh-trier.de/~schmitzj/Xclasses/XCmail/
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable


hello,

i am trying to hack together a gtk ftp client.. and i am having some trouble
with gtk, since it is my first time really using it. i have a few questions
that i'd be most greatful for answers :

-1- for the progress bar widget, shouldn't it update itself as soon as you
set the percentage that it is at? why does it wait and put itself in a draw
qeue (i think this is what it is doing)

-2- is the tutorial outdated or am i doing something wrong? i can't seem to
get anywhere with gtk_statusbar_new.. has the function name changed or are
statusbars implemented in a different way?

-3- what are the pros/cons/differences between list and clist. which one
would be better for a scrollable list of files with date,time,size. more
importantly, which one would be better if i need to implement multiple file
selecting (multiple list item tagging)

-4- someone said that are going to be no more architectural changes to gtk
for 1.0 (he said that there have been no signficant changes since .99.4). is
this true?

-5- is there any reason why the panes widget implementation is the way it is?
why can you only change the pane area with that one little square? is it
only because we are trying to implement the ugliest widget set in history
(MOTIF). I think it is a better idea if you can drag panes anywhere along the
borders. this is the way it is done in Windows and Amiga. It makes better
sense. If this has already been brought up, apologies for repetition ; if
not, consider it a proposal. I can see no reason why it should not be this
way.

-6- Speaking of interfaces, I would highly suggest using the IRIX (?) style
scrollbars (with both up and down buttons on the bottom).. this really is a
timesaver once you get used to it. Would this be taken care of through the
planed themes api or should this be discussed atm?

tia for any responses. i appreciate it.

-raj

From rdutt@voxel.net
Received: (qmail 26586 invoked from network); 16 Mar 1998 11:36:06 -0000
Received: from copper.singnet.com.sg (165.21.7.30)
  by mail2.redhat.com with SMTP; 16 Mar 1998 11:36:06 -0000
Received: from vx1.voxel (root@ts900-6001.singnet.com.sg [165.21.162.85])
	by copper.singnet.com.sg (8.8.7/8.8.7) with SMTP id TAA21769
	for gtk-list@redhat.com; Mon, 16 Mar 1998 19:36:02 +0800 (SGT)
Date: Mon, 16 Mar 1998 19:36:02 +0800 (SGT)
Message-Id: <199803161136.TAA21769@copper.singnet.com.sg>
From: Raj Dutt <rdutt@voxel.net>
To: gtk-list@redhat.com
Subject: interface questions/proposals
X-Mailer: XCmail 0.12.4 - with PGP support, PGP engine version 0.5
X-Mailerorigin: http://www.fsai.fh-trier.de/~schmitzj/Xclasses/XCmail/
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable

i mentioned this before, but it was hidden in the midst of other questions
and a really bad topic sentence :)

i am really impressed with both the quality and the look of the gtk widget
set.. but there are three issues that really bug me. these are not at all
architectural changes so they wont break anything :)

firstly, the panes implementation. currently, the user can only change the
size of the panes by a small rectangular box placed at the bottom corner of
the pane. This is the way it is done in Motif, but i see no reason why it
should be implemented this way in gtk. i propose that the pane widget be
modified so that size control can be done from any pane boundary..

secondly, the scrollbars. Right now, they are implemented ala
windows95/motif/MacOS.. which is probably the most intuitive for most users.
However, i must take this oppurtunity to propose the alternative style (that
i have seen on some IRIX systems i believe) where the scroll buttons are on
the bottom.. this may take some getting used to but is really a timesaver. i
think that the mainstream can easily adapt and will eventually be pleased..

ps - (just one question =]) - there was some discussion on this list about
the way that progress bar was updated. some feel that the progress bar should
be updated instantly (ie non queued updating) is this being considered atm?

thanks,
nopzor

From roba@dcs.ed.ac.uk
Received: (qmail 2593 invoked from network); 16 Mar 1998 11:53:14 -0000
Received: from muck.dcs.ed.ac.uk (root@129.215.160.15)
  by mail2.redhat.com with SMTP; 16 Mar 1998 11:53:14 -0000
Received: from canna.dcs.ed.ac.uk (root@canna.dcs.ed.ac.uk [129.215.216.106])
          by muck.dcs.ed.ac.uk with SMTP id LAA27676
          for <gtk-list@redhat.com>; Mon, 16 Mar 1998 11:52:33 GMT
Message-Id: <14987.199803161152@canna.dcs.ed.ac.uk>
Received: from dcs.ed.ac.uk by canna.dcs.ed.ac.uk; Mon, 16 Mar 1998 11:52:32 GMT
X-Mailer: exmh version 2.0.1 12/23/97
To: gtk-list@redhat.com
Subject: Re: [gtk-list] interface questions/proposals 
In-reply-to: rdutt's message of Mon, 16 Mar 1998 19:36:02 +0800.
	     <199803161136.TAA21769@copper.singnet.com.sg> 
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Date: Mon, 16 Mar 1998 11:52:31 +0000
From: Robert Atkey <roba@dcs.ed.ac.uk>

 Raj Dutt <rdutt@voxel.net> wrote:

> secondly, the scrollbars. Right now, they are implemented ala
> windows95/motif/MacOS.. which is probably the most intuitive for most u=
sers.
> However, i must take this oppurtunity to propose the alternative style =
(that
> i have seen on some IRIX systems i believe) where the scroll buttons ar=
e on
> the bottom.. this may take some getting used to but is really a timesav=
er. i
> think that the mainstream can easily adapt and will eventually be pleas=
ed..

What if the buttons were left where they are and a right click on the but=
ton =

reversed the direction (as on Acorn RISC OS machines). This would keep th=
e =

same interface that users are used to and add functionality.

Bob

From rdutt@voxel.net
Received: (qmail 4405 invoked from network); 16 Mar 1998 14:17:27 -0000
Received: from copper.singnet.com.sg (165.21.7.30)
  by mail2.redhat.com with SMTP; 16 Mar 1998 14:17:27 -0000
Received: from vx1.voxel (root@ts900-4108.singnet.com.sg [165.21.153.124])
	by copper.singnet.com.sg (8.8.7/8.8.7) with SMTP id WAA18685;
	Mon, 16 Mar 1998 22:17:12 +0800 (SGT)
Date: Mon, 16 Mar 1998 22:17:12 +0800 (SGT)
Message-Id: <199803161417.WAA18685@copper.singnet.com.sg>
From: Raj Dutt <rdutt@voxel.net>
To: gtk-list@redhat.com
Cc: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: interface questions/proposals
In-Reply-To: <14987.199803161152@canna.dcs.ed.ac.uk>
X-Mailer: XCmail 0.12.4 - with PGP support, PGP engine version 0.5
X-Mailerorigin: http://www.fsai.fh-trier.de/~schmitzj/Xclasses/XCmail/
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable

---Reply on mail from Robert Atkey about [gtk-list] 
Re: interface questions/proposals

> 
> What if the buttons were left where they are and a right click on the button 
> reversed the direction (as on Acorn RISC OS machines). This would keep the 
> same interface that users are used to and add functionality.
> 
> Bob
> 

that sounds like a very interesting and good compromise. makes alot of sense
interface wise speaking. i was thinking, could the themes api also control
such attributes such as the look of the scrollbar down to the point of
placement of buttons?

--raj

From raster@redhat.com
Received: (qmail 12169 invoked from network); 16 Mar 1998 15:05:43 -0000
Received: from lacrosse.redhat.com (root@207.175.42.154)
  by mail2.redhat.com with SMTP; 16 Mar 1998 15:05:43 -0000
Received: from trode.redhat.com (root@trode.redhat.com [199.183.24.80])
	by lacrosse.redhat.com (8.8.7/8.8.7) with ESMTP id KAA13157;
	Mon, 16 Mar 1998 10:05:37 -0500
Received: from redhat.com (raster@trode [127.0.0.1])
	by trode.redhat.com (8.8.7/8.8.7) with ESMTP id KAA17563;
	Mon, 16 Mar 1998 10:02:43 -0500
From: raster@redhat.com
Message-Id: <199803161502.KAA17563@trode.redhat.com>
Date: Mon, 16 Mar 1998 10:02:39 -0500 (EST)
Reply-To: raster@redhat.com
Subject: Re: [gtk-list] interface questions/proposals
To: gtk-list@redhat.com
cc: rdutt@voxel.net
In-Reply-To: <199803161136.TAA21769@copper.singnet.com.sg>
MIME-Version: 1.0
Content-Type: TEXT/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8BIT

On 16 Mar, Raj Dutt shouted:
->  
->  secondly, the scrollbars. Right now, they are implemented ala
->  windows95/motif/MacOS.. which is probably the most intuitive for most users.
->  However, i must take this oppurtunity to propose the alternative style (that
->  i have seen on some IRIX systems i believe) where the scroll buttons are on
->  the bottom.. this may take some getting used to but is really a timesaver. i
->  think that the mainstream can easily adapt and will eventually be pleased..

even though what you say is true (the Amiga implimented arrows this way
too) - it is much more usable - this is somehting to be left upt to
themes to eventually impliment so the user can eventually choose the
style they want/prefer and we can all stop arguing which way is better
because al ways are correct - just some are more correct for some users
than others.

->  ps - (just one question ÿ - there was some discussion on this list about
->  the way that progress bar was updated. some feel that the progress bar should
->  be updated instantly (ie non queued updating) is this being considered atm?
->  
->  thanks,
->  nopzor
->  

-- 
--------------- Codito, ergo sum - "I code, therefore I am" --------------------
raster@rasterman.com       /\___ /\ ___/||\___ ____/|/\___  raster@redhat.com
Carsten Haitzler           | _ //__\\ __||_ __\\ ___|| _ /  Red Hat Advanced
218/21 Conner Drive        || // __ \\_ \ | |   \ _/_|| /   Development Labs
Chapel Hill NC 27514 USA   ||\\\/  \//__/ |_|   /___/||\\   919 547 0012 ext 282
+1 (919) 929 9443, 801 4392   For pure Enlightenmenthttp://www.rasterman.com/ 

From raster@redhat.com
Received: (qmail 19407 invoked from network); 16 Mar 1998 15:09:03 -0000
Received: from lacrosse.redhat.com (root@207.175.42.154)
  by mail2.redhat.com with SMTP; 16 Mar 1998 15:09:03 -0000
Received: from trode.redhat.com (root@trode.redhat.com [199.183.24.80])
	by lacrosse.redhat.com (8.8.7/8.8.7) with ESMTP id KAA13329;
	Mon, 16 Mar 1998 10:08:59 -0500
Received: from redhat.com (raster@trode [127.0.0.1])
	by trode.redhat.com (8.8.7/8.8.7) with ESMTP id KAA17579;
	Mon, 16 Mar 1998 10:06:05 -0500
From: raster@redhat.com
Message-Id: <199803161506.KAA17579@trode.redhat.com>
Date: Mon, 16 Mar 1998 10:06:02 -0500 (EST)
Reply-To: raster@redhat.com
Subject: Re: [gtk-list] Re: interface questions/proposals
To: gtk-list@redhat.com
cc: rdutt@voxel.net
In-Reply-To: <199803161417.WAA18685@copper.singnet.com.sg>
MIME-Version: 1.0
Content-Type: TEXT/plain; CHARSET=US-ASCII

On 16 Mar, Raj Dutt shouted:
->  ---Reply on mail from Robert Atkey about [gtk-list] 
Re: interface questions/proposals
->  
->  > 
->  > What if the buttons were left where they are and a right click on the button 
->  > reversed the direction (as on Acorn RISC OS machines). This would keep the 
->  > same interface that users are used to and add functionality.
->  > 
->  > Bob
->  > 
->  
->  that sounds like a very interesting and good compromise. makes alot of sense
->  interface wise speaking. i was thinking, could the themes api also control
->  such attributes such as the look of the scrollbar down to the point of
->  placement of buttons?

yes - in phase 2 of themes. phase one is just replacing all the "look"
phase 2 will allow themes to rearrange widgets so scrollbars are for
example on the left not the right, or the top, not the bottom, arrows
are together, apart, or perhaps not even existant at all. the user will
decide this and so we will have the bets interface for EVERYONE.

->  --raj
->  

-- 
--------------- Codito, ergo sum - "I code, therefore I am" --------------------
raster@rasterman.com       /\___ /\ ___/||\___ ____/|/\___  raster@redhat.com
Carsten Haitzler           | _ //__\\ __||_ __\\ ___|| _ /  Red Hat Advanced
218/21 Conner Drive        || // __ \\_ \ | |   \ _/_|| /   Development Labs
Chapel Hill NC 27514 USA   ||\\\/  \//__/ |_|   /___/||\\   919 547 0012 ext 282
+1 (919) 929 9443, 801 4392   For pure Enlightenmenthttp://www.rasterman.com/ 

From rlb@cs.utexas.edu
Received: (qmail 21395 invoked from network); 18 Mar 1998 22:38:21 -0000
Received: from mail.cs.utexas.edu (root@128.83.139.10)
  by mail2.redhat.com with SMTP; 18 Mar 1998 22:38:21 -0000
Received: from nevermore.csres.utexas.edu (mail@dial-128-30.ots.utexas.edu 
[128.83.46.174])
	by mail.cs.utexas.edu (8.8.5/8.8.5) with SMTP id QAA29302
	for <gtk-list@redhat.com>; Wed, 18 Mar 1998 16:38:07 -0600 (CST)
Received: from rlb by nevermore.csres.utexas.edu with local (Exim 1.82 #1)
	id 0yFQXF-0002Xm-00 (Debian); Wed, 18 Mar 1998 15:38:05 -0600
To: gtk-list@redhat.com
Subject: Re: [gtk-list] interface questions/proposals
References: <199803161136.TAA21769@copper.singnet.com.sg>
From: Rob Browning <rlb@cs.utexas.edu>
Date: 18 Mar 1998 15:38:05 -0600
In-Reply-To: Raj Dutt's message of "Mon, 16 Mar 1998 19:36:02 +0800 (SGT)"
Message-ID: <8767lb65oi.fsf@nevermore.csres.utexas.edu>
Lines: 21
X-Mailer: Gnus v5.6.2/Emacs 20.2

Raj Dutt <rdutt@voxel.net> writes:

> where the scroll buttons are on the bottom.. this may take some
> getting used to but is really a timesaver. i

Actually my favorite approach is to pair the scroll arrows together in
the center of the thumb (or on one end, top or bottom), and have the
cursor move with the thumb while you're scrolling (by holding down one
of the arrows).

This means that you have "one stop shopping" for all scrolling motion.
For example, if you want to go to a particular location, you click the
middle mouse on the scroll bar at that location -- the thumb jumps
there and the arrows with it, leaving the cursor in exactly the right
position to make fine adjustments with the arrows.

I've forgotten which GUI did this, but I have seen it before.

-- 
Rob Browning <rlb@cs.utexas.edu>
PGP fingerprint = E8 0E 0D 04 F5 21 A0 94  53 2B 97 F5 D6 4E 39 30

From evan@unix.worldpath.net
Received: (qmail 14217 invoked from network); 18 Mar 1998 23:05:54 -0000
Received: from unix.worldpath.net (@206.152.180.10)
  by mail2.redhat.com with SMTP; 18 Mar 1998 23:05:54 -0000
Received: from unix.worldpath.net (unix.worldpath.net [206.152.180.10]) 
by unix.worldpath.net (8.8.5/8.8.5(WPI)) with SMTP id SAA08757; 
Wed, 18 Mar 1998 18:02:38 -0500 (EST)
Date: Wed, 18 Mar 1998 18:02:37 -0500 (EST)
From: Evan Lawrence <evan@unix.worldpath.net>
To: Rob Browning <rlb@cs.utexas.edu>
cc: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: interface questions/proposals
In-Reply-To: <8767lb65oi.fsf@nevermore.csres.utexas.edu>
Message-ID: <Pine.GSO.3.95.980318175845.7944B-100000@unix.worldpath.net>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

Yeah, this is what the XView toolkit does... I actually find it a little
awkward, and most 95 users would find it hard to get accustomed to. Since
obviously a lot of people have different tastes in this kind of thing, I
would have to agree with raster (I think he's who's working on it) and say
this kind of thing should be left up to themes.

--
Evan Lawrence

On 18 Mar 1998, Rob Browning wrote:

> Raj Dutt <rdutt@voxel.net> writes:
> 
> > where the scroll buttons are on the bottom.. this may take some
> > getting used to but is really a timesaver. i
> 
> Actually my favorite approach is to pair the scroll arrows together in
> the center of the thumb (or on one end, top or bottom), and have the
> cursor move with the thumb while you're scrolling (by holding down one
> of the arrows).
> 
> This means that you have "one stop shopping" for all scrolling motion.
> For example, if you want to go to a particular location, you click the
> middle mouse on the scroll bar at that location -- the thumb jumps
> there and the arrows with it, leaving the cursor in exactly the right
> position to make fine adjustments with the arrows.
> 
> I've forgotten which GUI did this, but I have seen it before.
> 
> -- 
> Rob Browning <rlb@cs.utexas.edu>
> PGP fingerprint = E8 0E 0D 04 F5 21 A0 94  53 2B 97 F5 D6 4E 39 30
> 
> -- 
> To unsubscribe: mail -s unsubscribe gtk-list-request@redhat.com < /dev/null
> 
> 

From mark@snet.fri.uni-lj.si
Received: (qmail 31772 invoked from network); 19 Mar 1998 18:53:38 -0000
Received: from stealth.fri.uni-lj.si (HELO snet.fri.uni-lj.si) (@193.2.72.13)
  by mail2.redhat.com with SMTP; 19 Mar 1998 18:53:38 -0000
Received: from snet.fri.uni-lj.si (6.vppp.kiss.uni-lj.si [193.2.98.38]) 
by snet.fri.uni-lj.si (8.8.7/8.7.3) with ESMTP id TAA29033 for 
<gtk-list@redhat.com>; Thu, 19 Mar 1998 19:53:22 +0100 (MET)
Sender: mark@snet.fri.uni-lj.si
Message-ID: <351159A6.EDB5E125@snet.fri.uni-lj.si>
Date: Thu, 19 Mar 1998 18:45:10 +0100
From: Marko Macek <Marko.Macek@snet.fri.uni-lj.si>
Reply-To: Marko.Macek@snet.fri.uni-lj.si
X-Mailer: Mozilla 4.04 [en] (X11; I; Linux 2.0.33 i586)
MIME-Version: 1.0
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: interface questions/proposals
References: <199803161136.TAA21769@copper.singnet.com.sg> 
<8767lb65oi.fsf@nevermore.csres.utexas.edu>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Rob Browning wrote:
> 
> Raj Dutt <rdutt@voxel.net> writes:
> 
> > where the scroll buttons are on the bottom.. this may take some
> > getting used to but is really a timesaver. i
> 
> Actually my favorite approach is to pair the scroll arrows together in
> the center of the thumb (or on one end, top or bottom), and have the
> cursor move with the thumb while you're scrolling (by holding down one
> of the arrows).
> 
> This means that you have "one stop shopping" for all scrolling motion.
> For example, if you want to go to a particular location, you click the
> middle mouse on the scroll bar at that location -- the thumb jumps
> there and the arrows with it, leaving the cursor in exactly the right
> position to make fine adjustments with the arrows.
> 
> I've forgotten which GUI did this, but I have seen it before.

OpenLook.  The feature that moves the mouse by itself is REALLY
ANNOYING (almost as much as fvwm when opening the menu). I would 
never use a system that moves the mouse pointer without me actually
moving the mouse.

Mark
-- 
... MouseDevice "/dev/null"
--------_--------------------------------------------------------------
Marko.Macek@snet.fri.uni-lj.si      http://ixtas.fri.uni-lj.si/~markom/

From amundson@gimp.org
Received: (qmail 10973 invoked from network); 3 Apr 1998 07:09:11 -0000
Received: from graft.xcf.berkeley.edu (HELO wilber.gimp.org) (mail@128.32.43.209)
  by mail2.redhat.com with SMTP; 3 Apr 1998 07:09:11 -0000
Received: from amundson by wilber.gimp.org with local-smtp (Exim 1.891 #1 (Debian))
	id 0yL0b7-0007v3-00; Thu, 2 Apr 1998 23:09:09 -0800
Date: Thu, 2 Apr 1998 23:09:09 -0800 (PST)
From: "Shawn T. Amundson" <amundson@gimp.org>
To: gtk-list@redhat.com
Subject: ANNOUNCE: gcalendar / gtkcalendar
Message-ID: <Pine.LNX.3.96.980402224828.30191A-100000@wilber.gimp.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII


gcalendar 0.5.0 is now available at:

ftp://ftp.gimp.org/pub/users/amundson/gcalendar-0.5.0.tar.gz

gcalendar is the testbed for the gtkcalendar widget written
by myself and Cesar Miquel.  gtkcalendar is included in this
distribution as well as in gnome-libs (look for it in the 
current CVS of gnome).  It is very likely gtkcalendar will be 
in GTK+ 1.1 and later.

gcalendar is not a complex program.  In fact, all it does
is show you the gtkcalendar widget.  So why release it?
I have released it because the widget is generally useful,
and there has been at least a minimal interest in such a 
widget.  Patches will be accepted and considered. ;-)

We are not finished with the widget, but it does satisfy
the minimum requirements and is generally usable.  

--
Shawn T. Amundson               
amundson@gimp.org               http://www.gimp.org/~amundson

From kenelson@ece.ucdavis.edu
Received: (qmail 27460 invoked from network); 21 May 1998 21:48:05 -0000
Received: from clover.ece.ucdavis.edu (@128.120.57.1)
  by mail2.redhat.com with SMTP; 21 May 1998 21:48:05 -0000
Received: from clover.ece.ucdavis.edu (kenelson@localhost)
	by clover.ece.ucdavis.edu (8.8.7/8.8.7) with ESMTP id OAA05291;
	Thu, 21 May 1998 14:48:01 -0700 (PDT)
Message-Id: <199805212148.OAA05291@clover.ece.ucdavis.edu>
X-Mailer: exmh version 1.6.6 3/24/96
To: gtk-list@redhat.com
cc: kenelson@clover.ece.ucdavis.edu
Subject: [gtk-list] Proposed widget 
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Date: Thu, 21 May 1998 14:48:00 -0700
From: Karl Nelson <kenelson@ece.ucdavis.edu>


I am about half way through developing a new widget for one of
my own projects.  I thought it might be a good idea to show
it off and get some feedback on its design so that it will
fit with the form of the rest of gtk.  (I have also run into
some sticky issues that I need addressed.)

The concept of the widget is a triangular selector to
allow the user to choose the ratio between three competing
factors.  (A common theme in many games...  what ratio
do you want between farming/industry/research for example.)

I have placed a mock up of the widget on web sites.  Please
check it out and mail me comments, critisisms and general thoughts.

http://www.ece.ucdavis.edu/~kenelson/gtk/trisel/

Thanks for your time.

--Karl 

From kc5tja@topaz.axisinternet.com
Received: (qmail 13861 invoked from network); 21 May 1998 22:13:08 -0000
Received: from axisinternet.com (HELO topaz.axisinternet.com) (root@207.213.59.10)
  by mail2.redhat.com with SMTP; 21 May 1998 22:13:08 -0000
Received: from topaz.axisinternet.com (kc5tja@axisinternet.com [207.213.59.10])
	by topaz.axisinternet.com (8.8.5/8.8.5) with SMTP id PAA32511;
	Thu, 21 May 1998 15:04:03 -0700
Date: Thu, 21 May 1998 15:04:03 -0700 (PDT)
From: KC5TJA <kc5tja@topaz.axisinternet.com>
To: gtk-list@redhat.com
cc: kenelson@clover.ece.ucdavis.edu
Subject: Re: [gtk-list] Proposed widget
In-Reply-To: <199805212148.OAA05291@clover.ece.ucdavis.edu>
Message-ID: <Pine.LNX.3.96.980521150206.18359T-100000@topaz.axisinternet.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

> The concept of the widget is a triangular selector to
> allow the user to choose the ratio between three competing
> factors.  (A common theme in many games...  what ratio
> do you want between farming/industry/research for example.)

The Amiga has a "proportional gadget" that can be used for horizontal,
vertical, OR bi-axial selections.  If I knew how, I'd write a GTK widget
that did exactly the same thing.  However, I found that GTK's object model
is hard to write for.

==========================================================================
      KC5TJA/6     |                  -| TEAM DOLPHIN |-
        DM13       |                  Samuel A. Falvo II
    QRP-L #1447    |          http://www.dolphin.openprojects.net

From nuke@bayside.net
Received: (qmail 16130 invoked from network); 22 May 1998 00:46:08 -0000
Received: from nuklear.steelcity.net (208.22.42.104)
  by mail2.redhat.com with SMTP; 22 May 1998 00:46:08 -0000
Received: from localhost (nuke@localhost)
	by nuklear.steelcity.net (8.8.8/8.8.8/Debian/GNU) with SMTP id EAA31977;
	Fri, 22 May 1998 04:38:35 -0400
X-Authentication-Warning: nuklear.steelcity.net: nuke owned process doing -bs
Date: Fri, 22 May 1998 04:38:35 -0400 (EDT)
From: <nuke@bayside.net>
X-Sender: nuke@nuklear.steelcity.net
To: gtk-list@redhat.com
cc: kenelson@clover.ece.ucdavis.edu
Subject: Re: [gtk-list] Proposed widget
In-Reply-To: <199805212148.OAA05291@clover.ece.ucdavis.edu>
Message-ID: <Pine.LNX.3.96.980522043353.31950A-100000@nuklear.steelcity.net>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

> The concept of the widget is a triangular selector to
> allow the user to choose the ratio between three competing
> factors.  (A common theme in many games...  what ratio
> do you want between farming/industry/research for example.)
> http://www.ece.ucdavis.edu/~kenelson/gtk/trisel/

as neat as this is, i don't think it's a very good candidate for the gtk
distribution. i really don't have any authority to say, so don't take my
words to be gold, but IMO gtk shouldn't get much bigger than it already
is. i'm afraid someday in the far future we'll look back and laugh at
"those gtk people, just ended up reinventing Motif".

let's not let gtk get stuffed with every widget ever imagined.. maybe we
could have a text file "EXTERNAL_WIDGETS" with URLs pointing to some other
not-made-for-main-distribution widgets? because personally, i think if
only a few games are going to use this, it should be separate.

 _        _  __     __             _ _                                  _
|        / |/ /_ __/ /_____         |       Nuke Skyjumper               |
|       /    / // /  '_/ -_)        |         "Master of the Farce"      |
|_     /_/|_/\_,_/_/\_\\__/        _|_           nuke@bayside.net       _|

From kenelson@ece.ucdavis.edu  Thu May 11 19:25:07 2000
Received: (qmail 439 invoked from network); 22 May 1998 01:02:18 -0000
Received: from clover.ece.ucdavis.edu (@128.120.57.1)
  by mail2.redhat.com with SMTP; 22 May 1998 01:02:18 -0000
Received: from clover.ece.ucdavis.edu (kenelson@localhost)
	by clover.ece.ucdavis.edu (8.8.7/8.8.7) with ESMTP id SAA09127;
	Thu, 21 May 1998 18:02:12 -0700 (PDT)
Message-Id: <199805220102.SAA09127@clover.ece.ucdavis.edu>
X-Mailer: exmh version 1.6.6 3/24/96
To: gtk-list@redhat.com
cc: kenelson@clover.ece.ucdavis.edu
Subject: Re: [gtk-list] Re: Proposed widget 
In-reply-to: Your message of "Fri, 22 May 1998 04:38:35 PDT."
             <Pine.LNX.3.96.980522043353.31950A-100000@nuklear.steelcity.net> 
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Date: Thu, 21 May 1998 18:02:12 -0700
From: Karl Nelson <kenelson@ece.ucdavis.edu>


> as neat as this is, i don't think it's a very good candidate for the gtk
> distribution. i really don't have any authority to say, so don't take my
> words to be gold, but IMO gtk shouldn't get much bigger than it already
> is. i'm afraid someday in the far future we'll look back and laugh at
> "those gtk people, just ended up reinventing Motif".

I agree.  There is not much of a reason to build all of 
the external widgets into the source, but that still doesn't mean
the contributed widgets like this shouldn't follow as close as
possible to the gtk form.   

> 
> let's not let gtk get stuffed with every widget ever imagined.. maybe we
> could have a text file "EXTERNAL_WIDGETS" with URLs pointing to some other
> not-made-for-main-distribution widgets? because personally, i think if
> only a few games are going to use this, it should be separate.

Or it should be part of a contributed widget bundle that builds a
static library and installs as an option to gtk.  I never like
having URL pointers all over the place as they are constantly out of 
date, so you can never find them.

I can tell you for sure that any pointer I give to this widget 
will be gone within the next two years. (when I graduate)

--Karl

From szi@aibon.ping.de
Received: (qmail 9704 invoked from network); 23 May 1998 08:42:59 -0000
Received: from lilly.ping.de (qmailr@195.37.120.2)
  by mail2.redhat.com with SMTP; 23 May 1998 08:42:59 -0000
Received: (qmail 15297 invoked by uid 10); 23 May 1998 08:42:43 -0000
Received: from aibon.ping.de by lilly.ping.de with UUCP (rmail-0.1-fdc); 
23 May 1998 08:42:42 -0000
Received: (qmail 2361 invoked by uid 1013); 23 May 1998 08:21:49 -0000
To: gtk-list@redhat.com
Subject: Re: Proposed widget
References: <Pine.LNX.3.96.980522043353.31950A-100000@nuklear.steelcity.net>
From: Sascha Ziemann <szi@aibon.ping.de>
Date: 23 May 1998 10:21:49 +0200
In-Reply-To: 's message of Fri, 22 May 1998 04:38:35 -0400 (EDT)
Message-ID: <7u7m3dxuqq.fsf@olivia.aibon.ping.de>
Lines: 10
X-Mailer: Gnus v5.5/Emacs 20.2

<nuke@bayside.net> writes:

| but IMO gtk shouldn't get much bigger than it already is.

Gtk+ should have as much widgets as posible, if they are bug free. On
my system libgtk.so is 989012 Bytes. Where is the problem, when it is
twice as big?

-- 
http://www.ping.de/sites/aibon/

From kc5tja@topaz.axisinternet.com
Received: (qmail 3463 invoked from network); 23 May 1998 15:25:30 -0000
Received: from axisinternet.com (HELO topaz.axisinternet.com) (root@207.213.59.10)
  by mail2.redhat.com with SMTP; 23 May 1998 15:25:30 -0000
Received: from topaz.axisinternet.com (kc5tja@axisinternet.com [207.213.59.10])
	by topaz.axisinternet.com (8.8.5/8.8.5) with SMTP id IAA00990
	for <gtk-list@redhat.com>; Sat, 23 May 1998 08:16:09 -0700
Date: Sat, 23 May 1998 08:16:09 -0700 (PDT)
From: KC5TJA <kc5tja@topaz.axisinternet.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: Proposed widget
In-Reply-To: <7u7m3dxuqq.fsf@olivia.aibon.ping.de>
Message-ID: <Pine.LNX.3.96.980523080830.19A-100000@topaz.axisinternet.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

> Gtk+ should have as much widgets as posible, if they are bug free. On
> my system libgtk.so is 989012 Bytes. Where is the problem, when it is
> twice as big?

AmigaOS 3.1 is less than 512K in size (GTK+ seems to be almost a
megabyte), and includes a complete multitasking, near-real-time OS for
free.  It includes audio drivers, serial port drivers, and bi-directional
parallel port drivers.  It has a world-class user interface as well.  It
can do everything GTK can, and then some, and without the bugs.

I think what he was seeing at this point was that GTK is starting to
suffer from "featuritis."  GTK, alone, is larger than an already too-big
operating system (I'm striving to make an Amiga-like OS in under 64K; and
I know it's already been done before.  Witness QNX and Photon microGUI).

To be honest, your GTK library alone is larger than my entire Linux
kernel, which is also fairly close to 512K (it's around 580K to be exact).

If GTK is to gather all the widgets in the known world, then at least
allow for the ability to use dynamic libraries of widgets; we really
should not use static linking for them.  If I don't want a table widget,
why should I have it linked into my executable?  On my 2GB Linux
partition, I only have 56MB free.  At this point, I must start to worry
about code size.

Don't let the Microsoft way of thinking lure you into this trap: Small
code is usually just as fast and just as powerful as BIG code if done
well.

==========================================================================
      KC5TJA/6     |                  -| TEAM DOLPHIN |-
        DM13       |                  Samuel A. Falvo II
    QRP-L #1447    |          http://www.dolphin.openprojects.net

From nuke@bayside.net
Received: (qmail 6866 invoked from network); 23 May 1998 18:50:33 -0000
Received: from nuklear.steelcity.net (208.22.42.104)
  by mail2.redhat.com with SMTP; 23 May 1998 18:50:33 -0000
Received: from localhost (nuke@localhost)
	by nuklear.steelcity.net (8.8.8/8.8.8/Debian/GNU) with SMTP id WAA02631
	for <gtk-list@redhat.com>; Sat, 23 May 1998 22:42:26 -0400
X-Authentication-Warning: nuklear.steelcity.net: nuke owned process doing -bs
Date: Sat, 23 May 1998 22:42:26 -0400 (EDT)
From: <nuke@bayside.net>
X-Sender: nuke@nuklear.steelcity.net
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: Proposed widget
In-Reply-To: <7u7m3dxuqq.fsf@olivia.aibon.ping.de>
Message-ID: <Pine.LNX.3.96.980523223745.2620B-100000@nuklear.steelcity.net>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

> <nuke@bayside.net> writes:
> 
> | but IMO gtk shouldn't get much bigger than it already is.
> 
> Gtk+ should have as much widgets as posible, if they are bug free. On
> my system libgtk.so is 989012 Bytes. Where is the problem, when it is
> twice as big?

the problem is that even shared libs can be overkill. sure, try telling
"Gtk+ should have as much widgets as posible" to the guy with the 486 and
8mb of ram. no, we are not microsoft. our solution isn't "BUY NEW
HARDWARE!"

just think.. how long has gtk existed as its own toolkit (not a part of
gimp)? less than a year? and already your binary is a meg. what about next
year after we put every single widget ever announced in it? knowing that
gtk development is going to skyrocket this year because of 1.0 (and due to
so many students being off for the summer), there are going to be LOTS of
widgets. do you want a 5mb binary?
 _        _  __     __             _ _                                  _
|        / |/ /_ __/ /_____         |       Nuke Skyjumper               |
|       /    / // /  '_/ -_)        |         "Master of the Farce"      |
|_     /_/|_/\_,_/_/\_\\__/        _|_           nuke@bayside.net       _|

From terop@students.cc.tut.fi
Received: (qmail 23237 invoked from network); 23 May 1998 19:17:56 -0000
Received: from assari.cc.tut.fi (terop@130.230.10.21)
  by mail2.redhat.com with SMTP; 23 May 1998 19:17:56 -0000
Received: (from terop@localhost)
	by assari.cc.tut.fi (8.8.5/8.8.5) id WAA07866;
	Sat, 23 May 1998 22:17:58 +0300 (EET DST)
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: Proposed widget
References: <Pine.LNX.3.96.980523223745.2620B-100000@nuklear.steelcity.net>
From: Tero Pulkkinen <terop@students.cc.tut.fi>
Date: 23 May 1998 22:17:58 +0300
In-Reply-To: <nuke@bayside.net>'s message of "Sat, 23 May 1998 22:42:26 -0400 (EDT)"
Message-ID: <xdud8d4eqzd.fsf@assari.cc.tut.fi>
Lines: 41
X-Mailer: Gnus v5.6.9/Emacs 20.2

> > Gtk+ should have as much widgets as posible, if they are bug free. On
> > my system libgtk.so is 989012 Bytes. Where is the problem, when it is
> > twice as big?

<nuke@bayside.net> writes:
> the problem is that even shared libs can be overkill. sure, try telling
> "Gtk+ should have as much widgets as posible" to the guy with the 486 and
> 8mb of ram. no, we are not microsoft. our solution isn't "BUY NEW
> HARDWARE!"

Shared libs are not (I think) loaded fully to mem, only those parts which are
needed.

> just think.. how long has gtk existed as its own toolkit (not a part of
> gimp)? less than a year? and already your binary is a meg. what about next
> year after we put every single widget ever announced in it? 

The problem is - if something is not put into gtk, everyone will reinvent it
quite many times and we'll have applications which does not have standard
look. (though maybe it could be different library like "libgtkwidgets.so").

Once something is made well enough, it must go into libraries that are
reused, so that it will be reused in applications. This reuse will eventually
lead to *smaller* system instead of larger system.

> knowing that
> gtk development is going to skyrocket this year because of 1.0 (and due to
> so many students being off for the summer), there are going to be LOTS of
> widgets. do you want a 5mb binary?

on solaris its already like 6 Megs :) (with debugging on of course..)

(though I suspect the machine I compile things on is somewhat broken -
a plain old hello world linked with *shared* library becomes 2Megs
executable in it.. must be something wrong with it - strings-command
reveal it lists every symbol from the shared library, while only few
of them are ever used in the program... I dont think it should do
that... )

-- 
-- Tero Pulkkinen -- terop@modeemi.cs.tut.fi --

From amundson@gimp.org
Received: (qmail 8516 invoked from network); 24 May 1998 01:39:45 -0000
Received: from graft.xcf.berkeley.edu (HELO wilber.gimp.org) (mail@128.32.43.209)
  by mail2.redhat.com with SMTP; 24 May 1998 01:39:45 -0000
Received: from amundson by wilber.gimp.org with local-smtp (Exim 1.92 #1 (Debian))
	id 0ydPlD-0004hY-00; Sat, 23 May 1998 18:39:39 -0700
Date: Sat, 23 May 1998 18:39:38 -0700 (PDT)
From: "Shawn T. Amundson" <amundson@gimp.org>
To: gtk-list@redhat.com
Subject: ANNOUNCE: GtkPacker 0.9.0
Message-ID: <Pine.LNX.3.96.980523182823.16080A-100000@wilber.gimp.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII


GtkPacker is a Tk-like packer for the GTK toolkit.  The
algorithm for the packer is the same as the packer in 
Tk 8.0.

Version 0.9.0 is available at:
ftp://ftp.gtk.org/pub/users/amundson/gtkpacker-0.9.0.tar.gz

An demo is included which allows interactive control of 
buttons in a packer.

If you are not familiar with using Tk's packer, I suggest
finding info on Tk which explains it.  A tutorial on the 
packer's layout algorithm is not yet included.

Comments and patches are welcome.

--
Shawn T. Amundson               
amundson@gimp.org               http://www.gimp.org/~amundson

"The assumption that the universe looks the same in every
 direction is clearly not true in reality." - Stephen Hawking

From szi@aibon.ping.de
Received: (qmail 19020 invoked from network); 24 May 1998 08:17:29 -0000
Received: from lilly.ping.de (qmailr@195.37.120.2)
  by mail2.redhat.com with SMTP; 24 May 1998 08:17:29 -0000
Received: (qmail 10789 invoked by uid 10); 24 May 1998 08:17:12 -0000
Received: from aibon.ping.de by lilly.ping.de with UUCP (rmail-0.1-fdc); 
24 May 1998 08:17:12 -0000
Received: (qmail 2951 invoked by uid 1013); 24 May 1998 08:01:39 -0000
To: gtk-list@redhat.com
Subject: Re: Proposed widget
References: <Pine.LNX.3.96.980523080830.19A-100000@topaz.axisinternet.com>
From: Sascha Ziemann <szi@aibon.ping.de>
Date: 24 May 1998 10:01:39 +0200
In-Reply-To: KC5TJA's message of Sat, 23 May 1998 08:16:09 -0700 (PDT)
Message-ID: <7uhg2gxfks.fsf@olivia.aibon.ping.de>
Lines: 15
X-Mailer: Gnus v5.5/Emacs 20.2

KC5TJA <kc5tja@topaz.axisinternet.com> writes:

| AmigaOS 3.1 is less than 512K in size (GTK+ seems to be almost a
| megabyte), and includes a complete multitasking, near-real-time OS for
| free.

AmigaOS is silly gambler garbage. It does have at least any memory
protection and I can continue the list of not existing features... But
I really do not want to hurt your nostalgic reminders, so we should
not continue the discussion about the Amiga. Every normal PC has 32 MB
RAM today. Is it really not acceptable to spend 10% for a full featured
widget set?

-- 
http://www.ping.de/sites/aibon/

From szi@aibon.ping.de
Received: (qmail 19050 invoked from network); 24 May 1998 08:17:30 -0000
Received: from lilly.ping.de (qmailr@195.37.120.2)
  by mail2.redhat.com with SMTP; 24 May 1998 08:17:30 -0000
Received: (qmail 10794 invoked by uid 10); 24 May 1998 08:17:12 -0000
Received: from aibon.ping.de by lilly.ping.de with UUCP (rmail-0.1-fdc); 
24 May 1998 08:17:12 -0000
Received: (qmail 3001 invoked by uid 1013); 24 May 1998 08:12:23 -0000
To: gtk-list@redhat.com
Subject: Re: Proposed widget
References: <Pine.LNX.3.96.980523223745.2620B-100000@nuklear.steelcity.net>
From: Sascha Ziemann <szi@aibon.ping.de>
Date: 24 May 1998 10:12:23 +0200
In-Reply-To: 's message of Sat, 23 May 1998 22:42:26 -0400 (EDT)
Message-ID: <7ug1i0xf2w.fsf@olivia.aibon.ping.de>
Lines: 13
X-Mailer: Gnus v5.5/Emacs 20.2

<nuke@bayside.net> writes:

| there are going to be LOTS of
| widgets. do you want a 5mb binary?

Perhaps you should implement a --without-*-widget commandline option
for configure.

I have to pay 25 DM for 8 MB. I have absolutely no problem to spend 2
pizzas for Gtk+.

-- 
http://www.ping.de/sites/aibon/

From kc5tja@topaz.axisinternet.com
Received: (qmail 9987 invoked from network); 24 May 1998 15:27:35 -0000
Received: from axisinternet.com (HELO topaz.axisinternet.com) (root@207.213.59.10)
  by mail2.redhat.com with SMTP; 24 May 1998 15:27:35 -0000
Received: from topaz.axisinternet.com (kc5tja@axisinternet.com [207.213.59.10])
	by topaz.axisinternet.com (8.8.5/8.8.5) with SMTP id IAA16186
	for <gtk-list@redhat.com>; Sun, 24 May 1998 08:18:04 -0700
Date: Sun, 24 May 1998 08:18:04 -0700 (PDT)
From: KC5TJA <kc5tja@topaz.axisinternet.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: Proposed widget
In-Reply-To: <7uhg2gxfks.fsf@olivia.aibon.ping.de>
Message-ID: <Pine.LNX.3.96.980524081450.15814F-100000@topaz.axisinternet.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

> AmigaOS is silly gambler garbage. It does have at least any memory
> protection and I can continue the list of not existing features... But

You don't need memory protection in a single-user OS.  Bug-free
programs are the responsibility of the programmer, not the OS.  The OS
should, instead, concentrate on providing its services as quickly and as
efficiently as possible.

> I really do not want to hurt your nostalgic reminders, so we should
> not continue the discussion about the Amiga. Every normal PC has 32 MB
> RAM today. Is it really not acceptable to spend 10% for a full featured
> widget set?

My PC only has 16MB of RAM, yet seems perfectly normal to me.  In fact,
most machines I come into contact with still only have 16MB of RAM.

Furthermore, I fail to see how RAM size and free disk space have anything
to do with things.

==========================================================================
      KC5TJA/6     |                  -| TEAM DOLPHIN |-
        DM13       |                  Samuel A. Falvo II
    QRP-L #1447    |          http://www.dolphin.openprojects.net

From kc5tja@topaz.axisinternet.com
Received: (qmail 23687 invoked from network); 24 May 1998 15:51:04 -0000
Received: from axisinternet.com (HELO topaz.axisinternet.com) (root@207.213.59.10)
  by mail2.redhat.com with SMTP; 24 May 1998 15:51:04 -0000
Received: from topaz.axisinternet.com (kc5tja@axisinternet.com [207.213.59.10])
	by topaz.axisinternet.com (8.8.5/8.8.5) with SMTP id IAA18095
	for <gtk-list@redhat.com>; Sun, 24 May 1998 08:41:33 -0700
Date: Sun, 24 May 1998 08:41:33 -0700 (PDT)
From: KC5TJA <kc5tja@topaz.axisinternet.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: Proposed widget
In-Reply-To: <7ug1i0xf2w.fsf@olivia.aibon.ping.de>
Message-ID: <Pine.LNX.3.96.980524083610.15814H-100000@topaz.axisinternet.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

> I have to pay 25 DM for 8 MB. I have absolutely no problem to spend 2
> pizzas for Gtk+.

Problem is: Linux won't load all 5MB into RAM.  It will dump some of that
out to swap file.

Furthermore, we're dealing with harddrive space here as well.  a 5MB
binary is absolutely *******HUGE*******, especially for a single
component.  If you want to have such huge binaries, please make the switch
to Windows.  They have that sort of thing all the time.  I don't want it.

If GTK is going to get much larger than 2MB, I will switch to using LibGGI
and implementing my own user interface.

Now, I have absolutely NO objections to having a 1MB or so libgtk.so file,
and having *extensions* to it, a la GGI.  That I can handle.  But having a
single, monolithic library that is all inclusive is decidedly a
Microsoft-ian way of thinking about the user interface.

==========================================================================
      KC5TJA/6     |                  -| TEAM DOLPHIN |-
        DM13       |                  Samuel A. Falvo II
    QRP-L #1447    |          http://www.dolphin.openprojects.net

From kc5tja@topaz.axisinternet.com
Received: (qmail 29461 invoked from network); 24 May 1998 15:59:56 -0000
Received: from axisinternet.com (HELO topaz.axisinternet.com) (root@207.213.59.10)
  by mail2.redhat.com with SMTP; 24 May 1998 15:59:55 -0000
Received: from topaz.axisinternet.com (kc5tja@axisinternet.com [207.213.59.10])
	by topaz.axisinternet.com (8.8.5/8.8.5) with SMTP id IAA18809
	for <gtk-list@redhat.com>; Sun, 24 May 1998 08:50:26 -0700
Date: Sun, 24 May 1998 08:50:26 -0700 (PDT)
From: KC5TJA <kc5tja@topaz.axisinternet.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: Proposed widget
In-Reply-To: <7uhg2gxfks.fsf@olivia.aibon.ping.de>
Message-ID: <Pine.LNX.3.96.980524084139.15814I-100000@topaz.axisinternet.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

On 24 May 1998, Sascha Ziemann wrote:

> AmigaOS is silly gambler garbage. It does have at least any memory
> protection and I can continue the list of not existing features... But
> I really do not want to hurt your nostalgic reminders, so we should
> not continue the discussion about the Amiga. Every normal PC has 32 MB

Actually, I beg to differ.  You brought it up on this list, I think you
should explain your reasoning here.  Why is AmigaOS, oft considered the
most efficient OS in existance today, "silly gambler garbage" to you?  

I think what we have here is a fundamental rift in how one thinks of
building software.  AmigaOS tries very hard to include only the things
absolutely necessary to successfully run the computer.  It's the
RISC-point of view: simpler is better.  UNIX of any sort, Windows, OS/2,
et. al. tries, however, to be all-inclusive of all applications for all
users.  It tries to be as COMPLETE as possible: the CISC point of view.
Then people wonder why AmigaOS runs so much faster than other
"heavy-weight" operating systems, then they get jealous and start touting,
"But it doesn't have memory protection!"  TOO BAD!  It doesn't NEED it!

Therefore, I ask that you have a little more open mind about AmigaOS, and
how its internals work.  They are porting AmigaOS to the x86 as we speak,
and when released, I can garuntee you that it *WILL* make a big splash.

> RAM today. Is it really not acceptable to spend 10% for a full featured
> widget set?

Yes.  It is truely unacceptable for me.  I want my RAM and drive space for
*MY* application's data.  Not a tool.  Would you want to work on your own
car if the tool you need is the size of your car itself, and just as
heavy?

PS:  AmigaOS is still perfectly happy on a 20MB harddrive.  If you intend
on running a world-class application like VideoToaster or some of the
Amiga office suites, then you're probably looking at needing around 100MB.
Need Internet?  Another 5MB.  Linux, in contrast, requires 200MB for a
comparibly equipped system.  Still not bad, but I thought I'd put it into
perspective.

==========================================================================
      KC5TJA/6     |                  -| TEAM DOLPHIN |-
        DM13       |                  Samuel A. Falvo II
    QRP-L #1447    |          http://www.dolphin.openprojects.net

From nils@rhlx01.rz.fht-esslingen.de
Received: (qmail 3480 invoked from network); 24 May 1998 17:21:39 -0000
Received: from rhlx01.rz.fht-esslingen.de (nils@134.108.34.10)
  by mail2.redhat.com with SMTP; 24 May 1998 17:21:39 -0000
Received: from localhost (nils@localhost)
	by rhlx01.rz.fht-esslingen.de (8.8.8/8.8.8) with SMTP id TAA19897
	for <gtk-list@redhat.com>; Sun, 24 May 1998 19:21:17 +0200
Date: Sun, 24 May 1998 19:21:16 +0200 (CEST)
From: Nils Philippsen <nils@rhlx01.rz.fht-esslingen.de>
To: gtk-list@redhat.com
Subject: [OFFTOPIC] Re: [gtk-list] Re: Proposed widget
In-Reply-To: <Pine.LNX.3.96.980524084139.15814I-100000@topaz.axisinternet.com>
Message-ID: <Pine.LNX.3.96.980524190008.19830A-100000@rhlx01.rz.fht-esslingen.de>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

Guys - this actually doesn't belong here, but as not even I conform to my
advices ... :-)

On Sun, 24 May 1998, KC5TJA wrote:

> On 24 May 1998, Sascha Ziemann wrote:
> 
[snip]
> Then people wonder why AmigaOS runs so much faster than other
> "heavy-weight" operating systems, then they get jealous and start touting,
> "But it doesn't have memory protection!"  TOO BAD!  It doesn't NEED it!

Every serious OS needs memory protection. People (most people I know of) run
(ran) an Amiga (with AmigaOS) for games - The important stuff runs (should
run) on something more suitable for it (e.g. Un*x). Your opinion may differ.

> 
> Therefore, I ask that you have a little more open mind about AmigaOS, and
> how its internals work.  They are porting AmigaOS to the x86 as we speak,
> and when released, I can garuntee you that it *WILL* make a big splash.
> 

Splash. Glug.

> > RAM today. Is it really not acceptable to spend 10% for a full featured
> > widget set?
> 
> Yes.  It is truely unacceptable for me.  I want my RAM and drive space for
> *MY* application's data.  Not a tool.  Would you want to work on your own
> car if the tool you need is the size of your car itself, and just as
> heavy?

Then why would you want to have an OS kernel of > 300-500KB just for running
e.g. awk (135KB here)? Weak argument. 

> 
> PS:  AmigaOS is still perfectly happy on a 20MB harddrive.  If you intend
> on running a world-class application like VideoToaster or some of the
> Amiga office suites, then you're probably looking at needing around 100MB.
> Need Internet?  Another 5MB.  Linux, in contrast, requires 200MB for a
> comparibly equipped system.  Still not bad, but I thought I'd put it into
> perspective.

Somehow new widgets must be collected and brought to the programmers,
otherwise everyone has to implement her/his GtkAnyWidget for her/himself
(useless duplication of work), every program will have the code for
GtkAnyWidget in the app's code (instead of in the shared lib) and if I run all
of the simultaneously it is _my_ RAM that's consumed by all those
implementations of GtkAnyWidget. And you have the nerve to call this clever?

If a widget is of general interest (show me one that isn't) it should be
shipped with gtk - whether in libgtk or libgtkwidgets isn't interesting (to
me) - the code for every widget in the lib and therefore one time on the disk,
code of not used widgets will happily get paged into swapspace - what's the
problem?

Bye,
Nils
-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nils Philippsen                  @college: nils@rhlx01.rz.fht-esslingen.de
Vogelsangstrasse 115             @home:    nils@wombat.dialup.fht-esslingen.de
D 70197 Stuttgart                phone:    +49-711-6599405
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Wer heute an der Bildung spart,          Those who scrimp on education today,
hat morgen noch bloedere Politiker.      get even dumber politicians tomorrow.

From kc5tja@topaz.axisinternet.com
Received: (qmail 13840 invoked from network); 24 May 1998 17:40:51 -0000
Received: from axisinternet.com (HELO topaz.axisinternet.com) (root@207.213.59.10)
  by mail2.redhat.com with SMTP; 24 May 1998 17:40:51 -0000
Received: from topaz.axisinternet.com (kc5tja@axisinternet.com [207.213.59.10])
	by topaz.axisinternet.com (8.8.5/8.8.5) with SMTP id KAA26869
	for <gtk-list@redhat.com>; Sun, 24 May 1998 10:31:19 -0700
Date: Sun, 24 May 1998 10:31:19 -0700 (PDT)
From: KC5TJA <kc5tja@topaz.axisinternet.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] [OFFTOPIC] Re: Proposed widget
In-Reply-To: <Pine.LNX.3.96.980524190008.19830A-100000@rhlx01.rz.fht-esslingen.de>
Message-ID: <Pine.LNX.3.96.980524101817.22644B-100000@topaz.axisinternet.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

> Every serious OS needs memory protection. People (most people I know of) run
> (ran) an Amiga (with AmigaOS) for games - The important stuff runs (should
> run) on something more suitable for it (e.g. Un*x). Your opinion may differ.

I sure as hell don't use AmigaOS for games.  Just because every other OS
you've used has memory protection doesn't make it "necessary to run
serious software."  Quite the contrary.  Memory protection is NEVER used
when running well-written applications (unless you're working with paged
virtual memory, but there are other ways around that as well).  If the
memory protection system needs to kick in, then something is wrong with
the program you're running.  It should never have been sold in the first
place. 

> Then why would you want to have an OS kernel of > 300-500KB just for running
> e.g. awk (135KB here)? Weak argument. 

Precisely the reason I'm writing Dolphin.

> Somehow new widgets must be collected and brought to the programmers,
> otherwise everyone has to implement her/his GtkAnyWidget for her/himself

Use dynamic libraries that are loaded only when necessary.  That's what
gadtools.library is.

> (useless duplication of work), every program will have the code for
> GtkAnyWidget in the app's code (instead of in the shared lib) and if I run all
> of the simultaneously it is _my_ RAM that's consumed by all those
> implementations of GtkAnyWidget. And you have the nerve to call this clever?

What?  Where did I say that?  I don't recall saying that.  I distinctly
said that I have "no problems with GTK being 1MB, with dynamically loading
extensions to it on an as-needed basis.  But GTK should never be so large
as to be all-encompassing everything for everybody in all situations.
That would be a Microsoft-way of thinking."  (Paraphrased, of course)  And
I *DO* have the original quote for that.  :-)

> If a widget is of general interest (show me one that isn't) it should be
> shipped with gtk - whether in libgtk or libgtkwidgets isn't interesting (to

Precisely.  Make the widget's code available, but NOT in libgtk.so, unless
it's imperative to GTK's operation.  5MB of binaries roughly translates to
at least 10 to 20MB of source code, on average.  Would you want to
maintain that?  And think of the side effects changing a source file
-could- have.  I've been a developer for over 10 years, and I've seen many
cases where person A updates his files, no problem.  Person B updates his
files, no problem.  Person C updates his files.  Now all of a sudden the
whole thing doesn't work, because of some unexpected side effect.  Now
person C, B, or A needs to rework all of their code to work with C's
changes, or C needs to undo his work (thus hindering progress).  I've seen
it happen in the Linux community too.

Keeping the widget libraries physically separated helps in debugging such
things.

> me) - the code for every widget in the lib and therefore one time on the disk,
> code of not used widgets will happily get paged into swapspace - what's the
> problem?

Big software tends to be slower than small software, as perceived by the
user.  I am a speed freak.  My computer needs to run as fast as possible,
whenever possible.  I just don't want Linux to become like Windows. 

==========================================================================
      KC5TJA/6     |                  -| TEAM DOLPHIN |-
        DM13       |                  Samuel A. Falvo II
    QRP-L #1447    |          http://www.dolphin.openprojects.net

From felix@crowfix.com
Received: (qmail 20210 invoked from network); 24 May 1998 18:24:09 -0000
Received: from crowfix.crowfix.com (HELO crowfix.com) (qmailr@207.228.46.42)
  by mail2.redhat.com with SMTP; 24 May 1998 18:24:09 -0000
Received: (qmail 21715 invoked by uid 501); 24 May 1998 18:24:27 -0000
Date: 24 May 1998 18:24:27 -0000
Message-ID: <19980524182427.21714.qmail@crowfix.com>
From: Felix Morley Finch <felix@crowfix.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] [OFFTOPIC] Re: Proposed widget
In-Reply-To: <Pine.LNX.3.96.980524190008.19830A-100000@rhlx01.rz.fht-esslingen.de> 
(message from Nils Philippsen on Sun, 24 May 1998 19:21:16 +0200)
References: <Pine.LNX.3.96.980524084139.15814I-100000@topaz.axisinternet.com>
	<Pine.LNX.3.96.980524190008.19830A-100000@rhlx01.rz.fht-esslingen.de>
X-Mailer: VM 6.34 under Emacs 20.2.1

I have been following this discussion with some interest.  I am new to
Gtk, altho not C or unix.  In general, I agree that all widgets should
be in the distribution and lib.  Gtk is meant (as I understand it) to
be a General Tool Kit.  This implies general purpose.  This implies a
general purpose OS.  Any OS without memory protection is not a general
purpose OS.  It may run games fine.  It may run a few apps fine.  But
it is not a general purpose OS, it is special purpose.

Bragging about AmigaOS running on a 20 MB disk is no big deal; I wrote
a SCSI driver for a UNIX SVR3.2 system, with a 20MB disk as my entire
development and test platform.  I sure owuldn't have called that
general purpose, even tho I also used it with uucp to access
newsgroups and email.  There are versions of Linux running on dinky
little systems.  But they are not general purpose systems.

If you want a special dinky little system, why use Gtk?  Why should
the vast majority of general purpose users be held back and have to
re-invent the wheel, over and over again, because you want it to run
on a special purpose dinkly little system?

BTW, as I understand the Amiga announcement, the x86 4.0 release is a
stopgap developers release only, to get development going until the
new Amiga hardware arrives, which will then use OS 5.0.  I doubt very
seriously that Gateway is thinking of challenging Mickeysoft with a
brand new OS.  About the only splash it will make is in the Amiga world.

-- 
            ... _._. ._ ._. . _._. ._. ___ .__ ._. . .__. ._ .. ._.
     Felix Finch: scarecrow repairman & rocket surgeon / felix@crowfix.com
  PGP = 91 B3 94 7C E9 E8 76 2D   E1 63 51 AA A0 48 89 2F  ITAR license #4933
I've found a solution to Fermat's Last Theorem but I see I've run out of room o

From kc5tja@topaz.axisinternet.com
Received: (qmail 26380 invoked from network); 24 May 1998 18:41:33 -0000
Received: from axisinternet.com (HELO topaz.axisinternet.com) (root@207.213.59.10)
  by mail2.redhat.com with SMTP; 24 May 1998 18:41:33 -0000
Received: from topaz.axisinternet.com (kc5tja@axisinternet.com [207.213.59.10])
	by topaz.axisinternet.com (8.8.5/8.8.5) with SMTP id LAA31652
	for <gtk-list@redhat.com>; Sun, 24 May 1998 11:32:02 -0700
Date: Sun, 24 May 1998 11:32:02 -0700 (PDT)
From: KC5TJA <kc5tja@topaz.axisinternet.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: [OFFTOPIC] Re: Proposed widget
In-Reply-To: <19980524182427.21714.qmail@crowfix.com>
Message-ID: <Pine.LNX.3.96.980524112749.31124A-100000@topaz.axisinternet.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

> general purpose OS.  Any OS without memory protection is not a general
> purpose OS.  It may run games fine.  It may run a few apps fine.  But
> it is not a general purpose OS, it is special purpose.

I've yet to see a single reason why an OS MUST have memory protection to
be general purpose.  They keep saying you must have it, but I've yet to
see proof.

> If you want a special dinky little system, why use Gtk?  Why should
> the vast majority of general purpose users be held back and have to
> re-invent the wheel, over and over again, because you want it to run
> on a special purpose dinkly little system?

Fine.  If you want a 20MB binary, so be it.

> BTW, as I understand the Amiga announcement, the x86 4.0 release is a
> stopgap developers release only, to get development going until the
> new Amiga hardware arrives, which will then use OS 5.0.  I doubt very

Your point?

> seriously that Gateway is thinking of challenging Mickeysoft with a
> brand new OS.  About the only splash it will make is in the Amiga world.

Didn't say they were.  I just said that it'd make a splash.  It'd be a
commercial alternative to Windows and OS/2.  You know, where people can
make money supporting it.  Very few people are making money from Linux
right now.  A lot more people are making money off of the current AmigaOS
environment.  And when AmigaOS hits the x86 market, a lot more people will
start making money.

==========================================================================
      KC5TJA/6     |                  -| TEAM DOLPHIN |-
        DM13       |                  Samuel A. Falvo II
    QRP-L #1447    |          http://www.dolphin.openprojects.net

From rich@kyoto.noir.com
Received: (qmail 22233 invoked from network); 24 May 1998 19:12:47 -0000
Received: from sendai.vip.best.com (HELO kyoto.noir.com) (rich@204.156.156.216)
  by mail2.redhat.com with SMTP; 24 May 1998 19:12:47 -0000
Received: (from rich@localhost)
	by kyoto.noir.com (8.8.7/8.8.7) id MAA19181;
	Sun, 24 May 1998 12:12:25 -0700
Date: Sun, 24 May 1998 12:12:25 -0700
Message-Id: <199805241912.MAA19181@kyoto.noir.com>
From: "K. Richard Pixley" <rich@kyoto.noir.com>
To: gtk-list@redhat.com
CC: gtk-list@redhat.com
In-reply-to: <Pine.LNX.3.96.980524083610.15814H-100000@topaz.axisinternet.com>
	(kc5tja@topaz.axisinternet.com)
Subject: Re: [gtk-list] Re: Proposed widget
References:  <Pine.LNX.3.96.980524083610.15814H-100000@topaz.axisinternet.com>

   Date: Sun, 24 May 1998 08:41:33 -0700 (PDT)
   From: KC5TJA <kc5tja@topaz.axisinternet.com>

   > I have to pay 25 DM for 8 MB. I have absolutely no problem to spend 2
   > pizzas for Gtk+.

   Problem is: Linux won't load all 5MB into RAM.  It will dump some
   of that out to swap file.

If so, then your linux has a huge bug.  Shared libraries, like
executables, should page in from their resident locations on disk,
avoiding the swap area altogether.  Staging through swap in unix went
out of fashion prior to the introduction of shared libraries.

With 5M shared libraries, though, I doubt we'd see much win from
optimizing page locations.  When we get up to 80M, then we should
think about it.

It's also possible to split the library into pieces.  This might help
somewhat, though with a piddly 10M library, I doubt it's worth the
effort.

   Furthermore, we're dealing with harddrive space here as well.  a
   5MB binary is absolutely *******HUGE*******, especially for a
   single component.

Actually, no.  5M is not all that much these days.  When you work with
500M binaries, you're getting up there.  (and yes, I'm serious).

   If you want to have such huge binaries, please make the switch to
   Windows.  They have that sort of thing all the time.  I don't want
   it.

Disk is cheap.  Linux pages well.  What's your concern?

   If GTK is going to get much larger than 2MB, I will switch to using
   LibGGI and implementing my own user interface.

   Now, I have absolutely NO objections to having a 1MB or so
   libgtk.so file, and having *extensions* to it, a la GGI.  That I
   can handle.  But having a single, monolithic library that is all
   inclusive is decidedly a Microsoft-ian way of thinking about the
   user interface.

We'd need to bench to be sure, but for small apps, I'd bet that the
overhead of loading numerous pieces of shared libraries combined with
the page rounding overhead would likely overshadow any possible wins.

--rich

From kc5tja@topaz.axisinternet.com
Received: (qmail 27407 invoked from network); 24 May 1998 19:43:23 -0000
Received: from axisinternet.com (HELO topaz.axisinternet.com) (root@207.213.59.10)
  by mail2.redhat.com with SMTP; 24 May 1998 19:43:23 -0000
Received: from topaz.axisinternet.com (kc5tja@axisinternet.com [207.213.59.10])
	by topaz.axisinternet.com (8.8.5/8.8.5) with SMTP id MAA03798
	for <gtk-list@redhat.com>; Sun, 24 May 1998 12:33:42 -0700
Date: Sun, 24 May 1998 12:33:42 -0700 (PDT)
From: KC5TJA <kc5tja@topaz.axisinternet.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: Proposed widget
In-Reply-To: <199805241912.MAA19181@kyoto.noir.com>
Message-ID: <Pine.LNX.3.96.980524122634.2956B-100000@topaz.axisinternet.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

> If so, then your linux has a huge bug.  Shared libraries, like
> executables, should page in from their resident locations on disk,
> avoiding the swap area altogether.  Staging through swap in unix went
> out of fashion prior to the introduction of shared libraries.

You're right -- I stand corrected.

> With 5M shared libraries, though, I doubt we'd see much win from
> optimizing page locations.  When we get up to 80M, then we should
> think about it.

OK.  That, having been said, makes me wonder, "What is a good cut-off size
for GTK, before considering using external modules?"

If you do include stuff into GTK, there should be some research on how
useful the widget will be.  GTK currently has rulers, which are godsend
for document-based programs.  GTK has support for buttons, lists, trees,
etc.  That I can also live with, as they have a high frequency of use in
common software.  Font selector was long overdue.  :-)  But all possible
widgets?

> It's also possible to split the library into pieces.  This might help
> somewhat, though with a piddly 10M library, I doubt it's worth the
> effort.

I'd hate to be the person on the other end of a 33.6kbps connection
downloading GTK+-5.0, with its 10MB binary.  Imagine the size of the
source code?  8-D  OUCH!

> Actually, no.  5M is not all that much these days.  When you work with
> 500M binaries, you're getting up there.  (and yes, I'm serious).

You are sick and evil if you make a program that's 500MB in size... :D

> Disk is cheap.  Linux pages well.  What's your concern?

Bloat-ware.

> We'd need to bench to be sure, but for small apps, I'd bet that the
> overhead of loading numerous pieces of shared libraries combined with
> the page rounding overhead would likely overshadow any possible wins.

Perhaps.  Is it possible to use external shared libs with GTK now (instead
of static linking)?  I'd imagine so, since shared libraries often look
like static libraries to all parties involved.

==========================================================================
      KC5TJA/6     |                  -| TEAM DOLPHIN |-
        DM13       |                  Samuel A. Falvo II
    QRP-L #1447    |          http://www.dolphin.openprojects.net

From kth@srv.net
Received: (qmail 28015 invoked from network); 24 May 1998 19:44:03 -0000
Received: from snake.srv.net (HELO srv.net) (199.104.81.3)
  by mail2.redhat.com with SMTP; 24 May 1998 19:44:03 -0000
Received: from msdos.sofsol.id.us (ras546.srv.net [205.180.127.46])
	by srv.net (8.8.7/8.8.5) with SMTP id NAA15783
	for <gtk-list@redhat.com>; Sun, 24 May 1998 13:44:00 -0600 (MDT)
Message-Id: <1.5.4.32.19980524194934.00824e64@snake.srv.net>
X-Sender: kth@snake.srv.net
X-Mailer: Windows Eudora Light Version 1.5.4 (32)
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Date: Sun, 24 May 1998 13:49:34 -0600
To: gtk-list@redhat.com
From: Kevin Handy <kth@srv.net>
Subject: Re: [gtk-list] Re: Proposed widget

At 12:12 PM 5/24/98 -0700, you wrote:
>   Date: Sun, 24 May 1998 08:41:33 -0700 (PDT)
>   From: KC5TJA <kc5tja@topaz.axisinternet.com>
>
>   > I have to pay 25 DM for 8 MB. I have absolutely no problem to spend 2
>   > pizzas for Gtk+.
>
>   Problem is: Linux won't load all 5MB into RAM.  It will dump some
>   of that out to swap file.
>
>If so, then your linux has a huge bug.  Shared libraries, like
>executables, should page in from their resident locations on disk,
>avoiding the swap area altogether.  Staging through swap in unix went
>out of fashion prior to the introduction of shared libraries.

You just beat me to this item. I thought for sure that Linux did this,
but was not sure after so many posted that this shared/nowrite code
would swap out. Many other OS's (Alpha OSF/1, VMS, etc) that I have
worked with use the original binary instead of swapping this out.
(There is no reason to write out code that (has not been)/(can not be)
changed in memory. The MMU will get upset if you try (segmentation
violation)

>With 5M shared libraries, though, I doubt we'd see much win from
>optimizing page locations.  When we get up to 80M, then we should
>think about it.

Also, it only pull into memory the pages out of the library that you
are actually referencing. If you don't use them, they don't use
any processor memory. The only memory limit you will have will be
how much disk space do you have available (and with $350 disks that
hold 6.2 gigs, this should'nt be a major problem).

If you hall a huge number of widgets in at the same time, in a limited
memory area, then you may see lot's of disk accesses, but not much of it
will be actual swapping to the swap file. It will be reading code
out of image files.

>It's also possible to split the library into pieces.  This might help
>somewhat, though with a piddly 10M library, I doubt it's worth the
>effort.

I doubt that splitting the library up will reduce actual memory used
in any significiant way. Virtual memory strikes again.

>   Furthermore, we're dealing with harddrive space here as well.  a
>   5MB binary is absolutely *******HUGE*******, especially for a
>   single component.
>
>Actually, no.  5M is not all that much these days.  When you work with
>500M binaries, you're getting up there.  (and yes, I'm serious).
>
>   If you want to have such huge binaries, please make the switch to
>   Windows.  They have that sort of thing all the time.  I don't want
>   it.
>
>Disk is cheap.  Linux pages well.  What's your concern?

If you have used windows with these large images, you become concerned
because of the poor paging that windows does. When windows really starts
to page, you are really in trouble. Linux pages much much better.
Try running X11 on a 4Mb 386 sometime. Then try Windows95 on 8Mb pentium.
You'll get about the same performance.

>   If GTK is going to get much larger than 2MB, I will switch to using
>   LibGGI and implementing my own user interface.
>
>   Now, I have absolutely NO objections to having a 1MB or so
>   libgtk.so file, and having *extensions* to it, a la GGI.  That I
>   can handle.  But having a single, monolithic library that is all
>   inclusive is decidedly a Microsoft-ian way of thinking about the
>   user interface.
>
>We'd need to bench to be sure, but for small apps, I'd bet that the
>overhead of loading numerous pieces of shared libraries combined with
>the page rounding overhead would likely overshadow any possible wins.

Virtual memory is very confusing, because there are so many different
memory sized you are talking about in the one phrase: Physical
memory = how much is currently residing in core, Virtual size =
how much memory does the program 'span', and Swap size = how much disk
is required to swap out the process. Your swap size is likely
to be much smaller than your virtual size.

However, since it only loads those portions of the libraries that
you are referencing, you shouldn't have too many problems. Where you
need to be concerned is if all of the widgets call each other
excessively, thus pulling all of them into memory at the same time.

I'd still vote on a larger library to reduce the quantity of
re-developed code as much as possible, but maybe place some of the
stanger (rarely used) widgets in an extension library.
-------------------------------------------------------------
Kevin Handy  kth@srv.net         Accounting Software for
Software Solutions. Inc.         VAX/VMS Computer Systems
Idaho Falls, Idaho

From mvo@zagadka.ping.de
Received: (qmail 863 invoked from network); 24 May 1998 23:15:04 -0000
Received: from lilly.ping.de (qmailr@195.37.120.2)
  by mail2.redhat.com with SMTP; 24 May 1998 23:15:04 -0000
Received: (qmail 23099 invoked by uid 10); 24 May 1998 23:14:44 -0000
Received: from zagadka.ping.de by lilly.ping.de with UUCP (rmail-0.1-fdc); 
24 May 1998 23:14:44 -0000
Received: (qmail 24539 invoked by uid 1000); 24 May 1998 21:36:48 -0000
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: [OFFTOPIC] Re: Proposed widget
References: <Pine.LNX.3.96.980524112749.31124A-100000@topaz.axisinternet.com>
Mime-Version: 1.0 (generated by tm-edit 7.106)
Content-Type: text/plain; charset=US-ASCII
From: Marius Vollmer <mvo@zagadka.ping.de>
Date: 24 May 1998 23:36:48 +0200
In-Reply-To: KC5TJA's message of Sun, 24 May 1998 11:32:02 -0700 (PDT)
Message-ID: <87btsns64v.fsf@zagadka.ping.de>
Lines: 19
X-Mailer: Gnus v5.5/Emacs 20.1

KC5TJA <kc5tja@topaz.axisinternet.com> writes:

> I've yet to see a single reason why an OS MUST have memory protection to
> be general purpose.  They keep saying you must have it, but I've yet to
> see proof.

This is not a thing that can be proved.

I for one couldn't work when I wasn't reasonably sure that Netscape
couldn't crash my Emacs with these all important documents in it.
[Yes, I know, Netscape can take down X11 which can lock up the whole
machine, but only because X11 *circumvents* memory protection.]

But the most important reason for memory protection is maybe
protecting multiple users on one system from each other.  Without
memory protection, as soon as you can run programs on an unprotected
OS, you can do everything.  Reading/writing other peoples files,
everything.  And in these days of `active web content', every general
purpose computer is a multi-user system.

From rich@kyoto.noir.com
Received: (qmail 6234 invoked from network); 25 May 1998 01:41:47 -0000
Received: from sendai.vip.best.com (HELO kyoto.noir.com) (rich@204.156.156.216)
  by mail2.redhat.com with SMTP; 25 May 1998 01:41:47 -0000
Received: (from rich@localhost)
	by kyoto.noir.com (8.8.7/8.8.7) id SAA29556;
	Sun, 24 May 1998 18:41:25 -0700
Date: Sun, 24 May 1998 18:41:25 -0700
Message-Id: <199805250141.SAA29556@kyoto.noir.com>
From: "K. Richard Pixley" <rich@kyoto.noir.com>
To: gtk-list@redhat.com
CC: gtk-list@redhat.com
In-reply-to: <Pine.LNX.3.96.980524122634.2956B-100000@topaz.axisinternet.com>
	(kc5tja@topaz.axisinternet.com)
Subject: Re: [gtk-list] Re: Proposed widget
References:  <Pine.LNX.3.96.980524122634.2956B-100000@topaz.axisinternet.com>

   Date: Sun, 24 May 1998 12:33:42 -0700 (PDT)
   From: KC5TJA <kc5tja@topaz.axisinternet.com>

   > With 5M shared libraries, though, I doubt we'd see much win from
   > optimizing page locations.  When we get up to 80M, then we should
   > think about it.

   OK.  That, having been said, makes me wonder, "What is a good
   cut-off size for GTK, before considering using external modules?"

I agree that that is a key issue.  And I don't know the right answer.

My *preference* at the moment, (subject to change momentarily), would
be to divide widgets into tier 1 and tier 2 (and perhaps "etc").  Tier
1 would be basics, often required.  Tier 2 would be "anything else" at
this point.

The only real purpose of tier 2 would be to "bless" certain
widgets/modules like, say, (my own current interest), "master volume"
for sound card support.

Such support is not of "high" interest to most graphics apps, yet does
have *some* interest for apps participating in the process of creating
a simple user environment.

   If you do include stuff into GTK, there should be some research on
   how useful the widget will be.

I agree.  And I support using the result of any such research as the
first cutoff criterion between "core" gtk and anything else that might
exist.

   GTK currently has rulers, which are godsend for document-based
   programs.

And many other apps.

   GTK has support for buttons, lists, trees, etc.  That I can also
   live with, as they have a high frequency of use in common software.

I agree.

   Font selector was long overdue.  :-) But all possible widgets?

No.  I agree with you.  Unless "all possible widgets" have all of:
config, build, compilation, library creation, library location, and
app usage, on a per-widget basis, the "gtk" set must be a human choice
based on usability.  And, of course, that usability criterion obviates
the possiblity of any system which *requires* configuration at all
these levels.  *laugh*

However, I would support an effort which assumed gtk as a basis, and
left usability of widgets as a contest/open-market for widget writers.

In this scenario, it would be up to the gtk maintainers to
choose/elect things like a "master volume" widget, while also having
the freedom to either make it tier 1 or tier 2.  This allows for more
comprehensive paradigms to supplant numerous other paradigms; assuming
a responsible set of moderators.  :-).  It also allows the moderators
the freedom to chose widgets based on the level of support they've
gotten from the widget's authors.  etc, etc, etc.

   > It's also possible to split the library into pieces.  This might help
   > somewhat, though with a piddly 10M library, I doubt it's worth the
   > effort.

   I'd hate to be the person on the other end of a 33.6kbps connection
   downloading GTK+-5.0, with its 10MB binary.  Imagine the size of
   the source code?  8-D OUCH!

Actually, IME, souce is usually smaller than binary.  If your reason
for choosing binary format deals with bandwidth, I suspect that I can
offer you some "helper" functions, (via source), which will offer you
better bandwidth for downloading than what you have now.

Similarly, if your concern is about whether the downloading person
*can* compile, then with SRPMS, (etc), I suspect that I can easily
offer you helper functions to cover these concerns.

However, for a 10M file, forget 33.6, assume 56k.  Such modems are
*cheap* now, (ie, <$100 each).  10M = 10,000K.  10,000 / 56 = 178
minutes.  That's ~3 hours, which I agree is not an interactive
download, but it *is* easily an overnight download.

   > Actually, no.  5M is not all that much these days.  When you work with
   > 500M binaries, you're getting up there.  (and yes, I'm serious).

   You are sick and evil if you make a program that's 500MB in size... :D

Nope.  Just a professional who's currently dealing with hardware
designers who use automatic tools to create their hardware
simulations.

Follow that?  (*laugh*) Their simulations eventually amount to C code
which is compiled, then run, on a large pile of regression tests,
(perhaps 5000 tests at ~1hr run time each).  The actual, human
generated, source might be less than 2M, produced by ~100 humans
currently employed in this process.  And given current configurations,
might take as much as 15 hours to run them all.  (*laugh* Yes.
parallel execution.  *sigh*).

   > Disk is cheap.  Linux pages well.  What's your concern?

   Bloat-ware.

Gotcha.  Then I'm on your side.  I prefer that there be some division
between "absolutely, positively, needed-in-damned-near-every-app" vs
"would be nice to have some common way of doing this" functionality.

But then, I'm not sure how to make that division just yet.  Good thing
I'm not a gtk maintainer, huh?  :-).

   > We'd need to bench to be sure, but for small apps, I'd bet that the
   > overhead of loading numerous pieces of shared libraries combined with
   > the page rounding overhead would likely overshadow any possible wins.

   Perhaps.  Is it possible to use external shared libs with GTK now (instead
   of static linking)?  I'd imagine so, since shared libraries often look
   like static libraries to all parties involved.

Possible?  Of course.  *Anything* is possible.  (smug laugh)

How much effort?  Not much, I'd guess.  The real work here would be in
deciding where the break point should be and then optimizing code to
exploit the break point.

--rich

From kc5tja@topaz.axisinternet.com
Received: (qmail 30028 invoked from network); 25 May 1998 04:44:59 -0000
Received: from axisinternet.com (HELO topaz.axisinternet.com) (root@207.213.59.10)
  by mail2.redhat.com with SMTP; 25 May 1998 04:44:59 -0000
Received: from topaz.axisinternet.com (kc5tja@axisinternet.com [207.213.59.10])
	by topaz.axisinternet.com (8.8.5/8.8.5) with SMTP id VAA14124
	for <gtk-list@redhat.com>; Sun, 24 May 1998 21:35:23 -0700
Date: Sun, 24 May 1998 21:35:23 -0700 (PDT)
From: KC5TJA <kc5tja@topaz.axisinternet.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: [OFFTOPIC] Re: Proposed widget
In-Reply-To: <87btsns64v.fsf@zagadka.ping.de>
Message-ID: <Pine.LNX.3.96.980524213248.13654A-100000@topaz.axisinternet.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

> But the most important reason for memory protection is maybe
> protecting multiple users on one system from each other.  Without
> memory protection, as soon as you can run programs on an unprotected
> OS, you can do everything.  Reading/writing other peoples files,
> everything.  And in these days of `active web content', every general
> purpose computer is a multi-user system.

This is, to date, the only legitamate reason given, and it's an important
one to boot.  You present a point of view which I had not taken in the
past (that of active web content).  While it is (reasonably) easy for
commercial companies to ensure mostly-bug-free software, such cannot be
said of web applets written by a neophyte or cracker.

==========================================================================
      KC5TJA/6     |                  -| TEAM DOLPHIN |-
        DM13       |                  Samuel A. Falvo II
    QRP-L #1447    |          http://www.dolphin.openprojects.net

From kc5tja@topaz.axisinternet.com
Received: (qmail 6007 invoked from network); 25 May 1998 04:57:33 -0000
Received: from axisinternet.com (HELO topaz.axisinternet.com) (root@207.213.59.10)
  by mail2.redhat.com with SMTP; 25 May 1998 04:57:33 -0000
Received: from topaz.axisinternet.com (kc5tja@axisinternet.com [207.213.59.10])
	by topaz.axisinternet.com (8.8.5/8.8.5) with SMTP id VAA15141
	for <gtk-list@redhat.com>; Sun, 24 May 1998 21:47:57 -0700
Date: Sun, 24 May 1998 21:47:57 -0700 (PDT)
From: KC5TJA <kc5tja@topaz.axisinternet.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: Proposed widget
In-Reply-To: <199805250141.SAA29556@kyoto.noir.com>
Message-ID: <Pine.LNX.3.96.980524214225.14423A-100000@topaz.axisinternet.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

> However, for a 10M file, forget 33.6, assume 56k.  Such modems are
> *cheap* now, (ie, <$100 each).  10M = 10,000K.  10,000 / 56 = 178
> minutes.  That's ~3 hours, which I agree is not an interactive
> download, but it *is* easily an overnight download.

Modems may be cheap.  It's the telephone lines you have to watch for.  The
reason AxisInternet does not support 56K of any type for its non-dedicated
dial-ups is due to the horrid phone line quality.  It is a rare day in
hell when someone can actually connect at 33.6kbps, much less 56K.
However, a dedicated line is different, since we have some control over
line quality at that point.  But if you're going through that kind of
expense, it almost makes more sense to go ISDN... :D

> Follow that?  (*laugh*) Their simulations eventually amount to C code
> which is compiled, then run, on a large pile of regression tests,
> (perhaps 5000 tests at ~1hr run time each).  The actual, human
> generated, source might be less than 2M, produced by ~100 humans
> currently employed in this process.  And given current configurations,
> might take as much as 15 hours to run them all.  (*laugh* Yes.
> parallel execution.  *sigh*).

Damned simulators...somebody ought to teach them a lesson... ;-)

> But then, I'm not sure how to make that division just yet.  Good thing
> I'm not a gtk maintainer, huh?  :-).

Somebody will find a way; that's garunteed.

> How much effort?  Not much, I'd guess.  The real work here would be in
> deciding where the break point should be and then optimizing code to
> exploit the break point.

I should try writing my own widget, just to say that I did it.  Hell,
everybody ELSE on this list wrote one! :D  I wonder what mine would do
though...:D

Anybody familiar with NoWEB or CWEB?  What are your impressions of this
'literate programming' package?

==========================================================================
      KC5TJA/6     |                  -| TEAM DOLPHIN |-
        DM13       |                  Samuel A. Falvo II
    QRP-L #1447    |          http://www.dolphin.openprojects.net

From nils@rhlx01.rz.fht-esslingen.de
Received: (qmail 14511 invoked from network); 25 May 1998 07:46:12 -0000
Received: from rhlx01.rz.fht-esslingen.de (nils@134.108.34.10)
  by mail2.redhat.com with SMTP; 25 May 1998 07:46:12 -0000
Received: from localhost (nils@localhost)
	by rhlx01.rz.fht-esslingen.de (8.8.8/8.8.8) with SMTP id JAA21487
	for <gtk-list@redhat.com>; Mon, 25 May 1998 09:45:47 +0200
Date: Mon, 25 May 1998 09:45:47 +0200 (CEST)
From: Nils Philippsen <nils@rhlx01.rz.fht-esslingen.de>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: [OFFTOPIC] Re: Proposed widget
In-Reply-To: <Pine.LNX.3.96.980524213248.13654A-100000@topaz.axisinternet.com>
Message-ID: <Pine.LNX.3.96.980525092304.21363A-100000@rhlx01.rz.fht-esslingen.de>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Sun, 24 May 1998, KC5TJA wrote:

> This is, to date, the only legitamate reason given, and it's an important
> one to boot.  You present a point of view which I had not taken in the
> past (that of active web content).  While it is (reasonably) easy for
> commercial companies to ensure mostly-bug-free software, such cannot be

Well, I don't want to let this end in the next discussion about paradigms of
software development (open source vs. commercial/proprietary), but:

- Every software may contain bugs/glitches. The probability of bugs in a
  program increases with its size.
- As of my experience commercial programs are by far larger than open source
  developped ones [OFFTOPIC: anyone got comments on the grammar of this
  sentence (especially on the syntax since I'm not a native english-
  speaker)? Would be nice if you mailed them to me, thanks]
- Well, if it's so easy for THEM (in comparison to US :-) to ensure bug-free
  programs, then why don't they do it (e.g. MS-{Windows,Office,...}, Netscape
  Navigator, ... suck big time concerning stability)? Of course this
  conclusion is based on empirical studies :-)

> said of web applets written by a neophyte or cracker.

For the last one you're comparing apples to pears (as a cracker would violate
memory intentionally this can not be considered a bug - or did you mean a
hacker? Then this doesn't fit - hackers are per definitionem wit enough to
produce no bugs at all :-).

Have a nice day,
Nils
-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nils Philippsen                  @college: nils@rhlx01.rz.fht-esslingen.de
Vogelsangstrasse 115             @home:    nils@wombat.dialup.fht-esslingen.de
D 70197 Stuttgart                phone:    +49-711-6599405
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Wer heute an der Bildung spart,          Those who scrimp on education today,
hat morgen noch bloedere Politiker.      get even dumber politicians tomorrow.

From lawrence@mail.tne.net.au
Received: (qmail 23128 invoked from network); 25 May 1998 13:35:49 -0000
Received: from smtp.tne.net.au (HELO mail.tne.net.au) (root@203.22.206.5)
  by mail2.redhat.com with SMTP; 25 May 1998 13:35:49 -0000
Received: from tne.net.au (lawrence@brandy.alcohol.tne.net.au [203.29.179.6]) 
by mail.tne.net.au (8.8.8/8.7.3) with ESMTP id XAA17373 for <gtk-list@redhat.com>; 
Mon, 25 May 1998 23:05:19 +0930
Sender: lawrence@mail.tne.net.au
Message-ID: <3569F9A8.C361FD0D@tne.net.au>
Date: Mon, 25 May 1998 23:07:20 +0000
From: Lawrence Sim <wanderer@tne.net.au>
Organization: Kick Butt Software
X-Mailer: Mozilla 4.03 [en] (X11; I; Linux 2.0.30 i686)
MIME-Version: 1.0
To: gtk-list@redhat.com
Subject: Re: Planner Widget / Perpetual Calendar
References: <19980525043308.16021.rocketmail@send1e.yahoomail.com> 
<19980525045956.8729.qmail@mail2.redhat.com>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Has anyone created a perpetual Calendar widget.  As I am creating a
program using gtk+ that needs a Perpetual Calendar.  Well the program
already has one, but I am going to finnish it off and turn it into a
widget.
-- 
Lawrence Sim
http://www.tne.net.au/wanderer/
mailto:lasim@earthling.net

From owt1@cornell.edu
Received: (qmail 9091 invoked from network); 25 May 1998 14:25:38 -0000
Received: from cu-dialup-2008.cit.cornell.edu (mail@132.236.155.142)
  by mail2.redhat.com with SMTP; 25 May 1998 14:25:38 -0000
Received: from otaylor by cu-dialup-2008.cit.cornell.edu with local (Exim 1.82 #1)
	id 0ydyDT-00076B-00; Mon, 25 May 1998 10:27:07 -0400
To: Lawrence Sim <wanderer@tne.net.au>
Cc: gtk-list@redhat.com
Subject: Re: Planner Widget / Perpetual Calendar
References: <19980525043308.16021.rocketmail@send1e.yahoomail.com> 
<19980525045956.8729.qmail@mail2.redhat.com> <3569F9A8.C361FD0D@tne.net.au>
From: Owen Taylor <otaylor@gtk.org>
Date: 25 May 1998 10:27:07 -0400
In-Reply-To: Lawrence Sim's message of Mon, 25 May 1998 23:07:20 +0000
Message-ID: <lzvhqu4e9w.fsf@cu-dialup-1917.cit.cornell.edu>
Lines: 14
X-Mailer: Gnus v5.5/Emacs 20.2
X-Emacs: Emacs 20.2, MULE 3.0 (MOMIJINOGA)
MIME-Version: 1.0 (generated by SEMI MIME-Edit 0.98 - =?ISO-8859-4?Q?"D=F2?=
  =?ISO-8859-4?Q?h=F2ji"?=)
Content-Type: text/plain; charset=US-ASCII
Sender: Owen Taylor <owt1@cornell.edu>


Lawrence Sim <wanderer@tne.net.au> writes:

> Has anyone created a perpetual Calendar widget.  As I am creating a
> program using gtk+ that needs a Perpetual Calendar.  Well the program
> already has one, but I am going to finnish it off and turn it into a
> widget.

Shawn Amundson wrote a calender widget that is currently in
GNOME. It probably will be part of GTK in the future. (Or maybe
in an auxiliary-widgets package, if we go that route)

Regards,
                                        Owen

From mvo@zagadka.ping.de
Received: (qmail 5671 invoked from network); 25 May 1998 17:31:10 -0000
Received: from lilly.ping.de (qmailr@195.37.120.2)
  by mail2.redhat.com with SMTP; 25 May 1998 17:31:10 -0000
Received: (qmail 15338 invoked by uid 10); 25 May 1998 17:30:24 -0000
Received: from zagadka.ping.de by lilly.ping.de with UUCP (rmail-0.1-fdc); 
25 May 1998 17:30:20 -0000
Received: (qmail 502 invoked by uid 1000); 25 May 1998 08:03:14 -0000
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: Proposed widget
References: <Pine.LNX.3.96.980524122634.2956B-100000@topaz.axisinternet.com> 
<199805250141.SAA29556@kyoto.noir.com>
Mime-Version: 1.0 (generated by tm-edit 7.106)
Content-Type: text/plain; charset=US-ASCII
From: Marius Vollmer <mvo@zagadka.ping.de>
Date: 25 May 1998 10:03:14 +0200
In-Reply-To: "K. Richard Pixley"'s message of Sun, 24 May 1998 18:41:25 -0700
Message-ID: <87n2c66am5.fsf@zagadka.ping.de>
Lines: 42
X-Mailer: Gnus v5.5/Emacs 20.1

"K. Richard Pixley" <rich@kyoto.noir.com> writes:

> My *preference* at the moment, (subject to change momentarily), would
> be to divide widgets into tier 1 and tier 2 (and perhaps "etc").  Tier
> 1 would be basics, often required.  Tier 2 would be "anything else" at
> this point.

One thing we should not overlook is the `matureness' of the widgets.
While I think it would make certain things easier to put everything
into one big library, it would be a huge PITA to have some half-done,
compiles-only-when-you-have-libunreleased0.0.1 widgets break the
compilation of GtkButton.

>From a technical view, and once everything has been installed, I think
it's pretty irrelevent whether the widgets live in one library or in
many.  There is already enough infrastructure in place to deal with
`advanced' build rules, i.e gtk-config.

What is needed is a central repository of widgets, so that everybody
can see what is already available, and what is in the works.  This
would foster code-reuse, a concentration of efforts and, maybe most
important, a consistent look&feel.

> Nope.  Just a professional who's currently dealing with hardware
> designers who use automatic tools to create their hardware
> simulations.
> 
> Follow that?  (*laugh*) Their simulations eventually amount to C code
> which is compiled, then run, on a large pile of regression tests,
> (perhaps 5000 tests at ~1hr run time each).  The actual, human
> generated, source might be less than 2M, produced by ~100 humans
> currently employed in this process.  And given current configurations,
> might take as much as 15 hours to run them all.  (*laugh* Yes.
> parallel execution.  *sigh*).

Yeah, I have been doing something like this for the last half a year.
Simulating a mobile-radio-system on the bit-level.  I never looked at
the size of the binaries, but the boxen there all had something like
2GB RAM.  There must be a reason for that.  Some simulations ran for
about three days.  Takes the fun out of hacking, I tell you.

But what can you do?

From kc5tja@topaz.axisinternet.com
Received: (qmail 8435 invoked from network); 25 May 1998 19:53:31 -0000
Received: from axisinternet.com (HELO topaz.axisinternet.com) (root@207.213.59.10)
  by mail2.redhat.com with SMTP; 25 May 1998 19:53:31 -0000
Received: from topaz.axisinternet.com (kc5tja@axisinternet.com [207.213.59.10])
	by topaz.axisinternet.com (8.8.5/8.8.5) with SMTP id MAA01012
	for <gtk-list@redhat.com>; Mon, 25 May 1998 12:48:46 -0700
Date: Mon, 25 May 1998 12:48:46 -0700 (PDT)
From: KC5TJA <kc5tja@topaz.axisinternet.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: [OFFTOPIC] Re: Proposed widget
In-Reply-To: <Pine.LNX.3.96.980525092304.21363A-100000@rhlx01.rz.fht-esslingen.de>
Message-ID: <Pine.LNX.3.96.980525124511.962A-100000@topaz.axisinternet.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

> For the last one you're comparing apples to pears (as a cracker would violate
> memory intentionally this can not be considered a bug - or did you mean a
> hacker? Then this doesn't fit - hackers are per definitionem wit enough to
> produce no bugs at all :-).

I meant what I wrote: crackers are malicious in intent.  :)

Also, it is my belief that bigger companies, who write for Windows and
similar OSes, have come to rely on the MMU too much.  Namely, they get
lazy, and expect the MMU to "save the day" if something goes awry.
Non-MMU based systems don't have this luxury, so if your company wants to
make money selling software, it had better damn well NOT touch other
people's memory!  It doesn't take a rocket scientist to figure out which
app causes a problem when run in conjunction with another.  I prefer not
using an MMU for just this reason -- it FORCES the developer to produce
good, reliable code.

==========================================================================
      KC5TJA/6     |                  -| TEAM DOLPHIN |-
        DM13       |                  Samuel A. Falvo II
    QRP-L #1447    |          http://www.dolphin.openprojects.net

From amundson@gimp.org
Received: (qmail 26361 invoked from network); 26 May 1998 15:23:45 -0000
Received: from graft.xcf.berkeley.edu (HELO wilber.gimp.org) (mail@128.32.43.209)
  by mail2.redhat.com with SMTP; 26 May 1998 15:23:45 -0000
Received: from amundson by wilber.gimp.org with local-smtp (Exim 1.92 #1 (Debian))
	id 0yeLZi-0004oO-00; Tue, 26 May 1998 08:23:38 -0700
Date: Tue, 26 May 1998 08:23:38 -0700 (PDT)
From: "Shawn T. Amundson" <amundson@gimp.org>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: Proposed widget
In-Reply-To: <199805250214.TAA30947@kyoto.noir.com>
Message-ID: <Pine.LNX.3.96.980526074935.16725B-100000@wilber.gimp.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Sun, 24 May 1998, K. Richard Pixley wrote:

>    Date: Mon, 25 May 1998 05:42:11 -0400 (EDT)
>    From: <nuke@bayside.net>
> 
>    oh, how about we just take the linux kernel approach- compile a
>    very tiny gtk with buttons/tables/boxes and start a "gtk extra
>    widget config" :)
> 
> Ok by me.  And how about, if glib/gdk/gtk is the small bit, we call
> the rest, say, oh, I dunno, how about, gnome?
> 
> *laugh*
> 

My personal view on this issue is that as many general purpose widgets 
as possible should be distributed with the toolkit.  Even if widgets 
are broken into different libraries or not even compiled in anywhere, the 
important issue here is to provide a common set of tools with which
an application programmer can create an interface.

Special cases always exist.  For example, we don't want to
distribute gtk-xmhtml with gtk, because gtk-xmhtml is big and must
be kept in sync with the xmhtml author's work.  With those things
considered, the maintainability of gtk-xmhtml becomes more like that
of an application than of a simple widget.

To some extent, there is going to be some overlap between things that
could go into gtk and gnome.  I think ideally the widgets would be
written for gtk with intent to be independant of gnome and then a gnome
layer would be added to that widget, therefore ensuring compatibility 
in look/feel between gtk non-gnome and gnome applications.  (And an
easier transition and/or support for gnome.)

Some issues involved in bloating the toolkit are real; for example, we
don't want to make the core library too large or statically linked 
applications will become rediculous.  On the other hand, I don't think
that size of the resulting distribution file plays a significant role
in the toolkit's usefulness.

These are issues that will probably be addressed during the 1.1.x series
as we collect more general purpose widgets.  

--
Shawn T. Amundson               
amundson@gimp.org               http://www.gimp.org/~amundson

"The assumption that the universe looks the same in every
 direction is clearly not true in reality." - Stephen Hawking

From amundson@gimp.org  Thu May 11 19:25:10 2000
Received: (qmail 7344 invoked from network); 26 May 1998 15:37:20 -0000
Received: from graft.xcf.berkeley.edu (HELO wilber.gimp.org) (mail@128.32.43.209)
  by mail2.redhat.com with SMTP; 26 May 1998 15:37:20 -0000
Received: from amundson by wilber.gimp.org with local-smtp (Exim 1.92 #1 (Debian))
	id 0yeLmw-0004u9-00; Tue, 26 May 1998 08:37:18 -0700
Date: Tue, 26 May 1998 08:37:18 -0700 (PDT)
From: "Shawn T. Amundson" <amundson@gimp.org>
To: gtk-list@redhat.com
cc: Lawrence Sim <wanderer@tne.net.au>
Subject: Re: [gtk-list] Re: Planner Widget / Perpetual Calendar
In-Reply-To: <lzvhqu4e9w.fsf@cu-dialup-1917.cit.cornell.edu>
Message-ID: <Pine.LNX.3.96.980526083247.16725C-100000@wilber.gimp.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

On 25 May 1998, Owen Taylor wrote:

> 
> Lawrence Sim <wanderer@tne.net.au> writes:
> 
> > Has anyone created a perpetual Calendar widget.  As I am creating a
> > program using gtk+ that needs a Perpetual Calendar.  Well the program
> > already has one, but I am going to finnish it off and turn it into a
> > widget.
> 
> Shawn Amundson wrote a calender widget that is currently in
> GNOME. It probably will be part of GTK in the future. (Or maybe
> in an auxiliary-widgets package, if we go that route)
> 
> Regards,
>                                         Owen

Note that the widget doesn't require GNOME.  It is included there 
as a convienence for GNOME apps by the GNOME maintainers.

You can get gtkcalendar from:
ftp://ftp.gtk.org/pub/users/amundson/gcalendar-0.5.0.tar.gz

I'm perfectly happy accepting patches to that widget to expand it to
do additional things. ;-)

--
Shawn T. Amundson               
amundson@gimp.org               http://www.gimp.org/~amundson

"The assumption that the universe looks the same in every
 direction is clearly not true in reality." - Stephen Hawking

From zimerman@earthling.net
Received: (qmail 21105 invoked from network); 26 May 1998 21:14:09 -0000
Received: from slip139-92-98-218.tel.il.ibm.net (HELO hexagon.org) (user@139.92.98.218)
  by mail2.redhat.com with SMTP; 26 May 1998 21:14:09 -0000
Received: (qmail 578 invoked by uid 500); 26 May 1998 21:15:00 -0000
Message-ID: <19980527001459.30961@hexagon>
Date: Wed, 27 May 1998 00:14:59 +0300
From: Nimrod Zimerman <zimerman@earthling.net>
To: gtk-list@redhat.com
Subject: Adding more widgets to gtk
Mail-Followup-To: gtk-list@redhat.com
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-Mailer: Mutt 0.89.1i

Hello.

A small issue that has not been mentioned, as far as I've seen.

As it is today, compiling gtk as a whole on a Linux system requires more
than 25mb of free space (probably about 30mb-35mb). This might not seem too
important to most of you out there, but it probably matters to some, and
this is a fairly large penalty. Personally, I have to endlessly fight
whenever I need to compile a new gtk, in order to free up the required space.

Adding additional widgets as additional library/libraries can improve the
situation, by requiring less free space for independent compilations.

(Just imagine the horror I'm going through now, trying to compile gcc 2.8.1.
It is huge, and I don't even have enough free space to extract the
sources!).

Yes, I know HDs are cheap (they aren't, really. Not too cheap). Still.

                                                   Nimrod

From owt1@cornell.edu
Received: (qmail 14518 invoked from network); 26 May 1998 22:40:40 -0000
Received: from cu-dialup-2418.cit.cornell.edu (mail@128.253.44.220)
  by mail2.redhat.com with SMTP; 26 May 1998 22:40:40 -0000
Received: from otaylor by cu-dialup-2418.cit.cornell.edu with local (Exim 1.82 #1)
	id 0yeSRI-0000Bp-00; Tue, 26 May 1998 18:43:24 -0400
To: Nimrod Zimerman <zimerman@earthling.net>
Cc: gtk-list@redhat.com
Subject: Re: Adding more widgets to gtk
References: <19980527001459.30961@hexagon>
From: Owen Taylor <otaylor@gtk.org>
Date: 26 May 1998 18:43:22 -0400
In-Reply-To: Nimrod Zimerman's message of Wed, 27 May 1998 00:14:59 +0300
Message-ID: <lziumsbqlx.fsf@cu-dialup-2005.cit.cornell.edu>
Lines: 36
X-Mailer: Gnus v5.5/Emacs 20.2
X-Emacs: Emacs 20.2, MULE 3.0 (MOMIJINOGA)
MIME-Version: 1.0 (generated by SEMI MIME-Edit 0.98 - =?ISO-8859-4?Q?"D=F2?=
  =?ISO-8859-4?Q?h=F2ji"?=)
Content-Type: text/plain; charset=US-ASCII
Sender: Owen Taylor <owt1@cornell.edu>


Nimrod Zimerman <zimerman@earthling.net> writes:

> Hello.
> 
> A small issue that has not been mentioned, as far as I've seen.
> 
> As it is today, compiling gtk as a whole on a Linux system requires more
> than 25mb of free space (probably about 30mb-35mb). This might not seem too
> important to most of you out there, but it probably matters to some, and
> this is a fairly large penalty. Personally, I have to endlessly fight
> whenever I need to compile a new gtk, in order to free up the required space.
> 
> Adding additional widgets as additional library/libraries can improve the
> situation, by requiring less free space for independent compilations.
> 
> (Just imagine the horror I'm going through now, trying to compile gcc 2.8.1.
> It is huge, and I don't even have enough free space to extract the
> sources!).
> 
> Yes, I know HDs are cheap (they aren't, really. Not too cheap). Still.

If you configure GTK+ with

 CFLAGS="-O2 -Wall" ./configure --disable-static

(I.e., no debugging information, and no static libraries), it
will take _much_ less space to compile. (Just under 10M total)

Just the --disable-static will cut the space approximately in
half, with no penalty for most people.

(This probably should be in the README)

Regards,
                                        Owen

From rlb@cs.utexas.edu
Received: (qmail 17512 invoked from network); 26 May 1998 23:54:31 -0000
Received: from mail.cs.utexas.edu (root@128.83.139.10)
  by mail2.redhat.com with SMTP; 26 May 1998 23:54:31 -0000
Received: from nevermore.csres.utexas.edu (dial-20-4.ots.utexas.edu [128.83.128.84])
	by mail.cs.utexas.edu (8.8.5/8.8.5) with ESMTP id SAA21020
	for <gtk-list@redhat.com>; Tue, 26 May 1998 18:54:15 -0500 (CDT)
Received: from rlb by nevermore.csres.utexas.edu with local (Exim 1.92 #1 (Debian))
	id 0yeTXk-0003ae-00; Tue, 26 May 1998 18:54:08 -0500
Sender: rlb@cs.utexas.edu
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: [OFFTOPIC] Re: Proposed widget
References: <Pine.LNX.3.96.980525124511.962A-100000@topaz.axisinternet.com>
From: Rob Browning <rlb@cs.utexas.edu>
Date: 26 May 1998 18:54:07 -0500
In-Reply-To: KC5TJA's message of "Mon, 25 May 1998 12:48:46 -0700 (PDT)"
Message-ID: <87solwsi5c.fsf@nevermore.csres.utexas.edu>
Lines: 24
X-Mailer: Gnus v5.6.9/Emacs 20.2

KC5TJA <kc5tja@topaz.axisinternet.com> writes:

> Also, it is my belief that bigger companies, who write for Windows and
> similar OSes, have come to rely on the MMU too much.  Namely, they get
> lazy, and expect the MMU to "save the day" if something goes awry.
> Non-MMU based systems don't have this luxury, so if your company wants to
> make money selling software, it had better damn well NOT touch other
> people's memory!  It doesn't take a rocket scientist to figure out which
> app causes a problem when run in conjunction with another.  I prefer not
> using an MMU for just this reason -- it FORCES the developer to produce

To me, your arguments are the equivalent of saying "take the seatbelts
out of the car because they encourage people to drive unsafely".

With respect to MMUs making programmers lazy, that's what libraries
like electric fence, dmalloc, etc are for.  Debug during development,
but have the safety mechanisms on for the user.

I *don't* trust *anyone* else enough to run their programs on my
system without memory protection if have a choice.  Why should I?

-- 
Rob Browning <rlb@cs.utexas.edu>
PGP fingerprint = E8 0E 0D 04 F5 21 A0 94  53 2B 97 F5 D6 4E 39 30

From tml@hemuli.tte.vtt.fi
Received: (qmail 29346 invoked from network); 15 Jun 1998 12:02:56 -0000
Received: from mailgw.vtt.fi (130.188.1.6)
  by mail2.redhat.com with SMTP; 15 Jun 1998 12:02:56 -0000
Received: from hemuli.tte.vtt.fi (hemuli.tte.vtt.fi [130.188.52.2])
	by mailgw.vtt.fi (8.8.8/8.8.8) with ESMTP id PAA11677
	for <gtk-list@redhat.com>; Mon, 15 Jun 1998 15:02:55 +0300 (EET DST)
Received: (from tml@localhost)
	by hemuli.tte.vtt.fi (8.8.8/8.8.8) id PAA10079;
	Mon, 15 Jun 1998 15:02:55 +0300 (EETDST)
From: Tor Lillqvist <tml@hemuli.tte.vtt.fi>
Message-ID: <13701.3438.733823.790230@hemuli.tte.vtt.fi>
Date: Mon, 15 Jun 1998 15:02:54 +0300 (EETDST)
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
To: gtk-list@redhat.com
Subject: Excuse me for mentioning the unmentionable, but...
X-Mailer: VM 6.47 under Emacs 19.34.1
X-Face: 1$Duk4X_P]UyB~=O&4jO#\R-iZMZuT9HUOBKXk{|+s+`U}iB"Pc_2zuFd_=poxGtgr
 (4t0PkyBR=,[:]9Hoz(I#P7H"{f"[r$W9}WL_0+eLlMrii-HPeK.`JY#6

Surely somebody has thought about the feasibility of, or even tried,
porting gdk and gtk+ to Win32? (I don't mean just using the X11
libraries under Win32, but native Win32 graphics API. No MFC of
course.) What is the biggest problem? The Win32 color model is quite
different from X11's, isn't it? What about keyboard and mouse focus
related differences? If somebody has any helpful hints, or even
partial attempts, I would be grateful for them.... I might try to port
it myself. (Don't hold your breath, I am talking about a timeframe of
half a year at least.)

I assume one would compile and run it using the cygwin32 environment,
so POSIX-specific stuff could be left as is.

(Don't flame me to death, I dislike Microsoft and Windows as much as
most people on this list, I assume. I just happen to have this Minolta
slide/neg scanner which isn't supported by SANE, and would love to be
able to run the GIMP under Windoze. Even without any plug-ins.
Reverse-engineering the scanner's protocol seems tough.)

From bmccoy@lan2wan.com
Received: (qmail 30461 invoked from network); 15 Jun 1998 13:04:23 -0000
Received: from access1.lan2wan.com (bmccoy@205.177.8.10)
  by mail2.redhat.com with SMTP; 15 Jun 1998 13:04:23 -0000
Received: (from bmccoy@localhost) by access1.lan2wan.com 
(8.8.5/Config By A.D.Simmons) id JAA28839; Mon, 15 Jun 1998 09:21:33 -0400 (EDT)
Date: Mon, 15 Jun 1998 09:21:33 -0400 (EDT)
From: "Brett W. McCoy" <bmccoy@lan2wan.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Excuse me for mentioning the unmentionable, but...
In-Reply-To: <13701.3438.733823.790230@hemuli.tte.vtt.fi>
Message-ID: <Pine.BSI.3.91.980615091934.28608A-100000@access1.lan2wan.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Mon, 15 Jun 1998, Tor Lillqvist wrote:

> Surely somebody has thought about the feasibility of, or even tried,
> porting gdk and gtk+ to Win32? (I don't mean just using the X11
> libraries under Win32, but native Win32 graphics API. No MFC of
> course.) What is the biggest problem? The Win32 color model is quite
> different from X11's, isn't it? What about keyboard and mouse focus
> related differences? If somebody has any helpful hints, or even
> partial attempts, I would be grateful for them.... I might try to port
> it myself. (Don't hold your breath, I am talking about a timeframe of
> half a year at least.)

What would be the point, other than making yet another application 
framework that wraps around the windows API?

Brett W. McCoy           
                                         http://www.lan2wan.com/~bmccoy
-----------------------------------------------------------------------
"The Number of UNIX installations has grown to 10, with more expected."
   -- The UNIX Programmer's Manual, 2nd Edition, June, 1972

From pmc@iskon.hr
Received: (qmail 9041 invoked from network); 15 Jun 1998 16:10:19 -0000
Received: from bach.iskon.hr (root@195.29.170.3)
  by mail2.redhat.com with SMTP; 15 Jun 1998 16:10:19 -0000
Received: from midgard (dialin002.iskon.hr [195.29.170.142])
	by bach.iskon.hr (8.9.0/8.9.0) with SMTP id SAA21079
	for <gtk-list@redhat.com>; Mon, 15 Jun 1998 18:08:01 +0200
Message-ID: <000201bd9878$358be520$8eaa1dc3@midgard>
From: "Marin Purgar - PMC" <pmc@iskon.hr>
To: <gtk-list@redhat.com>
Subject: OffTopic: Re: Excuse me for mentioning the unmentionable, but...
Date: Mon, 15 Jun 1998 15:42:03 +0200
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 4.72.2106.4
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2106.4

>On Mon, 15 Jun 1998, Tor Lillqvist wrote:
>
>> Surely somebody has thought about the feasibility of, or even tried,
>> porting gdk and gtk+ to Win32? (I don't mean just using the X11
>> libraries under Win32, but native Win32 graphics API. No MFC of
>> course.) What is the biggest problem? The Win32 color model is quite
>> different from X11's, isn't it? What about keyboard and mouse focus
>> related differences? If somebody has any helpful hints, or even
>> partial attempts, I would be grateful for them.... I might try to port
>> it myself. (Don't hold your breath, I am talking about a timeframe of
>> half a year at least.)
>
>What would be the point, other than making yet another application
>framework that wraps around the windows API?


The point would be allowing people running M$ Win to easly port (and use)
GTK applications.

Are we trying to do the same thing M$ does? Something like: "If you *want*
to run GIMP you *have* to get Linux (or any other *X with GTK)!"

bb4now,
PMC

From sopwith@redhat.com
Received: (qmail 20448 invoked from network); 15 Jun 1998 16:21:23 -0000
Received: from lacrosse.redhat.com (sopwith@207.175.42.154)
  by mail2.redhat.com with SMTP; 15 Jun 1998 16:21:23 -0000
Received: from localhost (sopwith@localhost)
	by lacrosse.redhat.com (8.8.7/8.8.7) with SMTP id MAA02654
	for <gtk-list@redhat.com>; Mon, 15 Jun 1998 12:21:23 -0400
Date: Mon, 15 Jun 1998 12:21:23 -0400 (EDT)
From: Elliot Lee <sopwith@redhat.com>
To: gtk-list@redhat.com
Subject: Re: [gtk-list] OffTopic: Re: Excuse me for mentioning the unmentionable, but...
In-Reply-To: <000201bd9878$358be520$8eaa1dc3@midgard>
Message-ID: <Pine.LNX.3.96.980615121852.32145J-100000@lacrosse.redhat.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Mon, 15 Jun 1998, Marin Purgar - PMC wrote:

> The point would be allowing people running M$ Win to easly port (and use)
> GTK applications.
> 
> Are we trying to do the same thing M$ does? Something like: "If you *want*
> to run GIMP you *have* to get Linux (or any other *X with GTK)!"

The port of gtk+ to MS Windows is Somebody Else's Problem. Should you wish
to make it your problem, that'd be cool, but I think most of the People
Who Code would rather work on worthwhile stuff (i.e. enhancing gtk+ to be
cooler) than worry about porting it to a fundamentally broken OS.

-- Elliot
When I die, I want to die peacefully in my sleep like my grandfather...
	...not yelling and screaming like the people in the back of the
	   plane he was flying.

From amundson@gimp.org
Received: (qmail 18683 invoked from network); 15 Jun 1998 20:39:27 -0000
Received: from graft.xcf.berkeley.edu (HELO wilber.gimp.org) (mail@128.32.43.209)
  by mail2.redhat.com with SMTP; 15 Jun 1998 20:39:27 -0000
Received: from amundson by wilber.gimp.org with local-smtp (Exim 1.92 #1 (Debian))
	id 0ylg2D-0000Ei-00; Mon, 15 Jun 1998 13:39:21 -0700
Date: Mon, 15 Jun 1998 13:39:21 -0700 (PDT)
From: "Shawn T. Amundson" <amundson@gimp.org>
To: gtk-list@redhat.com
Subject: GDK on Win32!!!
Message-ID: <Pine.LNX.3.96.980615132533.249B-100000@wilber.gimp.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII


I doubt any of the current main developers is going to waste
time on such a project.

Please discontinue debating the merits of such a thing.  If 
any of you felt strongly enough to do the port, you probably
would be coding and not debating.  If you are coding on it
then we can set up another mailing list I'm sure.

If someone wanted to do a Win32 version of GIMP, I think they
would be best to help seperate out core from GUI and writing
the GUI in Win32's system toolkit.

Thanks,

-Shawn

--
Shawn T. Amundson               
amundson@gimp.org               http://www.gimp.org/~amundson

"The assumption that the universe looks the same in every
 direction is clearly not true in reality." - Stephen Hawking

From tml@hemuli.tte.vtt.fi
Received: (qmail 12689 invoked from network); 16 Jun 1998 08:11:48 -0000
Received: from mailgw.vtt.fi (130.188.1.6)
  by mail2.redhat.com with SMTP; 16 Jun 1998 08:11:48 -0000
Received: from hemuli.tte.vtt.fi (hemuli.tte.vtt.fi [130.188.52.2])
	by mailgw.vtt.fi (8.8.8/8.8.8) with ESMTP id LAA22160
	for <gtk-list@redhat.com>; Tue, 16 Jun 1998 11:11:46 +0300 (EET DST)
Received: (from tml@localhost)
	by hemuli.tte.vtt.fi (8.8.8/8.8.8) id LAA05815;
	Tue, 16 Jun 1998 11:11:46 +0300 (EETDST)
From: Tor Lillqvist <tml@hemuli.tte.vtt.fi>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-ID: <13702.10434.208429.945232@hemuli.tte.vtt.fi>
Date: Tue, 16 Jun 1998 11:11:46 +0300 (EETDST)
To: gtk-list@redhat.com
Subject: [gtk-list] Re: OffTopic: Re: Excuse me for mentioning the unmentionable, but...
In-Reply-To: <Pine.LNX.3.96.980615121852.32145J-100000@lacrosse.redhat.com>
References: <000201bd9878$358be520$8eaa1dc3@midgard>
	<Pine.LNX.3.96.980615121852.32145J-100000@lacrosse.redhat.com>
X-Mailer: VM 6.47 under Emacs 19.34.1
X-Face: 1$Duk4X_P]UyB~=O&4jO#\R-iZMZuT9HUOBKXk{|+s+`U}iB"Pc_2zuFd_=poxGtgr
 (4t0PkyBR=,[:]9Hoz(I#P7H"{f"[r$W9}WL_0+eLlMrii-HPeK.`JY#6

Elliot Lee writes:
 > On Mon, 15 Jun 1998, Marin Purgar - PMC wrote:
 > The port of gtk+ to MS Windows is Somebody Else's Problem. Should you wish
 > to make it your problem, that'd be cool, but I think most of the People
 > Who Code would rather work on worthwhile stuff (i.e. enhancing gtk+ to be
 > cooler) than worry about porting it to a fundamentally broken OS.

Sure. I wasn't suggesting that the People Who Code gtk+ would need to
have anything to do with it. One can only wish, though, that *if* a
gdk and gtk+ port to Win32 gets under way, they approve of including
the diffs in the main gtk+ source repository (I know, sprinkling code
with #ifdefs isn't going to look nice, but hopefully those will mostly
show up just in gdk.). Surely we don't need a split of the gtk+
sources into a version with Win32 #ifdefs and one without.

If gtk+ is (continues to be) well written, modular, well layered etc
(is it?), the Win32 stuff should be visible only in the lower layers,
shouldn't it?

--tml

From jlarsen@PIRL.LPL.Arizona.EDU
Received: (qmail 30687 invoked from network); 20 Jun 1998 05:33:03 -0000
Received: from pirl.lpl.arizona.edu (128.196.64.7)
  by mail2.redhat.com with SMTP; 20 Jun 1998 05:33:03 -0000
Received: from vanbiesbroeck.PIRL (vanbiesbroeck.LPL.Arizona.EDU [128.196.64.216]) 
by pirl.lpl.arizona.edu (8.7.1/8.7.3) with SMTP id WAA22384 for <gtk-list@redhat.com>; 
Fri, 19 Jun 1998 22:33:01 -0700 (MST)
Received: by vanbiesbroeck.PIRL (SMI-8.6/SMI-SVR4)
	id WAA25489; Fri, 19 Jun 1998 22:32:59 -0700
From: jlarsen@PIRL.LPL.Arizona.EDU (Jeffrey Larsen)
Message-Id: <199806200532.WAA25489@vanbiesbroeck.PIRL>
Subject: Xwindow as GTK Widget
To: gtk-list@redhat.com
Date: Fri, 19 Jun 98 22:32:58 MST
X-Mailer: ELM [version 2.3 PL11]


I'm trying to use GTK to wrap our project's real-time asteroid
detection code.  One problem I can't solve though...

Our incoming pixel data is displayed on an X window using an
astronomical graphics subroutine library I don't want to mess 
with.  I would like the X window to be responsive to GTK events 
(in particular mouse clicks).  I have the Xdisplay and Xwindow
ID's for the X window but can't see how to turn this into a usable
GTK widget.  How can one do this?

I've examined gdkx.h and I'm still in the dark.  Help?

Regards,

Jeff

---------------------------------------------------------------------------
Dr. Jeffrey Larsen                              jlarsen@lpl.arizona.edu
Spacewatch Project                              Telephone: (520) 621-3384
Lunar and Planetary Laboratory                  FAX:  (520) 621-1940
University of Arizona                                          
Tucson, Arizona 85721                    

"Whether they ever find life there or not, I think Jupiter should be 
considered an enemy planet."
				-- Jack Handey (Saturday Night Live)
---------------------------------------------------------------------------

From owt1@cornell.edu
Received: (qmail 6961 invoked from network); 20 Jun 1998 23:25:17 -0000
Received: from cu-dialup-1219.cit.cornell.edu (mail@132.236.155.193)
  by mail2.redhat.com with SMTP; 20 Jun 1998 23:25:17 -0000
Received: from otaylor by cu-dialup-1219.cit.cornell.edu with local (Exim 1.82 #1)
	id 0ynX3C-0006fL-00; Sat, 20 Jun 1998 19:28:02 -0400
To: jlarsen@PIRL.LPL.Arizona.EDU (Jeffrey Larsen)
Cc: gtk-list@redhat.com
Subject: Re: Xwindow as GTK Widget
References: <199806200532.WAA25489@vanbiesbroeck.PIRL>
From: Owen Taylor <otaylor@gtk.org>
Date: 20 Jun 1998 19:28:02 -0400
In-Reply-To: jlarsen@PIRL.LPL.Arizona.EDU's message of Fri, 19 Jun 98 22:32:58 MST
Message-ID: <lzbtrnzm9p.fsf@cu-dialup-1219.cit.cornell.edu>
Lines: 61
X-Mailer: Gnus v5.5/Emacs 20.2
X-Emacs: Emacs 20.2, MULE 3.0 (MOMIJINOGA)
MIME-Version: 1.0 (generated by SEMI MIME-Edit 0.98 - =?ISO-8859-4?Q?"D=F2?=
  =?ISO-8859-4?Q?h=F2ji"?=)
Content-Type: text/plain; charset=US-ASCII
Sender: Owen Taylor <owt1@cornell.edu>


jlarsen@PIRL.LPL.Arizona.EDU (Jeffrey Larsen) writes:

> I'm trying to use GTK to wrap our project's real-time asteroid
> detection code.  One problem I can't solve though...
> 
> Our incoming pixel data is displayed on an X window using an
> astronomical graphics subroutine library I don't want to mess 
> with.  I would like the X window to be responsive to GTK events 
> (in particular mouse clicks).  I have the Xdisplay and Xwindow
> ID's for the X window but can't see how to turn this into a usable
> GTK widget.  How can one do this?
> 
> I've examined gdkx.h and I'm still in the dark.  Help?
> 
> Regards,
> 
> Jeff

It isn't an easy task, and probably can't be done exactly with
writing a small amount of fairly low-level code.

It, to some extent, depends on exactly what the graphics library
needs to do. If the graphics library only needs to draw into
an X window, and you can control which X window it draws into,
then the easy thing to do, is to have it draw into a 
GdkDrawingArea. (You can get the X window ID with 
GDK_WINDOW_XWINDOW (drawing_area->window), after the window
is realized)

If, however, library is doing more complicated interactions with
X, then it is probably best to give the library its on
separate connect to X. (Display *), either as Jay described, or
possibly in a separate process.

Then, here's how I would set things up:

 - I would create a new "Overlay" widget, which is a container
   with one child; this widget covers the child window with
   a InputOnly window so that it traps all user input to the
   child.

   This widget could be derived from GtkEventBox - it would
   just involve overriding the realize routine.

 - Then, as a child of this widget, I would use a Socket widget
   from the Plug/Socket widgets.

   ftp://ftp.gtk.org/pub/users/otaylor/plugsocket-0.3.tar.gz

   Then you can just call 

    gtk_socket_steal (GTK_SOCKET(socket), window_id);

The first step is probably a bit scary sounding, but actually
should be pretty straightforward. Let me know if you need some
help figuring it out.

Regards,
                                        Owen

From DAChaplin@email.msn.com
Received: (qmail 5732 invoked from network); 28 Jun 1998 11:18:15 -0000
Received: from smtp.email.msn.com (HELO UPIMSSMTPUSR06) (207.68.143.178)
  by mail2.redhat.com with SMTP; 28 Jun 1998 11:18:15 -0000
Received: from default - 193.149.84.28 by email.msn.com with Microsoft SMTPSVC;
	 Sun, 28 Jun 1998 04:17:58 -0700
From: "Damon Chaplin" <DAChaplin@email.msn.com>
To: "GTK List" <gtk-list@redhat.com>
Subject: Data-bound widgets?
Date: Sun, 28 Jun 1998 12:20:06 +0100
Message-ID: <000101bda286$b40fe5a0$1c5495c1@default>
MIME-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook 8.5, Build 4.71.2173.0
Importance: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2106.4
Return-Path: DAChaplin@email.msn.com


Hi,

Is anyone working on anything like data-bound widgets? - to make
it easy to write simple GTK apps which connect to PostgreSQL or mSQL?

I think it would be a very useful addition (I want to add them to
Glade!), though I'm not sure how difficult they would be to do.


Damon

From msf@redhat.com
Received: (qmail 6677 invoked from network); 30 Jun 1998 16:27:05 -0000
Received: from lacrosse.redhat.com (root@207.175.42.154)
  by mail2.redhat.com with SMTP; 30 Jun 1998 16:27:05 -0000
Received: from majestic.labs.redhat.com (root@majestic.labs.redhat.com [207.175.45.4])
	by lacrosse.redhat.com (8.8.7/8.8.7) with ESMTP id MAA19813
	for <gtk-list@redhat.com>; Tue, 30 Jun 1998 12:27:04 -0400
Received: from majestic.labs.redhat.com (msf@localhost [127.0.0.1])
	by majestic.labs.redhat.com (8.8.7/8.8.7) with ESMTP id MAA07472
	for <gtk-list@redhat.com>; Tue, 30 Jun 1998 12:27:10 -0400
Message-Id: <199806301627.MAA07472@majestic.labs.redhat.com>
X-Mailer: exmh version 2.0.2
To: gtk-list@redhat.com
Subject: Re: [gtk-list] Re: Data-bound widgets? 
In-Reply-To: Your message of "Tue, 30 Jun 1998 10:54:39 +0200."
             <199806300854.KAA15677@loki.gams.co.at> 
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Date: Tue, 30 Jun 1998 12:27:10 -0400
From: Michael Fulbright <msf@redhat.com>

Hi,

  Marc Ewing and I at the RHAD Labs (www.labs.redhat.com) were discussing
writing a scaled down MS Access type frontend for SQL databases, and your
post on the gtk-list about an ODBC interface for gtk sounded very interesting.

  Since we haven't started working on this project yet, perhaps you
could give me a little info on what you're working on, and what you know
about other projects related to a GUI frontend for databases.

  We were inspired to start a project because we have several marketing/sales
types at Red Hat who need a program like 'File Maker Pro' on their old
macintoshes.  If work has already started on this type of project we would
like to know...

Thanks
Dr Mike
msf@redhat.com