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