Gazpacho hacking

by havoc

Led by the fearless jrb and the
Gazpacho team, a bunch of us sat down to hack on Gazpacho today.

My only useful accomplishment was a hack to allow toplevel windows to
be displayed on a “work table,” like so, rather
than the old Glade-style standalone windows. It shows
how mature pygtk is that you can do scary not-really-allowed gtk hacks
with it.

Then we spent some time talking about how to rework the layout of the
app, yarrr
whiteboard with a proposal
(double-click the whiteboard thumbnail
so it’s large enough to see).

The delta from current Gazpacho would be:

  • Move the widgets being edited into the main window, on a big “work
    table” – so there’s a single “document” that all your widgets live
    on. You can just drop widgets on the work table, not everything has to
    be a toplevel window. This area is scrolled if it gets too big.
  • Remove the toolbar because none of the operations there are very
    common anyway, or they are normally accessed via keyboard shortcut.
  • For the widget tree, drop the notebook and move the Actions tab
    into its own toplevel accessed from the menus.
  • Put the widget tree on the left, the palette on the right, and the
    property sheet on the bottom. The “work table” is in the middle.
  • Change the property sheet to have only the top 5-10 common
    settings for the widget, and then some way to open a window
    with the complete 4-tab list of every possible property. This removes
    another set of notebook tabs and keeps the property sheet smaller.
  • Remove the “Selector” button if possible, instead could just press
    Escape to revert to Selector mode. If the button remains it should
    always toggle between Selector and last-used widget, right now it has
    a state where it becomes a no-op.
  • Widget tree should maybe be collapsible, the palette and property
    editor maybe not since you can’t do much without it.

There’s a similar single-window
already, the differences we came up with were to put the
property sheet on the bottom and palette on the right, drop the
Selector button, and use a single “work table” in place of an MDI tab
per-widget. Also dropping the toolbar and doing the reduced “most
useful items” property sheet while hiding the full property sheet.

With our proposal the default Gazpacho screen would be mostly occupied
by the work area, the only visible items with widget tree collapsed
would be palette, 5-10 property sheet items, and menubar.

Some other Gazpacho
to read here.

I think an essential element of “nice feel” would be good design to
the “work area”/”work table” widget. It needs to be easy to drag a
child widget out onto the work table to temporarily remove it from a
layout, then drag it back to your layout later. Each widget should
probably be tagged with its Glade name and this name could be in-place
editable. Toplevel widgets would ideally use libmetacity-private to
show what their window decorations would be like (and allow
resizing). This also makes it easy to distinguish toplevels from other
widgets on the table.

In-place editing for widgets would really be nicer than property
sheets in a lot of cases, but it’s so hard to implement that it’s
probably not worth it.

(This post was originally found at

My Twitter account is @havocp.
Interested in becoming a better software developer? Sign up for my email list and I'll let you know when I write something new.