Here's my current list of Glade ToDo items, in case people want to help out
but don't know what to work on. 

I'll try to flesh it out a bit more over time, so it includes more detail
on each item. I may put it up on the web site as well.

If you think there are important things missing let me know.

Helix have allowed me to spend some of my time on Glade now, so things should
move a bit quicker.

Damon

GLADE TODO
==========

High Priority
-------------

For the high priority item I've tried to choose things which make Glade
awkward to use, prevent the generated app from working correctly, or are
major gaps in our support of GTK+/Gnome.


T1   Documentation
        task-related - widget layout, selecting widgets, setting
        properties, specific widget issues, setting project options,
        generating code, using generated code. A complete tutorial to build
        a simple app, e.g. the example editor. Where to find more docs
        - GTK+ reference/tutorial/faq, Gnome books online. Common problems.
        Get rid of most/all of the window/menu descriptions.


T2   Accelerators in notebooks/gnome-druids
        use accelgroup for each page like libglade, outputting code to install
        & uninstall the accelgroups on map/unmap signals.


T3   Warn people about using Gnome stuff in a GTK+ app
        e.g. stock menu items, Gnome widgets.
        Refuse to generate source? - the source won't work anyway.


T4   Project Options
        if you enable/disable Gnome or gettext then you get into a
        lot of problems. Especially if you have used Gnome widgets or Gnome
        features such as stock menu items/buttons.


T5   Check widget names for duplicates
        check when saving project?
        also check that widget names don't conflict with handler functions.


T6   Choice properties
        use convenience routines instead of all the for loops, and place
        common choices in one place. Also, make it possible to translate the
        choices.


T7   GnomeMDI, GnomeMDIChild, GnomeMDIGenericChild
        These are all objects, and may be awkward to output code for.



Normal Priority
---------------

T8   Custom widget creation functions
        creation function should be shareable, but currently it gets
        written out several times.
        Actually if signal handler functions are used several times, each
        time it is used it will be output again.
        Can we avoid this? - would need to keep a global list of handler
        functions.


T9   Signal handler last-modification times
        the use of the last-modification time of the interface.c file causes
        problems if the files are on another machine with a different clock
        time (e.g. over NFS), and makes it awkward to store Glade projects
        in CVS - the interface.c file has to be placed there as well.
        Write out the last built time into a timestamp file, for more accurate
        comparison of callback last-mod-times?
        - This would also avoid having to put interface.c into CVS.
        - But would it work well?


T10  Add style name property to each widget
        Also add "rc file" project option, and output lines like this to the
        rc file:

          widget "*.name-of-widget" style "BigLabel"

        Then the developer can "include" that in the main rc files (for every
        locale). They just have to define the styles. Use a combo so developer
        can use the same styles in different places easily. But make it easy
        to move to more complete support for rc files later.


T11  More support for app help files
        Generate template doc & all the build files.
        (look at is gnome-utils/gdiskfree/doc/C/Makefile.am, gnome-applets and
        gnome-core to see how the docs are built.)


T12  libglade
        Support writing build files for a libglade project.


T13  Switch to libxml
        the XML files can be then be compressed, making them much smaller.


T14  Remember When Project Changes
        we have glade_project_set_changed() for this. We need to call this
        everywhere a widget is added/removed or a property is changed.
        prompt to save changes before quitting instead of the current dialog.


T15  Property editor
        improve the "Signals" page. Adding signal handlers can be confusing.
        It is probably better to have an "Add" button opening a dialog box.


T16  Session Management
        in Gnome only?


T17  GtkFixed/GtkLayout
        problems resizing a frame, selecting widgets.


T18  Using a menubar in a GtkWindow when Gnome enabled
        uses GnomeUIInfo structs but keyboard accelerators aren't setup
        properly.


T19  Widget Tree
        make it easier to use - expand entire subtree & sync buttons.
        When an item is expanded, scroll up to show all children if possible.
        Order the widget better, according to the order in the parent container
        Selecting notebook pages or widgets in pages via the tree - show
        notebook page.


T20  Ensure that all popup menu commands are valid.
        Note that they can be used in the widget tree as well as in the
        interface, so things like menuitems and their popup menus also appear.
        Consider using a separate menu from the widget tree.


T21  Default property values
        e.g. Glade assumes border_width default is always 0, but it isn't in
        the GtkDialog action_area, so we could generate incorrect source.


T22  Progress bar
        difficult to set value/min/max since setting max may affect
        value, and it isn't updated in the editor either. Maybe we should
        connect to the "activate" signal for changing float properties.
        This leads to the general problem that settings some properties may
        affect other properties, so the property editor should be updated.


T23  Pasting into a child of a GtkPacker
        update gb_widget_replace_child() to handle packer.


T24  Pasting into a child of a GnomeDruid
        update gb_widget_replace_child() to handle it, but only accept
        GnomeDruidPage children.


T25  Gnome & source code output
        save pointers to all widgets created in the form's datalist, and
        write standard source when possible, so signals etc. can be used.
        also set widget names, so rc files can be used OK.
         - dock items, menubar, toolbar, menus & menuitems.
        I think I've done most of these, but need to check.

        what to do about properties which are loaded from user preferences?
         - toolbar relief, border, menubar shadow, dialog layout, spacing,
           type, position.


T26  Revert menu command
        reloads the current XML file.


T27  Autosaves
        options to auto-save project every x minutes.
        Need to see if a newer auto-saved version of the project file exists,
        when it is loaded again. Depends on app preferences.


T28  Writing source
        save files in interface.c.new etc. and use something like
        'cmp' to see if they have changed before overwriting existing file
        - this cuts down on unnecessary recompiles. Needs to be portable.

        option to disable output of the gtk_widget_ref(), set_data() stuff and
        the lookup_widget() function.


T29  Pixmaps
        support inline xpm data.


T30  Better keyboard support
        need to use more accelerators, especially in dialogs.


T31  Window types
        decide whether to use DIALOG or WINDOW for the palette/property
        editor/clipboard etc. If not, hide them when the project window is
        hidden?


T32  GtkLabel
        alignment buttons to align left/middle/right. Place after the
        'X Align:' & 'Y Align:' properties.


T33  GtkTable
        row & column spacings for individual rows/cols. use child properties,
        e.g. add row/col spacing? - an easy way to set spacings. But we output
        the spacings as properties of the table rather than the children.
        use optional ints? so default is used if not set.


T34  GtkTearoffMenuItem
        need to add support to menu editor, but not for Gnome apps since they
        do this automatically?


T35  GtkButton
        add an icon property and a position property, i.e. to place the icon
        on top/left/right/bottom of button.
        support Gnome stock pixmaps.


T36  GtkCList, GtkCTree
        changing the number of columns (also setting column of tree).
        Can use Cut & Paste? - just change the "<columns>X</columns>" tag?
        column justification. how? child property of column widget?
        column settings - min/max/fixed size or autosize.


T37  GtkNotebook
        tab label packing properties.
        support the notebook's popup menu somehow?


T38  Preferences
        Projects directory - where to place projects by default.
        Projects prefix - name to prefix to default projects, e.g. 'project'.

        Toolbar - icons/text/both (already handled in Gnome version?)

        From settings menus - grid/snap settings, show tooltips.

        Windows shown & positions - project window, palette, property editor,
                 tree, clipboard
                - note that the wm is supposed to save positions.



Long-Term Ideas
---------------

T39  Corba/Bonobo
        Define Corba idl for Glade so it can be used by other apps as a form
        builder or as part of an IDE.


T40  Database apps
        Make it simple to build a database app. We have some support for
        GnomeDB widgets, but it doesn't help much.


T41  Undo/Redo


T42  External widgets/Bonobo components
        We have partial support for Bonobo components. But no code generation
        yet.
        Would also like to support simple GTK+ mechanism using Args/Params.


T43  "Components 1" - allowing user to build pieces of an interface that can
        be used from the code, i.e. they don't have a toplevel window.
        Need to think about how accelerators would be installed.


T44  "Components 2" - allowing user to create new components which can then be
        used when creating the interface. Several issues here, though
        - Do the components share code? If so, what about things like widget
          names - they must be unique?
        - If the original component is changed, do the copies change?
        - What, if any, properties of the copies do we allow to be changed?

Reply via email to