README for xfce version 4.x
===========================

WHAT IS IT ?
------------
'xfce4-panel' is the panel of the XFce Desktop Environment. It is modeled 
after the CDE panel and, of course, previous versions of xfce.
This version is based on GTK2 and should have all the advantages that come 
with this new and improved toolkit (see http://www.gtk.org).

WHAT'S NEW ?
------------
Apart from the toolkit changes the underlying framework of the panel has also
changed completely. 

All interactions with the window manager take place through the new window
manager hints as defined on http://www.freedesktop.org. This means that you 
will need a compliant window manager for xfce to function properly (preferably 
xfwm4 ;-).

Highlights from the new panel include:
o vertical and horizontal mode
o icon themes
o dynamic modules as well as traditional luancher buttons

INFO FOR DEVELOPERS
===================
Please keep in mind that this information will usually not be up to date!

If you are interested in helping with the development of xfce4 the best place to
start reading is global.h which hold the type definitions of the different
data structures used.

Then just continue reading at main.c and follow the flow of the program. The 
panel design is a hierarchy of components:

- main.c: main program / quit / restart

- panel.c: Panel framework. 

- groups.c: The panel consists of a list of panel groups. A panel group holds
  two widgets: a panel control and a toggle button with associated popup menu.
  This file also contains code for moving items on the panel and for adding and
  removing them.

- controls.c: This file defines functions for handling panel controls. The
  interface to a panel control is defined by an associated control class. A
  control class defines the functions to interface with a specific type of panel
  control, including creating new instances of a class.
  The default control class is the traditional launcher, a button with an icon
  that, when clicked, runs a program.
  All other classes are defined through external plugins. At the time of this
  writing (2002-12-17) the following plugins are available: clock, mailcheck, 
  trashcan, switcher (CDE like desktop switcher with minibuttons) and system
  buttons (which are the same as the mini butons on the switcher).
  can, 

- popup.c: function for the popup menu inlcuding menu items.

- item.c: traditional panel control (icon button that launches programs)

- handle.c: the move handles opn either side of the panel.

- callbacks.c: most callback functions are defined here.

- dialogs.c: global panel configuration dialog.

- controls_dialog.c: configuration of panel controls

- item_dialog.c: configuration dialog for panel item or menu item

- xfce_support.c: convenience dialogs and general convenience functions.

- settings.c: reading and writing panel configuration.

