Sophie

Sophie

distrib > Mandriva > 10.0-com > i586 > by-pkgid > af7a4b7f1ee5a4a084c41b9005da5527 > files > 1416

libfox1.1_46-devel-1.1.46-1mdk.i586.rpm

<html>
<head>
<link rel="stylesheet" href="page.css" type="text/css">
<title>fox-toolkit.org - Documentation</title>
</head>
<body bgcolor=#ffffff link=#990033 vlink=#990033 alink=#990033 text=#000000>
<font face='verdana,sans-serif' size=2 >

<!---- TOPIC TITLE WITH LOGO--->
<table border=0 cellpadding= cellspacing=2 width=100% ><tr><td><a href='http://www.fox-toolkit.org/doc.html'><img src='../art/foxlogo_small.jpg' border=0></a></td><td width=100% valign=bottom><font face='verdana,sans-serif' size=2 ><b>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a>
<br><img src='../art/line.gif' width=100% height=1></b></font></td></tr></table>
<p>
<!--- TOPIC TITLE WITH LOGO --->
<!-- Generated by Doxygen 1.3.3 -->
<h1>FXApp.h</h1><div class="fragment"><pre>00001 <span class="comment">/********************************************************************************</span>
00002 <span class="comment">*                                                                               *</span>
00003 <span class="comment">*                     A p p l i c a t i o n   O b j e c t                       *</span>
00004 <span class="comment">*                                                                               *</span>
00005 <span class="comment">*********************************************************************************</span>
00006 <span class="comment">* Copyright (C) 1997,2004 by Jeroen van der Zijp.   All Rights Reserved.        *</span>
00007 <span class="comment">*********************************************************************************</span>
00008 <span class="comment">* This library is free software; you can redistribute it and/or                 *</span>
00009 <span class="comment">* modify it under the terms of the GNU Lesser General Public                    *</span>
00010 <span class="comment">* License as published by the Free Software Foundation; either                  *</span>
00011 <span class="comment">* version 2.1 of the License, or (at your option) any later version.            *</span>
00012 <span class="comment">*                                                                               *</span>
00013 <span class="comment">* This library is distributed in the hope that it will be useful,               *</span>
00014 <span class="comment">* but WITHOUT ANY WARRANTY; without even the implied warranty of                *</span>
00015 <span class="comment">* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU             *</span>
00016 <span class="comment">* Lesser General Public License for more details.                               *</span>
00017 <span class="comment">*                                                                               *</span>
00018 <span class="comment">* You should have received a copy of the GNU Lesser General Public              *</span>
00019 <span class="comment">* License along with this library; if not, write to the Free Software           *</span>
00020 <span class="comment">* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.    *</span>
00021 <span class="comment">*********************************************************************************</span>
00022 <span class="comment">* $Id: FXApp.h,v 1.171 2004/02/08 17:17:33 fox Exp $                            *</span>
00023 <span class="comment">********************************************************************************/</span>
00024 <span class="preprocessor">#ifndef FXAPP_H</span>
00025 <span class="preprocessor"></span><span class="preprocessor">#define FXAPP_H</span>
00026 <span class="preprocessor"></span>
00027 <span class="preprocessor">#ifndef FXOBJECT_H</span>
00028 <span class="preprocessor"></span><span class="preprocessor">#include "FXObject.h"</span>
00029 <span class="preprocessor">#endif</span>
00030 <span class="preprocessor"></span>
00031 <span class="keyword">namespace </span>FX {
00032 
00033 
00034 <span class="comment">// Forward declarations</span>
00035 <span class="keyword">class </span>FXWindow;
00036 <span class="keyword">class </span>FXIcon;
00037 <span class="keyword">class </span>FXBitmap;
00038 <span class="keyword">class </span>FXCursor;
00039 <span class="keyword">class </span>FXRootWindow;
00040 <span class="keyword">class </span>FXMainWindow;
00041 <span class="keyword">class </span>FXPopup;
00042 <span class="keyword">class </span>FXFont;
00043 <span class="keyword">class </span>FXDC;
00044 <span class="keyword">class </span>FXDCWindow;
00045 <span class="keyword">class </span>FXVisual;
00046 <span class="keyword">class </span>FXGLVisual;
00047 <span class="keyword">class </span>FXGLContext;
00048 
00049 
00050 <span class="comment">// Opaque FOX objects</span>
00051 <span class="keyword">struct </span>FXTimer;
00052 <span class="keyword">struct </span>FXChore;
00053 <span class="keyword">struct </span>FXSignal;
00054 <span class="keyword">struct </span>FXRepaint;
00055 <span class="keyword">struct </span>FXInput;
00056 <span class="keyword">struct </span>FXInvocation;
00057 
00058 
00059 <span class="comment"></span>
00060 <span class="comment">/// File input modes for addInput</span>
00061 <span class="comment"></span><span class="keyword">enum</span> <a class="code" href="group__FXApp__0.html#a0">FXInputMode</a> {
00062   <a class="code" href="group__FXApp__0.html#a0a2">INPUT_NONE</a>   = 0,                 <span class="comment">/// Inactive</span>
00063 <span class="comment"></span>  <a class="code" href="group__FXApp__0.html#a0a3">INPUT_READ</a>   = 1,                 <span class="comment">/// Read input fd</span>
<a name="l00064"></a><a class="code" href="group__FXApp__0.html#a0">00064</a> <span class="comment"></span>  <a class="code" href="group__FXApp__0.html#a0a4">INPUT_WRITE</a>  = 2,                 <span class="comment">/// Write input fd</span>
00065 <span class="comment"></span>  <a class="code" href="group__FXApp__0.html#a0a5">INPUT_EXCEPT</a> = 4                  <span class="comment">/// Except input fd</span>
00066 <span class="comment"></span>  };
00067 
00068 <span class="comment"></span>
00069 <span class="comment">/// All ways of being modal</span>
00070 <span class="comment"></span><span class="keyword">enum</span> <a class="code" href="group__FXApp__1.html#a0">FXModality</a> {
00071   <a class="code" href="group__FXApp__1.html#a0a6">MODAL_FOR_NONE</a>,                 <span class="comment">/// Non modal event loop (dispatch normally)</span>
00072 <span class="comment"></span>  <a class="code" href="group__FXApp__1.html#a0a7">MODAL_FOR_WINDOW</a>,               <span class="comment">/// Modal dialog (beep if outside of modal dialog)</span>
00073 <span class="comment"></span>  <a class="code" href="group__FXApp__1.html#a0a8">MODAL_FOR_POPUP</a>                 <span class="comment">/// Modal for popup (always dispatch to popup)</span>
00074 <span class="comment"></span>  };
00075 
00076 <span class="comment"></span>
<a name="l00077"></a><a class="code" href="group__FXApp__1.html#a0">00077</a> <span class="comment">/// Default cursors provided by the application</span>
00078 <span class="comment"></span><span class="keyword">enum</span> <a class="code" href="group__FXApp__2.html#a0">FXDefaultCursor</a> {
00079   <a class="code" href="group__FXApp__2.html#a0a9">DEF_ARROW_CURSOR</a>,                     <span class="comment">/// Arrow cursor</span>
00080 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a10">DEF_RARROW_CURSOR</a>,                    <span class="comment">/// Reverse arrow cursor</span>
00081 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a11">DEF_TEXT_CURSOR</a>,                      <span class="comment">/// Text cursor</span>
00082 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a12">DEF_HSPLIT_CURSOR</a>,                    <span class="comment">/// Horizontal split cursor</span>
00083 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a13">DEF_VSPLIT_CURSOR</a>,                    <span class="comment">/// Vertical split cursor</span>
00084 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a14">DEF_XSPLIT_CURSOR</a>,                    <span class="comment">/// Cross split cursor</span>
00085 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a15">DEF_SWATCH_CURSOR</a>,                    <span class="comment">/// Color swatch drag cursor</span>
00086 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a16">DEF_MOVE_CURSOR</a>,                      <span class="comment">/// Move cursor</span>
00087 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a17">DEF_DRAGH_CURSOR</a>,                     <span class="comment">/// Resize horizontal edge</span>
00088 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a18">DEF_DRAGV_CURSOR</a>,                     <span class="comment">/// Resize vertical edge</span>
<a name="l00089"></a><a class="code" href="group__FXApp__2.html#a0">00089</a> <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a19">DEF_DRAGTL_CURSOR</a>,                    <span class="comment">/// Resize upper-leftcorner</span>
00090 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a20">DEF_DRAGBR_CURSOR</a>=<a class="code" href="group__FXApp__2.html#a0a19">DEF_DRAGTL_CURSOR</a>,  <span class="comment">/// Resize bottom-right corner</span>
00091 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a21">DEF_DRAGTR_CURSOR</a>,                    <span class="comment">/// Resize upper-right corner</span>
00092 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a22">DEF_DRAGBL_CURSOR</a>=<a class="code" href="group__FXApp__2.html#a0a21">DEF_DRAGTR_CURSOR</a>,  <span class="comment">/// Resize bottom-left corner</span>
00093 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a23">DEF_DNDSTOP_CURSOR</a>,                   <span class="comment">/// Drag and drop stop</span>
00094 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a24">DEF_DNDCOPY_CURSOR</a>,                   <span class="comment">/// Drag and drop copy</span>
00095 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a25">DEF_DNDMOVE_CURSOR</a>,                   <span class="comment">/// Drag and drop move</span>
00096 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a26">DEF_DNDLINK_CURSOR</a>,                   <span class="comment">/// Drag and drop link</span>
00097 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a27">DEF_CROSSHAIR_CURSOR</a>,                 <span class="comment">/// Cross hair cursor</span>
00098 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a28">DEF_CORNERNE_CURSOR</a>,                  <span class="comment">/// North-east cursor</span>
00099 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a29">DEF_CORNERNW_CURSOR</a>,                  <span class="comment">/// North-west cursor</span>
00100 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a30">DEF_CORNERSE_CURSOR</a>,                  <span class="comment">/// South-east cursor</span>
00101 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a31">DEF_CORNERSW_CURSOR</a>,                  <span class="comment">/// South-west cursor</span>
00102 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a32">DEF_HELP_CURSOR</a>,                      <span class="comment">/// Help arrow cursor</span>
00103 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a33">DEF_HAND_CURSOR</a>,                      <span class="comment">/// Hand cursor</span>
00104 <span class="comment"></span>  <a class="code" href="group__FXApp__2.html#a0a34">DEF_ROTATE_CURSOR</a>                     <span class="comment">/// Rotate cursor</span>
00105 <span class="comment"></span>  };
00106 
00107 
00108 <span class="comment"></span>
00109 <span class="comment">/// FOX Event</span>
00110 <span class="comment"></span><span class="keyword">struct </span>FXAPI FXEvent {
00111   FXuint      type;           <span class="comment">/// Event type</span>
00112 <span class="comment"></span>  FXuint      time;           <span class="comment">/// Time of last event</span>
00113 <span class="comment"></span>  FXint       win_x;          <span class="comment">/// Window-relative x-coord</span>
00114 <span class="comment"></span>  FXint       win_y;          <span class="comment">/// Window-relative y-coord</span>
00115 <span class="comment"></span>  FXint       root_x;         <span class="comment">/// Root x-coord</span>
00116 <span class="comment"></span>  FXint       root_y;         <span class="comment">/// Root y-coord</span>
00117 <span class="comment"></span>  FXint       state;          <span class="comment">/// Keyboard/Modifier state</span>
00118 <span class="comment"></span>  FXint       code;           <span class="comment">/// Button, Keysym, or mode; DDE Source</span>
00119 <span class="comment"></span>  FXString    text;           <span class="comment">/// Text of keyboard event</span>
00120 <span class="comment"></span>  FXint       last_x;         <span class="comment">/// Window-relative x-coord of previous mouse location</span>
00121 <span class="comment"></span>  FXint       last_y;         <span class="comment">/// Window-relative y-coord of previous mouse location</span>
<a name="l00122"></a><a class="code" href="structFX_1_1FXEvent.html">00122</a> <span class="comment"></span>  FXint       click_x;        <span class="comment">/// Window-relative x-coord of mouse press</span>
00123 <span class="comment"></span>  FXint       click_y;        <span class="comment">/// Window-relative y-coord of mouse press</span>
<a name="l00124"></a><a class="code" href="structFX_1_1FXEvent.html#o1">00124</a> <span class="comment"></span>  FXint       rootclick_x;    <span class="comment">/// Root-relative x-coord of mouse press</span>
<a name="l00125"></a><a class="code" href="structFX_1_1FXEvent.html#o2">00125</a> <span class="comment"></span>  FXint       rootclick_y;    <span class="comment">/// Root-relative y-coord of mouse press</span>
<a name="l00126"></a><a class="code" href="structFX_1_1FXEvent.html#o3">00126</a> <span class="comment"></span>  FXuint      click_time;     <span class="comment">/// Time of mouse button press</span>
<a name="l00127"></a><a class="code" href="structFX_1_1FXEvent.html#o4">00127</a> <span class="comment"></span>  FXuint      click_button;   <span class="comment">/// Mouse button pressed</span>
<a name="l00128"></a><a class="code" href="structFX_1_1FXEvent.html#o5">00128</a> <span class="comment"></span>  FXint       click_count;    <span class="comment">/// Click-count</span>
<a name="l00129"></a><a class="code" href="structFX_1_1FXEvent.html#o6">00129</a> <span class="comment"></span>  FXbool      moved;          <span class="comment">/// Moved cursor since press</span>
<a name="l00130"></a><a class="code" href="structFX_1_1FXEvent.html#o7">00130</a> <span class="comment"></span>  <a class="code" href="classFX_1_1FXRectangle.html">FXRectangle</a> rect;           <span class="comment">/// Rectangle</span>
<a name="l00131"></a><a class="code" href="structFX_1_1FXEvent.html#o8">00131</a> <span class="comment"></span>  FXbool      synthetic;      <span class="comment">/// True if synthetic expose event</span>
<a name="l00132"></a><a class="code" href="structFX_1_1FXEvent.html#o9">00132</a> <span class="comment"></span>  FXDragType  target;         <span class="comment">/// Target drag type being requested</span>
<a name="l00133"></a><a class="code" href="structFX_1_1FXEvent.html#o10">00133</a> <span class="comment"></span>  };
<a name="l00134"></a><a class="code" href="structFX_1_1FXEvent.html#o11">00134</a> 
<a name="l00135"></a><a class="code" href="structFX_1_1FXEvent.html#o12">00135</a> <span class="comment"></span>
<a name="l00136"></a><a class="code" href="structFX_1_1FXEvent.html#o13">00136</a> <span class="comment">/// Application Object</span>
<a name="l00137"></a><a class="code" href="structFX_1_1FXEvent.html#o14">00137</a> <span class="comment"></span><span class="keyword">class </span>FXAPI FXApp : <span class="keyword">public</span> <a class="code" href="classFX_1_1FXObject.html">FXObject</a> {
<a name="l00138"></a><a class="code" href="structFX_1_1FXEvent.html#o15">00138</a>   FXDECLARE(FXApp)
<a name="l00139"></a><a class="code" href="structFX_1_1FXEvent.html#o16">00139</a> 
<a name="l00140"></a><a class="code" href="structFX_1_1FXEvent.html#o17">00140</a>   <span class="comment">// We've got many friends</span>
<a name="l00141"></a><a class="code" href="structFX_1_1FXEvent.html#o18">00141</a>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFX_1_1FXId.html">FXId</a>;
<a name="l00142"></a><a class="code" href="structFX_1_1FXEvent.html#o19">00142</a>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFX_1_1FXBitmap.html">FXBitmap</a>;
<a name="l00143"></a><a class="code" href="structFX_1_1FXEvent.html#o20">00143</a>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFX_1_1FXImage.html">FXImage</a>;
<a name="l00144"></a><a class="code" href="structFX_1_1FXEvent.html#o21">00144</a>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFX_1_1FXIcon.html">FXIcon</a>;
00145   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFX_1_1FXCursor.html">FXCursor</a>;
00146   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFX_1_1FXDrawable.html">FXDrawable</a>;
00147   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>;
00148   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFX_1_1FXShell.html">FXShell</a>;
00149   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFX_1_1FXRootWindow.html">FXRootWindow</a>;
00150   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFX_1_1FXTopWindow.html">FXTopWindow</a>;
00151   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFX_1_1FXMainWindow.html">FXMainWindow</a>;
00152   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFX_1_1FXPopup.html">FXPopup</a>;
00153   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFX_1_1FXFont.html">FXFont</a>;
00154   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFX_1_1FXVisual.html">FXVisual</a>;
<a name="l00155"></a><a class="code" href="classFX_1_1FXApp.html">00155</a>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFX_1_1FXGLVisual.html">FXGLVisual</a>;
00156   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFX_1_1FXGLContext.html">FXGLContext</a>;
00157   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFX_1_1FXDC.html">FXDC</a>;
00158   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classFX_1_1FXDCWindow.html">FXDCWindow</a>;
00159 
00160 <span class="keyword">private</span>:
00161 
00162   <span class="comment">// Platform independent private data</span>
00163   <span class="keywordtype">void</span>            *display;             <span class="comment">// Display we're talking to</span>
00164   <span class="keyword">const</span> FXchar    *dpy;                 <span class="comment">// Initial display guess</span>
00165   <a class="code" href="classFX_1_1FXHash.html">FXHash</a>           hash;                <span class="comment">// Window handle hash table</span>
00166   <a class="code" href="classFX_1_1FXRegistry.html">FXRegistry</a>       registry;            <span class="comment">// Application setting registry</span>
00167   <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>        *focusWindow;         <span class="comment">// Window which has the focus</span>
00168   <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>        *cursorWindow;        <span class="comment">// Window under the cursor</span>
00169   <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>        *mouseGrabWindow;     <span class="comment">// Window which grabbed the mouse</span>
00170   <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>        *keyboardGrabWindow;  <span class="comment">// Window which grabbed the keyboard</span>
00171   <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>        *keyWindow;           <span class="comment">// Window in which keyboard key was pressed</span>
00172   <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>        *selectionWindow;     <span class="comment">// Selection window</span>
00173   <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>        *clipboardWindow;     <span class="comment">// Clipboard window</span>
00174   <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>        *dropWindow;          <span class="comment">// Drop target window</span>
00175   <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>        *dragWindow;          <span class="comment">// Drag source window</span>
00176   <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>        *refresher;           <span class="comment">// GUI refresher pointer</span>
00177   <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>        *refresherstop;       <span class="comment">// GUI refresher end pointer</span>
00178   <a class="code" href="classFX_1_1FXPopup.html">FXPopup</a>         *popupWindow;         <span class="comment">// Current popup window</span>
00179   <a class="code" href="classFX_1_1FXRootWindow.html">FXRootWindow</a>    *root;                <span class="comment">// Root window</span>
00180   <a class="code" href="classFX_1_1FXVisual.html">FXVisual</a>        *monoVisual;          <span class="comment">// Monochrome visual</span>
00181   <a class="code" href="classFX_1_1FXVisual.html">FXVisual</a>        *defaultVisual;       <span class="comment">// Default [color] visual</span>
00182   FXTimer         *timers;              <span class="comment">// List of timers, sorted by time</span>
00183   FXChore         *chores;              <span class="comment">// List of chores</span>
00184   FXRepaint       *repaints;            <span class="comment">// Unhandled repaint rectangles</span>
00185   FXTimer         *timerrecs;           <span class="comment">// List of recycled timer records</span>
00186   FXChore         *chorerecs;           <span class="comment">// List of recycled chore records</span>
00187   FXRepaint       *repaintrecs;         <span class="comment">// List of recycled repaint records</span>
00188   FXInvocation    *invocation;          <span class="comment">// Modal loop invocation</span>
00189   FXSignal        *signals;             <span class="comment">// Array of signal records</span>
00190   FXint            nsignals;            <span class="comment">// Number of signals</span>
00191   <a class="code" href="classFX_1_1FXFont.html">FXFont</a>          *normalFont;          <span class="comment">// Normal font</span>
00192   <a class="code" href="classFX_1_1FXFont.html">FXFont</a>          *stockFont;           <span class="comment">// Stock font</span>
00193   FXuint           maxcolors;           <span class="comment">// Maximum number of colors to allocate</span>
<a name="l00194"></a><a class="code" href="classFX_1_1FXApp.html#s0">00194</a>   FXEvent          event;               <span class="comment">// Event</span>
00195   FXInput         *inputs;              <span class="comment">// Input file descriptors being watched</span>
00196   FXint            ninputs;             <span class="comment">// Number of inputs</span>
00197   FXint            maxinput;            <span class="comment">// Maximum input number</span>
00198   FXuchar         *ddeData;             <span class="comment">// DDE array</span>
00199   FXuint           ddeSize;             <span class="comment">// DDE array size</span>
00200   FXuint           typingSpeed;         <span class="comment">// Typing speed</span>
00201   FXuint           clickSpeed;          <span class="comment">// Double click speed</span>
00202   FXuint           scrollSpeed;         <span class="comment">// Scroll speed</span>
00203   FXuint           scrollDelay;         <span class="comment">// Scroll delay</span>
00204   FXuint           blinkSpeed;          <span class="comment">// Cursor blink speed</span>
<a name="l00205"></a><a class="code" href="classFX_1_1FXApp.html#a1">00205</a>   FXuint           animSpeed;           <span class="comment">// Animation speed</span>
00206   FXuint           menuPause;           <span class="comment">// Menu popup delay</span>
00207   FXuint           tooltipPause;        <span class="comment">// Tooltip popup delay</span>
<a name="l00208"></a><a class="code" href="classFX_1_1FXApp.html#a2">00208</a>   FXuint           tooltipTime;         <span class="comment">// Tooltip display time</span>
00209   FXint            dragDelta;           <span class="comment">// Minimum distance considered a move</span>
00210   FXint            wheelLines;          <span class="comment">// Scroll by this many lines</span>
00211   FXColor          borderColor;         <span class="comment">// Border color</span>
00212   FXColor          baseColor;           <span class="comment">// Background color of GUI controls</span>
00213   FXColor          hiliteColor;         <span class="comment">// Highlight color of GUI controls</span>
00214   FXColor          shadowColor;         <span class="comment">// Shadow color of GUI controls</span>
00215   FXColor          backColor;           <span class="comment">// Background color</span>
00216   FXColor          foreColor;           <span class="comment">// Foreground color</span>
<a name="l00217"></a><a class="code" href="classFX_1_1FXApp.html#a5">00217</a>   FXColor          selforeColor;        <span class="comment">// Select foreground color</span>
00218   FXColor          selbackColor;        <span class="comment">// Select background color</span>
00219   FXColor          tipforeColor;        <span class="comment">// Tooltip foreground color</span>
<a name="l00220"></a><a class="code" href="classFX_1_1FXApp.html#a6">00220</a>   FXColor          tipbackColor;        <span class="comment">// Tooltip background color</span>
00221   <a class="code" href="classFX_1_1FXCursor.html">FXCursor</a>        *waitCursor;          <span class="comment">// Current wait cursor</span>
00222   FXuint           waitcount;           <span class="comment">// Number of times wait cursor was called</span>
<a name="l00223"></a><a class="code" href="classFX_1_1FXApp.html#a7">00223</a>   <a class="code" href="classFX_1_1FXCursor.html">FXCursor</a>        *cursor[<a class="code" href="group__FXApp__2.html#a0a34">DEF_ROTATE_CURSOR</a>+1];
00224   FXint                appArgc;         <span class="comment">// Argument count</span>
00225   <span class="keyword">const</span> FXchar *<span class="keyword">const</span> *appArgv;         <span class="comment">// Argument vector</span>
<a name="l00226"></a><a class="code" href="classFX_1_1FXApp.html#a8">00226</a>   FXbool           initialized;         <span class="comment">// Has been initialized</span>
00227 
00228 <span class="keyword">private</span>:
<a name="l00229"></a><a class="code" href="classFX_1_1FXApp.html#a9">00229</a>   <span class="keyword">static</span> FXApp    *app;                 <span class="comment">// Application pointer</span>
00230 
00231   <span class="comment">// Platform dependent private stuff</span>
00232 <span class="preprocessor">#ifndef WIN32</span>
00233 <span class="preprocessor"></span><span class="keyword">private</span>:
00234   FXID             wmDeleteWindow;      <span class="comment">// Catch delete window</span>
<a name="l00235"></a><a class="code" href="classFX_1_1FXApp.html#a11">00235</a>   FXID             wmQuitApp;           <span class="comment">// Catch quit application</span>
00236   FXID             wmProtocols;         <span class="comment">// Window manager protocols</span>
00237   FXID             wmMotifHints;        <span class="comment">// Motif hints</span>
<a name="l00238"></a><a class="code" href="classFX_1_1FXApp.html#a12">00238</a>   FXID             wmTakeFocus;         <span class="comment">// Focus explicitly set by app</span>
00239   FXID             wmState;             <span class="comment">// Window state</span>
00240   FXID             wmNetSupported;      <span class="comment">// Extended Window Manager states list</span>
<a name="l00241"></a><a class="code" href="classFX_1_1FXApp.html#a13">00241</a>   FXID             wmNetState;          <span class="comment">// Extended Window Manager window state</span>
00242   FXID             wmNetHMaximized;     <span class="comment">// Extended Window Manager horizontally maximized</span>
00243   FXID             wmNetVMaximized;     <span class="comment">// Extended Window Manager vertically maximized</span>
<a name="l00244"></a><a class="code" href="classFX_1_1FXApp.html#a14">00244</a>   FXID             ddeTargets;          <span class="comment">// DDE targets atom</span>
00245   FXID             ddeAtom;             <span class="comment">// DDE exchange atom</span>
00246   FXID             ddeDelete;           <span class="comment">// DDE delete target atom</span>
<a name="l00247"></a><a class="code" href="classFX_1_1FXApp.html#a15">00247</a>   FXID             ddeIncr;             <span class="comment">// DDE incremental data exchange atom</span>
00248   FXDragType      *ddeTypeList;         <span class="comment">// DDE drop type list</span>
00249   FXuint           ddeNumTypes;         <span class="comment">// DDE number of drop types</span>
00250   <a class="code" href="group__fxdefs__6.html#a0">FXDragAction</a>     ddeAction;           <span class="comment">// DDE action</span>
00251   <a class="code" href="group__fxdefs__6.html#a0">FXDragAction</a>     ansAction;           <span class="comment">// Reply action</span>
00252   FXID             xcbSelection;        <span class="comment">// Clipboard selection</span>
00253   FXDragType      *xcbTypeList;         <span class="comment">// Clipboard type list</span>
00254   FXuint           xcbNumTypes;         <span class="comment">// Clipboard number of types on list</span>
00255   FXDragType      *xselTypeList;        <span class="comment">// Selection type list</span>
00256   FXuint           xselNumTypes;        <span class="comment">// Selection number of types on list</span>
00257   FXDragType      *xdndTypeList;        <span class="comment">// XDND type list</span>
00258   FXuint           xdndNumTypes;        <span class="comment">// XDND number of types</span>
00259   FXID             xdndProxy;           <span class="comment">// XDND proxy atom</span>
00260   FXID             xdndAware;           <span class="comment">// XDND awareness atom</span>
00261   FXID             xdndEnter;           <span class="comment">// XDND enter window message</span>
00262   FXID             xdndLeave;           <span class="comment">// XDND leave window message</span>
00263   FXID             xdndPosition;        <span class="comment">// XDND position update message</span>
00264   FXID             xdndStatus;          <span class="comment">// XDND status feedback message</span>
00265   FXID             xdndDrop;            <span class="comment">// XDND drop message</span>
00266   FXID             xdndFinished;        <span class="comment">// XDND finished message</span>
00267   FXID             xdndSelection;       <span class="comment">// XDND selection atom</span>
00268   FXID             xdndActionMove;      <span class="comment">// XDND Move action</span>
00269   FXID             xdndActionCopy;      <span class="comment">// XDND Copy action</span>
00270   FXID             xdndActionLink;      <span class="comment">// XDND Link action</span>
00271   FXID             xdndActionPrivate;   <span class="comment">// XDND Private action</span>
00272   FXID             xdndTypes;           <span class="comment">// XDND types list atom</span>
00273   FXID             xdndSource;          <span class="comment">// XDND drag source window</span>
00274   FXID             xdndTarget;          <span class="comment">// XDND drop target window</span>
00275   FXID             xdndProxyTarget;     <span class="comment">// XDND window to set messages to</span>
00276   FXbool           xdndStatusPending;   <span class="comment">// XDND waiting for status feedback</span>
00277   FXbool           xdndStatusReceived;  <span class="comment">// XDND received at least one status</span>
00278   FXbool           xdndWantUpdates;     <span class="comment">// XDND target wants new positions while in rect</span>
00279   <a class="code" href="classFX_1_1FXRectangle.html">FXRectangle</a>      xdndRect;            <span class="comment">// XDND rectangle bounding target</span>
00280   FXID             stipples[23];        <span class="comment">// Standard stipple patterns</span>
00281   <span class="keywordtype">void</span>            *r_fds;               <span class="comment">// Set of file descriptors for read</span>
00282   <span class="keywordtype">void</span>            *w_fds;               <span class="comment">// Set of file descriptors for write</span>
00283   <span class="keywordtype">void</span>            *e_fds;               <span class="comment">// Set of file descriptors for exceptions</span>
00284   <span class="keywordtype">void</span>            *xim;                 <span class="comment">// Input method</span>
00285   <span class="keywordtype">void</span>            *xic;                 <span class="comment">// Input method context</span>
00286   FXbool           shmi;                <span class="comment">// Use XSHM Image possible</span>
00287   FXbool           shmp;                <span class="comment">// Use XSHM Pixmap possible</span>
00288   FXbool           synchronize;         <span class="comment">// Synchronized</span>
00289 
00290 <span class="preprocessor">#else</span>
00291 <span class="preprocessor"></span>
00292   FXushort         ddeTargets;          <span class="comment">// DDE targets atom</span>
00293   FXushort         ddeAtom;             <span class="comment">// DDE Exchange Atom</span>
00294   FXDragType       ddeDelete;           <span class="comment">// DDE Delete Target Atom</span>
00295   FXDragType      *ddeTypeList;         <span class="comment">// DDE drop type list</span>
00296   FXuint           ddeNumTypes;         <span class="comment">// DDE number of drop types</span>
00297   <a class="code" href="group__fxdefs__6.html#a0">FXDragAction</a>     ddeAction;           <span class="comment">// DDE action</span>
00298   <a class="code" href="group__fxdefs__6.html#a0">FXDragAction</a>     ansAction;           <span class="comment">// Reply action</span>
00299   FXDragType      *xselTypeList;        <span class="comment">// Selection type list</span>
00300   FXuint           xselNumTypes;        <span class="comment">// Selection number of types on list</span>
00301   <span class="keywordtype">void</span>*            xdndTypes;           <span class="comment">// Handle to file mapping object for types list</span>
00302   FXushort         xdndAware;           <span class="comment">// XDND awareness atom</span>
00303   FXID             xdndSource;          <span class="comment">// XDND drag source window</span>
00304   FXID             xdndTarget;          <span class="comment">// XDND drop target window</span>
00305   FXbool           xdndStatusPending;   <span class="comment">// XDND waiting for status feedback</span>
00306   FXbool           xdndFinishPending;   <span class="comment">// XDND waiting for drop-confirmation</span>
00307   FXbool           xdndStatusReceived;  <span class="comment">// XDND received at least one status</span>
00308   <a class="code" href="classFX_1_1FXRectangle.html">FXRectangle</a>      xdndRect;            <span class="comment">// XDND rectangle bounding target</span>
00309   FXID             stipples[17];        <span class="comment">// Standard stipple bitmaps</span>
00310   <span class="keywordtype">void</span>           **handles;             <span class="comment">// Waitable object handles</span>
00311 
00312 <span class="preprocessor">#endif</span>
00313 <span class="preprocessor"></span>
00314 <span class="keyword">private</span>:
00315 
00316   <span class="comment">// Internal helper functions</span>
00317   FXApp(<span class="keyword">const</span> FXApp&amp;);
00318   FXApp &amp;operator=(<span class="keyword">const</span> FXApp&amp;);
00319   <span class="keyword">static</span> <span class="keywordtype">void</span> signalhandler(<span class="keywordtype">int</span> sig);
00320   <span class="keyword">static</span> <span class="keywordtype">void</span> immediatesignalhandler(<span class="keywordtype">int</span> sig);
00321   <span class="keywordtype">void</span> dragdropSetData(<span class="keyword">const</span> <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>* window,FXDragType type,FXuchar* data,FXuint size);
00322   <span class="keywordtype">void</span> dragdropGetData(<span class="keyword">const</span> <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>* window,FXDragType type,FXuchar*&amp; data,FXuint&amp; size);
00323   <span class="keywordtype">void</span> dragdropGetTypes(<span class="keyword">const</span> <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>* window,FXDragType*&amp; types,FXuint&amp; numtypes);
00324   <span class="keywordtype">void</span> selectionSetData(<span class="keyword">const</span> <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>* window,FXDragType type,FXuchar* data,FXuint size);
00325   <span class="keywordtype">void</span> selectionGetData(<span class="keyword">const</span> <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>* window,FXDragType type,FXuchar*&amp; data,FXuint&amp; size);
00326   <span class="keywordtype">void</span> selectionGetTypes(<span class="keyword">const</span> <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>* window,FXDragType*&amp; types,FXuint&amp; numtypes);
00327   <span class="keywordtype">void</span> clipboardSetData(<span class="keyword">const</span> <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>* window,FXDragType type,FXuchar* data,FXuint size);
00328   <span class="keywordtype">void</span> clipboardGetData(<span class="keyword">const</span> <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>* window,FXDragType type,FXuchar*&amp; data,FXuint&amp; size);
00329   <span class="keywordtype">void</span> clipboardGetTypes(<span class="keyword">const</span> <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>* window,FXDragType*&amp; types,FXuint&amp; numtypes);
00330 <span class="preprocessor">#ifndef WIN32</span>
00331 <span class="preprocessor"></span>  <span class="keywordtype">void</span> addRepaint(FXID win,FXint x,FXint y,FXint w,FXint h,FXbool synth=0);
00332   <span class="keywordtype">void</span> removeRepaints(FXID win,FXint x,FXint y,FXint w,FXint h);
00333   <span class="keywordtype">void</span> scrollRepaints(FXID win,FXint dx,FXint dy);
00334 <span class="preprocessor">#else</span>
00335 <span class="preprocessor"></span>  <span class="keywordtype">void</span> leaveWindow(<a class="code" href="classFX_1_1FXWindow.html">FXWindow</a> *win,<a class="code" href="classFX_1_1FXWindow.html">FXWindow</a> *anc);
00336   <span class="keywordtype">void</span> enterWindow(<a class="code" href="classFX_1_1FXWindow.html">FXWindow</a> *win,<a class="code" href="classFX_1_1FXWindow.html">FXWindow</a> *anc);
00337   <span class="keyword">static</span> <span class="keywordtype">long</span> CALLBACK wndproc(FXID hwnd,<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iMsg,<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> wParam,<span class="keywordtype">long</span> lParam);
00338 <span class="keyword">protected</span>:
00339   <span class="keyword">virtual</span> <span class="keywordtype">long</span> dispatchEvent(FXID hwnd,<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iMsg,<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> wParam,<span class="keywordtype">long</span> lParam);
00340 <span class="preprocessor">#endif</span>
00341 <span class="preprocessor"></span>
00342 <span class="keyword">protected</span>:
00343 <span class="comment"></span>
00344 <span class="comment">  /// Return TRUE when new raw event is available</span>
00345 <span class="comment"></span>  <span class="keyword">virtual</span> FXbool getNextEvent(FXRawEvent&amp; ev,FXbool blocking=TRUE);
00346 <span class="comment"></span>
00347 <span class="comment">  /// Dispatch raw event</span>
00348 <span class="comment"></span>  <span class="keyword">virtual</span> FXbool dispatchEvent(FXRawEvent&amp; ev);
00349 
00350 <span class="keyword">public</span>:
00351   <span class="keywordtype">long</span> onCmdQuit(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*);
00352   <span class="keywordtype">long</span> onCmdDump(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*);
00353 
00354 <span class="keyword">public</span>:
00355 <span class="comment"></span>
00356 <span class="comment">  /// Messages applications understand</span>
00357 <span class="comment"></span>  <span class="keyword">enum</span> {
00358     ID_QUIT=0,    <span class="comment">/// Terminate the application normally</span>
00359 <span class="comment"></span>    ID_DUMP,      <span class="comment">/// Dump the current widget tree</span>
00360 <span class="comment"></span>    ID_LAST
00361     };
00362 
00363 <span class="keyword">public</span>:
00364 <span class="comment"></span>
00365 <span class="comment">  /// Information</span>
00366 <span class="comment"></span>  <span class="keyword">static</span> <span class="keyword">const</span> FXuchar copyright[];     <span class="comment">/// Copyright notice of library</span>
00367 <span class="comment"></span>
00368 <span class="keyword">public</span>:
00369 <span class="comment"></span>
00370 <span class="comment">  /**</span>
00371 <span class="comment">  * Construct application object; the name and vendor strings are used</span>
00372 <span class="comment">  * as keys into the registry database for this application's settings</span>
00373 <span class="comment">  */</span>
00374   FXApp(<span class="keyword">const</span> FXString&amp; name=<span class="stringliteral">"Application"</span>,<span class="keyword">const</span> FXString&amp; vendor=<span class="stringliteral">"FoxDefault"</span>);
00375 <span class="comment"></span>
00376 <span class="comment">  /// Get application name</span>
00377 <span class="comment"></span>  FXString getAppName()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> registry.getAppKey(); }
00378 <span class="comment"></span>
00379 <span class="comment">  /// Get vendor name</span>
00380 <span class="comment"></span>  FXString getVendorName()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> registry.getVendorKey(); }
00381 <span class="comment"></span>
00382 <span class="comment">  /// Connection to display; this is called by init()</span>
00383 <span class="comment"></span>  FXbool openDisplay(<span class="keyword">const</span> FXchar* dpyname=NULL);
00384 <span class="comment"></span>
00385 <span class="comment">  /// Close connection to the display</span>
00386 <span class="comment"></span>  FXbool closeDisplay();
00387 <span class="comment"></span>
00388 <span class="comment">  /// Return pointer</span>
00389 <span class="comment"></span>  <span class="keywordtype">void</span>* getDisplay()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> display; }
00390 <span class="comment"></span>
00391 <span class="comment">  /// Is application initialized</span>
00392 <span class="comment"></span>  FXbool isInitialized()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> initialized; }
00393 <span class="comment"></span>
00394 <span class="comment">  /// Get argument count</span>
00395 <span class="comment"></span>  FXint getArgc()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> appArgc; }
00396 <span class="comment"></span>
00397 <span class="comment">  /// Get argument vector</span>
00398 <span class="comment"></span>  <span class="keyword">const</span> FXchar *<span class="keyword">const</span> *getArgv()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> appArgv; }
00399 <span class="comment"></span>
00400 <span class="comment">  /// Get default visual</span>
00401 <span class="comment"></span>  FXVisual* getDefaultVisual()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> defaultVisual; }
00402 <span class="comment"></span>
00403 <span class="comment">  /// Change default visual</span>
00404 <span class="comment"></span>  <span class="keywordtype">void</span> setDefaultVisual(FXVisual* vis);
00405 <span class="comment"></span>
00406 <span class="comment">  /// Get monochrome visual</span>
00407 <span class="comment"></span>  FXVisual* getMonoVisual()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> monoVisual; }
00408 <span class="comment"></span>
00409 <span class="comment">  /// Get root Window</span>
00410 <span class="comment"></span>  FXRootWindow* getRootWindow()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> root; }
00411 <span class="comment"></span>
00412 <span class="comment">  /// Get the window under the cursor, if any</span>
00413 <span class="comment"></span>  FXWindow *getCursorWindow()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cursorWindow; }
00414 <span class="comment"></span>
00415 <span class="comment">  /// Get the window which has the focus, if any</span>
00416 <span class="comment"></span>  FXWindow *getFocusWindow()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> focusWindow; }
00417 <span class="comment"></span>
00418 <span class="comment">  /// Get current popup window, if any</span>
00419 <span class="comment"></span>  FXPopup* getPopupWindow()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> popupWindow; }
00420 <span class="comment"></span>
00421 <span class="comment">  /// Find window from id</span>
00422 <span class="comment"></span>  FXWindow* findWindowWithId(FXID xid) <span class="keyword">const</span>;
00423 <span class="comment"></span>
00424 <span class="comment">  /// Find window from root x,y, starting from given window</span>
00425 <span class="comment"></span>  FXWindow* findWindowAt(FXint rx,FXint ry,FXID window=0) <span class="keyword">const</span>;
00426 <span class="comment"></span>
00427 <span class="comment">  /**</span>
00428 <span class="comment">  * Add timeout message to be sent to target object in ms milliseconds;</span>
00429 <span class="comment">  * the timer fires only once after the interval expires.  The void* ptr</span>
00430 <span class="comment">  * is user data which will be passed into the void* ptr of the message</span>
00431 <span class="comment">  * handler.  If a timer with the same target and message already exists,</span>
00432 <span class="comment">  * it will be rescheduled.</span>
00433 <span class="comment">  */</span>
00434   FXTimer* addTimeout(FXObject* tgt,FXSelector sel,FXuint ms=1000,<span class="keywordtype">void</span>* ptr=NULL);
00435 <span class="comment"></span>
00436 <span class="comment">  /**</span>
00437 <span class="comment">  * Remove timeout identified by tgt and sel; returns NULL.</span>
00438 <span class="comment">  */</span>
00439   FXTimer* removeTimeout(FXObject* tgt,FXSelector sel);
00440 <span class="comment"></span>
00441 <span class="comment">  /**</span>
00442 <span class="comment">  * Remove timeout t; returns NULL.</span>
00443 <span class="comment">  */</span>
00444   FXTimer* removeTimeout(FXTimer *t);
00445 <span class="comment"></span>
00446 <span class="comment">  /**</span>
00447 <span class="comment">  * Return TRUE if given timeout has been set</span>
00448 <span class="comment">  */</span>
00449   FXbool hasTimeout(FXObject *tgt,FXSelector sel) <span class="keyword">const</span>;
00450 <span class="comment"></span>
00451 <span class="comment">  /**</span>
00452 <span class="comment">  * Return, in ms, the time remaining until the given timer fires.</span>
00453 <span class="comment">  * If the timer is past due, 0 is returned.  If there is no such</span>
00454 <span class="comment">  * timer, infinity (UINT_MAX) is returned.</span>
00455 <span class="comment">  */</span>
00456   FXuint remainingTimeout(FXObject *tgt,FXSelector sel) <span class="keyword">const</span>;
00457 <span class="comment"></span>
00458 <span class="comment">  /**</span>
00459 <span class="comment">  * Return, in ms, the time remaining until the given timer fires.</span>
00460 <span class="comment">  * If the timer is past due, 0 is returned.  If there is no such</span>
00461 <span class="comment">  * timer, infinity (UINT_MAX) is returned.</span>
00462 <span class="comment">  */</span>
00463   FXuint remainingTimeout(FXTimer *t) <span class="keyword">const</span>;
00464 <span class="comment"></span>
00465 <span class="comment">  /**</span>
00466 <span class="comment">  * Add a idle processing message to be sent to target object when</span>
<a name="l00467"></a><a class="code" href="classFX_1_1FXApp.html#a57">00467</a> <span class="comment">  * the system becomes idle, i.e. there are no events to be processed.</span>
00468 <span class="comment">  * The void* ptr is user data which will be passed into the void* ptr</span>
00469 <span class="comment">  * of the message handler. If a chore with the same target and message</span>
00470 <span class="comment">  * already exists, it will be rescheduled.</span>
00471 <span class="comment">  */</span>
00472   FXChore* addChore(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>* tgt,FXSelector sel,<span class="keywordtype">void</span> *ptr=NULL);
00473 <span class="comment"></span>
00474 <span class="comment">  /**</span>
00475 <span class="comment">  * Remove idle processing message identified by tgt and sel; returns NULL.</span>
<a name="l00476"></a><a class="code" href="classFX_1_1FXApp.html#a60">00476</a> <span class="comment">  */</span>
00477   FXChore* removeChore(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>* tgt,FXSelector sel);
00478 <span class="comment"></span>
00479 <span class="comment">  /**</span>
00480 <span class="comment">  * Remove idle processing message; returns NULL.</span>
00481 <span class="comment">  */</span>
<a name="l00482"></a><a class="code" href="classFX_1_1FXApp.html#e0">00482</a>   FXChore* removeChore(FXChore *c);
00483 <span class="comment"></span>
00484 <span class="comment">  /**</span>
00485 <span class="comment">  * Return TRUE if given chore has been set</span>
00486 <span class="comment">  */</span>
00487   FXbool hasChore(<a class="code" href="classFX_1_1FXObject.html">FXObject</a> *tgt,FXSelector sel) <span class="keyword">const</span>;
<a name="l00488"></a><a class="code" href="classFX_1_1FXApp.html#a63">00488</a> <span class="comment"></span>
00489 <span class="comment">  /**</span>
00490 <span class="comment">  * Add signal processing message to be sent to target object when</span>
00491 <span class="comment">  * the signal sig is raised; flags are to be set as per POSIX definitions.</span>
00492 <span class="comment">  * When immediate is TRUE, the message will be sent to the target right away;</span>
00493 <span class="comment">  * this should be used with extreme care as the application is interrupted</span>
00494 <span class="comment">  * at an unknown point in its execution.</span>
00495 <span class="comment">  */</span>
00496   <span class="keywordtype">void</span> addSignal(FXint sig,<a class="code" href="classFX_1_1FXObject.html">FXObject</a>* tgt,FXSelector sel,FXbool immediate=FALSE,FXuint flags=0);
00497 <span class="comment"></span>
00498 <span class="comment">  /// Remove signal message for signal sig</span>
00499 <span class="comment"></span>  <span class="keywordtype">void</span> removeSignal(FXint sig);
<a name="l00500"></a><a class="code" href="classFX_1_1FXApp.html#a67">00500</a> <span class="comment"></span>
00501 <span class="comment">  /**</span>
00502 <span class="comment">  * Add a file descriptor fd to be watched for activity as determined</span>
<a name="l00503"></a><a class="code" href="classFX_1_1FXApp.html#a68">00503</a> <span class="comment">  * by mode, where mode is a bitwise OR (INPUT_READ, INPUT_WRITE, INPUT_EXCEPT).</span>
00504 <span class="comment">  * A message of type SEL_IO_READ, SEL_IO_WRITE, or SEL_IO_EXCEPT will be sent</span>
00505 <span class="comment">  * to the target when the specified activity is detected on the file descriptor.</span>
00506 <span class="comment">  */</span>
00507   FXbool addInput(FXInputHandle fd,FXuint mode,<a class="code" href="classFX_1_1FXObject.html">FXObject</a> *tgt,FXSelector sel);
00508 <span class="comment"></span>
<a name="l00509"></a><a class="code" href="classFX_1_1FXApp.html#a70">00509</a> <span class="comment">  /**</span>
00510 <span class="comment">  * Remove input message and target object for the specified file descriptor</span>
00511 <span class="comment">  * and mode, which is a bitwise OR of (INPUT_READ, INPUT_WRITE, INPUT_EXCEPT).</span>
00512 <span class="comment">  */</span>
00513   FXbool removeInput(FXInputHandle fd,FXuint mode);
00514 <span class="comment"></span>
00515 <span class="comment">  /// Create application's windows</span>
00516 <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> create();
00517 <span class="comment"></span>
00518 <span class="comment">  /// Destroy application's windows</span>
00519 <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> destroy();
00520 <span class="comment"></span>
00521 <span class="comment">  /// Detach application's windows</span>
00522 <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> detach();
00523 <span class="comment"></span>
00524 <span class="comment">  /// Peek to determine if there's an event</span>
00525 <span class="comment"></span>  FXbool peekEvent();
00526 <span class="comment"></span>
00527 <span class="comment">  /// Perform one event dispatch; return true if event was dispatched</span>
00528 <span class="comment"></span>  FXbool runOneEvent(FXbool blocking=TRUE);
00529 <span class="comment"></span>
00530 <span class="comment">  /**</span>
00531 <span class="comment">  * Run the main application event loop until stop() is called,</span>
00532 <span class="comment">  * and return the exit code passed as argument to stop().</span>
00533 <span class="comment">  */</span>
00534   FXint run();
<a name="l00535"></a><a class="code" href="classFX_1_1FXApp.html#a92">00535</a> <span class="comment"></span>
00536 <span class="comment">  /**</span>
00537 <span class="comment">  * Run an event loop till some flag becomes non-zero, and</span>
00538 <span class="comment">  * then return.</span>
00539 <span class="comment">  */</span>
00540   FXint runUntil(FXuint&amp; condition);
00541 <span class="comment"></span>
00542 <span class="comment">  /**</span>
00543 <span class="comment">  * Run event loop while events are available, non-modally.</span>
00544 <span class="comment">  * Return when no more events, timers, or chores are outstanding.</span>
00545 <span class="comment">  */</span>
00546   FXint runWhileEvents();
00547 <span class="comment"></span>
00548 <span class="comment">  /**</span>
00549 <span class="comment">  * Run event loop while there are events are available in the queue.</span>
00550 <span class="comment">  * Returns 1 when all events in the queue have been handled, and 0 when</span>
00551 <span class="comment">  * the event loop was terminated due to stop() or stopModal().</span>
00552 <span class="comment">  * Except for the modal window and its children, user input to all windows</span>
00553 <span class="comment">  * is blocked; if the modal window is NULL, all user input is blocked.</span>
00554 <span class="comment">  */</span>
00555   FXint runModalWhileEvents(<a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>* window=NULL);
00556 <span class="comment"></span>
00557 <span class="comment">  /**</span>
00558 <span class="comment">  * Run modal event loop, blocking keyboard and mouse events to all windows</span>
00559 <span class="comment">  * until stopModal is called.</span>
00560 <span class="comment">  */</span>
00561   FXint runModal();
00562 <span class="comment"></span>
00563 <span class="comment">  /**</span>
00564 <span class="comment">  * Run a modal event loop for the given window, until stop() or stopModal() is</span>
00565 <span class="comment">  * called. Except for the modal window and its children, user input to all</span>
00566 <span class="comment">  * windows is blocked; if the modal window is NULL all user input is blocked.</span>
00567 <span class="comment">  */</span>
00568   FXint runModalFor(<a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>* window);
00569 <span class="comment"></span>
00570 <span class="comment">  /**</span>
00571 <span class="comment">  * Run modal while window is shown, or until stop() or stopModal() is called.</span>
00572 <span class="comment">  * Except for the modal window and its children, user input to all windows</span>
00573 <span class="comment">  * is blocked; if the modal window is NULL all user input is blocked.</span>
00574 <span class="comment">  */</span>
00575   FXint runModalWhileShown(<a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>* window);
00576 <span class="comment"></span>
00577 <span class="comment">  /**</span>
00578 <span class="comment">  * Run popup menu while shown, until stop() or stopModal() is called.</span>
00579 <span class="comment">  * Also returns when entering previous cascading popup menu.</span>
00580 <span class="comment">  */</span>
00581   FXint runPopup(<a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>* window);
00582 <span class="comment"></span>
00583 <span class="comment">  /// True if the window is modal</span>
00584 <span class="comment"></span>  FXbool isModal(<a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>* window) <span class="keyword">const</span>;
00585 <span class="comment"></span>
00586 <span class="comment">  /// Return window of current modal loop</span>
00587 <span class="comment"></span>  <a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>* getModalWindow() <span class="keyword">const</span>;
00588 <span class="comment"></span>
00589 <span class="comment">  /// Return mode of current modal loop</span>
00590 <span class="comment"></span>  <a class="code" href="group__FXApp__1.html#a0">FXModality</a> getModality() <span class="keyword">const</span>;
00591 <span class="comment"></span>
00592 <span class="comment">  /**</span>
00593 <span class="comment">  * Terminate the outermost event loop, and all inner modal loops;</span>
00594 <span class="comment">  * All more deeper nested event loops will be terminated with code equal</span>
00595 <span class="comment">  * to 0, while the outermost event loop will return code equal to value.</span>
00596 <span class="comment">  */</span>
00597   <span class="keywordtype">void</span> stop(FXint value=0);
00598 <span class="comment"></span>
00599 <span class="comment">  /**</span>
00600 <span class="comment">  * Break out of the matching modal loop, returning code equal to value.</span>
00601 <span class="comment">  * All deeper nested event loops are terminated with code equal to 0.</span>
00602 <span class="comment">  */</span>
00603   <span class="keywordtype">void</span> stopModal(<a class="code" href="classFX_1_1FXWindow.html">FXWindow</a>* window,FXint value=0);
00604 <span class="comment"></span>
00605 <span class="comment">  /**</span>
00606 <span class="comment">  * Break out of the innermost modal loop, returning code equal to value.</span>
00607 <span class="comment">  */</span>
00608   <span class="keywordtype">void</span> stopModal(FXint value=0);
00609 <span class="comment"></span>
00610 <span class="comment">  /// Force GUI refresh</span>
00611 <span class="comment"></span>  <span class="keywordtype">void</span> forceRefresh();
00612 <span class="comment"></span>
00613 <span class="comment">  /// Schedule a refresh</span>
00614 <span class="comment"></span>  <span class="keywordtype">void</span> refresh();
00615 <span class="comment"></span>
00616 <span class="comment">  /// Flush pending repaints</span>
00617 <span class="comment"></span>  <span class="keywordtype">void</span> flush(FXbool sync=FALSE);
00618 <span class="comment"></span>
00619 <span class="comment">  /**</span>
00620 <span class="comment">  * Paint all windows marked for repainting.</span>
00621 <span class="comment">  * On return all the applications windows have been painted.</span>
00622 <span class="comment">  */</span>
00623   <span class="keywordtype">void</span> repaint();
00624 <span class="comment"></span>
00625 <span class="comment">  /**</span>
00626 <span class="comment">  * Initialize application.</span>
00627 <span class="comment">  * Parses and removes common command line arguments, reads the registry.</span>
00628 <span class="comment">  * Finally, if connect is TRUE, it opens the display.</span>
00629 <span class="comment">  */</span>
00630   <span class="keyword">virtual</span> <span class="keywordtype">void</span> init(<span class="keywordtype">int</span>&amp; argc,<span class="keywordtype">char</span>** argv,FXbool connect=TRUE);
00631 <span class="comment"></span>
00632 <span class="comment">  /**</span>
00633 <span class="comment">  * Exit application.</span>
00634 <span class="comment">  * Closes the display and writes the registry.</span>
00635 <span class="comment">  */</span>
00636   <span class="keyword">virtual</span> <span class="keywordtype">void</span> exit(FXint code=0);
00637 <span class="comment"></span>
00638 <span class="comment">  /// Get registry</span>
00639 <span class="comment"></span>  <a class="code" href="classFX_1_1FXRegistry.html">FXRegistry</a>&amp; reg(){ <span class="keywordflow">return</span> registry; }
00640 <span class="comment"></span>
00641 <span class="comment">  /// Register new DND type</span>
00642 <span class="comment"></span>  FXDragType registerDragType(<span class="keyword">const</span> FXString&amp; name) <span class="keyword">const</span>;
00643 <span class="comment"></span>
00644 <span class="comment">  /// Get drag type name</span>
00645 <span class="comment"></span>  FXString getDragTypeName(FXDragType type) <span class="keyword">const</span>;
00646 <span class="comment"></span>
00647 <span class="comment">  /// Return drag window if a drag operation is in progress</span>
00648 <span class="comment"></span>  FXWindow* getDragWindow()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> dragWindow; }
00649 <span class="comment"></span>
00650 <span class="comment">  /// Beep</span>
00651 <span class="comment"></span>  <span class="keywordtype">void</span> beep();
00652 <span class="comment"></span>
00653 <span class="comment">  /// Return application instance</span>
00654 <span class="comment"></span>  <span class="keyword">static</span> <span class="keyword">inline</span> FXApp* instance(){ <span class="keywordflow">return</span> app; }
00655 <span class="comment"></span>
00656 <span class="comment">  /// Change default font</span>
00657 <span class="comment"></span>  <span class="keywordtype">void</span> setNormalFont(FXFont* font);
00658 <span class="comment"></span>
00659 <span class="comment">  /// Return default font</span>
00660 <span class="comment"></span>  FXFont* getNormalFont()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> normalFont; }
00661 <span class="comment"></span>
00662 <span class="comment">  /// Begin of wait-cursor block; wait-cursor blocks may be nested.</span>
00663 <span class="comment"></span>  <span class="keywordtype">void</span> beginWaitCursor();
00664 <span class="comment"></span>
00665 <span class="comment">  /// End of wait-cursor block</span>
00666 <span class="comment"></span>  <span class="keywordtype">void</span> endWaitCursor();
00667 <span class="comment"></span>
00668 <span class="comment">  /// Change to a new wait cursor</span>
00669 <span class="comment"></span>  <span class="keywordtype">void</span> setWaitCursor(FXCursor *cur);
00670 <span class="comment"></span>
00671 <span class="comment">  /// Return current wait cursor</span>
00672 <span class="comment"></span>  FXCursor* getWaitCursor()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> waitCursor; }
00673 <span class="comment"></span>
00674 <span class="comment">  /// Obtain a default cursor</span>
00675 <span class="comment"></span>  FXCursor* getDefaultCursor(FXDefaultCursor which)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cursor[which]; }
00676 <span class="comment"></span>
00677 <span class="comment">  /// Change default cursor</span>
00678 <span class="comment"></span>  <span class="keywordtype">void</span> setDefaultCursor(FXDefaultCursor which,FXCursor* cur);
00679 <span class="comment"></span>
00680 <span class="comment">  /// Obtain application-wide settings</span>
00681 <span class="comment"></span>  FXuint getTypingSpeed()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> typingSpeed; }
00682   FXuint getClickSpeed()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> clickSpeed; }
00683   FXuint getScrollSpeed()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> scrollSpeed; }
00684   FXuint getScrollDelay()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> scrollDelay; }
00685   FXuint getBlinkSpeed()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> blinkSpeed; }
00686   FXuint getAnimSpeed()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> animSpeed; }
00687   FXuint getMenuPause()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> menuPause; }
00688   FXuint getTooltipPause()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> tooltipPause; }
00689   FXuint getTooltipTime()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> tooltipTime; }
00690   FXint getDragDelta()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> dragDelta; }
00691   FXint getWheelLines()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> wheelLines; }
00692 <span class="comment"></span>
00693 <span class="comment">  /// Change application-wide settings</span>
00694 <span class="comment"></span>  <span class="keywordtype">void</span> setTypingSpeed(FXuint speed);
00695   <span class="keywordtype">void</span> setClickSpeed(FXuint speed);
00696   <span class="keywordtype">void</span> setScrollSpeed(FXuint speed);
00697   <span class="keywordtype">void</span> setScrollDelay(FXuint delay);
00698   <span class="keywordtype">void</span> setBlinkSpeed(FXuint speed);
00699   <span class="keywordtype">void</span> setAnimSpeed(FXuint speed);
00700   <span class="keywordtype">void</span> setMenuPause(FXuint pause);
00701   <span class="keywordtype">void</span> setTooltipPause(FXuint pause);
00702   <span class="keywordtype">void</span> setTooltipTime(FXuint time);
00703   <span class="keywordtype">void</span> setDragDelta(FXint delta);
00704   <span class="keywordtype">void</span> setWheelLines(FXint lines);
00705 <span class="comment"></span>
00706 <span class="comment">  /// Obtain default colors</span>
00707 <span class="comment"></span>  FXColor getBorderColor()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> borderColor; }
00708   FXColor getBaseColor()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> baseColor; }
00709   FXColor getHiliteColor()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> hiliteColor; }
00710   FXColor getShadowColor()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> shadowColor; }
00711   FXColor getBackColor()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> backColor; }
00712   FXColor getForeColor()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> foreColor; }
00713   FXColor getSelforeColor()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> selforeColor; }
00714   FXColor getSelbackColor()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> selbackColor; }
00715   FXColor getTipforeColor()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> tipforeColor; }
00716   FXColor getTipbackColor()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> tipbackColor; }
00717 <span class="comment"></span>
00718 <span class="comment">  /// Change default colors</span>
00719 <span class="comment"></span>  <span class="keywordtype">void</span> setBorderColor(FXColor color);
00720   <span class="keywordtype">void</span> setBaseColor(FXColor color);
00721   <span class="keywordtype">void</span> setHiliteColor(FXColor color);
00722   <span class="keywordtype">void</span> setShadowColor(FXColor color);
00723   <span class="keywordtype">void</span> setBackColor(FXColor color);
00724   <span class="keywordtype">void</span> setForeColor(FXColor color);
00725   <span class="keywordtype">void</span> setSelforeColor(FXColor color);
00726   <span class="keywordtype">void</span> setSelbackColor(FXColor color);
00727   <span class="keywordtype">void</span> setTipforeColor(FXColor color);
00728   <span class="keywordtype">void</span> setTipbackColor(FXColor color);
00729 <span class="comment"></span>
00730 <span class="comment">  /// Save</span>
00731 <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> save(FXStream&amp; store) <span class="keyword">const</span>;
00732 <span class="comment"></span>
00733 <span class="comment">  /// Load</span>
00734 <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> load(FXStream&amp; store);
00735 <span class="comment"></span>
00736 <span class="comment">  /// Dump widget information</span>
00737 <span class="comment"></span>  <span class="keywordtype">void</span> dumpWidgets() <span class="keyword">const</span>;
00738 <span class="comment"></span>
00739 <span class="comment">  /// Destroy the application and all reachable resources</span>
00740 <span class="comment"></span>  <span class="keyword">virtual</span> ~FXApp();
00741   };
00742 
00743 }
00744 
00745 <span class="preprocessor">#endif</span>
</pre></div></font>

<!--- COPYRIGHT -->
<p>
<table width=100% cellpadding=0 cellspacing=0><tr><td width=100% valign=top id=HEADLINE align=right>
<img src='../art/line.gif' width=100% height=1><font size=-1>
Copyright &copy; 1997-2004 Jeroen van der Zijp</font>
</td></tr></table>
</p>
<!--- COPYRIGHT -->
</body>
</html>