#include <TnFXApp.h>
In your TnFOX applications you should create a TnFXApp instead of a FX::FXApp to enable the per-thread event loops enhancement TnFOX provides. This permits you to run multiple widget trees across multiple threads concurrently.
In such an environment, appropriate use of FX::FXEventLoop_Static and FX::FXLockHold of the application object is important. The latter only really arises where you use the FX::FXRegistry as returned by reg() as everything else in FXApp can be read and set in a threadsafe fashion (they are pointers only and furthermore rarely change after initialisation).
As the event loop management methods in FXApp now automatically vector through the return from getEventLoop(), you can literally copy & paste your code into its new thread and everything works just fine. create(), destroy() and detach() do the needful depending on what thread calls them. exit() shuts down all event loops and causes the primary loop to exit. It should be a transparent move.
Furthermore as event loops are created on demand automatically, you can litter opens of FX::FXMessageBox or FX::FXExceptionDialog around the place and they shall run in the thread which creates them.
For portable behaviour, you must change your main()
function slightly. The form goes from:
int main(int argc, char *argv[]) { FXProcess myprocess(argc, argv); FXApp myapp("MyApp"); myapp.init(argc, argv); FXMainWindow *mainwnd=new FXMainWindow(&myapp, "My Main Window"); <widgets inside mainwnd> ... myapp.create() return myapp.run(); }
class MyPrimaryLoop : public TnFXAppEventLoop { FXMainWindow *mainwnd; <widgets inside mainwnd> public: MyPrimaryLoop(TnFXApp *app) : TnFXAppEventLoop(app) { } FXint execute(FXApp *app) { mainwnd=new FXMainWindow(app, "My Main Window"); <widgets inside mainwnd> ... mainwnd->show(); app->create(); return app->run(); } // May want to override cleanup() here }; int main(int argc, char *argv[]) { FXProcess myprocess(argc, argv); TnFXApp myapp("MyApp"); myapp.init(argc, argv); MyPrimaryLoop primaryLoop(&myapp); return myapp.run(primaryLoop); }
Signals are a real hash with POSIX threads. Each thread maintains a signal mask which determines which signals it can received but signal handlers are on a per-thread basis. Thus the FOX signal intercept can be called in any thread but it should post an asynchronous message invoking the handler in the correct event loop.
You should probably know something about the implementation so you can correctly diagnose and avoid any issues which may arise. On Windows the implementation is extremely simple as Windows already provides per-thread event queues whereby messages are posted to the thread which created the window. This makes implementation on that platform trivial.
On X11 it gets more complicated as there's one event queue only. Therefore the primary thread must fetch X11 events, determine which event loop they belong to and post them to that loop for handling. Obviously to prevent deadlock the primary dispatch thread must always be available. Also because of the event loops in each thread being totally different implementations, internally TnFXApp subclasses FX::FXEventLoop twice - one for the the main X11 dispatch loop and the other for all other threads. You can always retrieve the event loop which quits the application using FXEventLoop::primaryLoop().
Watches on file descriptors are not performed the same way on Windows and X11. On Windows, the event loop local list is monitored as it monitors the thread message queue so all is well. On X11 it's much more complex as POSIX won't let you wait on a wait condition and kernel handles simultaneously, so the primary loop coalesces all the file descriptors and posts asynchronous messages when they signal.
Public Types | |
enum | { ID_QUIT, ID_DUMP, ID_HOVER, ID_LAST } |
Public Member Functions | |
TnFXApp (const FXString &name="Application", const FXString &vendor="FoxDefault") | |
virtual FXEventLoop * | getEventLoop () const |
long | onCmdQuit (FXObject *, FXSelector, void *) |
virtual void | create () |
virtual void | destroy () |
virtual void | detach () |
virtual void | init (int &argc, char **argv, bool connect=TRUE) |
virtual void | exit (FXint code=0) |
virtual void | lock () |
virtual void | unlock () |
FXint | run (TnFXAppEventLoop &primaryLoop) |
QMUTEX_INLINEP bool | isLocked () const |
QMUTEX_INLINEP FXbool | locked () const |
QMUTEX_INLINEP FXuint | spinCount () const |
QMUTEX_INLINEP void | setSpinCount (FXuint c) |
QMUTEX_INLINEP bool | tryLock () |
QMUTEX_INLINEP FXbool | trylock () |
long | onCmdDump (FXObject *, FXSelector, void *) |
long | onCmdHover (FXObject *, FXSelector, void *) |
const FXString & | getAppName () const |
const FXString & | getVendorName () const |
bool | openDisplay (const FXchar *dpyname=NULL) |
bool | closeDisplay () |
void * | getDisplay () const |
bool | isInitialized () const |
FXint | getArgc () const |
const FXchar *const * | getArgv () const |
bool | hasInputMethod () const |
FXVisual * | getDefaultVisual () const |
void | setDefaultVisual (FXVisual *vis) |
FXVisual * | getMonoVisual () const |
FXRootWindow * | getRootWindow () const |
void | setRootWindow (FXRootWindow *rt) |
FXWindow * | getFocusWindow () const |
FXWindow * | getCursorWindow () const |
FXWindow * | getActiveWindow () const |
FXPopup * | getPopupWindow () const |
FXWindow * | findWindowWithId (FXID xid) const |
FXWindow * | findWindowAt (FXint rx, FXint ry, FXID window=0) const |
void | addTimeout (FXObject *tgt, FXSelector sel, FXuint ms=1000, void *ptr=NULL) |
void | removeTimeout (FXObject *tgt, FXSelector sel) |
bool | hasTimeout (FXObject *tgt, FXSelector sel) const |
FXuint | remainingTimeout (FXObject *tgt, FXSelector sel) const |
void | handleTimeouts () |
void | addChore (FXObject *tgt, FXSelector sel, void *ptr=NULL) |
void | removeChore (FXObject *tgt, FXSelector sel) |
FXbool | hasChore (FXObject *tgt, FXSelector sel) const |
void | addSignal (FXint sig, FXObject *tgt, FXSelector sel, FXbool immediate=FALSE, FXuint flags=0) |
void | removeSignal (FXint sig) |
bool | addInput (FXInputHandle fd, FXuint mode, FXObject *tgt, FXSelector sel) |
bool | removeInput (FXInputHandle fd, FXuint mode) |
bool | getKeyState (FXuint keysym) const |
bool | peekEvent () |
bool | runOneEvent (bool blocking=true) |
FXint | run () |
FXint | runUntil (FXuint &condition) |
FXint | runWhileEvents () |
FXint | runModalWhileEvents (FXWindow *window=NULL) |
FXint | runModal () |
FXint | runModalFor (FXWindow *window) |
FXint | runModalWhileShown (FXWindow *window) |
FXint | runPopup (FXWindow *window) |
FXbool | isModal (FXWindow *window) const |
FXWindow * | getModalWindow () const |
FXModality | getModality () const |
void | stop (FXint value=0) |
void | stopModal (FXWindow *window, FXint value=0) |
void | stopModal (FXint value=0) |
void | forceRefresh () |
void | refresh () |
void | flush (bool sync=false) |
void | repaint () |
FXRegistry & | reg () |
FXDragType | registerDragType (const FXString &name) const |
FXString | getDragTypeName (FXDragType type) const |
FXWindow * | getDragWindow () const |
void | beep () |
void | errorBeep () |
void | setNormalFont (FXFont *font) |
FXFont * | getNormalFont () const |
void | beginWaitCursor () |
void | endWaitCursor () |
void | setWaitCursor (FXCursor *cur) |
FXCursor * | getWaitCursor () const |
FXCursor * | getDefaultCursor (FXDefaultCursor which) const |
void | setDefaultCursor (FXDefaultCursor which, FXCursor *cur) |
FXbool | writeWindow (FXStream &store, FXWindow *window) |
FXbool | readWindow (FXStream &store, FXWindow *&window, FXWindow *father, FXWindow *owner) |
FXuint | getTypingSpeed () const |
FXuint | getClickSpeed () const |
FXuint | getScrollSpeed () const |
FXuint | getScrollDelay () const |
FXuint | getBlinkSpeed () const |
FXuint | getAnimSpeed () const |
FXuint | getMenuPause () const |
FXuint | getTooltipPause () const |
FXuint | getTooltipTime () const |
FXint | getDragDelta () const |
FXint | getWheelLines () const |
FXint | getScrollBarSize () const |
void | setTypingSpeed (FXuint speed) |
void | setClickSpeed (FXuint speed) |
void | setScrollSpeed (FXuint speed) |
void | setScrollDelay (FXuint delay) |
void | setBlinkSpeed (FXuint speed) |
void | setAnimSpeed (FXuint speed) |
void | setMenuPause (FXuint pause) |
void | setTooltipPause (FXuint pause) |
void | setTooltipTime (FXuint time) |
void | setDragDelta (FXint delta) |
void | setWheelLines (FXint lines) |
void | setScrollBarSize (FXint size) |
FXColor | getBorderColor () const |
FXColor | getBaseColor () const |
FXColor | getHiliteColor () const |
FXColor | getShadowColor () const |
FXColor | getBackColor () const |
FXColor | getForeColor () const |
FXColor | getSelforeColor () const |
FXColor | getSelbackColor () const |
FXColor | getTipforeColor () const |
FXColor | getTipbackColor () const |
FXColor | getSelMenuTextColor () const |
FXColor | getSelMenuBackColor () const |
void | setBorderColor (FXColor color) |
void | setBaseColor (FXColor color) |
void | setHiliteColor (FXColor color) |
void | setShadowColor (FXColor color) |
void | setBackColor (FXColor color) |
void | setForeColor (FXColor color) |
void | setSelforeColor (FXColor color) |
void | setSelbackColor (FXColor color) |
void | setTipforeColor (FXColor color) |
void | setTipbackColor (FXColor color) |
void | setSelMenuTextColor (FXColor color) |
void | setSelMenuBackColor (FXColor color) |
FXuint | getWindowCount () const |
virtual void | save (FXStream &store) const |
virtual void | load (FXStream &store) |
void | dumpWidgets () const |
void | addDestructionUpcall (void(*func)(void *), void *data) |
void | removeDestructionUpcall (void(*func)(void *), void *data) |
virtual long | onDefault (FXObject *, FXSelector, void *) |
const FXchar * | getClassName () const |
bool | isMemberOf (const FXMetaClass *metaclass) const |
virtual long | tryHandle (FXObject *sender, FXSelector sel, void *ptr) |
QTransString | tr (const char *text, const char *hint=0) |
virtual void * | getPythonObject () const |
virtual void | decouplePythonObject () const |
Static Public Member Functions | |
static TnFXApp * | instance () |
static QMUTEX_INLINEP bool | setMutexDebugYield (bool v) |
static FXEventLoop * | getPrimaryEventLoop () |
static FXlong | time () |
Static Public Attributes | |
static const FXuchar * | copyright |
Protected Member Functions | |
virtual bool | getNextEvent (FXRawEvent &ev, bool blocking=true) |
virtual bool | dispatchEvent (FXRawEvent &ev) |
Protected Attributes | |
FXEventLoop * | eventLoop |
anonymous enum [inherited] |
FX::TnFXApp::TnFXApp | ( | const FXString & | name = "Application" , |
|
const FXString & | vendor = "FoxDefault" | |||
) |
Constructs the application object.
virtual FXEventLoop* FX::TnFXApp::getEventLoop | ( | ) | const [virtual] |
static TnFXApp* FX::TnFXApp::instance | ( | ) | [inline, static] |
virtual void FX::TnFXApp::create | ( | ) | [virtual] |
virtual void FX::TnFXApp::destroy | ( | ) | [virtual] |
virtual void FX::TnFXApp::detach | ( | ) | [virtual] |
virtual void FX::TnFXApp::init | ( | int & | argc, | |
char ** | argv, | |||
bool | connect = TRUE | |||
) | [virtual] |
Initialize application. Parses and removes common command line arguments, reads the registry. Finally, if connect is TRUE, it opens the display.
Reimplemented from FX::FXApp.
virtual void FX::TnFXApp::exit | ( | FXint | code = 0 |
) | [virtual] |
Threadsafe way to immediately end the application. Closes down all event loops and returns back into main() returning code
Reimplemented from FX::FXApp.
virtual void FX::TnFXApp::lock | ( | ) | [virtual] |
If free, claims the mutex and returns immediately. If not, waits until the current holder releases it and then claims it before returning
Reimplemented from FX::QMutex.
virtual void FX::TnFXApp::unlock | ( | ) | [virtual] |
Releases the mutex for other to claim. Must be called as many times as lock() is called
Reimplemented from FX::QMutex.
FXint FX::TnFXApp::run | ( | TnFXAppEventLoop & | primaryLoop | ) |
Runs the application, returning when all event loops have terminated or exit() was called
QMUTEX_INLINEP bool FX::QMutex::isLocked | ( | ) | const [inherited] |
Returns if the mutex is locked.
QMUTEX_INLINEP FXuint FX::QMutex::spinCount | ( | ) | const [inherited] |
Returns the current spin count.
QMUTEX_INLINEP void FX::QMutex::setSpinCount | ( | FXuint | c | ) | [inherited] |
Sets the spin count.
bool FX::QMutex::tryLock | ( | ) | [inherited] |
Claims the mutex if free and returns true. If already taken, immediately returns false without waiting
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
For FOX compatibility
References FX::QThread::id().
QMUTEX_INLINEP bool FX::QMutex::setMutexDebugYield | ( | bool | v | ) | [static, inherited] |
Sets the debugging flag for mutexs in this process. See the main description above
virtual bool FX::FXApp::getNextEvent | ( | FXRawEvent & | ev, | |
bool | blocking = true | |||
) | [protected, virtual, inherited] |
Return TRUE when new raw event is available.
virtual bool FX::FXApp::dispatchEvent | ( | FXRawEvent & | ev | ) | [protected, virtual, inherited] |
Dispatch raw event.
const FXString& FX::FXApp::getAppName | ( | ) | const [inline, inherited] |
Get application name.
const FXString& FX::FXApp::getVendorName | ( | ) | const [inline, inherited] |
Get vendor name.
bool FX::FXApp::openDisplay | ( | const FXchar * | dpyname = NULL |
) | [inherited] |
Connection to display; this is called by init().
bool FX::FXApp::closeDisplay | ( | ) | [inherited] |
Close connection to the display.
void* FX::FXApp::getDisplay | ( | ) | const [inline, inherited] |
Return pointer.
bool FX::FXApp::isInitialized | ( | ) | const [inline, inherited] |
Is application initialized.
FXint FX::FXApp::getArgc | ( | ) | const [inline, inherited] |
Get argument count.
const FXchar* const* FX::FXApp::getArgv | ( | ) | const [inline, inherited] |
Get argument vector.
static FXEventLoop* FX::FXApp::getPrimaryEventLoop | ( | ) | [static, inherited] |
Get primary event loop of the process.
bool FX::FXApp::hasInputMethod | ( | ) | const [inherited] |
Return true if input method support.
FXVisual* FX::FXApp::getDefaultVisual | ( | ) | const [inline, inherited] |
Get default visual.
void FX::FXApp::setDefaultVisual | ( | FXVisual * | vis | ) | [inherited] |
Change default visual.
FXVisual* FX::FXApp::getMonoVisual | ( | ) | const [inline, inherited] |
Get monochrome visual.
FXRootWindow* FX::FXApp::getRootWindow | ( | ) | const [inline, inherited] |
Get root Window.
void FX::FXApp::setRootWindow | ( | FXRootWindow * | rt | ) | [inline, inherited] |
Set root Window.
FXWindow* FX::FXApp::getFocusWindow | ( | ) | const [inline, inherited] |
Return window at the end of the focus chain.
FXWindow* FX::FXApp::getCursorWindow | ( | ) | const [inline, inherited] |
Get the window under the cursor, if any.
FXWindow* FX::FXApp::getActiveWindow | ( | ) | const [inline, inherited] |
Get the active toplevel window, if any.
FXPopup* FX::FXApp::getPopupWindow | ( | ) | const [inline, inherited] |
Get current popup window, if any.
FXWindow* FX::FXApp::findWindowWithId | ( | FXID | xid | ) | const [inline, inherited] |
Find window from id.
FXWindow* FX::FXApp::findWindowAt | ( | FXint | rx, | |
FXint | ry, | |||
FXID | window = 0 | |||
) | const [inline, inherited] |
Find window from root x,y, starting from given window.
void FX::FXApp::addTimeout | ( | FXObject * | tgt, | |
FXSelector | sel, | |||
FXuint | ms = 1000 , |
|||
void * | ptr = NULL | |||
) | [inline, inherited] |
Add timeout message to be sent to target object in ms milliseconds; the timer fires only once after the interval expires. The void* ptr is user data which will be passed into the void* ptr of the message handler. If a timer with the same target and message already exists, it will be rescheduled.
void FX::FXApp::removeTimeout | ( | FXObject * | tgt, | |
FXSelector | sel | |||
) | [inline, inherited] |
Remove timeout identified by tgt and sel.
bool FX::FXApp::hasTimeout | ( | FXObject * | tgt, | |
FXSelector | sel | |||
) | const [inline, inherited] |
Return TRUE if given timeout has been set
FXuint FX::FXApp::remainingTimeout | ( | FXObject * | tgt, | |
FXSelector | sel | |||
) | const [inline, inherited] |
Return, in ms, the time remaining until the given timer fires. If the timer is past due, 0 is returned. If there is no such timer, infinity (UINT_MAX) is returned.
void FX::FXApp::handleTimeouts | ( | ) | [inline, inherited] |
Process any timeouts due at this time.
void FX::FXApp::addChore | ( | FXObject * | tgt, | |
FXSelector | sel, | |||
void * | ptr = NULL | |||
) | [inline, inherited] |
Add a idle processing message to be sent to target object when the system becomes idle, i.e. there are no events to be processed. The void* ptr is user data which will be passed into the void* ptr of the message handler. If a chore with the same target and message already exists, it will be rescheduled.
void FX::FXApp::removeChore | ( | FXObject * | tgt, | |
FXSelector | sel | |||
) | [inline, inherited] |
Remove idle processing message identified by tgt and sel.
FXbool FX::FXApp::hasChore | ( | FXObject * | tgt, | |
FXSelector | sel | |||
) | const [inline, inherited] |
Return TRUE if given chore has been set
void FX::FXApp::addSignal | ( | FXint | sig, | |
FXObject * | tgt, | |||
FXSelector | sel, | |||
FXbool | immediate = FALSE , |
|||
FXuint | flags = 0 | |||
) | [inline, inherited] |
Add signal processing message to be sent to target object when the signal sig is raised; flags are to be set as per POSIX definitions. When immediate is TRUE, the message will be sent to the target right away; this should be used with extreme care as the application is interrupted at an unknown point in its execution.
void FX::FXApp::removeSignal | ( | FXint | sig | ) | [inline, inherited] |
Remove signal message for signal sig.
bool FX::FXApp::addInput | ( | FXInputHandle | fd, | |
FXuint | mode, | |||
FXObject * | tgt, | |||
FXSelector | sel | |||
) | [inline, inherited] |
Add a file descriptor fd to be watched for activity as determined by mode, where mode is a bitwise OR (INPUT_READ, INPUT_WRITE, INPUT_EXCEPT). A message of type SEL_IO_READ, SEL_IO_WRITE, or SEL_IO_EXCEPT will be sent to the target when the specified activity is detected on the file descriptor.
bool FX::FXApp::removeInput | ( | FXInputHandle | fd, | |
FXuint | mode | |||
) | [inline, inherited] |
Remove input message and target object for the specified file descriptor and mode, which is a bitwise OR of (INPUT_READ, INPUT_WRITE, INPUT_EXCEPT).
bool FX::FXApp::getKeyState | ( | FXuint | keysym | ) | const [inherited] |
Return key state of given key.
bool FX::FXApp::peekEvent | ( | ) | [inline, inherited] |
Peek to determine if there's an event.
bool FX::FXApp::runOneEvent | ( | bool | blocking = true |
) | [inline, inherited] |
Perform one event dispatch; return true if event was dispatched.
FXint FX::FXApp::run | ( | ) | [inline, inherited] |
FXint FX::FXApp::runUntil | ( | FXuint & | condition | ) | [inline, inherited] |
Run an event loop till some flag becomes non-zero, and then return.
FXint FX::FXApp::runWhileEvents | ( | ) | [inline, inherited] |
Run event loop while events are available, non-modally. Return when no more events, timers, or chores are outstanding.
FXint FX::FXApp::runModalWhileEvents | ( | FXWindow * | window = NULL |
) | [inline, inherited] |
Run event loop while there are events are available in the queue. Returns 1 when all events in the queue have been handled, and 0 when the event loop was terminated due to stop() or stopModal(). Except for the modal window and its children, user input to all windows is blocked; if the modal window is NULL, all user input is blocked.
FXint FX::FXApp::runModal | ( | ) | [inline, inherited] |
Run modal event loop, blocking keyboard and mouse events to all windows until stopModal is called.
FXint FX::FXApp::runModalFor | ( | FXWindow * | window | ) | [inline, inherited] |
Run a modal event loop for the given window, until stop() or stopModal() is called. Except for the modal window and its children, user input to all windows is blocked; if the modal window is NULL all user input is blocked.
FXint FX::FXApp::runModalWhileShown | ( | FXWindow * | window | ) | [inline, inherited] |
Run modal while window is shown, or until stop() or stopModal() is called. Except for the modal window and its children, user input to all windows is blocked; if the modal window is NULL all user input is blocked.
FXint FX::FXApp::runPopup | ( | FXWindow * | window | ) | [inline, inherited] |
Run popup menu while shown, until stop() or stopModal() is called. Also returns when entering previous cascading popup menu.
FXbool FX::FXApp::isModal | ( | FXWindow * | window | ) | const [inline, inherited] |
True if the window is modal.
FXWindow* FX::FXApp::getModalWindow | ( | ) | const [inline, inherited] |
Return window of current modal loop.
FXModality FX::FXApp::getModality | ( | ) | const [inline, inherited] |
Return mode of current modal loop.
void FX::FXApp::stop | ( | FXint | value = 0 |
) | [inline, inherited] |
Terminate the outermost event loop, and all inner modal loops; All more deeper nested event loops will be terminated with code equal to 0, while the outermost event loop will return code equal to value.
void FX::FXApp::stopModal | ( | FXWindow * | window, | |
FXint | value = 0 | |||
) | [inline, inherited] |
Break out of the matching modal loop, returning code equal to value. All deeper nested event loops are terminated with code equal to 0.
void FX::FXApp::stopModal | ( | FXint | value = 0 |
) | [inline, inherited] |
Break out of the innermost modal loop, returning code equal to value.
void FX::FXApp::forceRefresh | ( | ) | [inline, inherited] |
Force GUI refresh.
void FX::FXApp::refresh | ( | ) | [inline, inherited] |
Schedule a refresh.
void FX::FXApp::flush | ( | bool | sync = false |
) | [inline, inherited] |
Flush pending repaints.
void FX::FXApp::repaint | ( | ) | [inline, inherited] |
Paint all windows marked for repainting. On return all the applications windows have been painted.
FXRegistry& FX::FXApp::reg | ( | ) | [inline, inherited] |
Return a reference to the registry. The registry keeps settings and configuration information for an application, which are automatically loaded when the application starts up, and saved when the application terminates.
FXDragType FX::FXApp::registerDragType | ( | const FXString & | name | ) | const [inherited] |
Register new DND type.
FXString FX::FXApp::getDragTypeName | ( | FXDragType | type | ) | const [inherited] |
Get drag type name.
FXWindow* FX::FXApp::getDragWindow | ( | ) | const [inline, inherited] |
Return drag window if a drag operation is in progress.
void FX::FXApp::beep | ( | ) | [inherited] |
Beep.
void FX::FXApp::errorBeep | ( | ) | [inherited] |
Error beep.
static FXlong FX::FXApp::time | ( | ) | [static, inherited] |
Return time in nanoseconds since Epoch (Jan 1, 1970).
void FX::FXApp::setNormalFont | ( | FXFont * | font | ) | [inherited] |
Change default font.
FXFont* FX::FXApp::getNormalFont | ( | ) | const [inline, inherited] |
Return default font.
void FX::FXApp::beginWaitCursor | ( | ) | [inherited] |
Begin of wait-cursor block; wait-cursor blocks may be nested.
void FX::FXApp::endWaitCursor | ( | ) | [inherited] |
End of wait-cursor block.
void FX::FXApp::setWaitCursor | ( | FXCursor * | cur | ) | [inherited] |
Change to a new wait cursor.
FXCursor* FX::FXApp::getWaitCursor | ( | ) | const [inline, inherited] |
Return current wait cursor.
FXCursor* FX::FXApp::getDefaultCursor | ( | FXDefaultCursor | which | ) | const [inline, inherited] |
Obtain a default cursor.
void FX::FXApp::setDefaultCursor | ( | FXDefaultCursor | which, | |
FXCursor * | cur | |||
) | [inherited] |
Change default cursor.
Write a window and its children, and all resources reachable from this window, into the stream store. (EXPERIMENTAL!)
FXbool FX::FXApp::readWindow | ( | FXStream & | store, | |
FXWindow *& | window, | |||
FXWindow * | father, | |||
FXWindow * | owner | |||
) | [inherited] |
Read a window and its children from the stream store, and append it under father; note it is initially not created yet. (EXPERIMENTAL!)
FXuint FX::FXApp::getTypingSpeed | ( | ) | const [inline, inherited] |
Return message translator.
Change message translator. The new translator will be owned by FXApp. Obtain application-wide settings
void FX::FXApp::setTypingSpeed | ( | FXuint | speed | ) | [inherited] |
Change application-wide settings.
FXColor FX::FXApp::getBorderColor | ( | ) | const [inline, inherited] |
Obtain default colors.
void FX::FXApp::setBorderColor | ( | FXColor | color | ) | [inherited] |
Change default colors.
FXuint FX::FXApp::getWindowCount | ( | ) | const [inline, inherited] |
Get number of existing windows.
virtual void FX::FXApp::save | ( | FXStream & | store | ) | const [virtual, inherited] |
virtual void FX::FXApp::load | ( | FXStream & | store | ) | [virtual, inherited] |
void FX::FXApp::dumpWidgets | ( | ) | const [inherited] |
Dump widget information.
void FX::FXApp::addDestructionUpcall | ( | void(*)(void *) | func, | |
void * | data | |||
) | [inherited] |
Add a destruction upcall.
void FX::FXApp::removeDestructionUpcall | ( | void(*)(void *) | func, | |
void * | data | |||
) | [inherited] |
Remove a destruction upcall.
virtual long FX::FXObject::onDefault | ( | FXObject * | , | |
FXSelector | , | |||
void * | ||||
) | [virtual, inherited] |
Called for unhandled messages.
Reimplemented in FX::FXDelegator, FX::FXGLViewer, FX::FXMDIChild, and FX::FXMDIClient.
const FXchar* FX::FXObject::getClassName | ( | ) | const [inherited] |
Get class name of some object.
bool FX::FXObject::isMemberOf | ( | const FXMetaClass * | metaclass | ) | const [inherited] |
Check if object is member of metaclass.
virtual long FX::FXObject::tryHandle | ( | FXObject * | sender, | |
FXSelector | sel, | |||
void * | ptr | |||
) | [virtual, inherited] |
Try handle message safely.
QTransString FX::FXObject::tr | ( | const char * | text, | |
const char * | hint = 0 | |||
) | [inherited] |
Returns a human translated version of the text to the locale language (warning: uses a virtual method call, so can't use before construction)
virtual void* FX::FXObject::getPythonObject | ( | ) | const [inline, virtual, inherited] |
Returns the python object representing this instance (if created in python).
virtual void FX::FXObject::decouplePythonObject | ( | ) | const [inline, virtual, inherited] |
Causes decoupling of python object from this object (deletes self).
const FXuchar* FX::FXApp::copyright [static, inherited] |
Information.