LibreOffice Module vcl (master)  1
builder.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  */
9 
10 #ifndef INCLUDED_VCL_BUILDER_HXX
11 #define INCLUDED_VCL_BUILDER_HXX
12 
13 #include <typeinfo>
14 #include <sal/log.hxx>
15 #include <unotools/resmgr.hxx>
16 #include <tools/fldunit.hxx>
17 #include <vcl/dllapi.h>
18 #include <vcl/window.hxx>
19 #include <vcl/vclptr.hxx>
20 #include <tools/wintypes.hxx>
21 #include <vcl/EnumContext.hxx>
22 
23 #include <memory>
24 #include <map>
25 #include <vector>
26 #ifdef check
27 # //some problem with MacOSX and a check define
28 # undef check
29 #endif
30 
31 class Button;
32 class ComboBox;
33 class FormattedField;
34 class ListBox;
35 class Menu;
36 class MessageDialog;
37 class NumericFormatter;
38 class PopupMenu;
39 class SalInstanceBuilder;
40 class ScreenshotTest;
41 class ScrollBar;
42 class SvTabListBox;
43 class Slider;
44 class DateField;
45 class TimeField;
46 class VclExpander;
47 class VclMultiLineEdit;
49 namespace xmlreader { class XmlReader; }
50 namespace com::sun::star::frame { class XFrame; }
51 
53 {
54  OUString m_sItem;
55  OString m_sId;
56  ComboBoxTextItem(const OUString& rItem, const OString& rId)
57  : m_sItem(rItem)
58  , m_sId(rId)
59  {
60  }
61 };
62 
65 {
66 public:
67  typedef std::map<OString, OUString> stringmap;
68  typedef std::map<OString, std::pair<OString, OString>> accelmap;
70  typedef void (*customMakeWidget)(VclPtr<vcl::Window> &rRet, const VclPtr<vcl::Window> &pParent, stringmap &rVec);
71 
72 public:
73  VclBuilder(vcl::Window* pParent, const OUString& sUIRootDir, const OUString& sUIFile,
74  const OString& sID = OString(),
75  const css::uno::Reference<css::frame::XFrame>& rFrame
76  = css::uno::Reference<css::frame::XFrame>(),
77  bool bLegacy = true,
78  const NotebookBarAddonsItem* pNotebookBarAddonsItem = nullptr);
79  ~VclBuilder();
81  void disposeBuilder();
82  //sID must exist and be of type T
83  template <typename T> T* get(VclPtr<T>& ret, const OString& sID);
84 
85  //sID may not exist, but must be of type T if it does
86  template <typename T = vcl::Window> T* get(const OString& sID);
87 
88  vcl::Window* get_widget_root();
89 
90  //sID may not exist
91  PopupMenu* get_menu(const OString& sID);
92 
93  //release ownership of pWindow, i.e. don't delete it
94  void drop_ownership(const vcl::Window *pWindow);
95 
96  //see m_aDeferredProperties, you need this for toplevel dialogs
97  //which build themselves from their ctor. The properties on
98  //the top level are stored in m_aDeferredProperties and need
99  //to be applied post ctor
100  void setDeferredProperties();
101 
103  const OString& getUIFile() const
104  {
105  return m_sHelpRoot;
106  }
107 
109  static void preload();
110 
111 private:
112  VclBuilder(const VclBuilder&) = delete;
113  VclBuilder& operator=(const VclBuilder&) = delete;
114 
115  // owner for ListBox/ComboBox UserData
116  std::vector<std::unique_ptr<OUString>> m_aUserData;
117 
118  //If the toplevel window has any properties which need to be set on it,
119  //but the toplevel is the owner of the builder, then its ctor
120  //has not been completed during the building, so properties for it
121  //are collected here and need to be set afterwards, e.g. during
122  //Show or Execute
124 
125  std::unique_ptr<NotebookBarAddonsItem> m_pNotebookBarAddonsItem;
126 
127  struct PackingData
128  {
130  sal_Int32 m_nPosition;
131  PackingData(bool bVerticalOrient = false)
132  : m_bVerticalOrient(bVerticalOrient)
133  , m_nPosition(-1)
134  {
135  }
136  };
137 
138  struct WinAndId
139  {
140  OString m_sID;
143  WinAndId(const OString &rId, vcl::Window *pWindow, bool bVertical)
144  : m_sID(rId)
145  , m_pWindow(pWindow)
146  , m_aPackingData(bVertical)
147  {
148  }
149  };
150  std::vector<WinAndId> m_aChildren;
151 
152  struct MenuAndId
153  {
154  OString m_sID;
156  MenuAndId(const OString &rId, Menu *pMenu);
157  };
158  std::vector<MenuAndId> m_aMenus;
159 
160  struct StringPair
161  {
162  OString m_sID;
163  OString m_sValue;
164  StringPair(const OString &rId, const OString &rValue)
165  : m_sID(rId)
166  , m_sValue(rValue)
167  {
168  }
169  };
170 
171  struct UStringPair
172  {
173  OString m_sID;
174  OUString m_sValue;
175  UStringPair(const OString &rId, const OUString &rValue)
176  : m_sID(rId)
177  , m_sValue(rValue)
178  {
179  }
180  };
181 
183 
185  {
186  OString m_sID;
187  OUString m_sValue;
188  bool m_bRadio;
189  ButtonImageWidgetMap(const OString &rId, const OUString &rValue, bool bRadio)
190  : m_sID(rId)
191  , m_sValue(rValue)
192  , m_bRadio(bRadio)
193  {
194  }
195  };
196 
201 
203  {
204  OString m_sID;
205  OUString m_sValue;
206  sal_Int32 m_nActiveId;
207  ComboBoxModelMap(const OString &rId, const OUString &rValue, sal_Int32 nActiveId)
208  : m_sID(rId)
209  , m_sValue(rValue)
210  , m_nActiveId(nActiveId)
211  {
212  }
213  };
214 
215  struct ListStore
216  {
217  typedef std::vector<OUString> row;
218  std::vector<row> m_aEntries;
219  };
220 
221  const ListStore* get_model_by_name(const OString& sID) const;
222  void mungeModel(ListBox &rTarget, const ListStore &rStore, sal_uInt16 nActiveId);
223  void mungeModel(ComboBox &rTarget, const ListStore &rStore, sal_uInt16 nActiveId);
224  void mungeModel(SvTabListBox &rTarget, const ListStore &rStore, sal_uInt16 nActiveId);
225 
226  typedef stringmap TextBuffer;
227  const TextBuffer* get_buffer_by_name(const OString& sID) const;
228 
229  static void mungeTextBuffer(VclMultiLineEdit &rTarget, const TextBuffer &rTextBuffer);
230 
231  typedef stringmap Adjustment;
232  const Adjustment* get_adjustment_by_name(const OString& sID) const;
233 
234  static void mungeAdjustment(NumericFormatter &rTarget, const Adjustment &rAdjustment);
235  static void mungeAdjustment(FormattedField &rTarget, const Adjustment &rAdjustment);
236  static void mungeAdjustment(ScrollBar &rTarget, const Adjustment &rAdjustment);
237  static void mungeAdjustment(Slider &rTarget, const Adjustment &rAdjustment);
238 
239  struct stockinfo
240  {
241  OUString m_sStock;
242  int m_nSize;
243  stockinfo() : m_nSize(4) {}
244  };
245 
246  typedef std::map<OString, stockinfo> StockMap;
247 
248  struct SizeGroup
249  {
250  std::vector<OString> m_aWidgets;
251  stringmap m_aProperties;
253  };
254 
255 
256  struct ParserState
257  {
258  std::locale m_aResLocale;
259 
260  std::vector<RadioButtonGroupMap> m_aGroupMaps;
261 
262  std::vector<ComboBoxModelMap> m_aModelMaps;
263  std::map<OString, ListStore> m_aModels;
264 
265  std::vector<TextBufferMap> m_aTextBufferMaps;
266  std::map<OString, TextBuffer> m_aTextBuffers;
267 
268  std::vector<WidgetAdjustmentMap> m_aNumericFormatterAdjustmentMaps;
269  std::vector<WidgetAdjustmentMap> m_aFormattedFormatterAdjustmentMaps;
270  std::vector<WidgetAdjustmentMap> m_aScrollAdjustmentMaps;
271  std::vector<WidgetAdjustmentMap> m_aSliderAdjustmentMaps;
272 
273  std::map<OString, Adjustment> m_aAdjustments;
274 
275  std::vector<ButtonImageWidgetMap> m_aButtonImageWidgetMaps;
276  StockMap m_aStockMap;
277 
278  std::vector<ButtonMenuMap> m_aButtonMenuMaps;
279 
280  std::map<VclPtr<vcl::Window>, VclPtr<vcl::Window>> m_aRedundantParentWidgets;
281 
282  std::vector<SizeGroup> m_aSizeGroups;
283 
284  std::map<VclPtr<vcl::Window>, stringmap> m_aAtkInfo;
285 
286  std::vector<MnemonicWidgetMap> m_aMnemonicWidgetMaps;
287 
288  std::vector< VclPtr<VclExpander> > m_aExpanderWidgets;
289 
290  std::vector< VclPtr<MessageDialog> > m_aMessageDialogs;
291 
292  sal_uInt16 m_nLastToolbarId;
293 
294  sal_uInt16 m_nLastMenuItemId;
295 
296  ParserState();
297  };
298 
299  OString m_sID;
300  OString m_sHelpRoot;
306  bool m_bLegacy;
307  std::unique_ptr<ParserState> m_pParserState;
308 
309  vcl::Window *get_by_name(const OString& sID);
310  void delete_by_name(const OString& sID);
311 
313  {
314  public:
316  : m_pBuilder(pBuilder) {}
317 
318  bool operator()(const vcl::Window *pA, const vcl::Window *pB) const;
319 
320  private:
322  };
323 
325  css::uno::Reference<css::frame::XFrame> m_xFrame;
326 
327 private:
328  VclPtr<vcl::Window> insertObject(vcl::Window *pParent,
329  const OString &rClass, const OString &rID,
330  stringmap &rProps, stringmap &rPangoAttributes,
331  stringmap &rAtkProps);
332 
333  VclPtr<vcl::Window> makeObject(vcl::Window *pParent,
334  const OString &rClass, const OString &rID,
335  stringmap &rVec);
336 
337  void connectNumericFormatterAdjustment(const OString &id, const OUString &rAdjustment);
338  void connectFormattedFormatterAdjustment(const OString &id, const OUString &rAdjustment);
339 
340  void extractGroup(const OString &id, stringmap &rVec);
341  void extractModel(const OString &id, stringmap &rVec);
342  void extractBuffer(const OString &id, stringmap &rVec);
343  static bool extractAdjustmentToMap(const OString &id, stringmap &rVec, std::vector<WidgetAdjustmentMap>& rAdjustmentMap);
344  void extractButtonImage(const OString &id, stringmap &rMap, bool bRadio);
345  void extractStock(const OString &id, stringmap &rMap);
346  void extractMnemonicWidget(const OString &id, stringmap &rMap);
347 
348  // either pParent or pAtkProps must be set, pParent for a child of a widget, pAtkProps for
349  // collecting the atk info for a GtkMenuItem
350  void handleChild(vcl::Window *pParent, stringmap *pAtkProps, xmlreader::XmlReader &reader);
351  VclPtr<vcl::Window> handleObject(vcl::Window *pParent, stringmap *pAtkProps, xmlreader::XmlReader &reader);
352  void handlePacking(vcl::Window *pCurrent, vcl::Window *pParent, xmlreader::XmlReader &reader);
353  static std::vector<vcl::EnumContext::Context> handleStyle(xmlreader::XmlReader &reader, int &nPriority);
354  static OString getStyleClass(xmlreader::XmlReader &reader);
355  void applyPackingProperty(vcl::Window *pCurrent, vcl::Window *pParent, xmlreader::XmlReader &reader);
356  void collectProperty(xmlreader::XmlReader &reader, stringmap &rVec) const;
357  static void collectPangoAttribute(xmlreader::XmlReader &reader, stringmap &rMap);
358  static void collectAtkRelationAttribute(xmlreader::XmlReader &reader, stringmap &rMap);
359  static void collectAtkRoleAttribute(xmlreader::XmlReader &reader, stringmap &rMap);
360  static void collectAccelerator(xmlreader::XmlReader &reader, accelmap &rMap);
361 
362  void insertMenuObject(
363  Menu *pParent,
364  PopupMenu *pSubMenu,
365  const OString &rClass,
366  const OString &rID,
367  stringmap &rProps,
368  stringmap &rAtkProps,
369  accelmap &rAccels);
370 
371  void handleMenuChild(Menu *pParent, xmlreader::XmlReader &reader);
372  void handleMenuObject(Menu *pParent, xmlreader::XmlReader &reader);
373 
374  void handleListStore(xmlreader::XmlReader &reader, const OString &rID, const OString &rClass);
375  void handleRow(xmlreader::XmlReader &reader, const OString &rID);
376  void handleTabChild(vcl::Window *pParent, xmlreader::XmlReader &reader);
377  VclPtr<Menu> handleMenu(xmlreader::XmlReader &reader, const OString &rID, bool bMenuBar);
378  std::vector<ComboBoxTextItem> handleItems(xmlreader::XmlReader &reader) const;
379 
380  void handleSizeGroup(xmlreader::XmlReader &reader);
381 
382  stringmap handleAtkObject(xmlreader::XmlReader &reader);
383 
384  static void applyAtkProperties(vcl::Window *pWindow, const stringmap& rProperties);
385 
386  void handleActionWidget(xmlreader::XmlReader &reader);
387 
388  PackingData get_window_packing_data(const vcl::Window *pWindow) const;
389  void set_window_packing_position(const vcl::Window *pWindow, sal_Int32 nPosition);
390 
391  static vcl::Window* prepareWidgetOwnScrolling(vcl::Window *pParent, WinBits &rWinStyle);
392  void cleanupWidgetOwnScrolling(vcl::Window *pScrollParent, vcl::Window *pWindow, stringmap &rMap);
393 
394  void set_response(const OString& sID, short nResponse);
395 
396  OString get_by_window(const vcl::Window *pWindow) const;
397  void delete_by_window(vcl::Window *pWindow);
398 };
399 
400 namespace BuilderUtils
401 {
402  //apply the properties of rProps to pWindow
403  VCL_DLLPUBLIC void set_properties(vcl::Window *pWindow, const VclBuilder::stringmap &rProps);
404 
405  //Convert _ gtk markup to ~ vcl markup
406  VCL_DLLPUBLIC OUString convertMnemonicMarkup(const OUString &rIn);
407 
409 
411 
412  //add a default value of 25 width-chars to a map if width-chars not set
414 
415  //Helpers to retrofit all the existing code to the builder
416  VCL_DLLPUBLIC void reorderWithinParent(std::vector< vcl::Window*>& rChilds, bool bIsButtonBox);
417  VCL_DLLPUBLIC void reorderWithinParent(vcl::Window &rWindow, sal_uInt16 nNewPosition);
418 
419  //Convert an accessibility role name to accessibility role number
420  VCL_DLLPUBLIC sal_Int16 getRoleFromName(const OString& roleName);
421 }
422 
423 template <typename T>
424 inline T* VclBuilder::get(VclPtr<T>& ret, const OString& sID)
425 {
426  vcl::Window *w = get_by_name(sID);
427  SAL_WARN_IF(!w, "vcl.layout", "widget \"" << sID << "\" not found in .ui");
428  SAL_WARN_IF(!dynamic_cast<T*>(w),
429  "vcl.layout", ".ui widget \"" << sID << "\" needs to correspond to vcl type " << typeid(T).name());
430  assert(w);
431  assert(dynamic_cast<T*>(w));
432  ret = static_cast<T*>(w);
433  return ret.get();
434 }
435 
436 //sID may not exist, but must be of type T if it does
437 template <typename T>
438 inline T* VclBuilder::get(const OString& sID)
439 {
440  vcl::Window *w = get_by_name(sID);
441  SAL_WARN_IF(w && !dynamic_cast<T*>(w),
442  "vcl.layout", ".ui widget \"" << sID << "\" needs to correspond to vcl type " << typeid(T).name());
443  assert(!w || dynamic_cast<T*>(w));
444  return static_cast<T*>(w);
445 }
446 
447 
448 //helper baseclass to ease retro fitting dialogs/tabpages that load a resource
449 //to load a .ui file instead
450 //
451 //vcl requires the Window Children of a Parent Window to be destroyed before
452 //the Parent Window. VclBuilderContainer owns the VclBuilder which owns the
453 //Children Window. So the VclBuilderContainer dtor must be called before
454 //the Parent Window dtor.
455 //
456 //i.e. class Dialog : public SystemWindow, public VclBuilderContainer
457 //not class Dialog : public VclBuilderContainer, public SystemWindow
458 //
459 //With the new 'dispose' framework, it is necessary to force the builder
460 //dispose before the Window dispose; so a Dialog::dispose() method would
461 //finish: disposeBuilder(); SystemWindow::dispose() to capture this ordering.
462 
464 {
465 public:
467  virtual ~VclBuilderContainer();
468  void disposeBuilder();
469 
470  template <typename T> T* get(VclPtr<T>& ret, const OString& sID)
471  {
472  return m_pUIBuilder->get<T>(ret, sID);
473  }
474  template <typename T = vcl::Window> T* get(const OString & sID)
475  {
476  return m_pUIBuilder->get<T>(sID);
477  }
479  {
480  if (!m_pUIBuilder)
481  return;
482  m_pUIBuilder->setDeferredProperties();
483  }
484 
485 protected:
486  std::unique_ptr<VclBuilder> m_pUIBuilder;
487 
488  friend class ::SalInstanceBuilder;
489  friend class ::ScreenshotTest;
490 };
491 
492 /*
493  * @return true if rValue is "True", "true", "1", etc.
494  */
495 bool toBool(const OUString &rValue);
496 
497 #endif
498 
499 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
std::vector< WidgetAdjustmentMap > m_aSliderAdjustmentMaps
Definition: builder.hxx:271
std::vector< ButtonImageWidgetMap > m_aButtonImageWidgetMaps
Definition: builder.hxx:275
void setDeferredProperties()
Definition: builder.hxx:478
stringmap m_aProperties
Definition: builder.hxx:251
bool m_bLegacy
Definition: builder.hxx:306
A widget used to choose from a list of items and which has no entry.
Definition: lstbox.hxx:83
std::vector< VclPtr< VclExpander > > m_aExpanderWidgets
Definition: builder.hxx:288
std::vector< WidgetAdjustmentMap > m_aNumericFormatterAdjustmentMaps
Definition: builder.hxx:268
#define VCL_DLLPUBLIC
Definition: dllapi.h:29
stringmap Adjustment
Definition: builder.hxx:231
std::map< OString, TextBuffer > m_aTextBuffers
Definition: builder.hxx:266
std::vector< OUString > row
Definition: builder.hxx:217
std::vector< OString > m_aWidgets
Definition: builder.hxx:250
std::map< OString, std::pair< OString, OString > > accelmap
Definition: builder.hxx:68
bool toBool(const OUString &rValue)
Definition: layout.cxx:1321
UStringPair ButtonMenuMap
Definition: builder.hxx:199
std::vector< WidgetAdjustmentMap > m_aFormattedFormatterAdjustmentMaps
Definition: builder.hxx:269
UStringPair WidgetAdjustmentMap
Definition: builder.hxx:198
stringmap m_aDeferredProperties
Definition: builder.hxx:123
std::vector< row > m_aEntries
Definition: builder.hxx:218
OString m_sHelpRoot
Definition: builder.hxx:300
void set_properties(vcl::Window *pWindow, const VclBuilder::stringmap &rProps)
Definition: builder.cxx:2298
const OString & getUIFile() const
return UI-File name (without '.ui')
Definition: builder.hxx:103
sal_Int64 WinBits
std::vector< TextBufferMap > m_aTextBufferMaps
Definition: builder.hxx:265
UStringPair MnemonicWidgetMap
Definition: builder.hxx:200
Creates a hierarchy of vcl::Windows (widgets) from a .ui file for dialogs, sidebar, etc.
Definition: builder.hxx:64
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
std::vector< RadioButtonGroupMap > m_aGroupMaps
Definition: builder.hxx:260
void reorderWithinParent(vcl::Window &rWindow, sal_uInt16 nNewPosition)
Definition: builder.cxx:2357
ResHookProc m_pStringReplace
Definition: builder.hxx:301
std::vector< MnemonicWidgetMap > m_aMnemonicWidgetMaps
Definition: builder.hxx:286
T * get(VclPtr< T > &ret, const OString &sID)
Definition: builder.hxx:424
bool m_bToplevelHasDeferredInit
Definition: builder.hxx:303
StringPair RadioButtonGroupMap
Definition: builder.hxx:182
bool m_bToplevelParentFound
Definition: builder.hxx:305
OUString extractCustomProperty(VclBuilder::stringmap &rMap)
Definition: builder.cxx:2325
std::map< OString, stockinfo > StockMap
Definition: builder.hxx:246
ComboBoxModelMap(const OString &rId, const OUString &rValue, sal_Int32 nActiveId)
Definition: builder.hxx:207
std::map< VclPtr< vcl::Window >, VclPtr< vcl::Window > > m_aRedundantParentWidgets
Definition: builder.hxx:280
sortIntoBestTabTraversalOrder(VclBuilder *pBuilder)
Definition: builder.hxx:315
OUString m_sItem
Definition: builder.hxx:54
bool m_bToplevelHasDeferredProperties
Definition: builder.hxx:304
std::map< OString, ListStore > m_aModels
Definition: builder.hxx:263
VclPtr< Menu > m_pMenu
Definition: builder.hxx:155
std::map< OString, OUString > stringmap
Definition: builder.hxx:67
sal_Int32 w
std::unique_ptr< VclBuilder > m_pUIBuilder
Definition: builder.hxx:486
VclPtr< vcl::Window > m_pParent
Definition: builder.hxx:302
UStringPair(const OString &rId, const OUString &rValue)
Definition: builder.hxx:175
stringmap TextBuffer
Definition: builder.hxx:226
ButtonImageWidgetMap(const OString &rId, const OUString &rValue, bool bRadio)
Definition: builder.hxx:189
std::vector< ComboBoxModelMap > m_aModelMaps
Definition: builder.hxx:262
PackingData(bool bVerticalOrient=false)
Definition: builder.hxx:131
UStringPair TextBufferMap
Definition: builder.hxx:197
std::map< OString, Adjustment > m_aAdjustments
Definition: builder.hxx:273
OUString convertMnemonicMarkup(const OUString &rIn)
Definition: builder.cxx:2308
std::vector< ButtonMenuMap > m_aButtonMenuMaps
Definition: builder.hxx:278
std::unique_ptr< ParserState > m_pParserState
Definition: builder.hxx:307
std::vector< std::unique_ptr< OUString > > m_aUserData
Definition: builder.hxx:116
Definition: menu.hxx:118
std::vector< WinAndId > m_aChildren
Definition: builder.hxx:150
std::map< VclPtr< vcl::Window >, stringmap > m_aAtkInfo
Definition: builder.hxx:284
#define SAL_WARN_IF(condition, area, stream)
VclPtr< vcl::Window > m_pWindow
Definition: builder.hxx:141
sal_uInt16 m_nLastMenuItemId
Definition: builder.hxx:294
css::uno::Reference< css::frame::XFrame > m_xFrame
XFrame to be able to extract labels and other properties of the UNO commands (like of ...
Definition: builder.hxx:325
std::vector< VclPtr< MessageDialog > > m_aMessageDialogs
Definition: builder.hxx:290
sal_uInt16 m_nLastToolbarId
Definition: builder.hxx:292
vcl::Window * get_by_name(const OString &sID)
Definition: builder.cxx:4096
OString m_sID
Definition: builder.hxx:299
std::unique_ptr< NotebookBarAddonsItem > m_pNotebookBarAddonsItem
Definition: builder.hxx:125
std::vector< MenuAndId > m_aMenus
Definition: builder.hxx:158
const char * name
bool extractDropdown(VclBuilder::stringmap &rMap)
Definition: builder.cxx:2345
sal_Int16 getRoleFromName(const OString &roleName)
Definition: builder.cxx:2389
A widget used to choose from a list of items and which has an entry.
Definition: combobox.hxx:38
WinAndId(const OString &rId, vcl::Window *pWindow, bool bVertical)
Definition: builder.hxx:143
StringPair(const OString &rId, const OString &rValue)
Definition: builder.hxx:164
reference_type * get() const
Get the body.
Definition: vclptr.hxx:143
PackingData m_aPackingData
Definition: builder.hxx:142
void ensureDefaultWidthChars(VclBuilder::stringmap &rMap)
Definition: builder.cxx:2337
OString m_sId
Definition: builder.hxx:55
std::vector< SizeGroup > m_aSizeGroups
Definition: builder.hxx:282
ComboBoxTextItem(const OUString &rItem, const OString &rId)
Definition: builder.hxx:56
OUString(* ResHookProc)(const OUString &rStr)
std::locale m_aResLocale
Definition: builder.hxx:258
std::vector< WidgetAdjustmentMap > m_aScrollAdjustmentMaps
Definition: builder.hxx:270
typedef void(CALLTYPE *GetFuncDataPtr)(sal_uInt16 &nNo