Re: [Gimp-developer] [GUI] Scrollbars for Script-Fu dialogs

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 

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

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. 

 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 

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.

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]