GIMP TODO List
General Port to glib-2.0 and gtk+-2.0

Most of the porting work is completed. By default all files are compiled with the DISABLE_DEPRECATED definitions that prevent us from using deprecated API. Some files however still work around this. Mostly this is because they use legacy widgets like GtkCList, GtkList or GtkPreview.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Header cleanup

Headers should only include other headers if absolutely necessary (for derived objects for example). All functions must be properly prototyped.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Code reorganization

Split the core into several subdirectories and build libtool convenience libraries which are then linked together to form the gimp binary.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Unify color data types

LibGimp already has a new type GimpRGB. This should be used whereever possible. If necessary we can change this to a more generic struct later. Migrating to GimpRGB first will make this much easier.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Script-Fu overhaul

Script-Fu shouldn't be an extension running all the time, but an interpreter that gets started once a script is run and terminates after script execution. This should also solve the problem of having multiple scripts running at the same time.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Image/File Information

Additionally to the image comment, GIMP should save and manage File Information like "description", "keywords", "copyright", "year", etc.

File Info data sets should be saveable separately and importable from standard formats. See also this bug-report>.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Objectification Generic GimpObject

Directly derived from GObject, should probably have a name argument.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Cleanup existing internal objects

GimpDrawable, Layer, GimpImage, GDisplay need to be redone as proper GimpObjects. Write new objects (with proper names) and port all stuff to the new objects incrementally.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Generic data structures

Brushes, Patterns, Gradients should be derived from a GimpData object. This object has to provide hooks to generate previews.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Generic object container(s)

A GimpContainer that holds GimpObject objects. Comparable to the GCimContainer, but no serialization for now. Should probably dispatch "changed" (or other) signals from its children.

This container will be used for lists of brushes, patterns, layers, channels, paths, ...

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Abstract GimpBrush object and derived brush types

The GimpBrush object we have now is not a generic BrushProvider. We need an abstract object to derive the different kinds of brushes from (BrushPipes, parametric brushes, ...). It has to provide methods for the PaintCore to transparently select and use the brush data. Paint tools should have to care about the brush type as less as possible.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Tools Rewrite Path Tool

The Path tool should be rewritten from scratch.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Rewrite Text Tool

The Text tool should be rewritten from scratch using Pango to layout and PangoFT2 to render.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Add Options to "Stroke"

The "Stroke" function should be configurable to optionally stroke inside or outside the current selection only.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Allow Transformations on Layer Masks

Layers that have masks attached can currently not be manipulated using the Transform Tool. It shouldn't be too hard to extend the Transform Tool to handle layers with masks correctly.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
LibGimp Restructure LibGimp

Put libgimp, libgimpui (and new libs) into their own subdirectories. Install all header files under $prefix/include/gimp-MAJOR.MINOR/ and change gimptool accordingly.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Utility library

Put utility functions that are also used by the core into a separate library.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
File plug-in library

Write a library with a bunch of common functions for file plug-ins to remove code duplication in these plug-ins.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Move GCK functionality into LibGimp

libgck, as found in the plug-ins dir has some nice functions we want to clean up and make available in LibGimp so they can be used by the core and plug-ins.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
User Interface Abstract Container Views

Views on data stored in a GimpContainer. The objects need to provide hooks that this view can use to show data like patterns, brushes, etc. in different views (list, grid, ...)

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Effect Preview Widget

A generic preview widget with functions like scrolling and zooming useable by effect filters. Should have adaptive supersampling, progressive display (if possible) and other neat stuff. This would also fix the problem that many plug-ins still use the deprecated GtkPreview widget.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Optionally disable tearoff windows

Add an option to the Preferences to disable tearoff menus. Some people seem to be annoyed by it and it should be trivial to make them optional.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Implement "Save a Copy as..."

Add a "Save a Copy as" function which works as "Save as" but leaves the image's name untouched.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Implement "Open into layer"

Add "Open into layer" that will load a file into the current image as a new layer (or layers).

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Optionally set a different background for the image window

It's often useful to view the image you're editing on a pure white or pure black background instead of the theme's default background.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Fullscreen image view

Add a possibility to show the image fullscreen (padded with the configured canvas background color).

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Cleanup GIMP's color selectors

The pluggable color selectors need to be overhauled. Move the numerical input fields, the sliders, the "old" and "new" color buttons and a color history out of the notebook so they are always visible. Optionally allow an alpha value to be specified. Maybe reduce the size of the color area in the "GIMP" color selector.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Better keyboard navigation

Think about a proper way to make all menus and dialogs accesible and navigationable without using a mouse. GTK+-2.0 has very much improved in this area. We need to go through all our dialogs and install the relevant hooks to get a reasonable focus chain.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Move DND functions into LibGimp

Move the DND functionality into LibGimp. This needs to be done differently for app and plug-ins, but should be handled transparently.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Add more widgets

Lost of existing user interface elements can be implemented as proper widgets in libgimpui, so they are useable from everywhere.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Add an Option to separately switch off the Layer Boundary

Currently the Layer boundary (the yellow dotted line around the active layer) can only be switched off together with the selection. This is evil.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Display the Memory Consumption of the Image

The current memory size of the image should always be available in the interface. Also show the new size of the image in the "Resize" and "Set Canvas Size" dialogs.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Help System Rethink Plug-In and Script Help

Currently a Plug-In's help file determined by the application from it's executable name. This is broken because is does not cover multiple PDB procedures implemented in one Plug-In.

A possible solution would be to pass the relative path to the help file to gimp_install_procedure(). A similar fix should be applied to Script-Fu and Perl.

GIMP Developer List <gimp-developer@xcf.berkeley.edu>
Internationalization Context-Sensitive Translations

The same english string used in different contexts may need to be translated differently in other languages. Think of a way to implement this using gettext or come up with something better.

There is a patch with a possible solution on ftp.gimp.org, but actually we'd like something cleaner if possible.

ftp://ftp.gimp.org/pub/gimp/patches/gimp-chyla-20001207-0.patch GIMP Developer List <gimp-developer@xcf.berkeley.edu>