Class Fox::FXApp

In: | FXApp.rb ../lib/fox/iterators.rb
Parent: | FXObject

Application Object

# Events

The FXApp object itself doesn't have a designated message target like other FOX objects, but it can send messages to objects for a few special events.

Timers
  When a timeout event is registered with the application using the addTimeout method, a `SEL_TIMEOUT` message is sent to the message target.
Chores
  When a chore event is registered with the application using the addChore method, a `SEL_CHORE` message is sent to the message target.
Inputs
  When an input event is registered with the application using the addInput method, a `SEL_IO_READ`, `SEL_IO_WRITE` or `SEL_IO_EXCEPT` message may be sent to the message target.
Signals
  When a signal handler object is registered with the application using the addSignal method, a `SEL_SIGNAL` message may be sent to the message target.

# File input modes for addInput

`INPUT_NONE`: | inactive
`INPUT_READ`: | read input fd
`INPUT_WRITE`: | write input fd
`INPUT_EXCEPT`: | except input fd

# All ways of being modal

`MODAL_FOR_NONE`: | Non modal event loop (dispatch normally)
`MODAL_FOR_WINDOW`: | Modal dialog (beep if outside of modal dialog)
`MODAL_FOR_POPUP`: | Modal for popup (always dispatch to popup)

# Default cursors provided by the application

These constants symbolically represent the different cursor shapes used in FOX applications, and can be used as the which arguments for getDefaultCursor and setDefaultCursor.

`DEF_ARROW_CURSOR`: | Arrow cursor
`DEF_RARROW_CURSOR`: | Reverse arrow cursor
`DEF_TEXT_CURSOR`: | Text cursor
`DEF_HSPLIT_CURSOR`: | Horizontal split cursor
`DEF_VSPLIT_CURSOR`: | Vertical split cursor
`DEF_XSPLIT_CURSOR`: | Cross split cursor
`DEF_SWATCH_CURSOR`: | Color swatch drag cursor
`DEF_MOVE_CURSOR`: | Move cursor
`DEF_DRAGH_CURSOR`: | Resize horizontal edge
`DEF_DRAGV_CURSOR`: | Resize vertical edge
`DEF_DRAGTL_CURSOR`: | Resize upper-leftcorner
`DEF_DRAGBR_CURSOR`: | Resize bottom-right corner
`DEF_DRAGTR_CURSOR`: | Resize upper-right corner
`DEF_DRAGBL_CURSOR`: | Resize bottom-left corner
`DEF_DNDSTOP_CURSOR`: | Drag and drop stop
`DEF_DNDCOPY_CURSOR`: | Drag and drop copy
`DEF_DNDMOVE_CURSOR`: | Drag and drop move
`DEF_DNDLINK_CURSOR`: | Drag and drop link
`DEF_CROSSHAIR_CURSOR`: | Cross hair cursor
`DEF_CORNERNE_CURSOR`: | North-east cursor
`DEF_CORNERNW_CURSOR`: | North-west cursor
`DEF_CORNERSE_CURSOR`: | South-east cursor
`DEF_CORNERSW_CURSOR`: | South-west cursor
`DEF_ROTATE_CURSOR`: | Rotate cursor

# Messages identifiers

`ID_QUIT`: | Terminate the application normally
`ID_DUMP`: | Dump the current widget tree

Methods

addChore addInput addSignal addTimeout beep beginWaitCursor closeDisplay copyright create destroy detach disableThreads dumpWidgets enableThreads endWaitCursor exit flush forceRefresh getDefaultCursor getDragTypeName init instance modal? new openDisplay peekEvent refresh registerDragType removeChore removeInput removeSignal removeTimeout repaint run runModal runModalFor runModalWhileShown runOneEvent runPopup runUntil runWhileEvents setDefaultCursor stop stopModal stopModal2 threadsEnabled?

Attributes

animSpeed | [RW] | Animation speed, in milliseconds [Integer]
appName | [R] | Application name [String]
backColor | [RW] | Default background color [FXColor]
baseColor | [RW] | Background color of GUI controls [FXColor]
blinkSpeed | [RW] | Blink speed, in milliseconds [Integer]
borderColor | [RW] | Border color [FXColor]
clickSpeed | [RW] | Click speed, in milliseconds [Integer]
cursorWindow | [R] | The window under the cursor, if any [FXWindow]
defaultVisual | [RW] | Default visual [FXVisual]
dragDelta | [RW] | Drag delta, in pixels [Integer]
focusWindow | [R] | The shell window at the top of the focus chain, if any [FXWindow]
foreColor | [RW] | Default foreground color [FXColor]
hiliteColor | [RW] | Hilite color of GUI controls [FXColor]
mainWindow | [R] | The main window, if any [FXWindow]
menuPause | [RW] | Menu pause, in milliseconds [Integer]
modalModality | [R] | Mode of current modal loop [Integer]
modalWindow | [R] | The window of the current modal loop [FXWindow]
monoVisual | [R] | Monochrome visual [FXVisual]
normalFont | [RW] | Default font [FXFont]
reg | [R] | Registry for this application [FXRegistry]
root | [R] | Root window [FXRootWindow]
scrollDelay | [RW] | Scroll delay time, in milliseconds [Integer]
scrollSpeed | [RW] | Scroll speed, in milliseconds [Integer]
selbackColor | [RW] | Default background color for selected objects [FXColor]
selforeColor | [RW] | Default foreground color for selected objects [FXColor]
shadowColor | [RW] | Shadow color of GUI controls [FXColor]
sleepTime | [RW] | Amount of time (in milliseconds) to yield to Ruby's thread scheduler [Integer]
tipbackColor | [RW] | Default background color for tooltips [FXColor]
tipforeColor | [RW] | Default foreground color for tooltips [FXColor]
tooltipPause | [RW] | Tooltip pause, in milliseconds [Integer]
tooltipTime | [RW] | Tooltip time, in milliseconds [Integer]
typingSpeed | [RW] | Typing speed used for the FXIconList, FXList and FXTreeList widgets' lookup features, in milliseconds. Default value is 1000 milliseconds.
vendorName | [R] | Vendor name [String]
waitCursor | [RW] | Wait cursor [FXCursor]
wheelLines | [RW] | Number of wheel lines [Integer]

Public Class methods

copyright()

Copyright notice for library

new(appName = "Application", vendorName = "FoxDefault")

Construct application object; the appName and vendorName strings are used as keys into the registry database for this application's settings

instance()

Return application instance

Public Instance methods

openDisplay(dpyname = ":0")

Connection to display; this is called by init

closeDisplay()

Close connection to the display

addTimeout(ms, tgt, sel)

Add timeout message to be sent to target object in milliseconds; the timer fires only once after the interval expires.

removeTimeout(timer)

Remove timeout, returns `nil`

addChore(tgt, sel)

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.

removeChore(chore)

Remove idle processing message

addSignal(sig, tgt, sel, immediate=false, flags=0)

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 it its execution.

removeSignal(sig)

Remove signal message for signal sig

addInput(fd, mode, tgt, sel)

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.

removeInput(fd, mode)

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`).

create()

Create application's windows

destroy()

Destroy application's windows

detach()

Detach application's windows

peekEvent()

Peek to determine if there's an event

runOneEvent()

Perform one event dispatch

run()

Run the main application event loop until stop is called, and return the exit code passed as argument to stop.

runUntil(condition)

Run an event loop till some flag becomes non-zero

runWhileEvents(window=nil)

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 `nil` all user input is blocked.

runModal()

Run modal event loop, blocking keyboard and mouse events to all windows until stopModal is called.

runModalFor(window)

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 `nil` all user input is blocked.

runModalWhileShown(window)

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 `nil` all user input is blocked.

runPopup(window)

Run popup menu while shown, until stop or stopModal is called. Also returns when entering previous cascading popup menu.

modal?(window)

Returns `true` if the window is modal

stop(value=0)

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.

stopModal(window, value=0)

Break out of the matching modal loop, returning code equal to value. All deeper nested event loops are terminated with code equal to 0.

stopModal2(value=0)

Break out of the innermost modal loop, returning code equal to value.

forceRefresh()

Force GUI refresh

refresh()

Schedule a refresh

flush(sync=false)

Flush pending repaints

repaint()

Paint all windows marked for repainting. On return all the applications windows have been painted.

init(argv, connect=true)

Initialize application. Parses and removes common command line arguments, reads the registry. Finally, if connect is `true`, it opens the display.

exit(code=0)

Exit application. Closes the display and writes the registry.

registerDragType(name)

Register new DND type

getDragTypeName(type)

Get drag type name

beep()

Beep

endWaitCursor()

End the most deeply nested wait-cursor block. See also beginWaitCursor.

getDefaultCursor(which)

Obtain a default cursor

setDefaultCursor(which, cursor)

Change default cursor

dumpWidgets()

Dump widget information

enableThreads()

Enable support for multithreaded applications

disableThreads()

Disable support for multithreaded applications

threadsEnabled?()

Check to see if multithreaded applications are supported

beginWaitCursor() {|| ...}

Changes the default application cursor to an hourglass shape, to provide a visual cue to the user that it's time to wait. To revert the default application cursor to its normal shape, call the endWaitCursor method. For example,

       getApp().beginWaitCursor()
         ... time-consuming operation ...
       getApp().endWaitCursor()

Invocations of beginWaitCursor may be nested, and if so, the call to endWaitCursor is matched with the most recent call to beginWaitCursor.

If an optional code block is provided, endWaitCursor is automatically called after the block terminates, e.g.

       getApp().beginWaitCursor() {
                 ... time-consuming operation ...
         ... endWaitCursor() is called automatically ...
       }