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