00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
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
00196 void setCheckedState( const KGuiItem& checkedItem );
00197
00199 virtual QString toolTip() const;
00200
00201 public slots:
00205 virtual void setChecked( bool );
00206
00207 protected slots:
00208 virtual void slotActivated();
00209
00210 protected:
00211 virtual void updateChecked( int id );
00212
00213 signals:
00214 void toggled( bool );
00215
00216 protected:
00217 virtual void virtual_hook( int id, void* data );
00218 private:
00219 class KToggleActionPrivate;
00220 KToggleActionPrivate *d;
00221 };
00222
00227 class KRadioAction : public KToggleAction
00228 {
00229 Q_OBJECT
00230 public:
00241 KRadioAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, const char* name = 0 );
00242
00251 KRadioAction( const QString& text, const KShortcut& cut,
00252 const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 );
00253
00261 KRadioAction( const QString& text, const QIconSet& pix, const KShortcut& cut = KShortcut(),
00262 QObject* parent = 0, const char* name = 0 );
00263
00271 KRadioAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(),
00272 QObject* parent = 0, const char* name = 0 );
00273
00283 KRadioAction( const QString& text, const QIconSet& pix, const KShortcut& cut,
00284 const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 );
00285
00295 KRadioAction( const QString& text, const QString& pix, const KShortcut& cut,
00296 const QObject* receiver, const char* slot,
00297 QObject* parent, const char* name = 0 );
00298
00303 KRadioAction( QObject* parent = 0, const char* name = 0 );
00304
00305 protected:
00306 virtual void slotActivated();
00307
00308 protected:
00309 virtual void virtual_hook( int id, void* data );
00310 private:
00311 class KRadioActionPrivate;
00312 KRadioActionPrivate *d;
00313 };
00314
00326 class KSelectAction : public KAction
00327 {
00328 Q_OBJECT
00329 Q_PROPERTY( int currentItem READ currentItem WRITE setCurrentItem )
00330 Q_PROPERTY( QStringList items READ items WRITE setItems )
00331 Q_PROPERTY( bool editable READ isEditable WRITE setEditable )
00332 Q_PROPERTY( int comboWidth READ comboWidth WRITE setComboWidth )
00333 Q_PROPERTY( QString currentText READ currentText )
00334 Q_PROPERTY( bool menuAccelsEnabled READ menuAccelsEnabled WRITE setMenuAccelsEnabled )
00335 public:
00336
00347 KSelectAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, const char* name = 0 );
00348
00357 KSelectAction( const QString& text, const KShortcut& cut,
00358 const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 );
00359
00367 KSelectAction( const QString& text, const QIconSet& pix, const KShortcut& cut = KShortcut(),
00368 QObject* parent = 0, const char* name = 0 );
00369
00377 KSelectAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(),
00378 QObject* parent = 0, const char* name = 0 );
00379
00389 KSelectAction( const QString& text, const QIconSet& pix, const KShortcut& cut,
00390 const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 );
00391
00401 KSelectAction( const QString& text, const QString& pix, const KShortcut& cut,
00402 const QObject* receiver, const char* slot,
00403 QObject* parent, const char* name = 0 );
00404
00409 KSelectAction( QObject* parent = 0, const char* name = 0 );
00410
00414 virtual ~KSelectAction();
00415
00427 virtual int plug( QWidget* widget, int index = -1 );
00428
00433 virtual bool isEditable() const;
00434
00439 virtual QStringList items() const;
00440
00444 virtual void changeItem( int index, const QString& text );
00445
00449 virtual QString currentText() const;
00450
00455 virtual int currentItem() const;
00456
00461 virtual int comboWidth() const;
00462
00466 QPopupMenu* popupMenu() const;
00467
00472 void setRemoveAmpersandsInCombo( bool b ) KDE_DEPRECATED;
00474 bool removeAmpersandsInCombo() const;
00475
00482 void setMenuAccelsEnabled( bool b );
00484 bool menuAccelsEnabled() const;
00485
00486 public slots:
00492 virtual void setCurrentItem( int index );
00493
00498 virtual void setItems( const QStringList &lst );
00499
00503 virtual void clear();
00504
00509 virtual void setEditable( bool );
00510
00516 virtual void setComboWidth( int width );
00517
00518 protected:
00519 virtual void changeItem( int id, int index, const QString& text );
00520
00527 QStringList comboItems() const;
00528
00529 protected slots:
00530 virtual void slotActivated( int id );
00531 virtual void slotActivated( const QString &text );
00532 virtual void slotActivated();
00533
00534 signals:
00539 void activated( int index );
00544 void activated( const QString& text );
00545
00546 protected:
00547 virtual void updateCurrentItem( int id );
00548
00549 virtual void updateComboWidth( int id );
00550
00551 virtual void updateItems( int id );
00552
00553 virtual void updateClear( int id );
00554
00555 protected:
00556 virtual void virtual_hook( int id, void* data );
00557 private:
00558 void setupMenu() const;
00559 class KSelectActionPrivate;
00560 KSelectActionPrivate *d;
00561
00562 };
00563
00565
00568 class KDE_DEPRECATED KListAction : public KSelectAction
00569 {
00570 Q_OBJECT
00571 public:
00582 KListAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0,
00583 const char* name = 0 );
00584
00593 KListAction( const QString& text, const KShortcut& cut, const QObject* receiver,
00594 const char* slot, QObject* parent, const char* name = 0 );
00595
00603 KListAction( const QString& text, const QIconSet& pix, const KShortcut& cut = KShortcut(),
00604 QObject* parent = 0, const char* name = 0 );
00605
00613 KListAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(),
00614 QObject* parent = 0, const char* name = 0 );
00615
00625 KListAction( const QString& text, const QIconSet& pix, const KShortcut& cut,
00626 const QObject* receiver, const char* slot, QObject* parent,
00627 const char* name = 0 );
00628
00638 KListAction( const QString& text, const QString& pix, const KShortcut& cut,
00639 const QObject* receiver, const char* slot, QObject* parent,
00640 const char* name = 0 );
00641
00646 KListAction( QObject* parent = 0, const char* name = 0 );
00647
00651 virtual ~KListAction();
00652
00653
00654 virtual QString currentText() const;
00655 virtual int currentItem() const;
00656
00657
00658 public slots:
00664 virtual void setCurrentItem( int index );
00665
00666 protected:
00667 virtual void virtual_hook( int id, void* data );
00668 private:
00669 class KListActionPrivate;
00670 KListActionPrivate *d;
00671 };
00672
00682 class KRecentFilesAction : public KListAction
00683 {
00684 Q_OBJECT
00685 Q_PROPERTY( uint maxItems READ maxItems WRITE setMaxItems )
00686 public:
00694 KRecentFilesAction( const QString& text, const KShortcut& cut,
00695 QObject* parent, const char* name = 0,
00696 uint maxItems = 10 );
00697
00708 KRecentFilesAction( const QString& text, const KShortcut& cut,
00709 const QObject* receiver, const char* slot,
00710 QObject* parent, const char* name = 0,
00711 uint maxItems = 10 );
00712
00721 KRecentFilesAction( const QString& text, const QIconSet& pix, const KShortcut& cut,
00722 QObject* parent, const char* name = 0,
00723 uint maxItems = 10 );
00724
00733 KRecentFilesAction( const QString& text, const QString& pix, const KShortcut& cut,
00734 QObject* parent, const char* name = 0,
00735 uint maxItems = 10 );
00736
00748 KRecentFilesAction( const QString& text, const QIconSet& pix, const KShortcut& cut,
00749 const QObject* receiver, const char* slot,
00750 QObject* parent, const char* name = 0,
00751 uint maxItems = 10 );
00752
00764 KRecentFilesAction( const QString& text, const QString& pix, const KShortcut& cut,
00765 const QObject* receiver, const char* slot,
00766 QObject* parent, const char* name = 0,
00767 uint maxItems = 10 );
00768
00774 KRecentFilesAction( QObject* parent = 0, const char* name = 0,
00775 uint maxItems = 10 );
00776
00780 virtual ~KRecentFilesAction();
00781
00782 virtual int plug( QWidget *widget, int index = -1 );
00783
00787 uint maxItems() const;
00788
00789 public slots:
00798 void setMaxItems( uint maxItems );
00799
00807 void loadEntries( KConfig* config, QString groupname=QString::null );
00808
00816 void saveEntries( KConfig* config, QString groupname=QString::null );
00817
00823 void addURL( const KURL& url );
00824
00830 void removeURL( const KURL& url );
00831
00835 void clearURLList();
00836
00837 signals:
00838
00844 void urlSelected( const KURL& url );
00845
00846 protected slots:
00847 void itemSelected( const QString& string );
00848 void menuAboutToShow();
00849 void menuItemActivated( int id );
00850 void slotClicked();
00851 virtual void slotActivated(int);
00852 virtual void slotActivated(const QString& );
00853 virtual void slotActivated();
00854
00855 protected:
00856 virtual void virtual_hook( int id, void* data );
00857
00858 private:
00859 void init();
00860
00861 class KRecentFilesActionPrivate;
00862 KRecentFilesActionPrivate *d;
00863 };
00864
00865 class KFontAction : public KSelectAction
00866 {
00867 Q_OBJECT
00868 Q_PROPERTY( QString font READ font WRITE setFont )
00869 public:
00870 KFontAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0,
00871 const char* name = 0 );
00872 KFontAction( const QString& text, const KShortcut& cut,
00873 const QObject* receiver, const char* slot, QObject* parent,
00874 const char* name = 0 );
00875 KFontAction( const QString& text, const QIconSet& pix, const KShortcut& cut = KShortcut(),
00876 QObject* parent = 0, const char* name = 0 );
00877 KFontAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(),
00878 QObject* parent = 0, const char* name = 0 );
00879 KFontAction( const QString& text, const QIconSet& pix, const KShortcut& cut,
00880 const QObject* receiver, const char* slot, QObject* parent,
00881 const char* name = 0 );
00882 KFontAction( const QString& text, const QString& pix, const KShortcut& cut,
00883 const QObject* receiver, const char* slot, QObject* parent,
00884 const char* name = 0 );
00885
00886
00887
00888 #define KFONTACTION_HAS_CRITERIA_ARG
00889 KFontAction( uint fontListCriteria, const QString& text,
00890 const KShortcut& cut = KShortcut(), QObject* parent = 0,
00891 const char* name = 0 );
00892 KFontAction( uint fontListCriteria, const QString& text, const QString& pix,
00893 const KShortcut& cut = KShortcut(),
00894 QObject* parent = 0, const char* name = 0 );
00895
00896 KFontAction( QObject* parent = 0, const char* name = 0 );
00897 ~KFontAction();
00898
00899 QString font() const {
00900 return currentText();
00901 }
00902
00903 int plug( QWidget*, int index = -1 );
00904
00905 public slots:
00906 void setFont( const QString &family );
00907
00908 protected:
00909 virtual void virtual_hook( int id, void* data );
00910 private:
00911 class KFontActionPrivate;
00912 KFontActionPrivate *d;
00913 };
00914
00915 class KFontSizeAction : public KSelectAction
00916 {
00917 Q_OBJECT
00918 Q_PROPERTY( int fontSize READ fontSize WRITE setFontSize )
00919 public:
00920 KFontSizeAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0,
00921 const char* name = 0 );
00922 KFontSizeAction( const QString& text, const KShortcut& cut, const QObject* receiver,
00923 const char* slot, QObject* parent, const char* name = 0 );
00924 KFontSizeAction( const QString& text, const QIconSet& pix, const KShortcut& cut = KShortcut(),
00925 QObject* parent = 0, const char* name = 0 );
00926 KFontSizeAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(),
00927 QObject* parent = 0, const char* name = 0 );
00928 KFontSizeAction( const QString& text, const QIconSet& pix, const KShortcut& cut,
00929 const QObject* receiver, const char* slot,
00930 QObject* parent, const char* name = 0 );
00931 KFontSizeAction( const QString& text, const QString& pix, const KShortcut& cut,
00932 const QObject* receiver, const char* slot,
00933 QObject* parent, const char* name = 0 );
00934 KFontSizeAction( QObject* parent = 0, const char* name = 0 );
00935
00936 virtual ~KFontSizeAction();
00937
00938 virtual int fontSize() const;
00939
00940 public slots:
00941 virtual void setFontSize( int size );
00942
00943 protected slots:
00944 virtual void slotActivated( int );
00945 virtual void slotActivated( const QString& );
00946 virtual void slotActivated() { KAction::slotActivated(); }
00947
00948 signals:
00949 void fontSizeChanged( int );
00950
00951 private:
00952 void init();
00953
00954
00955 protected:
00956 virtual void virtual_hook( int id, void* data );
00957 private:
00958 class KFontSizeActionPrivate;
00959 KFontSizeActionPrivate *d;
00960 };
00961
00962
00973 class KActionMenu : public KAction
00974 {
00975 Q_OBJECT
00976 Q_PROPERTY( bool delayed READ delayed WRITE setDelayed )
00977 Q_PROPERTY( bool stickyMenu READ stickyMenu WRITE setStickyMenu )
00978
00979 public:
00980 KActionMenu( const QString& text, QObject* parent = 0,
00981 const char* name = 0 );
00982 KActionMenu( const QString& text, const QIconSet& icon,
00983 QObject* parent = 0, const char* name = 0 );
00984 KActionMenu( const QString& text, const QString& icon,
00985 QObject* parent = 0, const char* name = 0 );
00986 KActionMenu( QObject* parent = 0, const char* name = 0 );
00987 virtual ~KActionMenu();
00988
00989 virtual void insert( KAction*, int index = -1 );
00990 virtual void remove( KAction* );
00991
00992 KPopupMenu* popupMenu() const;
00993 void popup( const QPoint& global );
00994
00999 bool delayed() const;
01013 void setDelayed(bool _delayed);
01014
01019 bool stickyMenu() const;
01028 void setStickyMenu(bool sticky);
01029
01030 virtual int plug( QWidget* widget, int index = -1 );
01031
01032 protected:
01033 virtual void virtual_hook( int id, void* data );
01034 private:
01035 class KActionMenuPrivate;
01036 KActionMenuPrivate *d;
01037 };
01038
01046 class KToolBarPopupAction : public KAction
01047 {
01048 Q_OBJECT
01049 Q_PROPERTY( bool delayed READ delayed WRITE setDelayed )
01050 Q_PROPERTY( bool stickyMenu READ stickyMenu WRITE setStickyMenu )
01051
01052 public:
01053
01054
01065 KToolBarPopupAction( const QString& text, const QString& icon, const KShortcut& cut = KShortcut(),
01066 QObject* parent = 0, const char* name = 0 );
01067
01083 KToolBarPopupAction( const QString& text, const QString& icon, const KShortcut& cut,
01084 const QObject* receiver, const char* slot,
01085 QObject* parent = 0, const char* name = 0 );
01086
01102 KToolBarPopupAction( const KGuiItem& item, const KShortcut& cut,
01103 const QObject* receiver, const char* slot,
01104 KActionCollection* parent, const char* name );
01105
01106 virtual ~KToolBarPopupAction();
01107
01108 virtual int plug( QWidget *widget, int index = -1 );
01109
01115 KPopupMenu *popupMenu() const;
01116
01121 bool delayed() const;
01127 void setDelayed(bool delayed);
01132 bool stickyMenu() const;
01142 void setStickyMenu(bool sticky);
01143
01144 private:
01145 KPopupMenu *m_popup;
01146 bool m_delayed:1;
01147 bool m_stickyMenu:1;
01148 protected:
01149 virtual void virtual_hook( int id, void* data );
01150 private:
01151 class KToolBarPopupActionPrivate;
01152 KToolBarPopupActionPrivate *d;
01153 };
01154
01168 class KToggleToolBarAction : public KToggleAction
01169 {
01170 Q_OBJECT
01171 public:
01178 KToggleToolBarAction( const char* toolBarName, const QString& text,
01179 KActionCollection* parent, const char* name );
01180 KToggleToolBarAction( KToolBar *toolBar, const QString &text,
01181 KActionCollection *parent, const char *name );
01182 virtual ~KToggleToolBarAction();
01183
01184 virtual int plug( QWidget * widget, int index = -1 );
01185
01186 KToolBar *toolBar() { return m_toolBar; }
01187
01188 public slots:
01189 virtual void setChecked( bool );
01190
01191 private:
01192 QCString m_toolBarName;
01193 QGuardedPtr<KToolBar> m_toolBar;
01194 protected:
01195 virtual void virtual_hook( int id, void* data );
01196 private:
01197 class KToggleToolBarActionPrivate;
01198 KToggleToolBarActionPrivate *d;
01199 };
01200
01214 class KToggleFullScreenAction : public KToggleAction
01215 {
01216 Q_OBJECT
01217 public:
01227 KToggleFullScreenAction( const KShortcut &cut,
01228 const QObject* receiver, const char* slot,
01229 QObject* parent, QWidget* window,
01230 const char* name );
01231 virtual ~KToggleFullScreenAction();
01232
01236 void setWindow( QWidget* window );
01237 public slots:
01238 virtual void setChecked( bool );
01239 protected:
01243 virtual bool eventFilter( QObject* o, QEvent* e );
01244 private:
01245 QWidget* window;
01246 protected:
01247 virtual void virtual_hook( int id, void* data );
01248 private:
01249 class KToggleFullScreenActionPrivate;
01250 KToggleFullScreenActionPrivate *d;
01251 };
01252
01253
01258 class KWidgetAction : public KAction
01259 {
01260 Q_OBJECT
01261 public:
01267 KWidgetAction( QWidget* widget, const QString& text,
01268 const KShortcut& cut,
01269 const QObject* receiver, const char* slot,
01270 KActionCollection* parent, const char* name );
01271 virtual ~KWidgetAction();
01272
01276 QWidget* widget() { return m_widget; }
01277
01278 void setAutoSized( bool );
01279
01284 virtual int plug( QWidget* widget, int index = -1 );
01289 virtual void unplug( QWidget *w );
01290 protected slots:
01291 void slotToolbarDestroyed();
01292 private:
01293 QGuardedPtr<QWidget> m_widget;
01294 bool m_autoSized;
01295 protected:
01296 virtual void virtual_hook( int id, void* data );
01297 private:
01298 class KWidgetActionPrivate;
01299 KWidgetActionPrivate *d;
01300 };
01301
01302 class KActionSeparator : public KAction
01303 {
01304 Q_OBJECT
01305 public:
01306 KActionSeparator( QObject* parent = 0, const char* name = 0 );
01307 virtual ~KActionSeparator();
01308
01309 virtual int plug( QWidget *widget, int index = -1 );
01310
01311 protected:
01312 virtual void virtual_hook( int id, void* data );
01313 private:
01314 class KActionSeparatorPrivate;
01315 KActionSeparatorPrivate *d;
01316 };
01317
01328 class KPasteTextAction: public KAction
01329 {
01330 Q_OBJECT
01331 public:
01347 KPasteTextAction( const QString& text, const QString& icon, const KShortcut& cut,
01348 const QObject* receiver, const char* slot,
01349 QObject* parent = 0, const char* name = 0 );
01350
01351 virtual ~KPasteTextAction();
01352
01363 void setMixedMode(bool mode);
01364
01365 virtual int plug( QWidget *widget, int index = -1 );
01366
01367 protected slots:
01368 void menuAboutToShow();
01369 void menuItemActivated( int id);
01370 virtual void slotActivated();
01371
01372 protected:
01373 virtual void virtual_hook( int id, void* data );
01374
01375 private:
01376 KPopupMenu *m_popup;
01377 bool m_mixedMode;
01378 class KPasteTextActionPrivate;
01379 KPasteTextActionPrivate *d;
01380 };
01381
01382 #endif