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
#include <kdemacros.h>
00031
00032
class KPopupMenu;
00033
class KXMLGUIFactory;
00034
class KConfig;
00035
class KHelpMenu;
00036
class KStatusBar;
00037
class QStatusBar;
00038
class KMenuBar;
00039
class KMWSessionManaged;
00040
class KMainWindowPrivate;
00041
class KAccel;
00042
class KToolBarMenuAction;
00043
class DCOPObject;
00044
00045
#define KDE_DEFAULT_WINDOWFLAGS WType_TopLevel | WDestructiveClose
00046
00047
00098 class 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
00375
KStatusBar *
statusBar();
00376
00380
static QPtrList<KMainWindow>* memberList;
00381
00392
KToolBar *
toolBar(
const char *name=0 );
00393
00397
QPtrListIterator<KToolBar> toolBarIterator();
00398
00403
KAccel *
accel();
00404
00405
void setFrameBorderWidth(
int ) {}
00406
00438
void setAutoSaveSettings(
const QString & groupName = QString::fromLatin1(
"MainWindow"),
00439
bool saveWindowSize =
true );
00440
00445
void resetAutoSaveSettings();
00446
00452
bool autoSaveSettings() const;
00453
00461
QString autoSaveGroup() const;
00462
00472
void applyMainWindowSettings(
KConfig *config, const
QString &groupName,
bool force);
00473
00474
void applyMainWindowSettings(
KConfig *config, const
QString &groupName =
QString::null);
00475
00484
void saveMainWindowSettings(
KConfig *config, const
QString &groupName =
QString::null);
00485
00504
void setStandardToolBarMenuEnabled(
bool enable );
00506
bool isStandardToolBarMenuEnabled() const;
00507
00508
00529
void createStandardStatusBarAction();
00530
00534 enum StandardWindowOptions
00535 {
00544
ToolBar = 1,
00545
00549
Keys = 2,
00550
00555
StatusBar = 4,
00556
00567
Save = 8,
00568
00573
Create = 16
00574 };
00575
00587
void setupGUI(
int options = ToolBar | Keys | StatusBar | Save | Create,
const QString& xmlfile = QString::null );
00588
00593
KAction *
toolBarMenuAction();
00594
00599
void setupToolbarMenuActions();
00600
00601
00603
virtual void finalizeGUI(
KXMLGUIClient *client );
00604
00608
void finalizeGUI(
bool force );
00609
00614
bool initialGeometrySet() const;
00615
00620
void ignoreInitialGeometry();
00621
00637
00638
QSize sizeForCentralWidgetSize(
QSize size) KDE_DEPRECATED;
00639
00640 public slots:
00653
int configureToolbars();
00654
00662 virtual
void setCaption( const
QString &caption );
00672 virtual
void setCaption( const
QString &caption,
bool modified );
00673
00680 virtual
void setPlainCaption( const
QString &caption );
00681
00703
void appHelpActivated(
void );
00704
00711 virtual
void slotStateChanged(const
QString &newstate);
00712
00721
void slotStateChanged(const
QString &newstate,
00722
KXMLGUIClient::ReverseStateChange);
00723
00724
00732
00733
00734
00742
void setSettingsDirty();
00743
00744 protected:
00745
void paintEvent(
QPaintEvent* e );
00746
void childEvent(
QChildEvent* e);
00747
void resizeEvent(
QResizeEvent* e);
00755 virtual
void closeEvent (
QCloseEvent *);
00756
00757
00758
00759
00760
00761
00762
00763
00764
00765
00766
00767
00795 virtual
bool queryExit();
00796
00831 virtual
bool queryClose();
00832
00846 virtual
void saveProperties(
KConfig* ) {}
00847
00851 virtual void readProperties(
KConfig* ) {}
00852
00869
virtual void saveGlobalProperties(
KConfig* sessionConfig );
00870
00876
virtual void readGlobalProperties(
KConfig* sessionConfig );
00877
void savePropertiesInternal(
KConfig*,
int );
00878
bool readPropertiesInternal(
KConfig*,
int );
00879
00883
bool settingsDirty() const;
00887
QString settingsGroup() const;
00892
void saveWindowSize(
KConfig * config ) const;
00898
void restoreWindowSize(
KConfig * config );
00899
00901
void parseGeometry(
bool parsewidth);
00902
00903 protected slots:
00908
void saveNewToolbarConfig();
00909
00934 virtual
void showAboutApplication();
00935
00959
void saveAutoSaveSettings();
00960
00961 private slots:
00965
void shuttingDown();
00966
00967 private:
00968
KMenuBar *internalMenuBar();
00969
KStatusBar *internalStatusBar();
00970
KHelpMenu *mHelpMenu, *helpMenu2;
00971
KXMLGUIFactory *factory_;
00972
QPtrList<
KToolBar> toolbarList;
00973 protected:
00974 virtual
void virtual_hook(
int id,
void* data );
00975 private:
00976 KMainWindowPrivate *d;
00977
void initKMainWindow(const
char *name,
int cflags);
00978 };
00979
00980 #define RESTORE(type) {
int n = 1;\
00981
while (
KMainWindow::canBeRestored(n)){\
00982 (
new type)->restore(n);\
00983 n++;}}
00984
00985
#define KDE_RESTORE_MAIN_WINDOWS_NUM_TEMPLATE_ARGS 3
00986
00997
template <
typename T>
00998
inline void kRestoreMainWindows() {
00999
for (
int n = 1 ;
KMainWindow::canBeRestored( n ) ; ++n ) {
01000
const QString className =
KMainWindow::classNameOfToplevel( n );
01001
if ( className == QString::fromLatin1( T::staticMetaObject()->className() ) )
01002 (
new T)->restore( n );
01003 }
01004 }
01005
01006
template <
typename T0,
typename T1>
01007
inline void kRestoreMainWindows() {
01008
const char * classNames[2];
01009 classNames[0] = T0::staticMetaObject()->className();
01010 classNames[1] = T1::staticMetaObject()->className();
01011
for (
int n = 1 ;
KMainWindow::canBeRestored( n ) ; ++n ) {
01012
const QString className =
KMainWindow::classNameOfToplevel( n );
01013
if ( className == QString::fromLatin1( classNames[0] ) )
01014 (
new T0)->restore( n );
01015
else if ( className == QString::fromLatin1( classNames[1] ) )
01016 (
new T1)->restore( n );
01017 }
01018 }
01019
01020
template <
typename T0,
typename T1,
typename T2>
01021
inline void kRestoreMainWindows() {
01022
const char * classNames[3];
01023 classNames[0] = T0::staticMetaObject()->className();
01024 classNames[1] = T1::staticMetaObject()->className();
01025 classNames[2] = 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
else if ( className == QString::fromLatin1( classNames[2] ) )
01033 (
new T2)->restore( n );
01034 }
01035 }
01036
01037
#endif