00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#ifndef KMAINWINDOW_H
00022
#define KMAINWINDOW_H
00023
00024
#include "kxmlguifactory.h"
00025
#include "kxmlguiclient.h"
00026
#include "kxmlguibuilder.h"
00027
#include <qmainwindow.h>
00028
#include <qmetaobject.h>
00029
#include <ktoolbar.h>
00030
00031
class KPopupMenu;
00032
class KXMLGUIFactory;
00033
class KConfig;
00034
class KHelpMenu;
00035
class KStatusBar;
00036
class QStatusBar;
00037
class KMenuBar;
00038
class KMWSessionManaged;
00039
class KMainWindowPrivate;
00040
class KAccel;
00041
class KToolBarMenuAction;
00042
class DCOPObject;
00043
00044
#define KDE_DEFAULT_WINDOWFLAGS WType_TopLevel | WDestructiveClose
00045
00046
00098 class KDEUI_EXPORT KMainWindow :
public QMainWindow,
public KXMLGUIBuilder,
virtual public KXMLGUIClient
00099 {
00100
friend class KMWSessionManaged;
00101 Q_OBJECT
00102
00103
public:
00136 KMainWindow(
QWidget* parent = 0,
const char *name = 0, WFlags f = WType_TopLevel | WDestructiveClose );
00137
00148 enum CreationFlags
00149 {
00150 NoDCOPObject = 1
00151 };
00152
00158 KMainWindow(
int cflags,
QWidget* parent = 0,
const char *name = 0, WFlags f = WType_TopLevel | WDestructiveClose );
00159
00166
virtual ~KMainWindow();
00167
00192
KPopupMenu* helpMenu(
const QString &aboutAppText = QString::null,
00193
bool showWhatsThis =
true );
00194
00217
KPopupMenu* customHelpMenu(
bool showWhatsThis =
true );
00218
00285
static bool canBeRestored(
int number );
00286
00294
00295
static const QString classNameOfToplevel(
int number );
00296
00300
00301
virtual void show();
00302
00306
00307
virtual void hide();
00308
00317
bool restore(
int number,
bool show =
true );
00318
00319
virtual KXMLGUIFactory *guiFactory();
00320
00340
void createGUI(
const QString &xmlfile = QString::null,
bool _conserveMemory =
true );
00341
00348
void setHelpMenuEnabled(
bool showHelpMenu =
true);
00349
00353
bool isHelpMenuEnabled();
00354
00355
00360
bool hasMenuBar();
00361
00367
KMenuBar *menuBar();
00368
00380
KStatusBar *statusBar();
00381
00385
static QPtrList<KMainWindow>* memberList;
00386
00387
00392
static QPtrList<KMainWindow>* getMemberList();
00393
00404
KToolBar *toolBar(
const char *name=0 );
00405
00409
QPtrListIterator<KToolBar> toolBarIterator();
00410
00415
KAccel *accel();
00416
00417
void setFrameBorderWidth(
int ) {}
00418
00450
void setAutoSaveSettings(
const QString & groupName = QString::fromLatin1(
"MainWindow"),
00451
bool saveWindowSize =
true );
00452
00457
void resetAutoSaveSettings();
00458
00464
bool autoSaveSettings() const;
00465
00473
QString autoSaveGroup() const;
00474
00484
void applyMainWindowSettings(
KConfig *config, const
QString &groupName,
bool force);
00485
00486
void applyMainWindowSettings(
KConfig *config, const
QString &groupName =
QString::null);
00487
00496
void saveMainWindowSettings(
KConfig *config, const
QString &groupName =
QString::null);
00497
00516
void setStandardToolBarMenuEnabled(
bool enable );
00518
bool isStandardToolBarMenuEnabled() const;
00519
00520
00541
void createStandardStatusBarAction();
00542
00546 enum StandardWindowOptions
00547 {
00553 ToolBar = 1,
00554
00558 Keys = 2,
00559
00564 StatusBar = 4,
00565
00576 Save = 8,
00577
00582 Create = 16
00583 };
00584
00596
void setupGUI(
int options = ToolBar | Keys | StatusBar | Save | Create,
const QString& xmlfile = QString::null );
00597
00602
KAction *toolBarMenuAction();
00603
00608
void setupToolbarMenuActions();
00609
00610
00612
virtual void finalizeGUI(
KXMLGUIClient *client );
00613
00617
void finalizeGUI(
bool force );
00618
00623
bool initialGeometrySet() const;
00624
00629
void ignoreInitialGeometry();
00630
00646
00647
QSize sizeForCentralWidgetSize(
QSize size) KDE_DEPRECATED;
00648
00652
00653 virtual
void setIcon( const
QPixmap & );
00654
00655 public slots:
00668
int configureToolbars();
00669
00677 virtual
void setCaption( const
QString &caption );
00687 virtual
void setCaption( const
QString &caption,
bool modified );
00688
00695 virtual
void setPlainCaption( const
QString &caption );
00696
00718
void appHelpActivated(
void );
00719
00726 virtual
void slotStateChanged(const
QString &newstate);
00727
00736
void slotStateChanged(const
QString &newstate,
00737
KXMLGUIClient::ReverseStateChange);
00738
00739
00747
00748
00749
00757
void setSettingsDirty();
00758
00759 protected:
00760
void paintEvent(
QPaintEvent* e );
00761
void childEvent(
QChildEvent* e);
00762
void resizeEvent(
QResizeEvent* e);
00770 virtual
void closeEvent (
QCloseEvent *);
00771
00772
00773
00774
00775
00776
00777
00778
00779
00780
00781
00782
00810 virtual
bool queryExit();
00811
00846 virtual
bool queryClose();
00847
00861 virtual
void saveProperties(
KConfig* ) {}
00862
00866 virtual void readProperties(
KConfig* ) {}
00867
00884
virtual void saveGlobalProperties(
KConfig* sessionConfig );
00885
00891
virtual void readGlobalProperties(
KConfig* sessionConfig );
00892
void savePropertiesInternal(
KConfig*,
int );
00893
bool readPropertiesInternal(
KConfig*,
int );
00894
00898
bool settingsDirty() const;
00902
QString settingsGroup() const;
00907
void saveWindowSize(
KConfig * config ) const;
00913
void restoreWindowSize(
KConfig * config );
00914
00916
void parseGeometry(
bool parsewidth);
00917
00918 protected slots:
00923
void saveNewToolbarConfig();
00924
00949 virtual
void showAboutApplication();
00950
00974
void saveAutoSaveSettings();
00975
00976 private slots:
00980
void shuttingDown();
00981
00982 private:
00983
KMenuBar *internalMenuBar();
00984
KStatusBar *internalStatusBar();
00985
KHelpMenu *mHelpMenu, *helpMenu2;
00986
KXMLGUIFactory *factory_;
00987
QPtrList<
KToolBar> toolbarList;
00988 protected:
00989 virtual
void virtual_hook(
int id,
void* data );
00990 private:
00991 KMainWindowPrivate *d;
00992
void initKMainWindow(const
char *name,
int cflags);
00993 };
00994
00995 #define RESTORE(type) {
int n = 1;\
00996
while (KMainWindow::canBeRestored(n)){\
00997 (
new type)->restore(n);\
00998 n++;}}
00999
01000
#define KDE_RESTORE_MAIN_WINDOWS_NUM_TEMPLATE_ARGS 3
01001
01012
template <
typename T>
01013
inline void kRestoreMainWindows() {
01014
for (
int n = 1 ;
KMainWindow::canBeRestored( n ) ; ++n ) {
01015
const QString className =
KMainWindow::classNameOfToplevel( n );
01016
if ( className == QString::fromLatin1( T::staticMetaObject()->className() ) )
01017 (
new T)->restore( n );
01018 }
01019 }
01020
01021
template <
typename T0,
typename T1>
01022
inline void kRestoreMainWindows() {
01023
const char * classNames[2];
01024 classNames[0] = T0::staticMetaObject()->className();
01025 classNames[1] = T1::staticMetaObject()->className();
01026
for (
int n = 1 ;
KMainWindow::canBeRestored( n ) ; ++n ) {
01027
const QString className =
KMainWindow::classNameOfToplevel( n );
01028
if ( className == QString::fromLatin1( classNames[0] ) )
01029 (
new T0)->restore( n );
01030
else if ( className == QString::fromLatin1( classNames[1] ) )
01031 (
new T1)->restore( n );
01032 }
01033 }
01034
01035
template <
typename T0,
typename T1,
typename T2>
01036
inline void kRestoreMainWindows() {
01037
const char * classNames[3];
01038 classNames[0] = T0::staticMetaObject()->className();
01039 classNames[1] = T1::staticMetaObject()->className();
01040 classNames[2] = T2::staticMetaObject()->className();
01041
for (
int n = 1 ;
KMainWindow::canBeRestored( n ) ; ++n ) {
01042
const QString className =
KMainWindow::classNameOfToplevel( n );
01043
if ( className == QString::fromLatin1( classNames[0] ) )
01044 (
new T0)->restore( n );
01045
else if ( className == QString::fromLatin1( classNames[1] ) )
01046 (
new T1)->restore( n );
01047
else if ( className == QString::fromLatin1( classNames[2] ) )
01048 (
new T2)->restore( n );
01049 }
01050 }
01051
01052
#endif