kdeui Library API Documentation

kactionclasses.h

00001 /* This file is part of the KDE libraries
00002     Copyright (C) 1999 Reginald Stadlbauer <reggie@kde.org>
00003               (C) 1999 Simon Hausmann <hausmann@kde.org>
00004               (C) 2000 Nicolas Hadacek <haadcek@kde.org>
00005               (C) 2000 Kurt Granroth <granroth@kde.org>
00006               (C) 2000 Michael Koch <koch@kde.org>
00007               (C) 2001 Holger Freyther <freyther@kde.org>
00008               (C) 2002 Ellis Whitehead <ellis@kde.org>
00009               (C) 2003 Andras Mantia <amantia@kde.org>
00010 
00011     This library is free software; you can redistribute it and/or
00012     modify it under the terms of the GNU Library General Public
00013     License version 2 as published by the Free Software Foundation.
00014 
00015     This library is distributed in the hope that it will be useful,
00016     but WITHOUT ANY WARRANTY; without even the implied warranty of
00017     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018     Library General Public License for more details.
00019 
00020     You should have received a copy of the GNU Library General Public License
00021     along with this library; see the file COPYING.LIB.  If not, write to
00022     the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00023     Boston, MA 02111-1307, USA.
00024 */
00025 //$Id: kactionclasses.h,v 1.187 2004/01/05 11:05:55 bhards Exp $
00026 
00027 #ifndef __kactionclasses_h__
00028 #define __kactionclasses_h__
00029 
00030 #include <kaction.h>
00031 
00032 #include <qkeysequence.h>
00033 #include <qobject.h>
00034 #include <qvaluelist.h>
00035 #include <qguardedptr.h>
00036 #include <kguiitem.h>
00037 #include <kshortcut.h>
00038 #include <kstdaction.h>
00039 #include <kicontheme.h>
00040 
00041 class QMenuBar;
00042 class QPopupMenu;
00043 class QComboBox;
00044 class QPoint;
00045 class QIconSet;
00046 class QString;
00047 class KToolBar;
00048 
00049 class KAccel;
00050 class KAccelActions;
00051 class KConfig;
00052 class KConfigBase;
00053 class KURL;
00054 class KInstance;
00055 class KToolBar;
00056 class KActionCollection;
00057 class KPopupMenu;
00058 class KMainWindow;
00059 
00067 class KToggleAction : public KAction
00068 {
00069     Q_OBJECT
00070     Q_PROPERTY( bool checked READ isChecked WRITE setChecked )
00071     Q_PROPERTY( QString exclusiveGroup READ exclusiveGroup WRITE setExclusiveGroup )
00072 public:
00073 
00084     KToggleAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, const char* name = 0 );
00085 
00094     KToggleAction( const QString& text, const KShortcut& cut,
00095                    const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 );
00096 
00104     KToggleAction( const QString& text, const QIconSet& pix, const KShortcut& cut = KShortcut(),
00105              QObject* parent = 0, const char* name = 0 );
00106 
00114     KToggleAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(),
00115                    QObject* parent = 0, const char* name = 0 );
00116 
00126     KToggleAction( const QString& text, const QIconSet& pix, const KShortcut& cut,
00127                    const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 );
00128 
00138     KToggleAction( const QString& text, const QString& pix, const KShortcut& cut,
00139                    const QObject* receiver, const char* slot,
00140                    QObject* parent, const char* name = 0 );
00141 
00146     KToggleAction( QObject* parent = 0, const char* name = 0 );
00147 
00151     virtual ~KToggleAction();
00152 
00164     virtual int plug( QWidget* widget, int index = -1 );
00165 
00169     bool isChecked() const;
00170 
00175     QString exclusiveGroup() const;
00176 
00183     virtual void setExclusiveGroup( const QString& name );
00184 
00185 public slots:
00189     virtual void setChecked( bool );
00190 
00191 protected slots:
00192     virtual void slotActivated();
00193 
00194 protected:
00195     virtual void updateChecked( int id );
00196 
00197 signals:
00198     void toggled( bool );
00199 
00200 protected:
00201     virtual void virtual_hook( int id, void* data );
00202 private:
00203     class KToggleActionPrivate;
00204     KToggleActionPrivate *d;
00205 };
00206 
00211 class KRadioAction : public KToggleAction
00212 {
00213   Q_OBJECT
00214 public:
00225     KRadioAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, const char* name = 0 );
00226 
00235     KRadioAction( const QString& text, const KShortcut& cut,
00236                   const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 );
00237 
00245     KRadioAction( const QString& text, const QIconSet& pix, const KShortcut& cut = KShortcut(),
00246                   QObject* parent = 0, const char* name = 0 );
00247 
00255     KRadioAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(),
00256                   QObject* parent = 0, const char* name = 0 );
00257 
00267     KRadioAction( const QString& text, const QIconSet& pix, const KShortcut& cut,
00268                   const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 );
00269 
00279     KRadioAction( const QString& text, const QString& pix, const KShortcut& cut,
00280                   const QObject* receiver, const char* slot,
00281                   QObject* parent, const char* name = 0 );
00282 
00287     KRadioAction( QObject* parent = 0, const char* name = 0 );
00288 
00289 protected:
00290     virtual void slotActivated();
00291 
00292 protected:
00293     virtual void virtual_hook( int id, void* data );
00294 private:
00295     class KRadioActionPrivate;
00296     KRadioActionPrivate *d;
00297 };
00298 
00310 class KSelectAction : public KAction
00311 {
00312     Q_OBJECT
00313     Q_PROPERTY( int currentItem READ currentItem WRITE setCurrentItem )
00314     Q_PROPERTY( QStringList items READ items WRITE setItems )
00315     Q_PROPERTY( bool editable READ isEditable WRITE setEditable )
00316     Q_PROPERTY( int comboWidth READ comboWidth WRITE setComboWidth )
00317     Q_PROPERTY( QString currentText READ currentText )
00318     Q_PROPERTY( bool menuAccelsEnabled READ menuAccelsEnabled WRITE setMenuAccelsEnabled )
00319 public:
00320 
00331     KSelectAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, const char* name = 0 );
00332 
00341     KSelectAction( const QString& text, const KShortcut& cut,
00342                    const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 );
00343 
00351     KSelectAction( const QString& text, const QIconSet& pix, const KShortcut& cut = KShortcut(),
00352              QObject* parent = 0, const char* name = 0 );
00353 
00361     KSelectAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(),
00362                    QObject* parent = 0, const char* name = 0 );
00363 
00373     KSelectAction( const QString& text, const QIconSet& pix, const KShortcut& cut,
00374                    const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 );
00375 
00385     KSelectAction( const QString& text, const QString& pix, const KShortcut& cut,
00386                    const QObject* receiver, const char* slot,
00387                    QObject* parent, const char* name = 0 );
00388 
00393     KSelectAction( QObject* parent = 0, const char* name = 0 );
00394 
00398     virtual ~KSelectAction();
00399 
00411     virtual int plug( QWidget* widget, int index = -1 );
00412 
00417     virtual bool isEditable() const;
00418 
00423     virtual QStringList items() const;
00424 
00428     virtual void changeItem( int index, const QString& text );
00429 
00433     virtual QString currentText() const;
00434 
00439     virtual int currentItem() const;
00440 
00445     virtual int comboWidth() const;
00446 
00450     QPopupMenu* popupMenu() const;
00451 
00456     void setRemoveAmpersandsInCombo( bool b ) KDE_DEPRECATED;
00458     bool removeAmpersandsInCombo() const;
00459 
00466     void setMenuAccelsEnabled( bool b );
00468     bool menuAccelsEnabled() const;
00469 
00470 public slots:
00476     virtual void setCurrentItem( int index );
00477 
00482     virtual void setItems( const QStringList &lst );
00483 
00487     virtual void clear();
00488 
00493     virtual void setEditable( bool );
00494 
00500     virtual void setComboWidth( int width );
00501 
00502 protected:
00503     virtual void changeItem( int id, int index, const QString& text );
00504 
00511     QStringList comboItems() const;
00512 
00513 protected slots:
00514     virtual void slotActivated( int id );
00515     virtual void slotActivated( const QString &text );
00516     virtual void slotActivated();
00517 
00518 signals:
00523     void activated( int index );
00528     void activated( const QString& text );
00529 
00530 protected:
00531     virtual void updateCurrentItem( int id );
00532 
00533     virtual void updateComboWidth( int id );
00534 
00535     virtual void updateItems( int id );
00536 
00537     virtual void updateClear( int id );
00538 
00539 protected:
00540     virtual void virtual_hook( int id, void* data );
00541 private:
00542     void setupMenu() const;
00543     class KSelectActionPrivate;
00544     KSelectActionPrivate *d;
00545 
00546 };
00547 
00549 
00552 class KDE_DEPRECATED KListAction : public KSelectAction
00553 {
00554     Q_OBJECT
00555 public:
00566     KListAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0,
00567                   const char* name = 0 );
00568 
00577     KListAction( const QString& text, const KShortcut& cut, const QObject* receiver,
00578                   const char* slot, QObject* parent, const char* name = 0 );
00579 
00587     KListAction( const QString& text, const QIconSet& pix, const KShortcut& cut = KShortcut(),
00588                       QObject* parent = 0, const char* name = 0 );
00589 
00597     KListAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(),
00598                       QObject* parent = 0, const char* name = 0 );
00599 
00609     KListAction( const QString& text, const QIconSet& pix, const KShortcut& cut,
00610                           const QObject* receiver, const char* slot, QObject* parent,
00611                   const char* name = 0 );
00612 
00622     KListAction( const QString& text, const QString& pix, const KShortcut& cut,
00623                  const QObject* receiver, const char* slot, QObject* parent,
00624                  const char* name = 0 );
00625 
00630     KListAction( QObject* parent = 0, const char* name = 0 );
00631 
00635     virtual ~KListAction();
00636 
00637 
00638     virtual QString currentText() const;
00639     virtual int currentItem() const;
00640 
00641 
00642 public slots:
00648     virtual void setCurrentItem( int index );
00649 
00650 protected:
00651     virtual void virtual_hook( int id, void* data );
00652 private:
00653     class KListActionPrivate;
00654     KListActionPrivate *d;
00655 };
00656 
00666 class KRecentFilesAction : public KListAction  // TODO public KSelectAction
00667 {
00668   Q_OBJECT
00669   Q_PROPERTY( uint maxItems READ maxItems WRITE setMaxItems )
00670 public:
00678   KRecentFilesAction( const QString& text, const KShortcut& cut,
00679                       QObject* parent, const char* name = 0,
00680                       uint maxItems = 10 );
00681 
00692   KRecentFilesAction( const QString& text, const KShortcut& cut,
00693                       const QObject* receiver, const char* slot,
00694                       QObject* parent, const char* name = 0,
00695                       uint maxItems = 10 );
00696 
00705   KRecentFilesAction( const QString& text, const QIconSet& pix, const KShortcut& cut,
00706                       QObject* parent, const char* name = 0,
00707                       uint maxItems = 10 );
00708 
00717   KRecentFilesAction( const QString& text, const QString& pix, const KShortcut& cut,
00718                       QObject* parent, const char* name = 0,
00719                       uint maxItems = 10 );
00720 
00732   KRecentFilesAction( const QString& text, const QIconSet& pix, const KShortcut& cut,
00733                       const QObject* receiver, const char* slot,
00734                       QObject* parent, const char* name = 0,
00735                       uint maxItems = 10 );
00736 
00748   KRecentFilesAction( const QString& text, const QString& pix, const KShortcut& cut,
00749                       const QObject* receiver, const char* slot,
00750                       QObject* parent, const char* name = 0,
00751                       uint maxItems = 10 );
00752 
00758   KRecentFilesAction( QObject* parent = 0, const char* name = 0,
00759                       uint maxItems = 10 );
00760 
00764   virtual ~KRecentFilesAction();
00765 
00766   virtual int plug( QWidget *widget, int index = -1 );
00767   
00771   uint maxItems() const;
00772 
00773 public slots:
00782   void setMaxItems( uint maxItems );
00783 
00791   void loadEntries( KConfig* config, QString groupname=QString::null );
00792 
00800   void saveEntries( KConfig* config, QString groupname=QString::null );
00801 
00807   void addURL( const KURL& url );
00808 
00814   void removeURL( const KURL& url );
00815 
00819   void clearURLList();
00820 
00821 signals:
00822 
00828   void urlSelected( const KURL& url );
00829 
00830 protected slots:
00831   void itemSelected( const QString& string );
00832   void menuAboutToShow();
00833   void menuItemActivated( int id );
00834   void slotClicked();
00835   virtual void slotActivated(int);
00836   virtual void slotActivated(const QString& );
00837   virtual void slotActivated();
00838 
00839 protected:
00840   virtual void virtual_hook( int id, void* data );
00841 
00842 private:
00843   void init();
00844   
00845   class KRecentFilesActionPrivate;
00846   KRecentFilesActionPrivate *d;
00847 };
00848 
00849 class KFontAction : public KSelectAction
00850 {
00851     Q_OBJECT
00852     Q_PROPERTY( QString font READ font WRITE setFont )
00853 public:
00854     KFontAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0,
00855                  const char* name = 0 );
00856     KFontAction( const QString& text, const KShortcut& cut,
00857                  const QObject* receiver, const char* slot, QObject* parent,
00858                  const char* name = 0 );
00859     KFontAction( const QString& text, const QIconSet& pix, const KShortcut& cut = KShortcut(),
00860                  QObject* parent = 0, const char* name = 0 );
00861     KFontAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(),
00862                  QObject* parent = 0, const char* name = 0 );
00863     KFontAction( const QString& text, const QIconSet& pix, const KShortcut& cut,
00864                  const QObject* receiver, const char* slot, QObject* parent,
00865                  const char* name = 0 );
00866     KFontAction( const QString& text, const QString& pix, const KShortcut& cut,
00867                  const QObject* receiver, const char* slot, QObject* parent,
00868                  const char* name = 0 );
00869 
00870     KFontAction( QObject* parent = 0, const char* name = 0 );
00871     ~KFontAction();
00872 
00873     QString font() const {
00874         return currentText();
00875     }
00876 
00877     int plug( QWidget*, int index = -1 );
00878 
00879 public slots:
00880     void setFont( const QString &family );
00881 
00882 protected:
00883     virtual void virtual_hook( int id, void* data );
00884 private:
00885     class KFontActionPrivate;
00886     KFontActionPrivate *d;
00887 };
00888 
00889 class KFontSizeAction : public KSelectAction
00890 {
00891     Q_OBJECT
00892     Q_PROPERTY( int fontSize READ fontSize WRITE setFontSize )
00893 public:
00894     KFontSizeAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0,
00895                      const char* name = 0 );
00896     KFontSizeAction( const QString& text, const KShortcut& cut, const QObject* receiver,
00897                      const char* slot, QObject* parent, const char* name = 0 );
00898     KFontSizeAction( const QString& text, const QIconSet& pix, const KShortcut& cut = KShortcut(),
00899                      QObject* parent = 0, const char* name = 0 );
00900     KFontSizeAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(),
00901                      QObject* parent = 0, const char* name = 0 );
00902     KFontSizeAction( const QString& text, const QIconSet& pix, const KShortcut& cut,
00903                      const QObject* receiver, const char* slot,
00904                      QObject* parent, const char* name = 0 );
00905     KFontSizeAction( const QString& text, const QString& pix, const KShortcut& cut,
00906                      const QObject* receiver, const char* slot,
00907                      QObject* parent, const char* name = 0 );
00908     KFontSizeAction( QObject* parent = 0, const char* name = 0 );
00909 
00910     virtual ~KFontSizeAction();
00911 
00912     virtual int fontSize() const;
00913 
00914 public slots:
00915     virtual void setFontSize( int size );
00916 
00917 protected slots:
00918     virtual void slotActivated( int );
00919     virtual void slotActivated( const QString& );
00920     virtual void slotActivated() { KAction::slotActivated(); }
00921 
00922 signals:
00923     void fontSizeChanged( int );
00924 
00925 private:
00926     void init();
00927 
00928 
00929 protected:
00930     virtual void virtual_hook( int id, void* data );
00931 private:
00932     class KFontSizeActionPrivate;
00933     KFontSizeActionPrivate *d;
00934 };
00935 
00936 
00947 class KActionMenu : public KAction
00948 {
00949   Q_OBJECT
00950   Q_PROPERTY( bool delayed READ delayed WRITE setDelayed )
00951   Q_PROPERTY( bool stickyMenu READ stickyMenu WRITE setStickyMenu )
00952 
00953 public:
00954     KActionMenu( const QString& text, QObject* parent = 0,
00955                  const char* name = 0 );
00956     KActionMenu( const QString& text, const QIconSet& icon,
00957                  QObject* parent = 0, const char* name = 0 );
00958     KActionMenu( const QString& text, const QString& icon,
00959                  QObject* parent = 0, const char* name = 0 );
00960     KActionMenu( QObject* parent = 0, const char* name = 0 );
00961     virtual ~KActionMenu();
00962 
00963     virtual void insert( KAction*, int index = -1 );
00964     virtual void remove( KAction* );
00965 
00966     KPopupMenu* popupMenu() const;
00967     void popup( const QPoint& global );
00968 
00973     bool delayed() const;
00987     void setDelayed(bool _delayed);
00988 
00993     bool stickyMenu() const;
01002     void setStickyMenu(bool sticky);
01003 
01004     virtual int plug( QWidget* widget, int index = -1 );
01005 
01006 protected:
01007     virtual void virtual_hook( int id, void* data );
01008 private:
01009     class KActionMenuPrivate;
01010     KActionMenuPrivate *d;
01011 };
01012 
01020 class KToolBarPopupAction : public KAction
01021 {
01022   Q_OBJECT
01023   Q_PROPERTY( bool delayed READ delayed WRITE setDelayed )
01024   Q_PROPERTY( bool stickyMenu READ stickyMenu WRITE setStickyMenu )
01025 
01026 public:
01027     //Not all constructors - because we need an icon, since this action only makes
01028     // sense when being plugged at least in a toolbar.
01039     KToolBarPopupAction( const QString& text, const QString& icon, const KShortcut& cut = KShortcut(),
01040                          QObject* parent = 0, const char* name = 0 );
01041 
01057     KToolBarPopupAction( const QString& text, const QString& icon, const KShortcut& cut,
01058                          const QObject* receiver, const char* slot,
01059                          QObject* parent = 0, const char* name = 0 );
01060 
01076     KToolBarPopupAction( const KGuiItem& item, const KShortcut& cut,
01077                          const QObject* receiver, const char* slot,
01078                          KActionCollection* parent, const char* name );
01079 
01080     virtual ~KToolBarPopupAction();
01081 
01082     virtual int plug( QWidget *widget, int index = -1 );
01083 
01089     KPopupMenu *popupMenu() const;
01090 
01095     bool delayed() const;
01101     void setDelayed(bool delayed);
01106     bool stickyMenu() const;
01116     void setStickyMenu(bool sticky);
01117 
01118 private:
01119     KPopupMenu *m_popup;
01120     bool m_delayed:1;
01121     bool m_stickyMenu:1;
01122 protected:
01123     virtual void virtual_hook( int id, void* data );
01124 private:
01125     class KToolBarPopupActionPrivate;
01126     KToolBarPopupActionPrivate *d;
01127 };
01128 
01142 class KToggleToolBarAction : public KToggleAction
01143 {
01144     Q_OBJECT
01145 public:
01152     KToggleToolBarAction( const char* toolBarName, const QString& text,
01153                           KActionCollection* parent, const char* name );
01154     KToggleToolBarAction( KToolBar *toolBar, const QString &text,
01155                           KActionCollection *parent, const char *name );
01156     virtual ~KToggleToolBarAction();
01157 
01158     virtual int plug( QWidget * widget, int index = -1 );
01159 
01160     KToolBar *toolBar() { return m_toolBar; }
01161 
01162 public slots:
01163     virtual void setChecked( bool );
01164 
01165 private:
01166     QCString               m_toolBarName;
01167     QGuardedPtr<KToolBar>  m_toolBar;
01168 protected:
01169     virtual void virtual_hook( int id, void* data );
01170 private:
01171     class KToggleToolBarActionPrivate;
01172     KToggleToolBarActionPrivate *d;
01173 };
01174 
01187 class KToggleFullScreenAction : public KToggleAction
01188 {
01189     Q_OBJECT
01190 public:
01200     KToggleFullScreenAction( const KShortcut &cut,
01201                              const QObject* receiver, const char* slot,
01202                              QObject* parent, QWidget* window,
01203                              const char* name );
01204     virtual ~KToggleFullScreenAction();
01205 
01209     void setWindow( QWidget* window );
01210 public slots:
01211     virtual void setChecked( bool );
01212 protected:
01216     virtual bool eventFilter( QObject* o, QEvent* e );
01217 private:
01218     QWidget* window;
01219 protected:
01220     virtual void virtual_hook( int id, void* data );
01221 private:
01222     class KToggleFullScreenActionPrivate;
01223     KToggleFullScreenActionPrivate *d;
01224 };
01225 
01226 
01231 class KWidgetAction : public KAction
01232 {
01233     Q_OBJECT
01234 public:
01240     KWidgetAction( QWidget* widget, const QString& text,
01241                    const KShortcut& cut,
01242                    const QObject* receiver, const char* slot,
01243                    KActionCollection* parent, const char* name );
01244     virtual ~KWidgetAction();
01245 
01249     QWidget* widget() { return m_widget; }
01250 
01251     void setAutoSized( bool );
01252 
01257     virtual int plug( QWidget* widget, int index = -1 );
01262     virtual void unplug( QWidget *w );
01263 protected slots:
01264     void slotToolbarDestroyed();
01265 private:
01266     QGuardedPtr<QWidget> m_widget;
01267     bool                 m_autoSized;
01268 protected:
01269     virtual void virtual_hook( int id, void* data );
01270 private:
01271     class KWidgetActionPrivate;
01272     KWidgetActionPrivate *d;
01273 };
01274 
01275 class KActionSeparator : public KAction
01276 {
01277     Q_OBJECT
01278 public:
01279     KActionSeparator( QObject* parent = 0, const char* name = 0 );
01280     virtual ~KActionSeparator();
01281 
01282     virtual int plug( QWidget *widget, int index = -1 );
01283 
01284 protected:
01285     virtual void virtual_hook( int id, void* data );
01286 private:
01287     class KActionSeparatorPrivate;
01288     KActionSeparatorPrivate *d;
01289 };
01290 
01301 class KPasteTextAction: public KAction
01302 {
01303     Q_OBJECT
01304 public:
01320     KPasteTextAction( const QString& text, const QString& icon, const KShortcut& cut,
01321                   const QObject* receiver, const char* slot,
01322                   QObject* parent = 0, const char* name = 0 );
01323     
01324     virtual ~KPasteTextAction();
01325     
01336     void setMixedMode(bool mode);
01337     
01338     virtual int plug( QWidget *widget, int index = -1 );
01339     
01340 protected slots:
01341     void menuAboutToShow();
01342     void menuItemActivated( int id);
01343     virtual void slotActivated();
01344 
01345 protected:
01346     virtual void virtual_hook( int id, void* data );
01347 
01348 private:
01349     KPopupMenu *m_popup;
01350     bool m_mixedMode;
01351     class KPasteTextActionPrivate;
01352     KPasteTextActionPrivate *d;
01353 };
01354 
01355 #endif
KDE Logo
This file is part of the documentation for kdeui Library Version 3.2.3.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Aug 4 05:23:55 2004 by doxygen 1.3.4 written by Dimitri van Heesch, © 1997-2003