Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |
This is the verbatim text of the qwindowsystem_qws.h include file. It is provided only for illustration; the copyright remains with Trolltech.
/**************************************************************************** ** $Id: qt/qwindowsystem_qws.h 3.3.8 edited Jan 11 14:38 $ ** ** Definition of TQt/FB central server classes ** ** Created : 991025 ** ** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved. ** ** This file is part of the kernel module of the TQt 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 file LICENSE.GPL 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 TQt 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. ** ** Licensees holding valid TQt Commercial licenses may use this file in ** accordance with the TQt 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 TQWINDOWSYSTEM_QWS_H #define TQWINDOWSYSTEM_QWS_H #ifndef QT_H #include "qwssocket_qws.h" #include "ntqmap.h" #include "ntqdatetime.h" #include "ntqptrlist.h" #include "ntqimage.h" #include "qwsproperty_qws.h" #include "qwscommand_qws.h" #include "qwsevent_qws.h" #endif // QT_H #include "qkbd_qws.h" struct SWCursorData; class TQWSCursor; class TQWSClient; class TQWSRegionManager; class TQGfx; class TQWSServerData; class TQWSInternalWindowInfo { public: int winid; unsigned int clientid; TQString name; // Corresponds to TQObject name of top-level widget }; struct TQWSWindowData; class TQWSScreenSaver { public: virtual ~TQWSScreenSaver(); virtual void restore()=0; virtual bool save(int level)=0; }; class TQWSWindow { friend class TQWSServer; public: TQWSWindow(int i, TQWSClient* client); ~TQWSWindow(); int winId() const { return id; } const TQString &name() const { return rgnName; } const TQString &caption() const { return rgnCaption; } TQWSClient* client() const { return c; } TQRegion requested() const { return requested_region; } TQRegion allocation() const { return allocated_region; } bool isVisible() const { return !requested_region.isEmpty(); } bool isPartiallyObscured() const { return requested_region!=allocated_region; } bool isFullyObscured() const { return allocated_region.isEmpty(); } void raise(); void lower(); void show(); void hide(); void setActiveWindow(); private: bool hidden() const { return requested_region.isEmpty(); } bool forClient(const TQWSClient* cl) const { return cl==c; } void setName( const TQString &n ); void setCaption( const TQString &c ); void addAllocation( TQWSRegionManager *, const TQRegion & ); void removeAllocation( TQWSRegionManager *, const TQRegion & ); int allocationIndex() const { return alloc_region_idx; } void setAllocationIndex( int i ) { alloc_region_idx = i; modified = TRUE; } void updateAllocation(); void setNeedAck( bool n ) { needAck = n; } void focus(bool get); int focusPriority() const { return last_focus_time; } void operation( TQWSWindowOperationEvent::Operation o ); void shuttingDown() { last_focus_time=0; } private: int id; TQString rgnName; TQString rgnCaption; int alloc_region_idx; bool modified; bool needAck; bool onTop; TQWSClient* c; TQRegion requested_region; TQRegion allocated_region; TQRegion exposed; int last_focus_time; TQWSWindowData *d; }; #ifndef TQT_NO_SOUND class TQWSSoundServer; #ifdef QT_USE_OLD_QWS_SOUND class TQWSSoundServerData; class TQWSSoundServer : public TQObject { TQ_OBJECT public: TQWSSoundServer(TQObject* parent); ~TQWSSoundServer(); void playFile(const TQString& filename); private slots: void feedDevice(int fd); private: TQWSSoundServerData* d; }; #endif #endif /********************************************************************* * * Class: TQWSServer * *********************************************************************/ class TQWSMouseHandler; struct TQWSCommandStruct; #ifndef TQT_NO_QWS_MULTIPROCESS class TQWSServer : public TQWSServerSocket #else class TQWSServer : public TQObject #endif { friend class TQCopChannel; friend class TQWSMouseHandler; friend class TQWSWindow; friend class TQWSDisplay; friend class TQWSInputMethod; TQ_OBJECT public: TQWSServer( int flags = 0, TQObject *parent=0, const char *name=0 ); ~TQWSServer(); enum ServerFlags { DisableKeyboard = 0x01, DisableMouse = 0x02 }; enum GUIMode { NoGui = FALSE, NormalGUI = TRUE, Server }; static void sendKeyEvent(int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat); static void processKeyEvent(int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat); #ifndef TQT_NO_QWS_IM enum IMState { IMStart, IMCompose, IMEnd }; void sendIMEvent( IMState state, const TQString& txt, int cpos, int selLen ); #endif #ifndef TQT_NO_QWS_KEYBOARD typedef struct KeyMap { int key_code; ushort unicode; ushort shift_unicode; ushort ctrl_unicode; }; typedef struct KeyOverride { ushort scan_code; KeyMap map; }; static const KeyMap *keyMap(); static void setOverrideKeys( const KeyOverride* ); class KeyboardFilter { public: virtual bool filter(int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat)=0; }; static void setKeyboardFilter( KeyboardFilter *f ); #endif #ifndef TQT_NO_QWS_IM static void setCurrentInputMethod( TQWSInputMethod *im ); static void resetInputMethod(); static void setMicroFocus( int x, int y ); #endif static void setDefaultMouse( const char * ); static void setDefaultKeyboard( const char * ); static void setMaxWindowRect(const TQRect&); static void sendMouseEvent(const TQPoint& pos, int state); static void setDesktopBackground( const TQImage &img ); static void setDesktopBackground( const TQColor & ); static TQWSMouseHandler *mouseHandler(); static void setMouseHandler(TQWSMouseHandler*); #ifndef TQT_NO_QWS_KEYBOARD static TQWSKeyboardHandler* keyboardHandler(); static void setKeyboardHandler(TQWSKeyboardHandler* kh); #endif TQWSWindow *windowAt( const TQPoint& pos ); // For debugging only at this time const TQPtrList<TQWSWindow> &clientWindows() { return windows; } void openMouse(); void closeMouse(); #ifndef TQT_NO_QWS_KEYBOARD void openKeyboard(); void closeKeyboard(); #endif static void setScreenSaver(TQWSScreenSaver*); static void setScreenSaverIntervals(int* ms); static void setScreenSaverInterval(int); static bool screenSaverActive(); static void screenSaverActivate(bool); // the following are internal. void refresh(); void refresh(TQRegion &); void enablePainting(bool); static void processEventQueue(); static TQPtrList<TQWSInternalWindowInfo> * windowList(); void sendPropertyNotifyEvent( int property, int state ); #ifndef TQT_NO_QWS_PROPERTIES TQWSPropertyManager *manager() { return &propertyManager; } #endif static TQPoint mousePosition; static void startup( int flags ); static void closedown(); static void beginDisplayReconfigure(); static void endDisplayReconfigure(); #ifndef TQT_NO_QWS_CURSOR static void setCursorVisible( bool ); static bool isCursorVisible(); #endif enum WindowEvent { Create=0x0001, Destroy=0x0002, Hide=0x0004, Show=0x0008, Raise=0x0010, Lower=0x0020, Geometry=0x0040, Active = 0x0080, Name=0x0100 }; signals: void windowEvent( TQWSWindow *w, TQWSServer::WindowEvent e ); #ifndef TQT_NO_COP void newChannel( const TQString& channel); void removedChannel(const TQString& channel); #endif private: #ifndef TQT_NO_COP static void sendTQCopEvent( TQWSClient *c, const TQCString &ch, const TQCString &msg, const TQByteArray &data, bool response = FALSE ); #endif void move_region( const TQWSRegionMoveCommand * ); void set_altitude( const TQWSChangeAltitudeCommand * ); void request_focus( const TQWSRequestFocusCommand * ); void request_region( int, TQRegion ); void destroy_region( const TQWSRegionDestroyCommand * ); void name_region( const TQWSRegionNameCommand * ); void set_identity( const TQWSIdentifyCommand * ); #ifndef TQT_NO_QWS_IM void set_micro_focus( const TQWSSetMicroFocusCommand * ); void reset_im( const TQWSResetIMCommand * ); static void sendKeyEventUnfiltered(int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat); #endif static void emergency_cleanup(); static TQColor *bgColor; static TQImage *bgImage; void sendMaxWindowRectEvents(); #ifndef TQT_NO_QWS_MULTIPROCESS void newConnection( int socket ); #endif void invokeIdentify( const TQWSIdentifyCommand *cmd, TQWSClient *client ); void invokeCreate( TQWSCreateCommand *cmd, TQWSClient *client ); void invokeRegionName( const TQWSRegionNameCommand *cmd, TQWSClient *client ); void invokeRegion( TQWSRegionCommand *cmd, TQWSClient *client ); void invokeRegionMove( const TQWSRegionMoveCommand *cmd, TQWSClient *client ); void invokeRegionDestroy( const TQWSRegionDestroyCommand *cmd, TQWSClient *client ); void invokeSetAltitude( const TQWSChangeAltitudeCommand *cmd, TQWSClient *client ); #ifndef TQT_NO_QWS_PROPERTIES void invokeAddProperty( TQWSAddPropertyCommand *cmd ); void invokeSetProperty( TQWSSetPropertyCommand *cmd ); void invokeRemoveProperty( TQWSRemovePropertyCommand *cmd ); void invokeGetProperty( TQWSGetPropertyCommand *cmd, TQWSClient *client ); #endif //TQT_NO_QWS_PROPERTIES void invokeSetSelectionOwner( TQWSSetSelectionOwnerCommand *cmd ); void invokeConvertSelection( TQWSConvertSelectionCommand *cmd ); void invokeSetFocus( const TQWSRequestFocusCommand *cmd, TQWSClient *client ); void initIO(); void setFocus( TQWSWindow*, bool gain ); #ifndef TQT_NO_QWS_CURSOR void invokeDefineCursor( TQWSDefineCursorCommand *cmd, TQWSClient *client ); void invokeSelectCursor( TQWSSelectCursorCommand *cmd, TQWSClient *client ); #endif void invokeGrabMouse( TQWSGrabMouseCommand *cmd, TQWSClient *client ); void invokeGrabKeyboard( TQWSGrabKeyboardCommand *cmd, TQWSClient *client ); #ifndef TQT_NO_SOUND void invokePlaySound( TQWSPlaySoundCommand *cmd, TQWSClient *client ); #endif #ifndef TQT_NO_COP void invokeRegisterChannel( TQWSQCopRegisterChannelCommand *cmd, TQWSClient *client ); void invokeTQCopSend( TQWSQCopSendCommand *cmd, TQWSClient *client ); #endif void invokeRepaintRegion( TQWSRepaintRegionCommand *cmd, TQWSClient *client ); #ifndef TQT_NO_QWS_IM void invokeSetMicroFocus( const TQWSSetMicroFocusCommand *cmd, TQWSClient *client ); void invokeResetIM( const TQWSResetIMCommand *cmd, TQWSClient *client ); #endif TQWSMouseHandler* newMouseHandler(const TQString& spec); void openDisplay(); void closeDisplay(); void showCursor(); void hideCursor(); void initializeCursor(); void paintServerRegion(); void paintBackground( const TQRegion & ); void clearRegion( const TQRegion &r, const TQColor &c ); void refreshBackground(); void resetGfx(); private slots: #ifndef TQT_NO_QWS_MULTIPROCESS void clientClosed(); void doClient(); void deleteWindowsLater(); #endif void screenSaverWake(); void screenSaverSleep(); void screenSaverTimeout(); private: void disconnectClient( TQWSClient * ); void screenSave(int level); void doClient( TQWSClient * ); typedef TQMapIterator<int,TQWSClient*> ClientIterator; typedef TQMap<int,TQWSClient*> ClientMap; void releaseMouse(TQWSWindow* w); void releaseKeyboard(TQWSWindow* w); void updateClientCursorPos(); uchar* sharedram; int ramlen; TQGfx *gfx; ClientMap client; #ifndef TQT_NO_QWS_PROPERTIES TQWSPropertyManager propertyManager; #endif struct SelectionOwner { int windowid; struct Time { void set( int h, int m, int s, int s2 ) { hour = h; minute = m; sec = s; ms = s2; } int hour, minute, sec, ms; } time; } selectionOwner; TQTime timer; TQWSServerData* d; int* screensaverinterval; TQWSWindow *focusw; TQWSWindow *mouseGrabber; bool mouseGrabbing; int swidth, sheight, sdepth; #ifndef TQT_NO_QWS_CURSOR bool haveviscurs; TQWSCursor *cursor; // cursor currently shown TQWSCursor *nextCursor; // cursor to show once grabbing is off #endif TQRegion screenRegion; // the entire display region TQRegion serverRegion; TQRegion dirtyBackground; bool disablePainting; TQPtrList<TQWSMouseHandler> mousehandlers; #ifndef TQT_NO_QWS_KEYBOARD TQPtrList<TQWSKeyboardHandler> keyboardhandlers; #endif TQPtrList<TQWSCommandStruct> commandQueue; TQWSRegionManager *rgnMan; // Window management TQPtrList<TQWSWindow> windows; // first=topmost TQWSWindow* newWindow(int id, TQWSClient* client); TQWSWindow* findWindow(int windowid, TQWSClient* client); void moveWindowRegion(TQWSWindow*, int dx, int dy ); TQRegion setWindowRegion(TQWSWindow*, TQRegion r ); void raiseWindow( TQWSWindow *, int = 0); void lowerWindow( TQWSWindow *, int = -1); void exposeRegion( TQRegion , int index = 0 ); void notifyModified( TQWSWindow *active = 0 ); void syncRegions( TQWSWindow *active = 0 ); void setCursor(TQWSCursor *curs); // multimedia #ifndef TQT_NO_SOUND TQWSSoundServer *soundserver; #endif #ifndef TQT_NO_COP TQMap<TQString, TQPtrList<TQWSClient> > channels; #endif #ifndef TQT_NO_QWS_IM bool microF; int microX; int microY; #endif }; extern TQWSServer *qwsServer; //there can be only one #ifndef TQT_NO_QWS_IM class TQWSInputMethod { public: TQWSInputMethod(); virtual ~TQWSInputMethod(); virtual bool filter(int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat)=0; virtual void reset(); virtual void setMicroFocus( int x, int y ); virtual void setFont( const TQFont& ); protected: void sendIMEvent( TQWSServer::IMState, const TQString& txt, int cpos, int selLen = 0 ); //void sendKeyEvent( int unicode, int keycode, int modifiers, // bool isPress, bool autoRepeat); }; inline void TQWSInputMethod::sendIMEvent( TQWSServer::IMState state, const TQString &txt, int cpos, int selLen ) { qwsServer->sendIMEvent( state, txt, cpos, selLen ); } #endif /********************************************************************* * * Class: TQWSClient * *********************************************************************/ struct TQWSMouseEvent; typedef TQMap<int, TQWSCursor*> TQWSCursorMap; class TQWSClient : public TQObject { TQ_OBJECT public: TQWSClient( TQObject* parent, int socket, int id ); ~TQWSClient(); int socket() const; void setIdentity(const TQString&); TQString identity() const { return id; } void sendEvent( TQWSEvent* event ); void sendConnectedEvent( const char *display_spec ); void sendMaxWindowRectEvent(); void sendRegionModifyEvent( int winid, TQRegion exposed, bool ack ); void sendFocusEvent( int winid, bool get ); void sendPropertyNotifyEvent( int property, int state ); void sendPropertyReplyEvent( int property, int len, char *data ); void sendSelectionClearEvent( int windowid ); void sendSelectionRequestEvent( TQWSConvertSelectionCommand *cmd, int windowid ); TQWSCommand* readMoreCommand(); int clientId() const { return cid; } TQWSCursorMap cursors; // cursors defined by this client signals: void connectionClosed(); void readyRead(); private slots: void closeHandler(); void errorHandler( int ); private: int s; // XXX csocket->d->socket->socket() is this value #ifndef TQT_NO_QWS_MULTIPROCESS TQWSSocket *csocket; #endif TQWSCommand* command; uint isClosed : 1; TQString id; int cid; }; #endif // TQWINDOWSYSTEM_QWS_H
Copyright © 2007 Trolltech | Trademarks | TQt 3.3.8
|