diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-07-10 15:24:15 -0500 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-07-10 15:24:15 -0500 |
commit | bd0f3345a938b35ce6a12f6150373b0955b8dd12 (patch) | |
tree | 7a520322212d48ebcb9fbe1087e7fca28b76185c /src/kernel/qapplication.h | |
download | qt3-bd0f3345a938b35ce6a12f6150373b0955b8dd12.tar.gz qt3-bd0f3345a938b35ce6a12f6150373b0955b8dd12.zip |
Add Qt3 development HEAD version
Diffstat (limited to 'src/kernel/qapplication.h')
-rw-r--r-- | src/kernel/qapplication.h | 555 |
1 files changed, 555 insertions, 0 deletions
diff --git a/src/kernel/qapplication.h b/src/kernel/qapplication.h new file mode 100644 index 0000000..39f7858 --- /dev/null +++ b/src/kernel/qapplication.h @@ -0,0 +1,555 @@ +/**************************************************************************** +** +** Definition of QApplication class +** +** Created : 931107 +** +** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free +** Software Foundation and appearing in the files LICENSE.GPL2 +** and LICENSE.GPL3 included in the packaging of this file. +** Alternatively you may (at your option) use any later version +** of the GNU General Public License if such license has been +** publicly approved by Trolltech ASA (or its successors, if any) +** and the KDE Free Qt Foundation. +** +** Please review the following information to ensure GNU General +** Public Licensing requirements will be met: +** http://trolltech.com/products/qt/licenses/licensing/opensource/. +** If you are unsure which license is appropriate for your use, please +** review the following information: +** http://trolltech.com/products/qt/licenses/licensing/licensingoverview +** or contact the sales department at sales@trolltech.com. +** +** This file may be used under the terms of the Q Public License as +** defined by Trolltech ASA and appearing in the file LICENSE.QPL +** included in the packaging of this file. Licensees holding valid Qt +** Commercial licenses may use this file in accordance with the Qt +** Commercial License Agreement provided with the Software. +** +** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, +** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted +** herein. +** +**********************************************************************/ + +#ifndef QAPPLICATION_H +#define QAPPLICATION_H + +#ifndef QT_H +#include "qdesktopwidget.h" +#include "qasciidict.h" +#include "qpalette.h" +#include "qtranslator.h" +#include "qstrlist.h" +#include "qstringlist.h" +#endif // QT_H + +class QSessionManager; +class QStyle; +class QTranslator; +class QEventLoop; +#if defined(Q_WS_X11) +class QIMEvent; +#endif +#if defined(Q_WS_QWS) +class QWSDecoration; +#endif + +#ifdef QT_THREAD_SUPPORT +class QMutex; +#endif // QT_THREAD_SUPPORT + + +class QApplication; +extern Q_EXPORT QApplication *qApp; // global application object + + +class Q_EXPORT QApplication : public QObject +{ + Q_OBJECT +public: + QApplication( int &argc, char **argv ); + QApplication( int &argc, char **argv, bool GUIenabled ); + enum Type { Tty, GuiClient, GuiServer }; + QApplication( int &argc, char **argv, Type ); +#if defined(Q_WS_X11) + QApplication( Display* dpy, HANDLE visual = 0, HANDLE cmap = 0 ); + QApplication( Display *dpy, int argc, char **argv, + HANDLE visual = 0, HANDLE cmap= 0 ); +#endif + virtual ~QApplication(); + + int argc() const; + char **argv() const; + + Type type() const; + +#ifndef QT_NO_STYLE + static QStyle &style(); + static void setStyle( QStyle* ); + static QStyle* setStyle( const QString& ); +#endif +#ifndef Q_QDOC + enum ColorMode { NormalColors, CustomColors }; + static ColorMode colorMode(); + static void setColorMode( QApplication::ColorMode ); +#endif + + enum ColorSpec { NormalColor=0, CustomColor=1, ManyColor=2 }; + static int colorSpec(); + static void setColorSpec( int ); +#ifndef QT_NO_CURSOR + static QCursor *overrideCursor(); + static void setOverrideCursor( const QCursor &, bool replace=FALSE ); + static void restoreOverrideCursor(); +#endif + static bool hasGlobalMouseTracking(); + static void setGlobalMouseTracking( bool enable ); +#ifndef QT_NO_PALETTE + static QPalette palette( const QWidget* = 0 ); + static void setPalette( const QPalette &, bool informWidgets=FALSE, + const char* className = 0 ); +#endif + static QFont font( const QWidget* = 0 ); + static void setFont( const QFont &, bool informWidgets=FALSE, + const char* className = 0 ); + static QFontMetrics fontMetrics(); + + QWidget *mainWidget() const; + virtual void setMainWidget( QWidget * ); + virtual void polish( QWidget * ); + + static QWidgetList *allWidgets(); + static QWidgetList *topLevelWidgets(); + + static QDesktopWidget *desktop(); + + static QWidget *activePopupWidget(); + static QWidget *activeModalWidget(); +#ifndef QT_NO_CLIPBOARD + static QClipboard *clipboard(); +#endif + QWidget *focusWidget() const; + QWidget *activeWindow() const; + + static QWidget *widgetAt( int x, int y, bool child=FALSE ); + static QWidget *widgetAt( const QPoint &, bool child=FALSE ); + + static QEventLoop *eventLoop(); + + int exec(); + void processEvents(); + void processEvents( int maxtime ); + void processOneEvent(); + bool hasPendingEvents(); + int enter_loop(); + void exit_loop(); + int loopLevel() const; + static void exit( int retcode=0 ); + + static bool sendEvent( QObject *receiver, QEvent *event ); + static void postEvent( QObject *receiver, QEvent *event ); + static void sendPostedEvents( QObject *receiver, int event_type ); + static void sendPostedEvents(); + + static void removePostedEvents( QObject *receiver ); + + virtual bool notify( QObject *, QEvent * ); + + static bool startingUp(); + static bool closingDown(); + + static void flushX(); + static void flush(); + static void syncX(); + + static void beep(); + +#ifndef QT_NO_TRANSLATION +# ifndef QT_NO_TEXTCODEC + void setDefaultCodec( QTextCodec * ); + QTextCodec* defaultCodec() const; +# endif + void installTranslator( QTranslator * ); + void removeTranslator( QTranslator * ); +#endif + enum Encoding { DefaultCodec, UnicodeUTF8 }; + QString translate( const char * context, + const char * key, + const char * comment = 0, + Encoding encoding = DefaultCodec ) const; +#ifndef QT_NO_DIR + QString applicationDirPath(); + QString applicationFilePath(); +#endif +#ifndef QT_NO_PALETTE + // obsolete functions + static void setWinStyleHighlightColor( const QColor &c ) { + QPalette p( palette() ); + p.setColor( QColorGroup::Highlight, c ); + setPalette( p, TRUE); + } + static const QColor &winStyleHighlightColor() { + return palette().active().highlight(); + } +#endif + static void setDesktopSettingsAware( bool ); + static bool desktopSettingsAware(); + + static void setCursorFlashTime( int ); + static int cursorFlashTime(); + + static void setDoubleClickInterval( int ); + static int doubleClickInterval(); +#ifndef QT_NO_WHEELEVENT + static void setWheelScrollLines( int ); + static int wheelScrollLines(); +#endif + static void setGlobalStrut( const QSize & ); + static QSize globalStrut(); + +#ifndef QT_NO_COMPONENT + static void setLibraryPaths( const QStringList & ); + static QStringList libraryPaths(); + static void addLibraryPath( const QString & ); + static void removeLibraryPath( const QString & ); +#endif // QT_NO_COMPONENT + static void setStartDragTime( int ms ); + static int startDragTime(); + static void setStartDragDistance( int l ); + static int startDragDistance(); + + static void setReverseLayout( bool b ); + static bool reverseLayout(); + + static int horizontalAlignment( int align ); + + static bool isEffectEnabled( Qt::UIEffect ); + static void setEffectEnabled( Qt::UIEffect, bool enable = TRUE ); + +#if defined(Q_WS_MAC) + virtual bool macEventFilter( EventHandlerCallRef, EventRef ); +#endif +#if defined(Q_WS_WIN) + virtual bool winEventFilter( MSG * ); +#endif +#if defined(Q_WS_X11) + virtual bool x11EventFilter( XEvent * ); + virtual int x11ClientMessage( QWidget*, XEvent*, bool passive_only); + int x11ProcessEvent( XEvent* ); +#endif +#if defined(Q_WS_QWS) + virtual bool qwsEventFilter( QWSEvent * ); + int qwsProcessEvent( QWSEvent* ); + void qwsSetCustomColors( QRgb *colortable, int start, int numColors ); +/*! + \internal + Returns true if the process is GUI server +*/ + bool qwsIsGUIServer(); +#ifndef QT_NO_QWS_MANAGER + static QWSDecoration &qwsDecoration(); + static void qwsSetDecoration( QWSDecoration *); +#endif +#endif + +#if defined(Q_OS_WIN32) || defined(Q_OS_CYGWIN) + static WindowsVersion winVersion(); +#elif defined(Q_OS_MAC) + static MacintoshVersion macVersion(); +#endif +#if defined(Q_WS_WIN) + void winFocus( QWidget *, bool ); + static void winMouseButtonUp(); +#endif + +#ifndef QT_NO_SESSIONMANAGER + // session management + bool isSessionRestored() const; + QString sessionId() const; + QString sessionKey() const; + virtual void commitData( QSessionManager& sm ); + virtual void saveState( QSessionManager& sm ); +#endif +#if defined(Q_WS_X11) +#if !defined(QT_NO_IM_EXTENSIONS) + virtual QWidget *locateICHolderWidget( QWidget *w ); + virtual QWidgetList *icHolderWidgets(); + static void create_im(); + static void close_im(); +#else + QWidget *locateICHolderWidget( QWidget *w ); + QWidgetList *icHolderWidgets(); + static void create_xim(); + static void close_xim(); +#endif + static QString defaultInputMethod(); + void changeAllInputContext( const QString & ); + static bool x11_apply_settings(); +#endif + void wakeUpGuiThread(); +#if defined(QT_THREAD_SUPPORT) + void lock(); + void unlock(bool wakeUpGui = TRUE); + bool locked(); + bool tryLock(); +#endif + +signals: + void lastWindowClosed(); + void aboutToQuit(); + void guiThreadAwake(); + +public slots: + void quit(); + void closeAllWindows(); + void aboutQt(); + +#if defined(Q_WS_QWS) +protected: + void setArgs(int, char **); +#endif + +protected: + bool event(QEvent *); + +private: + void construct( int &argc, char **argv, Type ); + void initialize( int, char ** ); + void init_precmdline(); + void process_cmdline( int* argcptr, char ** argv ); + bool internalNotify( QObject *, QEvent * ); +#if defined(Q_WS_QWS) + static QWidget *findChildWidget( const QWidget *p, const QPoint &pos ); + static QWidget *findWidget( const QObjectList&, const QPoint &, bool rec ); +#endif + +#if defined(Q_WS_MAC) + bool do_mouse_down(Point *, bool *); + static QMAC_PASCAL OSStatus globalEventProcessor(EventHandlerCallRef, EventRef, void *); + static QMAC_PASCAL OSStatus globalAppleEventProcessor(const AppleEvent *, AppleEvent *, long); + static QMAC_PASCAL void qt_context_timer_callbk(EventLoopTimerRef, void *); + static QMAC_PASCAL void qt_select_timer_callbk(EventLoopTimerRef, void *); + static bool qt_mac_apply_settings(); + friend class QMacInputMethod; + friend QMAC_PASCAL OSStatus qt_window_event(EventHandlerCallRef, EventRef, void *); + friend void qt_mac_update_os_settings(); + friend bool qt_set_socket_handler( int, int, QObject *, bool); + friend void qt_mac_destroy_widget(QWidget *); + friend void qt_init(int *, char **, QApplication::Type); +#endif + +#if defined(Q_WS_X11) +private slots: + void postIMEvent( QObject *receiver, QIMEvent *event ); +#endif + +private: +#ifdef QT_THREAD_SUPPORT + static QMutex *qt_mutex; +#endif // QT_THREAD_SUPPORT + + int app_argc; + char **app_argv; + bool quit_now; + int quit_code; + static QStyle *app_style; + static int app_cspec; +#ifndef QT_NO_PALETTE + static QPalette *app_pal; +#endif + static QFont *app_font; +#ifndef QT_NO_CURSOR + static QCursor *app_cursor; +#endif + static QEventLoop* eventloop; + static int app_tracking; + static bool is_app_running; + static bool is_app_closing; + static bool app_exit_loop; + static int loop_level; + static QWidget *main_widget; + static QWidget *focus_widget; + static QWidget *active_window; + static bool obey_desktop_settings; + static int cursor_flash_time; + static int mouse_double_click_time; + static int wheel_scroll_lines; + static int composedUnicode; // Value, meta-composed character + + static bool animate_ui; + static bool animate_menu; + static bool animate_tooltip; + static bool animate_combo; + static bool fade_menu; + static bool fade_tooltip; + static bool animate_toolbox; + static bool widgetCount; // Coupled with -widgetcount switch + static bool metaComposeUnicode; + + QValueList<QTranslator*> *translators; +#ifndef QT_NO_SESSIONMANAGER + QSessionManager *session_manager; + QString session_id; + static QString* session_key; + bool is_session_restored; +#endif +#if defined(Q_WS_X11) +#if !defined (QT_NO_STYLE) + static void x11_initialize_style(); +#endif + static QString defaultIM; // default input method's name in this application. +#endif + + static QSize app_strut; +#ifndef QT_NO_COMPONENT + static QStringList *app_libpaths; +#endif + static QAsciiDict<QPalette> *app_palettes; + static QAsciiDict<QFont> *app_fonts; + + static QWidgetList *popupWidgets; + bool inPopupMode() const; + void closePopup( QWidget *popup ); + void openPopup( QWidget *popup ); + void setActiveWindow( QWidget* act ); + + static bool sendSpontaneousEvent( QObject *receiver, QEvent *event ); + static void removePostedEvent( QEvent * ); + static void removePostedEvents( QObject *receiver, int event_type ); + + friend class QWidget; + friend class QETWidget; + friend class QDialog; + friend class QAccelManager; + friend class QEvent; + friend class QTranslator; + friend class QEventLoop; + friend Q_EXPORT void qt_ucm_initialize( QApplication * ); +#if defined(Q_WS_WIN) + friend bool qt_sendSpontaneousEvent( QObject*, QEvent* ); +#endif +#if defined(Q_WS_QWS) + friend class QInputContext; +#endif +private: // Disabled copy constructor and operator= +#if defined(Q_DISABLE_COPY) + QApplication( const QApplication & ); + QApplication &operator=( const QApplication & ); +#endif +}; + +inline int QApplication::argc() const +{ + return app_argc; +} + +inline char **QApplication::argv() const +{ + return app_argv; +} + +#if defined(Q_WS_QWS) +inline void QApplication::setArgs(int c, char **v) +{ + app_argc = c; + app_argv = v; +} +#endif + +#ifndef QT_NO_CURSOR +inline QCursor *QApplication::overrideCursor() +{ + return app_cursor; +} +#endif +inline bool QApplication::hasGlobalMouseTracking() +{ + return app_tracking > 0; +} + +inline QWidget *QApplication::mainWidget() const +{ + return main_widget; +} + +inline QWidget *QApplication::focusWidget() const +{ + return focus_widget; +} + +inline QWidget *QApplication::activeWindow() const +{ + return active_window; +} + +inline QWidget *QApplication::widgetAt( const QPoint &p, bool child ) +{ + return widgetAt( p.x(), p.y(), child ); +} + +inline bool QApplication::inPopupMode() const +{ + return popupWidgets != 0; +} +#ifndef QT_NO_SESSIONMANAGER +inline bool QApplication::isSessionRestored() const +{ + return is_session_restored; +} + +inline QString QApplication::sessionId() const +{ + return session_id; +} + +inline QString QApplication::sessionKey() const +{ + return session_key ? *session_key : QString::null; +} +#endif +inline QSize QApplication::globalStrut() +{ + return app_strut; +} + +inline bool QApplication::sendEvent( QObject *receiver, QEvent *event ) +{ if ( event ) event->spont = FALSE; return qApp ? qApp->notify( receiver, event ) : FALSE; } + +inline bool QApplication::sendSpontaneousEvent( QObject *receiver, QEvent *event ) +{ if ( event ) event->spont = TRUE; return qApp ? qApp->notify( receiver, event ) : FALSE; } + +#ifdef QT_NO_TRANSLATION +// Simple versions +inline QString QApplication::translate( const char *, const char *sourceText, + const char *, Encoding encoding ) const +{ +#ifndef QT_NO_TEXTCODEC + if ( encoding == UnicodeUTF8 ) + return QString::fromUtf8( sourceText ); + else +#endif + return QString::fromLatin1( sourceText ); +} +#endif + +inline int QApplication::horizontalAlignment( int align ) +{ + align &= AlignHorizontal_Mask; + if ( align == AlignAuto ) { + if ( reverseLayout() ) + align = AlignRight; + else + align = AlignLeft; + } + return align; +} + +#endif // QAPPLICATION_H + |