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

gEDA-user: PCB Gtk port



Hi all,
Since the things left to do on the PCB gtk port are starting to look
more and more like loose ends, I think it's time to give an update
on its status.  Maybe it can now begin to work its way into CVS
and in the meantime I'm giving a tarball link below for anyone
interested in giving it a spin right now.

I'll list the user interface differences to expect and then run
through some issues or things not yet done.

User Interface differences
--------------------------
0) First up, as I've indicated in some previous postings, the Xt/Xaw
    interface is completely replaced with a Gtk interface that uses
    the Gtk 2.4 api.  Where you previously would edit the PCB
    resource file, there is now a gui editing in File->Preferences.
    I'm sure there's some configuration I've overlooked, so people
    should speak up about configurability they need added.

1) Top level window layout:
    1 click drawing layer selection instead of the drop down layer menu.
    1 click routing style selection instead of the top "Style" menu.
    1 click access to editing the current routing style sizes.

2) Edited route stylechanges can be diverted to a couple of temporary
    route styles to get a larger set of working route styles.

3) Various windows (top level, netlist, library height) remember your last
    resize so PCB restarts give you windows at the size you last had them.

4) All colors can be configured in the preferences gui and color schemes
    can be saved to files which can be reloaded at any time.

5) With the mouse scroll wheel you can pan the layout vertically,
    <shift>scroll pans horizontally.

6)  Quick zoom level changes using the mouse scroll wheel in a zoom
    spin button.  Autoscroll speed is a function of zoom level which
    combined with mouse wheel layout panning gives you nice
    control during line routing at all zoom levels.

7) Consistent mil <-> mm units handling in the gui.  When you select
    "Settings->Enable millimeter grid units", everything in the gui better be
    millimeters else it's a bug!  Except that keyboard commands entered still
    need the "mil" or "mm" args and maybe that can be changed later so that if
    the units are omitted, the currents units in use will be used as default.

8) Command entry is optionally a separate window or the traditional
    overlay of the status line.  A command window can conveniently stay
    up for repeated command entries and it provides access to an
    experimental mini command reference which can be expanded if
    people think it's a good thing to have.  The history list can be
    accessed with cursor key navigation or a popdown combo box list
    for quick access to previous commands.

9) There's a runtime key shortcut reference window.  Also experimental,
    but I think having these references can be useful for new users,
    or certainly for me after I haven't used PCB for a month or so.

10) dynamic top window widget repacking to be friendly to narrow
    screens, selectable in the preferences gui.


A few things not done or issues
-------------------------------

1) PCB documentation is heavily influenced by the Xt resource terminology
    and it's something that needs looking at to change to or merge with
    the Gtk interface.

2) I did not implement all the command line arguments.  It seemed
   inconsistent that some settings were command line settable while others
   were not and besides, settings are now to be user configurable in the gui.
   But this is a minor point, command line args are trivial to add back in.

3) Gtk doesn't have a panner widget analogous to the Xt panner widget and
   I couldn't think of an elegant substitute, so a print panner widget
   is not implemented.  It means that printouts will simply be centered
   on the print media.  But there's a spot for something in the print
   dialog window should someone have an idea.  It could be a simple
   couple of spin buttons that set offsets into the media, radio buttons
   to justify printouts top, bottom, left, right, centered, or someone
   (with some time!) could write a custom Gtk panner widget.  Or it could
   be left as is with centered printouts.

   The top window panner is replaced with Gtk horizontal and vertical
   scrollbars which is fine.  With this and the new mouse wheel
   scrolling, I find I don't miss the top window Xt panner at all.

4) Commands entered via the command window can operate only on selected
    objects since with a separate window you can't be entering a command
    and have the cursor wandering over the layout window.  But this is not
    trapped out yet and if you try it you'll get surprise results.  Command
    entry in the status line area mode should work as before.

5) The background image feature is not ported yet because I didn't
    have an image to work with right now.  I suspect this is low
    priority and can be done later.  Should be easy with gdk_pixbuf.

6) Vertical pin name/number text is not implemented.  My first cut at it
    using Pango didn't work and I haven't gotten back to it yet. (I'm not
    talking about the text tool text being rotated vertical, that's fine).

7) The "disable all nets" of the netlist window is not implemented.
    I'm sort of fuzzy on what it's purpose is and the Xt code indicates
    individual nets can be disabled but I couldn't see the mechanism
    on how that could happen.  So if somebody can clear up my confusion
    there's no problem adding in the disable nets function.  But I do
    get a segfault in the Xt PCB if I disable all nets and autoroute
    some selected rats.

8) I've been hunting for bugs but the ones I've been finding lately
    are also in the Xt PCB.  So unless the bug directly impacted
    my gtk gui implementation (and didn't require extensive changes
    to the core PCB, eg pinout window), I'm not trying to fix those yet.

Well, that's the broad overview.  Dan worked up a configure script for
configuring for a Gtk compile and I hope it can work well enough after
all my changes to make it possible for people to give the Gtk PCB
a bug finding workout.

You can find the tarball:

   http://members.dslextreme.com/users/billw/test/pcb-gtk.tar.gz

Untar it and:

    cd pcb-gtk
    ./configure --enable-gtk --disable-xaw
    make

to run it (the wrapper pcbtest.sh should not be used):
    cd src
    ./pcb-bin

If you want to run it much maybe copy it to some bin directory as
pcb-test or something, but I doubt you should do an install yet... so
if you want the gtk pcb to find your existing library installation,
make your configure command:

    ./configure --enable-gtk --disable-xaw --prefix same-as-installed-pcb

When it runs, it uses a ~/.pcb directory for saving the preferences
file and color schemes.

I'll continue to periodically update the web tarball with any changes
I make until I know what can happen with CVS.

And that's all I know,

Bill