Locians, As the development continues, it appears the users will be able to construct their own gui's by connecting loci together. This will involve the use of an XML similar to Damon Chaplin's Glade XML, which was really made just to save projects. Here is an example of Glade XML. It's simply a button placed in a container and in a window. -----------------8<------------------ <?xml version="1.0"?> <GTK-Interface> <project> <name>project1</name> <directory></directory> <source_directory></source_directory> <pixmaps_directory>pixmaps</pixmaps_directory> <language>C</language> <gettext_support>False</gettext_support> <use_widget_names>False</use_widget_names> <main_source_file>gladesrc.c</main_source_file> <main_header_file>gladesrc.h</main_header_file> <handler_source_file>gladesig.c</handler_source_file> <handler_header_file>gladesig.h</handler_header_file> </project> <widget> <class>GtkWindow</class> <name>window1</name> <title>window1</title> <type>GTK_WINDOW_TOPLEVEL</type> <position>GTK_WIN_POS_NONE</position> <allow_shrink>True</allow_shrink> <allow_grow>True</allow_grow> <auto_shrink>False</auto_shrink> <widget> <class>GtkFixed</class> <name>fixed1</name> <widget> <class>GtkButton</class> <name>button1</name> <x>32</x> <y>16</y> <width>112</width> <height>40</height> <can_focus>True</can_focus> <label>button1</label> </widget> </widget> </widget> </GTK-Interface> -----------------8<------------------ Note: James Henstridge already made a Python script to generate a PyGTK gui from Glade XML. You can see that the widgets here are Gtk widgets; of course, this is for Gtk. But let's say we make higher level, composite widgets (the "megawidgets" I've been talking about). Instead simple gui widgets, some of Loci's composite widgets will generate the options of a command-line. (Some composite widgets will be biowidgets of a sort.) For example, in the build phase we start off with a windowlet/locus containing a composite widget that is an option to choose the name of a program. This may simply have a text entry box where the user can type in the name. Next, the user can add a flag option. A new locus appears, and they are presented with a pull down list of all flags, -a to -Z. Underneath that is a text entry box that goes with the flag, because sometimes a flag option expects a term to be added. And the user can actually specify types and ranges for any option. Say the program that the gui is being built for requires an integer after the -n flag. In the build phase, the user can set this using some radio button or something. At this point the user will see several composite widgets, each with its own locus, all connected with lines. Selecting the parent locus (the first one made), the user can pull down a menu and cause them all to be merged into a functional, gui representation of a command-line. Now that the locus is out of the build phase, only the options that were not previously set are visible. I mentioned a couple months ago that there are some programs meant to wrap command-lines in a gui. GGUI is one that uses wizards: http://www.greysite.com/ggui/ I also found TkWorld, which is like GGUI: http://www.tkworld.org/ But Loci is not meant to be just a command-line generator. It will do this, but much more will be included. For one, Loci will keep biodata in a standardized XML format. This will require conversion utilities: one for LocusML -> program-format, and one for program-format -> LocusML. This is because, unlike simple UNIX shell utilities, most bioinfo programs have specific format requirements. Another issue I don't believe is addressed so nicely by GGUI and TkWorld, is piping. Loci's loci will, by the nature of the bioinfo programs used, make extensive use of piping or connecting output to input. And this is supposed to occur seamlessly over the Internet; not something normally done in the UNIX shell. So what will the resultant gui XML look like? I think that when the loci are combined, the XML's can be concatonated. And the user can take them back apart, recombine them as they wish, and even save/store them. A really neat result is that a user can make some unique concoction and then send it across the Internet to someone else using Loci. Rapid locus development and sharing will be important to Loci's success. Well, if you read this far, thank you. :-) Jeff -- J.W. Bizzaro mailto:bizzaro at bc.edu Boston College Chemistry http://www.uml.edu/Dept/Chem/Bizzaro/ --