Re: [Gimp-developer] [GUI] Scrollbars for Script-Fu dialogs
- From: "Crazy Aunt Gail's, LLC" <gail crazyauntgail com>
- To: gimp-developer Developers <gimp-developer-list gnome org>
- Subject: Re: [Gimp-developer] [GUI] Scrollbars for Script-Fu dialogs
- Date: Sun, 2 Mar 2014 05:07:44 -0800 (PST)
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.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]