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?