While GnuTux was working on his patch, I was investigating the possibility of a 
tabbed approached. Here are some of my thoughts on the matter.

A tabbed approach could either be implemented automatically or specified within 
the script. The first problem posed by an automatic approach is how the table 
of widgets should be split into multiple tabs. If it is hardcoded as a fixed 
number of widgets per page then users with large screen displays would 
be penalized by choosing too small a number, whereas too large a number invites 
the same problem we're attempting to solve. Splitting the tabs based 
upon a calculation of the available screen real estate seems to me as running 
counter to the philosophy 
of letting GTK and the window manager handle such things. Whether 
hard-coded or derived, there are also the problems of whether the 
widgets should be divided evenly amongst the tabs (we probably wouldn't 
want to add a new tab for just one or two widgets) and how to label the 
tabs.


Automatically implemented tabs would most likely result in a dialog interface 
more 
objectionable than the scrolled dialog proposed by GnuTux's 
modification.

It would be possible to offer manual specification of the division of the 
tabs, for example by adding a SF-PAGE separator instruction in the 
registration block of the script. This would afford script writers better 
control over the dialog layout, being able to group related input fields in the 
same tab; as well as 
providing a means of specifying the label that is to appear on the tabs. Such 
an approach could readily be provided in a backwards-compatible mannerĀ  -- 
should a page separator not be supplied, the script dialog would be presented 
as it always has. 

Adding
 such a "SF-PAGE" facility to Script-fu may be worthwhile pursuing; 
however, it relies upon the script author taking advantage of it (or 
upon older scripts being updated to take advantage of it). It still does
 not address the possibility that the script author includes too many 
widgets on a single tab pane. N.B. Even if a tabbed interface is 
supported, it would still be prudent to support a scrolled interface 
within the tabs as a graceful way of handling an excessive number of 
input fields being requested. 


With a tabbed approach, the 
implementation is at least an order of magnitude more complex than the 
code needed to implement scrolling. The tabbed 
dialog would need to support drag-n-drop; requiring either a "misuse" of
 the GimpDockbook widget or at least duplication of its D-N-D signal 
handling code in conjunction with a GtkNotebook container. (I say misuse
 since a script dialog is not dockable). Modifying the Script-fu registration 
code to support tabbed panes would require even more code.

By contrast, GnuTux's modification is straightforward, only about twenty lines 
of code, uses GTK in a standard, easily comprehended manner. It is much better 
suited for handling what is basically an edge case that is likely to only ever 
appear in just a handful of scripts. 

-------

I would point out a couple of issues that still exist with GnuTux's 
modification in hopes of improving it further. 

Firstly, Windows users have reported that the dialog created is obscured by the 
taskbar when that taskbar 1) runs along the bottom of the screen and 2) is not 
auto-hiding. If there are any Windows programmers who know how to rectify this, 
it would make the patch better behaved on those systems. 

Secondly, with the patch applied, resizing of the Script-fu dialog results in 
the widgets within the scrollable window to be scaled. Normally such window 
resizing of a Script-fu dialog results in the widgets being scaled 
horizontally, but not vertically (additional empty space is inserted into the 
dialog). If possible, the patch should be amended to restore original behavior 
with regard to dialog window resizing.
_______________________________________________
gimp-developer-list mailing list
List address:    gimp-developer-list@gnome.org
List membership: https://mail.gnome.org/mailman/listinfo/gimp-developer-list
List archives:   https://mail.gnome.org/archives/gimp-developer-list

Reply via email to