kdecore Library API Documentation

kapplication.h

00001 /* This file is part of the KDE libraries 00002 Copyright (C) 1997 Matthias Kalle Dalheimer (kalle@kde.org) 00003 Copyright (c) 1998, 1999 KDE Team 00004 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Library General Public 00007 License as published by the Free Software Foundation; either 00008 version 2 of the License, or (at your option) any later version. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Library General Public License for more details. 00014 00015 You should have received a copy of the GNU Library General Public License 00016 along with this library; see the file COPYING.LIB. If not, write to 00017 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00018 Boston, MA 02111-1307, USA. 00019 */ 00020 00021 #ifndef _KAPP_H 00022 #define _KAPP_H 00023 00024 // Version macros. Never put this further down. 00025 #include "kdeversion.h" 00026 #include "kdelibs_export.h" 00027 00028 class KConfig; 00029 class KCharsets; 00030 class DCOPClient; 00031 class DCOPObject; 00032 00033 typedef unsigned long Atom; 00034 #if !defined(Q_WS_X11) 00035 typedef void Display; 00036 #endif 00037 00038 #include <qapplication.h> 00039 #include <qpixmap.h> 00040 #include <kinstance.h> 00041 00042 struct _IceConn; 00043 class QPopupMenu; 00044 class QStrList; 00045 class KSessionManaged; 00046 class KStyle; 00047 class KURL; 00048 00049 #define kapp KApplication::kApplication() 00050 00051 class KApplicationPrivate; 00052 00094 class KDECORE_EXPORT KApplication : public QApplication, public KInstance 00095 { 00096 00097 Q_OBJECT 00098 public: 00099 enum CaptionLayout { CaptionAppLast=1, CaptionAppFirst, CaptionNoApp }; 00100 00114 KApplication( bool allowStyles=true, bool GUIenabled=true); 00115 00116 #ifdef Q_WS_X11 00117 00140 KApplication(Display *display, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0, 00141 bool allowStyles=true); 00142 00167 KApplication(Display *display, int& argc, char** argv, const QCString& rAppName, 00168 bool allowStyles=true, bool GUIenabled=true); 00169 #endif 00170 00193 // REMOVE FOR KDE 4.0 - using it only gives crashing applications because 00194 // KCmdLineArgs::init isn't called 00195 KApplication(int& argc, char** argv, 00196 const QCString& rAppName, bool allowStyles=true, bool GUIenabled=true) KDE_DEPRECATED; 00197 00201 static void addCmdLineOptions(); 00202 00203 virtual ~KApplication(); 00204 00215 static KApplication* kApplication() { return KApp; } 00216 00224 KConfig* sessionConfig(); 00225 00234 bool isRestored() const { return QApplication::isSessionRestored(); } 00235 00242 void disableSessionManagement(); 00243 00250 void enableSessionManagement(); 00251 00255 enum ShutdownConfirm { 00259 ShutdownConfirmDefault = -1, 00263 ShutdownConfirmNo = 0, 00267 ShutdownConfirmYes = 1 00268 }; 00269 00273 enum ShutdownType { 00277 ShutdownTypeDefault = -1, 00281 ShutdownTypeNone = 0, 00285 ShutdownTypeReboot = 1, 00289 ShutdownTypeHalt = 2 00290 }; 00291 00295 enum ShutdownMode { 00299 ShutdownModeDefault = -1, 00304 ShutdownModeSchedule = 0, 00308 ShutdownModeTryNow = 1, 00312 ShutdownModeForceNow = 2, 00316 ShutdownModeInteractive = 3 00317 }; 00318 00334 bool requestShutDown( ShutdownConfirm confirm = ShutdownConfirmDefault, 00335 ShutdownType sdtype = ShutdownTypeDefault, 00336 ShutdownMode sdmode = ShutdownModeDefault ); 00337 00351 void propagateSessionManager(); 00352 00353 /* 00354 * Reimplemented for internal purposes, mainly the highlevel 00355 * handling of session management with KSessionManaged. 00356 * @internal 00357 */ 00358 void commitData( QSessionManager& sm ); 00359 00360 /* 00361 * Reimplemented for internal purposes, mainly the highlevel 00362 * handling of session management with KSessionManaged. 00363 * @internal 00364 */ 00365 void saveState( QSessionManager& sm ); 00366 00376 bool sessionSaving() const; 00377 00384 static DCOPClient *dcopClient(); 00385 00390 static void disableAutoDcopRegistration(); 00391 00396 QPixmap icon() const; 00397 00402 QString iconName() const; 00403 00408 QPixmap miniIcon() const; 00409 00414 QString miniIconName() const; 00415 00426 void setTopWidget( QWidget *topWidget ); 00427 00440 void invokeHelp( const QString& anchor, 00441 const QString& appname, 00442 const QCString& startup_id ) const; 00443 00444 // KDE4 merge with above with startup_id = "" 00445 void invokeHelp( const QString& anchor = QString::null, 00446 const QString& appname = QString::null ) const; 00447 00462 void invokeHTMLHelp( const QString& aFilename, const QString& aTopic = QString::null ) const KDE_DEPRECATED; 00463 00472 void invokeMailer( const QString &address, const QString &subject, const QCString& startup_id ); 00473 // KDE4 merge with above with startup_id = "" 00474 void invokeMailer( const QString &address, const QString &subject ); 00475 00485 void invokeMailer( const KURL &mailtoURL, const QCString& startup_id, bool allowAttachments ); 00486 // KDE4 merge with above with allowAttachments = false 00487 void invokeMailer( const KURL &mailtoURL, const QCString& startup_id ); 00488 // KDE4 merge with above with startup_id = "" 00489 void invokeMailer( const KURL &mailtoURL ); 00490 00506 void invokeMailer(const QString &to, const QString &cc, const QString &bcc, 00507 const QString &subject, const QString &body, 00508 const QString &messageFile, const QStringList &attachURLs, 00509 const QCString& startup_id ); 00510 // KDE4 merge with above with startup_id = "" 00511 void invokeMailer(const QString &to, const QString &cc, const QString &bcc, 00512 const QString &subject, const QString &body, 00513 const QString &messageFile = QString::null, const QStringList &attachURLs = QStringList()); 00514 00515 public slots: 00526 void invokeBrowser( const QString &url, const QCString& startup_id ); 00527 // KDE4 merge with above with startup_id = "" 00528 void invokeBrowser( const QString &url ); 00529 00537 void cut(); 00538 00546 void copy(); 00547 00555 void paste(); 00556 00582 void clear(); 00583 00591 void selectAll(); 00592 00593 public: 00599 static QCString launcher(); 00600 00621 static int startServiceByName( const QString& _name, const QString &URL, 00622 QString *error=0, QCString *dcopService=0, int *pid=0, const QCString &startup_id = "", bool noWait = false ); 00623 00644 static int startServiceByName( const QString& _name, const QStringList &URLs=QStringList(), 00645 QString *error=0, QCString *dcopService=0, int *pid=0, const QCString &startup_id = "", bool noWait = false ); 00646 00667 static int startServiceByDesktopPath( const QString& _name, const QString &URL, 00668 QString *error=0, QCString *dcopService=0, int *pid = 0, const QCString &startup_id = "", bool noWait = false ); 00669 00690 static int startServiceByDesktopPath( const QString& _name, const QStringList &URLs=QStringList(), 00691 QString *error=0, QCString *dcopService=0, int *pid = 0, const QCString &startup_id = "", bool noWait = false ); 00692 00713 static int startServiceByDesktopName( const QString& _name, const QString &URL, 00714 QString *error=0, QCString *dcopService=0, int *pid = 0, const QCString &startup_id = "", bool noWait = false ); 00715 00736 static int startServiceByDesktopName( const QString& _name, const QStringList &URLs=QStringList(), 00737 QString *error=0, QCString *dcopService=0, int *pid = 0, const QCString &startup_id = "", bool noWait = false ); 00738 00758 static int kdeinitExec( const QString& name, const QStringList &args, 00759 QString *error, int *pid, const QCString& startup_id ); 00760 // KDE4 merge with above with startup_id = "" 00761 static int kdeinitExec( const QString& name, const QStringList &args=QStringList(), 00762 QString *error=0, int *pid = 0 ); 00763 00781 static int kdeinitExecWait( const QString& name, const QStringList &args, 00782 QString *error, int *pid, const QCString& startup_id ); 00783 // KDE4 merge with above with startup_id = "" 00784 static int kdeinitExecWait( const QString& name, const QStringList &args=QStringList(), 00785 QString *error=0, int *pid = 0 ); 00786 00795 QString caption() const; 00796 00800 KDE_DEPRECATED KStyle* kstyle() const { return 0; } 00801 00819 QString makeStdCaption( const QString &userCaption, 00820 bool withAppName=true, bool modified=false ) const; 00821 00829 QString tempSaveName( const QString& pFilename ) const; 00830 00840 QString checkRecoverFile( const QString& pFilename, bool& bRecover ) const; 00841 00842 #ifdef Q_WS_X11 00843 00847 Display *getDisplay() { return display; } 00848 #endif 00849 00857 void enableStyles(); 00858 00866 void disableStyles(); 00867 00877 void installX11EventFilter( QWidget* filter ); 00878 00883 void removeX11EventFilter( const QWidget* filter ); 00884 00889 static int random(); 00890 00896 static QString randomString(int length); 00897 00907 void addKipcEventMask(int id); 00908 00917 void removeKipcEventMask(int id); 00918 00924 QCString startupId() const; 00925 00933 void setStartupId( const QCString& startup_id ); 00934 00941 void updateUserTimestamp( unsigned long time = 0 ); 00942 00948 unsigned long userTimestamp() const; 00949 00958 void updateRemoteUserTimestamp( const QCString& dcopId, unsigned long time = 0 ); 00959 00965 QString geometryArgument() const; 00966 00971 void installKDEPropertyMap(); 00972 00978 bool authorize(const QString &genericAction); 00979 00987 bool authorizeKAction(const char *action); 00988 01002 bool authorizeURLAction(const QString &action, const KURL &baseURL, const KURL &destURL); 01003 01013 void allowURLAction(const QString &action, const KURL &_baseURL, const KURL &_destURL); 01014 01022 bool authorizeControlModule(const QString &menuId); 01023 01032 QStringList authorizeControlModules(const QStringList &menuIds); 01033 01043 static ButtonState keyboardMouseState(); 01044 01045 // Same values as ShiftMask etc. in X.h 01046 enum { ShiftModifier = 1<<0, 01047 LockModifier = 1<<1, 01048 ControlModifier = 1<<2, 01049 Modifier1 = 1<<3, 01050 Modifier2 = 1<<4, 01051 Modifier3 = 1<<5, 01052 Modifier4 = 1<<6, 01053 Modifier5 = 1<<7 }; 01058 static uint keyboardModifiers() KDE_DEPRECATED; 01059 01061 enum { Button1Pressed = 1<<8, 01062 Button2Pressed = 1<<9, 01063 Button3Pressed = 1<<10, 01064 Button4Pressed = 1<<11, 01065 Button5Pressed = 1<<12 }; 01070 static uint mouseState() KDE_DEPRECATED; 01071 01072 01073 public slots: 01080 void ref(); 01081 01086 void deref(); 01087 01088 protected: 01092 KApplication( bool allowStyles, bool GUIenabled, KInstance* _instance ); 01093 01094 #ifdef Q_WS_X11 01098 KApplication( Display *display, Qt::HANDLE visual, Qt::HANDLE colormap, 01099 bool allowStyles, KInstance* _instance ); 01100 01104 bool x11EventFilter( XEvent * ); 01105 01106 Display *display; 01107 #endif 01108 Atom kipcCommAtom; 01109 int kipcEventMask; 01110 01112 static KApplication *KApp; 01113 int pArgc; 01114 01146 void invokeEditSlot( const char *slot ); 01147 01148 private slots: 01149 void dcopFailure(const QString &); 01150 void dcopBlockUserInput( bool ); 01151 void x11FilterDestroyed(); 01152 void checkAppStartedSlot(); 01153 01154 private: 01155 QString sessionConfigName() const; 01156 KConfig* pSessionConfig; //instance specific application config object 01157 static DCOPClient *s_DCOPClient; // app specific application communication client 01158 static bool s_dcopClientNeedsPostInit; 01159 QString aCaption; // the name for the window title 01160 bool bSessionManagement; 01161 struct oldPixmapType { QPixmap a, b; }; 01162 mutable union { 01163 struct { 01164 QPixmap *icon, *miniIcon; 01165 } pm; 01166 char unused[sizeof(oldPixmapType)]; 01167 } aIconPixmap; // KDE4: remove me 01168 QString aIconName; 01169 QString aMiniIconName; 01170 bool useStyles; 01171 QWidget *smw; 01172 01173 void init( bool GUIenabled ); 01174 01175 void parseCommandLine( ); // Handle KDE arguments (Using KCmdLineArgs) 01176 01177 void read_app_startup_id(); 01178 01179 void dcopAutoRegistration(); 01180 void dcopClientPostInit(); 01181 void initUrlActionRestrictions(); 01182 01183 public: 01187 bool notify(QObject *receiver, QEvent *event); 01188 01192 int xErrhandler( Display*, void* ); 01193 01197 int xioErrhandler( Display* ); 01198 01202 void iceIOErrorHandler( _IceConn *conn ); 01203 01207 static bool loadedByKdeinit; 01208 01212 static void startKdeinit(); 01213 01217 enum SettingsCategory { SETTINGS_MOUSE, SETTINGS_COMPLETION, SETTINGS_PATHS, 01218 SETTINGS_POPUPMENU, SETTINGS_QT, SETTINGS_SHORTCUTS }; 01219 01228 static QPalette createApplicationPalette(); 01229 01234 static QPalette createApplicationPalette( KConfig *config, int contrast ); 01235 01243 static void installSigpipeHandler(); 01244 01251 static bool guiEnabled(); 01252 01253 signals: 01260 void kdisplayPaletteChanged(); 01261 01269 void kdisplayStyleChanged(); 01270 01282 void kdisplayFontChanged(); 01283 01289 void appearanceChanged(); 01290 01294 void toolbarAppearanceChanged(int); 01295 01301 void backgroundChanged(int desk); 01302 01309 void settingsChanged(int category); 01310 01315 void iconChanged(int group); 01316 01326 void kipcMessage(int id, int data); 01327 01357 void saveYourself(); 01358 01366 void shutDown(); 01367 01368 private: 01369 void propagateSettings(SettingsCategory category); 01370 void kdisplaySetPalette(); 01371 void kdisplaySetStyle(); 01372 void kdisplaySetFont(); 01373 void applyGUIStyle(); 01374 static void sigpipeHandler(int); 01375 01376 int captionLayout; 01377 01378 KApplication(const KApplication&); 01379 KApplication& operator=(const KApplication&); 01380 protected: 01381 virtual void virtual_hook( int id, void* data ); 01382 private: 01383 KApplicationPrivate* d; 01384 }; 01385 01386 01404 KDECORE_EXPORT bool checkAccess(const QString& pathname, int mode); 01405 01406 class KSessionManagedPrivate; 01407 01424 class KDECORE_EXPORT KSessionManaged 01425 { 01426 public: 01427 KSessionManaged(); 01428 virtual ~KSessionManaged(); 01429 01439 virtual bool saveState( QSessionManager& sm ); 01449 virtual bool commitData( QSessionManager& sm ); 01450 01451 protected: 01452 virtual void virtual_hook( int id, void* data ); 01453 private: 01454 KSessionManagedPrivate *d; 01455 }; 01456 01457 01458 #endif 01459
KDE Logo
This file is part of the documentation for kdecore Library Version 3.4.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Apr 14 00:03:26 2005 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003