xref: /aoo4110/main/vcl/inc/svdata.hxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef _SV_SVDATA_HXX
25*b1cdbd2cSJim Jagielski #define _SV_SVDATA_HXX
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include "rtl/ref.hxx"
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski #include "vos/thread.hxx"
30*b1cdbd2cSJim Jagielski 
31*b1cdbd2cSJim Jagielski #include "tools/string.hxx"
32*b1cdbd2cSJim Jagielski #include "tools/gen.hxx"
33*b1cdbd2cSJim Jagielski #include "tools/shl.hxx"
34*b1cdbd2cSJim Jagielski #include "tools/link.hxx"
35*b1cdbd2cSJim Jagielski #include "tools/fldunit.hxx"
36*b1cdbd2cSJim Jagielski #include "tools/color.hxx"
37*b1cdbd2cSJim Jagielski #include "tools/debug.hxx"
38*b1cdbd2cSJim Jagielski 
39*b1cdbd2cSJim Jagielski #include "vcl/vclevent.hxx"
40*b1cdbd2cSJim Jagielski #include "vcl/sv.h"
41*b1cdbd2cSJim Jagielski #include "vcl/dllapi.h"
42*b1cdbd2cSJim Jagielski 
43*b1cdbd2cSJim Jagielski #include "unotools/options.hxx"
44*b1cdbd2cSJim Jagielski 
45*b1cdbd2cSJim Jagielski #include "xconnection.hxx"
46*b1cdbd2cSJim Jagielski 
47*b1cdbd2cSJim Jagielski #include "com/sun/star/uno/Reference.hxx"
48*b1cdbd2cSJim Jagielski 
49*b1cdbd2cSJim Jagielski #include <hash_map>
50*b1cdbd2cSJim Jagielski 
51*b1cdbd2cSJim Jagielski namespace com {
52*b1cdbd2cSJim Jagielski namespace sun {
53*b1cdbd2cSJim Jagielski namespace star {
54*b1cdbd2cSJim Jagielski namespace lang {
55*b1cdbd2cSJim Jagielski     class XMultiServiceFactory;
56*b1cdbd2cSJim Jagielski }
57*b1cdbd2cSJim Jagielski namespace frame {
58*b1cdbd2cSJim Jagielski 	class XSessionManagerClient;
59*b1cdbd2cSJim Jagielski }
60*b1cdbd2cSJim Jagielski }}}
61*b1cdbd2cSJim Jagielski 
62*b1cdbd2cSJim Jagielski struct ImplTimerData;
63*b1cdbd2cSJim Jagielski struct ImplFileImageCacheData;
64*b1cdbd2cSJim Jagielski struct ImplConfigData;
65*b1cdbd2cSJim Jagielski class ImplDirectFontSubstitution;
66*b1cdbd2cSJim Jagielski struct ImplHotKey;
67*b1cdbd2cSJim Jagielski struct ImplEventHook;
68*b1cdbd2cSJim Jagielski class Point;
69*b1cdbd2cSJim Jagielski class Rectangle;
70*b1cdbd2cSJim Jagielski class ImpResMgr;
71*b1cdbd2cSJim Jagielski class ResMgr;
72*b1cdbd2cSJim Jagielski class UniqueIndex;
73*b1cdbd2cSJim Jagielski class ImplAccelManager;
74*b1cdbd2cSJim Jagielski class ImplDevFontList;
75*b1cdbd2cSJim Jagielski class ImplFontCache;
76*b1cdbd2cSJim Jagielski class HelpTextWindow;
77*b1cdbd2cSJim Jagielski class ImplTBDragMgr;
78*b1cdbd2cSJim Jagielski class ImplButtonList;
79*b1cdbd2cSJim Jagielski class ImplIdleMgr;
80*b1cdbd2cSJim Jagielski class DbgWindow;
81*b1cdbd2cSJim Jagielski class FloatingWindow;
82*b1cdbd2cSJim Jagielski class AllSettings;
83*b1cdbd2cSJim Jagielski class KeyCode;
84*b1cdbd2cSJim Jagielski class NotifyEvent;
85*b1cdbd2cSJim Jagielski class Timer;
86*b1cdbd2cSJim Jagielski class AutoTimer;
87*b1cdbd2cSJim Jagielski class Help;
88*b1cdbd2cSJim Jagielski class ImageList;
89*b1cdbd2cSJim Jagielski class Image;
90*b1cdbd2cSJim Jagielski class PopupMenu;
91*b1cdbd2cSJim Jagielski class Application;
92*b1cdbd2cSJim Jagielski class OutputDevice;
93*b1cdbd2cSJim Jagielski class Window;
94*b1cdbd2cSJim Jagielski class SystemWindow;
95*b1cdbd2cSJim Jagielski class WorkWindow;
96*b1cdbd2cSJim Jagielski class Dialog;
97*b1cdbd2cSJim Jagielski class VirtualDevice;
98*b1cdbd2cSJim Jagielski class Printer;
99*b1cdbd2cSJim Jagielski class SalFrame;
100*b1cdbd2cSJim Jagielski class SalInstance;
101*b1cdbd2cSJim Jagielski class SalSystem;
102*b1cdbd2cSJim Jagielski class SalProcessWindowList;
103*b1cdbd2cSJim Jagielski class SalTrayList;
104*b1cdbd2cSJim Jagielski class UniqueIdContainer;
105*b1cdbd2cSJim Jagielski class List;
106*b1cdbd2cSJim Jagielski class ImplPrnQueueList;
107*b1cdbd2cSJim Jagielski class ImplVDevCache;
108*b1cdbd2cSJim Jagielski class UnoWrapperBase;
109*b1cdbd2cSJim Jagielski class GraphicConverter;
110*b1cdbd2cSJim Jagielski class ImplWheelWindow;
111*b1cdbd2cSJim Jagielski class SalTimer;
112*b1cdbd2cSJim Jagielski class SalI18NImeStatus;
113*b1cdbd2cSJim Jagielski class DockingManager;
114*b1cdbd2cSJim Jagielski class VclEventListeners2;
115*b1cdbd2cSJim Jagielski 
116*b1cdbd2cSJim Jagielski namespace vos { class OMutex; }
117*b1cdbd2cSJim Jagielski namespace vos { class OCondition; }
118*b1cdbd2cSJim Jagielski namespace vcl { class DisplayConnection; class SettingsConfigItem; class DeleteOnDeinitBase; }
119*b1cdbd2cSJim Jagielski namespace utl { class DefaultFontConfiguration; class FontSubstConfiguration; }
120*b1cdbd2cSJim Jagielski 
121*b1cdbd2cSJim Jagielski // -----------------
122*b1cdbd2cSJim Jagielski // - ImplSVAppData -
123*b1cdbd2cSJim Jagielski // -----------------
124*b1cdbd2cSJim Jagielski class LocaleConfigurationListener : public utl::ConfigurationListener
125*b1cdbd2cSJim Jagielski {
126*b1cdbd2cSJim Jagielski public:
127*b1cdbd2cSJim Jagielski 	virtual void ConfigurationChanged( utl::ConfigurationBroadcaster*, sal_uInt32 );
128*b1cdbd2cSJim Jagielski };
129*b1cdbd2cSJim Jagielski 
130*b1cdbd2cSJim Jagielski struct ImplSVAppData
131*b1cdbd2cSJim Jagielski {
132*b1cdbd2cSJim Jagielski     enum ImeStatusWindowMode
133*b1cdbd2cSJim Jagielski     {
134*b1cdbd2cSJim Jagielski         ImeStatusWindowMode_UNKNOWN,
135*b1cdbd2cSJim Jagielski         ImeStatusWindowMode_HIDE,
136*b1cdbd2cSJim Jagielski         ImeStatusWindowMode_SHOW
137*b1cdbd2cSJim Jagielski     };
138*b1cdbd2cSJim Jagielski 
139*b1cdbd2cSJim Jagielski     ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >    mxMSF;
140*b1cdbd2cSJim Jagielski     String*                 mpMSFTempFileName;
141*b1cdbd2cSJim Jagielski     AllSettings*            mpSettings;         // Application settings
142*b1cdbd2cSJim Jagielski 	LocaleConfigurationListener* mpCfgListener;
143*b1cdbd2cSJim Jagielski     VclEventListeners*      mpEventListeners;   // listeners for vcl events (eg, extended toolkit)
144*b1cdbd2cSJim Jagielski     VclEventListeners*      mpKeyListeners;     // listeners for key events only (eg, extended toolkit)
145*b1cdbd2cSJim Jagielski     ImplAccelManager*       mpAccelMgr;         // Accelerator Manager
146*b1cdbd2cSJim Jagielski     XubString*              mpAppName;          // Application name
147*b1cdbd2cSJim Jagielski     XubString*              mpAppFileName;      // Abs. Application FileName
148*b1cdbd2cSJim Jagielski     XubString*              mpDisplayName;      // Application Display Name
149*b1cdbd2cSJim Jagielski     String*                 mpFontPath;         // Additional Fontpath
150*b1cdbd2cSJim Jagielski     Help*                   mpHelp;             // Application help
151*b1cdbd2cSJim Jagielski     PopupMenu*              mpActivePopupMenu;  // Actives Popup-Menu (in Execute)
152*b1cdbd2cSJim Jagielski     UniqueIdContainer*      mpUniqueIdCont;     // Fuer Eindeutige Id's
153*b1cdbd2cSJim Jagielski     ImplIdleMgr*            mpIdleMgr;          // Idle-Manager
154*b1cdbd2cSJim Jagielski     ImplWheelWindow*        mpWheelWindow;      // WheelWindow
155*b1cdbd2cSJim Jagielski     ImplHotKey*             mpFirstHotKey;      // HotKey-Verwaltung
156*b1cdbd2cSJim Jagielski     ImplEventHook*          mpFirstEventHook;   // Event-Hooks
157*b1cdbd2cSJim Jagielski     VclEventListeners2*     mpPostYieldListeners;           // post yield listeners
158*b1cdbd2cSJim Jagielski     sal_uLong               mnLastInputTime;                // GetLastInputTime()
159*b1cdbd2cSJim Jagielski     sal_uInt16              mnDispatchLevel;                // DispatchLevel
160*b1cdbd2cSJim Jagielski     sal_uInt16              mnModalMode;                    // ModalMode Count
161*b1cdbd2cSJim Jagielski     sal_uInt16              mnModalDialog;                  // ModalDialog Count
162*b1cdbd2cSJim Jagielski     sal_uInt16              mnAccessCount;                  // AccessHdl Count
163*b1cdbd2cSJim Jagielski     sal_uInt16              mnSysWinMode;                   // Modus, wann SystemWindows erzeugt werden sollen
164*b1cdbd2cSJim Jagielski     sal_uInt16              mnLayout;                       // --- RTL-Flags --- currently not used, only for testing
165*b1cdbd2cSJim Jagielski     short                   mnDialogScaleX;                 // Scale X-Positions and sizes in Dialogs
166*b1cdbd2cSJim Jagielski     sal_Bool                mbInAppMain;                    // is Application::Main() on stack
167*b1cdbd2cSJim Jagielski     sal_Bool                mbInAppExecute;                 // is Application::Execute() on stack
168*b1cdbd2cSJim Jagielski     sal_Bool                mbAppQuit;                      // is Application::Quit() called
169*b1cdbd2cSJim Jagielski     sal_Bool                mbSettingsInit;                 // sal_True: Settings are initialized
170*b1cdbd2cSJim Jagielski     sal_Bool                mbDialogCancel;                 // sal_True: Alle Dialog::Execute()-Aufrufe werden mit return sal_False sofort beendet
171*b1cdbd2cSJim Jagielski     sal_Bool                mbNoYield;                      // Application::Yield will not wait for events if the queue is empty
172*b1cdbd2cSJim Jagielski                                                             // essentially that makes it the same as Application::Reschedule
173*b1cdbd2cSJim Jagielski     long                    mnDefaultLayoutBorder;          // default value in pixel for layout distances used
174*b1cdbd2cSJim Jagielski                                                             // in window arrangers
175*b1cdbd2cSJim Jagielski 
176*b1cdbd2cSJim Jagielski     bool                    mbConversionMode;               // true allows further optimizations during document conversion in different code areas.
177*b1cdbd2cSJim Jagielski 
178*b1cdbd2cSJim Jagielski     /** Controls whether showing any IME status window is toggled on or off.
179*b1cdbd2cSJim Jagielski 
180*b1cdbd2cSJim Jagielski         Only meaningful if showing IME status windows can be toggled on and off
181*b1cdbd2cSJim Jagielski         externally (see Application::CanToggleImeStatusWindow).
182*b1cdbd2cSJim Jagielski      */
183*b1cdbd2cSJim Jagielski     ImeStatusWindowMode meShowImeStatusWindow;
184*b1cdbd2cSJim Jagielski 
185*b1cdbd2cSJim Jagielski 	long m_bEnableAccessInterface;
186*b1cdbd2cSJim Jagielski                             DECL_STATIC_LINK( ImplSVAppData, ImplQuitMsg, void* );
187*b1cdbd2cSJim Jagielski 
188*b1cdbd2cSJim Jagielski };
189*b1cdbd2cSJim Jagielski 
190*b1cdbd2cSJim Jagielski 
191*b1cdbd2cSJim Jagielski // -----------------
192*b1cdbd2cSJim Jagielski // - ImplSVGDIData -
193*b1cdbd2cSJim Jagielski // -----------------
194*b1cdbd2cSJim Jagielski 
195*b1cdbd2cSJim Jagielski struct ImplSVGDIData
196*b1cdbd2cSJim Jagielski {
197*b1cdbd2cSJim Jagielski     OutputDevice*           mpFirstWinGraphics; // First OutputDevice with a Frame Graphics
198*b1cdbd2cSJim Jagielski     OutputDevice*           mpLastWinGraphics;  // Last OutputDevice with a Frame Graphics
199*b1cdbd2cSJim Jagielski     OutputDevice*           mpFirstVirGraphics; // First OutputDevice with a VirtualDevice Graphics
200*b1cdbd2cSJim Jagielski     OutputDevice*           mpLastVirGraphics;  // Last OutputDevice with a VirtualDevice Graphics
201*b1cdbd2cSJim Jagielski     OutputDevice*           mpFirstPrnGraphics; // First OutputDevice with a InfoPrinter Graphics
202*b1cdbd2cSJim Jagielski     OutputDevice*           mpLastPrnGraphics;  // Last OutputDevice with a InfoPrinter Graphics
203*b1cdbd2cSJim Jagielski     VirtualDevice*          mpFirstVirDev;      // First VirtualDevice
204*b1cdbd2cSJim Jagielski     VirtualDevice*          mpLastVirDev;       // Last VirtualDevice
205*b1cdbd2cSJim Jagielski     Printer*                mpFirstPrinter;     // First Printer
206*b1cdbd2cSJim Jagielski     Printer*                mpLastPrinter;      // Last Printer
207*b1cdbd2cSJim Jagielski     ImplPrnQueueList*       mpPrinterQueueList; // List of all printer queue
208*b1cdbd2cSJim Jagielski     ImplDevFontList*        mpScreenFontList;   // Screen-Font-List
209*b1cdbd2cSJim Jagielski     ImplFontCache*          mpScreenFontCache;  // Screen-Font-Cache
210*b1cdbd2cSJim Jagielski     ImplDirectFontSubstitution* mpDirectFontSubst;// Font-Substitutons defined in Tools->Options->Fonts
211*b1cdbd2cSJim Jagielski     GraphicConverter*       mpGrfConverter;     // Converter for graphics
212*b1cdbd2cSJim Jagielski     long                    mnRealAppFontX;     // AppFont X-Numenator for 40/tel Width
213*b1cdbd2cSJim Jagielski     long                    mnAppFontX;         // AppFont X-Numenator for 40/tel Width + DialogScaleX
214*b1cdbd2cSJim Jagielski     long                    mnAppFontY;         // AppFont Y-Numenator for 80/tel Height
215*b1cdbd2cSJim Jagielski     sal_Bool                    mbFontSubChanged;   // sal_True: FontSubstitution wurde zwischen Begin/End geaendert
216*b1cdbd2cSJim Jagielski     utl::DefaultFontConfiguration* mpDefaultFontConfiguration;
217*b1cdbd2cSJim Jagielski     utl::FontSubstConfiguration* mpFontSubstConfiguration;
218*b1cdbd2cSJim Jagielski     bool                    mbNativeFontConfig; // true: do not override UI font
219*b1cdbd2cSJim Jagielski     bool                    mbNoXORClipping;    // true: do not use XOR to achieve clipping effects
220*b1cdbd2cSJim Jagielski };
221*b1cdbd2cSJim Jagielski 
222*b1cdbd2cSJim Jagielski 
223*b1cdbd2cSJim Jagielski // -----------------
224*b1cdbd2cSJim Jagielski // - ImplSVWinData -
225*b1cdbd2cSJim Jagielski // -----------------
226*b1cdbd2cSJim Jagielski 
227*b1cdbd2cSJim Jagielski struct ImplSVWinData
228*b1cdbd2cSJim Jagielski {
229*b1cdbd2cSJim Jagielski     Window*                 mpFirstFrame;       // First FrameWindow
230*b1cdbd2cSJim Jagielski     Window*                 mpDefDialogParent;  // Default Dialog Parent
231*b1cdbd2cSJim Jagielski     WorkWindow*             mpAppWin;           // Application-Window
232*b1cdbd2cSJim Jagielski     Window*                 mpFocusWin;         // window, that has the focus
233*b1cdbd2cSJim Jagielski     Window*                 mpActiveApplicationFrame; // the last active application frame, can be used as DefModalDialogParent if no focuswin set
234*b1cdbd2cSJim Jagielski     Window*                 mpCaptureWin;       // window, that has the mouse capture
235*b1cdbd2cSJim Jagielski     Window*                 mpLastDeacWin;      // Window, that need a deactivate (FloatingWindow-Handling)
236*b1cdbd2cSJim Jagielski     DbgWindow*              mpDbgWin;           // debug window
237*b1cdbd2cSJim Jagielski     FloatingWindow*         mpFirstFloat;       // First FloatingWindow in PopupMode
238*b1cdbd2cSJim Jagielski     Dialog*                 mpLastExecuteDlg;   // Erster Dialog, der sich in Execute befindet
239*b1cdbd2cSJim Jagielski     Window*                 mpExtTextInputWin;  // Window, which is in ExtTextInput
240*b1cdbd2cSJim Jagielski     Window*                 mpTrackWin;         // window, that is in tracking mode
241*b1cdbd2cSJim Jagielski     AutoTimer*              mpTrackTimer;       // tracking timer
242*b1cdbd2cSJim Jagielski     ImageList*              mpMsgBoxImgList;    // ImageList for MessageBox
243*b1cdbd2cSJim Jagielski     ImageList*              mpMsgBoxHCImgList;  // ImageList for MessageBox (high contrast mode)
244*b1cdbd2cSJim Jagielski     Window*                 mpAutoScrollWin;    // window, that is in AutoScrollMode mode
245*b1cdbd2cSJim Jagielski     sal_uInt16                  mnTrackFlags;       // tracking flags
246*b1cdbd2cSJim Jagielski     sal_uInt16                  mnAutoScrollFlags;  // auto scroll flags
247*b1cdbd2cSJim Jagielski     sal_Bool                    mbNoDeactivate;     // sal_True: keine Deactivate durchfuehren
248*b1cdbd2cSJim Jagielski 	sal_Bool					mbNoSaveFocus;		// sal_True: menues must not save/restore focus
249*b1cdbd2cSJim Jagielski     sal_Bool                    mbNoSaveBackground; // sal_True: save background is unnecessary or even less performant
250*b1cdbd2cSJim Jagielski };
251*b1cdbd2cSJim Jagielski 
252*b1cdbd2cSJim Jagielski 
253*b1cdbd2cSJim Jagielski // ------------------
254*b1cdbd2cSJim Jagielski // - ImplSVCtrlData -
255*b1cdbd2cSJim Jagielski // ------------------
256*b1cdbd2cSJim Jagielski 
257*b1cdbd2cSJim Jagielski typedef std::vector< std::pair< String, FieldUnit > > FieldUnitStringList;
258*b1cdbd2cSJim Jagielski 
259*b1cdbd2cSJim Jagielski struct ImplSVCtrlData
260*b1cdbd2cSJim Jagielski {
261*b1cdbd2cSJim Jagielski     ImageList*              mpCheckImgList;     // ImageList for CheckBoxes
262*b1cdbd2cSJim Jagielski     ImageList*              mpRadioImgList;     // ImageList for RadioButtons
263*b1cdbd2cSJim Jagielski     ImageList*              mpPinImgList;       // ImageList for PIN
264*b1cdbd2cSJim Jagielski     ImageList*              mpSplitHPinImgList; // ImageList for Horizontale SplitWindows
265*b1cdbd2cSJim Jagielski     ImageList*              mpSplitVPinImgList; // ImageList for Vertikale SplitWindows (PIN's)
266*b1cdbd2cSJim Jagielski     ImageList*              mpSplitHArwImgList; // ImageList for Horizontale SplitWindows (Arrows)
267*b1cdbd2cSJim Jagielski     ImageList*              mpSplitVArwImgList; // ImageList for Vertikale SplitWindows (Arrows)
268*b1cdbd2cSJim Jagielski     Image*                  mpDisclosurePlus;
269*b1cdbd2cSJim Jagielski     Image*                  mpDisclosurePlusHC;
270*b1cdbd2cSJim Jagielski     Image*                  mpDisclosureMinus;
271*b1cdbd2cSJim Jagielski     Image*                  mpDisclosureMinusHC;
272*b1cdbd2cSJim Jagielski     ImplTBDragMgr*          mpTBDragMgr;        // DragMgr for ToolBox
273*b1cdbd2cSJim Jagielski     sal_uInt16                  mnCheckStyle;       // CheckBox-Style for ImageList-Update
274*b1cdbd2cSJim Jagielski     sal_uInt16                  mnRadioStyle;       // Radio-Style for ImageList-Update
275*b1cdbd2cSJim Jagielski     sal_uLong                   mnLastCheckFColor;  // Letzte FaceColor fuer CheckImage
276*b1cdbd2cSJim Jagielski     sal_uLong                   mnLastCheckWColor;  // Letzte WindowColor fuer CheckImage
277*b1cdbd2cSJim Jagielski     sal_uLong                   mnLastCheckWTextColor;  // Letzte WindowTextColor fuer CheckImage
278*b1cdbd2cSJim Jagielski     sal_uLong                   mnLastCheckLColor;  // Letzte LightColor fuer CheckImage
279*b1cdbd2cSJim Jagielski     sal_uLong                   mnLastRadioFColor;  // Letzte FaceColor fuer RadioImage
280*b1cdbd2cSJim Jagielski     sal_uLong                   mnLastRadioWColor;  // Letzte WindowColor fuer RadioImage
281*b1cdbd2cSJim Jagielski     sal_uLong                   mnLastRadioLColor;  // Letzte LightColor fuer RadioImage
282*b1cdbd2cSJim Jagielski     FieldUnitStringList*    mpFieldUnitStrings; // list with field units
283*b1cdbd2cSJim Jagielski     FieldUnitStringList*    mpCleanUnitStrings; // same list but with some "fluff" like spaces removed
284*b1cdbd2cSJim Jagielski };
285*b1cdbd2cSJim Jagielski 
286*b1cdbd2cSJim Jagielski 
287*b1cdbd2cSJim Jagielski // ------------------
288*b1cdbd2cSJim Jagielski // - ImplSVHelpData -
289*b1cdbd2cSJim Jagielski // ------------------
290*b1cdbd2cSJim Jagielski 
291*b1cdbd2cSJim Jagielski struct ImplSVHelpData
292*b1cdbd2cSJim Jagielski {
293*b1cdbd2cSJim Jagielski     sal_Bool                    mbContextHelp       : 1;    // is ContextHelp enabled
294*b1cdbd2cSJim Jagielski     sal_Bool                    mbExtHelp           : 1;    // is ExtendedHelp enabled
295*b1cdbd2cSJim Jagielski     sal_Bool                    mbExtHelpMode       : 1;    // is in ExtendedHelp Mode
296*b1cdbd2cSJim Jagielski     sal_Bool                    mbOldBalloonMode    : 1;    // BallonMode, befor ExtHelpMode started
297*b1cdbd2cSJim Jagielski     sal_Bool                    mbBalloonHelp       : 1;    // is BalloonHelp enabled
298*b1cdbd2cSJim Jagielski     sal_Bool                    mbQuickHelp         : 1;    // is QuickHelp enabled
299*b1cdbd2cSJim Jagielski     sal_Bool                    mbSetKeyboardHelp   : 1;    // tiphelp was activated by keyboard
300*b1cdbd2cSJim Jagielski     sal_Bool                    mbKeyboardHelp      : 1;    // tiphelp was activated by keyboard
301*b1cdbd2cSJim Jagielski     sal_Bool                    mbAutoHelpId        : 1;    // generate HelpIds
302*b1cdbd2cSJim Jagielski     sal_Bool                    mbRequestingHelp    : 1;    // In Window::RequestHelp
303*b1cdbd2cSJim Jagielski     HelpTextWindow*         mpHelpWin;                  // HelpWindow
304*b1cdbd2cSJim Jagielski     sal_uLong                   mnLastHelpHideTime;         // ticks of last show
305*b1cdbd2cSJim Jagielski };
306*b1cdbd2cSJim Jagielski 
307*b1cdbd2cSJim Jagielski struct ImplSVNWFData
308*b1cdbd2cSJim Jagielski {
309*b1cdbd2cSJim Jagielski     bool                    mbMenuBarDockingAreaCommonBG; // e.g. WinXP default theme
310*b1cdbd2cSJim Jagielski     bool                    mbDockingAreaSeparateTB;      // individual toolbar backgrounds
311*b1cdbd2cSJim Jagielski                                                           // instead of one for docking area
312*b1cdbd2cSJim Jagielski     bool                    mbToolboxDropDownSeparate;    // two adjacent buttons for
313*b1cdbd2cSJim Jagielski                                                           // toolbox dropdown buttons
314*b1cdbd2cSJim Jagielski     int                     mnMenuFormatExtraBorder;      // inner popup menu border
315*b1cdbd2cSJim Jagielski     bool                    mbFlatMenu;                   // no popup 3D border
316*b1cdbd2cSJim Jagielski     Color                   maMenuBarHighlightTextColor;  // override higlight text color
317*b1cdbd2cSJim Jagielski                                                           // in menubar if not transparent
318*b1cdbd2cSJim Jagielski     bool                    mbOpenMenuOnF10;              // on gnome the first menu opens on F10
319*b1cdbd2cSJim Jagielski     bool                    mbNoFocusRects;               // on Aqua focus rects are not used
320*b1cdbd2cSJim Jagielski     bool                    mbNoBoldTabFocus;             // on Aqua and Gnome the focused tab has not bold text
321*b1cdbd2cSJim Jagielski     bool                    mbCenteredTabs;               // on Aqua, tabs are centered
322*b1cdbd2cSJim Jagielski     bool                    mbNoActiveTabTextRaise;       // on Aqua the text for the selected tab
323*b1cdbd2cSJim Jagielski                                                           // should not "jump up" a pixel
324*b1cdbd2cSJim Jagielski     bool                    mbProgressNeedsErase;         // set true for platforms that should draw the
325*b1cdbd2cSJim Jagielski                                                           // window background before drawing the native
326*b1cdbd2cSJim Jagielski                                                           // progress bar
327*b1cdbd2cSJim Jagielski     bool                    mbCheckBoxNeedsErase;         // set true for platforms that should draw the
328*b1cdbd2cSJim Jagielski                                                           // window background before drawing the native
329*b1cdbd2cSJim Jagielski                                                           // checkbox
330*b1cdbd2cSJim Jagielski     bool                    mbScrollbarJumpPage;          // true for "jump to here" behavior
331*b1cdbd2cSJim Jagielski     int                     mnStatusBarLowerRightOffset;  // amount in pixel to avoid in the lower righthand corner
332*b1cdbd2cSJim Jagielski     bool                    mbCanDrawWidgetAnySize;       // set to true currently on gtk
333*b1cdbd2cSJim Jagielski };
334*b1cdbd2cSJim Jagielski 
335*b1cdbd2cSJim Jagielski 
336*b1cdbd2cSJim Jagielski // --------------
337*b1cdbd2cSJim Jagielski // - ImplSVData -
338*b1cdbd2cSJim Jagielski // --------------
339*b1cdbd2cSJim Jagielski 
340*b1cdbd2cSJim Jagielski struct ImplSVData
341*b1cdbd2cSJim Jagielski {
342*b1cdbd2cSJim Jagielski     void*                   mpSalData;          // SalData
343*b1cdbd2cSJim Jagielski     SalInstance*            mpDefInst;          // Default SalInstance
344*b1cdbd2cSJim Jagielski     Application*            mpApp;              // pApp
345*b1cdbd2cSJim Jagielski     WorkWindow*             mpDefaultWin;       // Default-Window
346*b1cdbd2cSJim Jagielski     sal_Bool                    mbDeInit;             // Is VCL deinitializing
347*b1cdbd2cSJim Jagielski     sal_uLong                   mnThreadCount;      // is VCL MultiThread enabled
348*b1cdbd2cSJim Jagielski     ImplConfigData*         mpFirstConfigData;  // Zeiger auf ersten Config-Block
349*b1cdbd2cSJim Jagielski     ImplTimerData*          mpFirstTimerData;   // list of all running timers
350*b1cdbd2cSJim Jagielski     SalTimer*				mpSalTimer;			// interface to sal event loop/timers
351*b1cdbd2cSJim Jagielski     SalI18NImeStatus*		mpImeStatus;		// interface to ime status window
352*b1cdbd2cSJim Jagielski     SalSystem*				mpSalSystem;		// SalSystem interface
353*b1cdbd2cSJim Jagielski     ResMgr*                 mpResMgr;           // SV-Resource-Manager
354*b1cdbd2cSJim Jagielski     sal_uLong                   mnTimerPeriod;      // current timer period
355*b1cdbd2cSJim Jagielski     sal_uLong                   mnTimerUpdate;      // TimerCallbackProcs on stack
356*b1cdbd2cSJim Jagielski     sal_Bool                    mbNotAllTimerCalled;// sal_True: Es muessen noch Timer abgearbeitet werden
357*b1cdbd2cSJim Jagielski     sal_Bool                    mbNoCallTimer;      // sal_True: No Timeout calls
358*b1cdbd2cSJim Jagielski     ImplSVAppData           maAppData;          // indepen data for class Application
359*b1cdbd2cSJim Jagielski     ImplSVGDIData           maGDIData;          // indepen data for Output classes
360*b1cdbd2cSJim Jagielski     ImplSVWinData           maWinData;          // indepen data for Windows classes
361*b1cdbd2cSJim Jagielski     ImplSVCtrlData          maCtrlData;         // indepen data for Control classes
362*b1cdbd2cSJim Jagielski     ImplSVHelpData          maHelpData;         // indepen data for Help classes
363*b1cdbd2cSJim Jagielski     ImplSVNWFData           maNWFData;
364*b1cdbd2cSJim Jagielski     UnoWrapperBase*         mpUnoWrapper;
365*b1cdbd2cSJim Jagielski     Window*                 mpIntroWindow;      // the splash screen
366*b1cdbd2cSJim Jagielski     DockingManager*         mpDockingManager;
367*b1cdbd2cSJim Jagielski     sal_Bool                    mbIsTestTool;
368*b1cdbd2cSJim Jagielski 
369*b1cdbd2cSJim Jagielski     vos::OThread::TThreadIdentifier                     mnMainThreadId;
370*b1cdbd2cSJim Jagielski     rtl::Reference< vcl::DisplayConnection >            mxDisplayConnection;
371*b1cdbd2cSJim Jagielski 
372*b1cdbd2cSJim Jagielski     ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxAccessBridge;
373*b1cdbd2cSJim Jagielski     com::sun::star::uno::Reference< com::sun::star::frame::XSessionManagerClient > xSMClient;
374*b1cdbd2cSJim Jagielski     ::vcl::SettingsConfigItem*			mpSettingsConfigItem;
375*b1cdbd2cSJim Jagielski     std::list< vcl::DeleteOnDeinitBase* >*   mpDeinitDeleteList;
376*b1cdbd2cSJim Jagielski     std::hash_map< int, rtl::OUString >*     mpPaperNames;
377*b1cdbd2cSJim Jagielski };
378*b1cdbd2cSJim Jagielski 
379*b1cdbd2cSJim Jagielski void        ImplInitSVData();
380*b1cdbd2cSJim Jagielski void        ImplDeInitSVData();
381*b1cdbd2cSJim Jagielski void        ImplDestroySVData();
382*b1cdbd2cSJim Jagielski Window*     ImplGetDefaultWindow();
383*b1cdbd2cSJim Jagielski VCL_PLUGIN_PUBLIC ResMgr*     ImplGetResMgr();
384*b1cdbd2cSJim Jagielski VCL_PLUGIN_PUBLIC ResId VclResId( sal_Int32 nId ); // throws std::bad_alloc if no res mgr
385*b1cdbd2cSJim Jagielski DockingManager*     ImplGetDockingManager();
386*b1cdbd2cSJim Jagielski void        ImplWindowAutoMnemonic( Window* pWindow );
387*b1cdbd2cSJim Jagielski 
388*b1cdbd2cSJim Jagielski void        ImplUpdateSystemProcessWindow();
389*b1cdbd2cSJim Jagielski Window*     ImplFindWindow( const SalFrame* pFrame, Point& rSalFramePos );
390*b1cdbd2cSJim Jagielski 
391*b1cdbd2cSJim Jagielski // SVAPP.CXX
392*b1cdbd2cSJim Jagielski sal_Bool        ImplCallHotKey( const KeyCode& rKeyCode );
393*b1cdbd2cSJim Jagielski void        ImplFreeHotKeyData();
394*b1cdbd2cSJim Jagielski void        ImplFreeEventHookData();
395*b1cdbd2cSJim Jagielski 
396*b1cdbd2cSJim Jagielski // WINPROC.CXX
397*b1cdbd2cSJim Jagielski long        ImplCallPreNotify( NotifyEvent& rEvt );
398*b1cdbd2cSJim Jagielski long        ImplCallEvent( NotifyEvent& rEvt );
399*b1cdbd2cSJim Jagielski 
400*b1cdbd2cSJim Jagielski extern VCL_PLUGIN_PUBLIC ImplSVData* pImplSVData;
ImplGetSVData()401*b1cdbd2cSJim Jagielski inline VCL_PLUGIN_PUBLIC ImplSVData* ImplGetSVData() { return pImplSVData; }
ImplGetAppSVData()402*b1cdbd2cSJim Jagielski inline ImplSVData* ImplGetAppSVData() { return ImplGetSVData(); }
403*b1cdbd2cSJim Jagielski 
404*b1cdbd2cSJim Jagielski bool ImplInitAccessBridge( sal_Bool bAllowCancel, sal_Bool &rCancelled );
405*b1cdbd2cSJim Jagielski 
406*b1cdbd2cSJim Jagielski FieldUnitStringList* ImplGetFieldUnits();
407*b1cdbd2cSJim Jagielski FieldUnitStringList* ImplGetCleanedFieldUnits();
408*b1cdbd2cSJim Jagielski 
409*b1cdbd2cSJim Jagielski 
410*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
411*b1cdbd2cSJim Jagielski 
412*b1cdbd2cSJim Jagielski // -----------------
413*b1cdbd2cSJim Jagielski // - ImplSVEmpyStr -
414*b1cdbd2cSJim Jagielski // -----------------
415*b1cdbd2cSJim Jagielski 
416*b1cdbd2cSJim Jagielski // Empty-SV-String
417*b1cdbd2cSJim Jagielski 
ImplGetSVEmptyStr()418*b1cdbd2cSJim Jagielski inline const String& ImplGetSVEmptyStr()
419*b1cdbd2cSJim Jagielski     { return String::EmptyString(); }
ImplGetSVEmptyByteStr()420*b1cdbd2cSJim Jagielski inline const ByteString& ImplGetSVEmptyByteStr()
421*b1cdbd2cSJim Jagielski     { return ByteString::EmptyString(); }
422*b1cdbd2cSJim Jagielski 
423*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
424*b1cdbd2cSJim Jagielski 
425*b1cdbd2cSJim Jagielski // ----------------------
426*b1cdbd2cSJim Jagielski // - struct ImplDelData -
427*b1cdbd2cSJim Jagielski // ----------------------
428*b1cdbd2cSJim Jagielski // ImplDelData is used as a "dog tag" by a window when it
429*b1cdbd2cSJim Jagielski // does something that could indirectly destroy the window
430*b1cdbd2cSJim Jagielski // TODO: wild destruction of a window should not be possible
431*b1cdbd2cSJim Jagielski 
432*b1cdbd2cSJim Jagielski struct ImplDelData
433*b1cdbd2cSJim Jagielski {
434*b1cdbd2cSJim Jagielski     ImplDelData*    mpNext;
435*b1cdbd2cSJim Jagielski     const Window*   mpWindow;
436*b1cdbd2cSJim Jagielski     sal_Bool            mbDel;
437*b1cdbd2cSJim Jagielski 
ImplDelDataImplDelData438*b1cdbd2cSJim Jagielski                     ImplDelData( const Window* pWindow = NULL )
439*b1cdbd2cSJim Jagielski                     : mpNext( NULL ), mpWindow( NULL ), mbDel( sal_False )
440*b1cdbd2cSJim Jagielski                     { if( pWindow ) AttachToWindow( pWindow ); }
441*b1cdbd2cSJim Jagielski 
442*b1cdbd2cSJim Jagielski     virtual         ~ImplDelData();
443*b1cdbd2cSJim Jagielski 
IsDeadImplDelData444*b1cdbd2cSJim Jagielski     bool            IsDead() const
445*b1cdbd2cSJim Jagielski     {
446*b1cdbd2cSJim Jagielski         DBG_ASSERT( mbDel == sal_False, "object deleted while in use !" );
447*b1cdbd2cSJim Jagielski         return (mbDel!=sal_False);
448*b1cdbd2cSJim Jagielski     }
IsDeleteImplDelData449*b1cdbd2cSJim Jagielski     sal_Bool /*deprecated */IsDelete() const { return (sal_Bool)IsDead(); }
450*b1cdbd2cSJim Jagielski 
451*b1cdbd2cSJim Jagielski private:
452*b1cdbd2cSJim Jagielski     void            AttachToWindow( const Window* );
453*b1cdbd2cSJim Jagielski };
454*b1cdbd2cSJim Jagielski 
455*b1cdbd2cSJim Jagielski // ---------------
456*b1cdbd2cSJim Jagielski // - ImplSVEvent -
457*b1cdbd2cSJim Jagielski // ---------------
458*b1cdbd2cSJim Jagielski 
459*b1cdbd2cSJim Jagielski struct ImplSVEvent
460*b1cdbd2cSJim Jagielski {
461*b1cdbd2cSJim Jagielski     sal_uLong               mnEvent;
462*b1cdbd2cSJim Jagielski     void*               mpData;
463*b1cdbd2cSJim Jagielski     Link*               mpLink;
464*b1cdbd2cSJim Jagielski     Window*             mpWindow;
465*b1cdbd2cSJim Jagielski     ImplDelData         maDelData;
466*b1cdbd2cSJim Jagielski     sal_Bool                mbCall;
467*b1cdbd2cSJim Jagielski };
468*b1cdbd2cSJim Jagielski 
469*b1cdbd2cSJim Jagielski #endif  // _SV_SVDATA_HXX
470