Version 7.6.3.2-android, tag libreoffice-7.6.3.2-android
[LibreOffice.git] / include / vcl / toolkit / field.hxx
blob71f1bd7033cac28ab4cfaea57556a9ab252fad48
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #pragma once
22 #if !defined(VCL_DLLIMPLEMENTATION) && !defined(TOOLKIT_DLLIMPLEMENTATION) && !defined(VCL_INTERNALS)
23 #error "don't use this in new code"
24 #endif
26 #include <sal/config.h>
28 #include <string_view>
30 #include <config_options.h>
31 #include <tools/date.hxx>
32 #include <tools/fldunit.hxx>
33 #include <tools/time.hxx>
34 #include <vcl/toolkit/combobox.hxx>
35 #include <vcl/toolkit/spinfld.hxx>
36 #include <vcl/formatter.hxx>
38 namespace com::sun::star::lang { struct Locale; }
40 class CalendarWrapper;
41 class LocaleDataWrapper;
42 class LanguageTag;
44 class VCL_DLLPUBLIC FormatterBase
46 private:
47 VclPtr<Edit> mpField;
48 mutable std::unique_ptr<LocaleDataWrapper>
49 mpLocaleDataWrapper;
50 bool mbReformat;
51 bool mbStrictFormat;
52 bool mbEmptyFieldValue;
53 bool mbEmptyFieldValueEnabled;
55 protected:
56 SAL_DLLPRIVATE void ImplSetText( const OUString& rText, Selection const * pNewSel = nullptr );
57 SAL_DLLPRIVATE bool ImplGetEmptyFieldValue() const { return mbEmptyFieldValue; }
59 void SetEmptyFieldValueData( bool bValue ) { mbEmptyFieldValue = bValue; }
61 SAL_DLLPRIVATE LocaleDataWrapper& ImplGetLocaleDataWrapper() const;
62 /** reset the LocaleDataWrapper when the language tag changes */
63 SAL_DLLPRIVATE void ImplResetLocaleDataWrapper() const;
65 Edit* GetField() const { return mpField; }
66 void ClearField() { mpField.clear(); }
68 public:
69 explicit FormatterBase(Edit* pField);
70 virtual ~FormatterBase();
72 const LocaleDataWrapper& GetLocaleDataWrapper() const;
74 bool MustBeReformatted() const { return mbReformat; }
75 void MarkToBeReformatted( bool b ) { mbReformat = b; }
77 void SetStrictFormat( bool bStrict );
78 bool IsStrictFormat() const { return mbStrictFormat; }
80 virtual void Reformat();
81 virtual void ReformatAll();
83 const css::lang::Locale& GetLocale() const;
84 const LanguageTag& GetLanguageTag() const;
86 void SetEmptyFieldValue();
87 bool IsEmptyFieldValue() const;
89 void EnableEmptyFieldValue( bool bEnable ) { mbEmptyFieldValueEnabled = bEnable; }
90 bool IsEmptyFieldValueEnabled() const { return mbEmptyFieldValueEnabled; }
93 class VCL_DLLPUBLIC SAL_LOPLUGIN_ANNOTATE("crosscast") NumericFormatter : public FormatterBase
95 public:
96 virtual ~NumericFormatter() override;
98 virtual void Reformat() override;
100 void SetMin( sal_Int64 nNewMin );
101 sal_Int64 GetMin() const { return mnMin; }
102 void SetMax( sal_Int64 nNewMax );
103 sal_Int64 GetMax() const { return mnMax; }
105 sal_Int64 ClipAgainstMinMax(sal_Int64 nValue) const;
107 void SetFirst( sal_Int64 nNewFirst ) { mnFirst = nNewFirst; }
108 sal_Int64 GetFirst() const { return mnFirst; }
109 void SetLast( sal_Int64 nNewLast ) { mnLast = nNewLast; }
110 sal_Int64 GetLast() const { return mnLast; }
111 void SetSpinSize( sal_Int64 nNewSize ) { mnSpinSize = nNewSize; }
112 sal_Int64 GetSpinSize() const { return mnSpinSize; }
114 void SetDecimalDigits( sal_uInt16 nDigits );
115 sal_uInt16 GetDecimalDigits() const { return mnDecimalDigits;}
117 void SetUseThousandSep( bool b );
118 bool IsUseThousandSep() const { return mbThousandSep; }
120 void SetUserValue( sal_Int64 nNewValue );
121 virtual void SetValue( sal_Int64 nNewValue );
122 sal_Int64 GetValue() const;
123 virtual OUString CreateFieldText( sal_Int64 nValue ) const;
125 sal_Int64 Normalize( sal_Int64 nValue ) const;
126 sal_Int64 Denormalize( sal_Int64 nValue ) const;
128 OUString GetValueString() const;
129 void SetValueFromString(const OUString& rStr);
131 protected:
132 sal_Int64 mnLastValue;
133 sal_Int64 mnMin;
134 sal_Int64 mnMax;
135 bool mbFormatting;
137 // the members below are used in all derivatives of NumericFormatter
138 // not in NumericFormatter itself.
139 sal_Int64 mnSpinSize;
140 sal_Int64 mnFirst;
141 sal_Int64 mnLast;
143 NumericFormatter(Edit* pEdit);
145 void FieldUp();
146 void FieldDown();
147 void FieldFirst();
148 void FieldLast();
149 void FormatValue(Selection const * pNewSelection = nullptr);
151 SAL_DLLPRIVATE void ImplNumericReformat();
152 SAL_DLLPRIVATE void ImplNewFieldValue( sal_Int64 nNewValue );
153 SAL_DLLPRIVATE void ImplSetUserValue( sal_Int64 nNewValue, Selection const * pNewSelection = nullptr );
155 virtual sal_Int64 GetValueFromString(const OUString& rStr) const;
157 private:
158 sal_uInt16 mnDecimalDigits;
159 bool mbThousandSep;
163 class VCL_DLLPUBLIC MetricFormatter : public NumericFormatter
165 public:
166 virtual ~MetricFormatter() override;
168 virtual void Reformat() override;
170 virtual void SetUnit( FieldUnit meUnit );
171 FieldUnit GetUnit() const { return meUnit; }
172 void SetCustomUnitText( const OUString& rStr );
173 const OUString& GetCustomUnitText() const { return maCustomUnitText; }
175 using NumericFormatter::SetMax;
176 void SetMax( sal_Int64 nNewMax, FieldUnit eInUnit );
177 using NumericFormatter::GetMax;
178 sal_Int64 GetMax( FieldUnit eOutUnit ) const;
179 using NumericFormatter::SetMin;
180 void SetMin( sal_Int64 nNewMin, FieldUnit eInUnit );
181 using NumericFormatter::GetMin;
182 sal_Int64 GetMin( FieldUnit eOutUnit ) const;
184 void SetValue( sal_Int64 nNewValue, FieldUnit eInUnit );
185 virtual void SetValue( sal_Int64 nValue ) override;
186 using NumericFormatter::SetUserValue;
187 void SetUserValue( sal_Int64 nNewValue, FieldUnit eInUnit );
188 using NumericFormatter::GetValue;
189 sal_Int64 GetValue( FieldUnit eOutUnit ) const;
190 virtual OUString CreateFieldText( sal_Int64 nValue ) const override;
191 sal_Int64 GetCorrectedValue( FieldUnit eOutUnit ) const;
193 protected:
194 FieldUnit meUnit;
196 MetricFormatter(Edit* pEdit);
198 SAL_DLLPRIVATE void ImplMetricReformat( const OUString& rStr, double& rValue, OUString& rOutStr );
200 virtual sal_Int64 GetValueFromString(const OUString& rStr) const override;
201 sal_Int64 GetValueFromStringUnit(const OUString& rStr, FieldUnit eOutUnit) const;
203 private:
204 OUString maCustomUnitText;
207 class VCL_DLLPUBLIC MetricField final : public SpinField, public MetricFormatter
209 public:
210 explicit MetricField( vcl::Window* pParent, WinBits nWinStyle );
212 virtual bool PreNotify( NotifyEvent& rNEvt ) override;
213 virtual bool EventNotify( NotifyEvent& rNEvt ) override;
214 virtual void DataChanged( const DataChangedEvent& rDCEvt ) override;
216 virtual Size CalcMinimumSize() const override;
218 virtual void Modify() override;
220 virtual void Up() override;
221 virtual void Down() override;
222 virtual void First() override;
223 virtual void Last() override;
225 virtual void SetUnit( FieldUnit meUnit ) override;
227 void SetFirst( sal_Int64 nNewFirst, FieldUnit eInUnit );
228 sal_Int64 GetFirst( FieldUnit eOutUnit ) const;
229 void SetLast( sal_Int64 nNewLast, FieldUnit eInUnit );
230 sal_Int64 GetLast( FieldUnit eOutUnit ) const;
232 virtual bool set_property(const OUString &rKey, const OUString &rValue) override;
233 virtual void dispose() override;
235 virtual void DumpAsPropertyTree(tools::JsonWriter&) override;
236 virtual FactoryFunction GetUITestFactory() const override;
239 class VCL_DLLPUBLIC MetricBox final : public ComboBox, public MetricFormatter
241 public:
242 explicit MetricBox( vcl::Window* pParent, WinBits nWinStyle );
244 virtual bool PreNotify( NotifyEvent& rNEvt ) override;
245 virtual bool EventNotify( NotifyEvent& rNEvt ) override;
246 virtual void DataChanged( const DataChangedEvent& rDCEvt ) override;
248 virtual Size CalcMinimumSize() const override;
250 virtual void Modify() override;
252 virtual void ReformatAll() override;
254 // Needed, because GetValue() with nPos hide these functions
255 using MetricFormatter::GetValue;
257 virtual void dispose() override;
260 class UNLESS_MERGELIBS(VCL_DLLPUBLIC) CurrencyFormatter : public NumericFormatter
262 protected:
263 CurrencyFormatter(Edit* pEdit);
264 SAL_DLLPRIVATE void ImplCurrencyReformat( const OUString& rStr, OUString& rOutStr );
265 virtual sal_Int64 GetValueFromString(const OUString& rStr) const override;
267 public:
268 virtual ~CurrencyFormatter() override;
270 virtual void Reformat() override;
272 virtual void SetValue( sal_Int64 nNewValue ) override;
273 virtual OUString CreateFieldText( sal_Int64 nValue ) const override;
276 class UNLESS_MERGELIBS(VCL_DLLPUBLIC) CurrencyField final : public SpinField, public CurrencyFormatter
278 public:
279 CurrencyField( vcl::Window* pParent, WinBits nWinStyle );
281 virtual bool PreNotify( NotifyEvent& rNEvt ) override;
282 virtual bool EventNotify( NotifyEvent& rNEvt ) override;
283 virtual void DataChanged( const DataChangedEvent& rDCEvt ) override;
285 virtual void Modify() override;
287 virtual void Up() override;
288 virtual void Down() override;
289 virtual void First() override;
290 virtual void Last() override;
291 virtual void dispose() override;
294 class UNLESS_MERGELIBS(VCL_DLLPUBLIC) TimeFormatter : public FormatterBase
296 private:
297 tools::Time maLastTime;
298 tools::Time maMin;
299 tools::Time maMax;
300 TimeFieldFormat meFormat;
301 TimeFormat mnTimeFormat;
302 bool mbDuration;
303 bool mbEnforceValidValue;
305 protected:
306 tools::Time maFieldTime;
308 TimeFormatter(Edit* pEdit);
310 SAL_DLLPRIVATE void ImplTimeReformat( std::u16string_view rStr, OUString& rOutStr );
311 SAL_DLLPRIVATE void ImplNewFieldValue( const tools::Time& rTime );
312 SAL_DLLPRIVATE void ImplSetUserTime( const tools::Time& rNewTime, Selection const * pNewSelection = nullptr );
313 SAL_DLLPRIVATE bool ImplAllowMalformedInput() const;
315 public:
316 static OUString FormatTime(const tools::Time& rNewTime, TimeFieldFormat eFormat, TimeFormat eHourFormat, bool bDuration, const LocaleDataWrapper& rLocaleData);
317 static bool TextToTime(std::u16string_view rStr, tools::Time& rTime, TimeFieldFormat eFormat, bool bDuration, const LocaleDataWrapper& rLocaleDataWrapper, bool _bSkipInvalidCharacters = true);
318 static int GetTimeArea(TimeFieldFormat eFormat, std::u16string_view rText, int nCursor,
319 const LocaleDataWrapper& rLocaleDataWrapper);
320 static tools::Time SpinTime(bool bUp, const tools::Time& rTime, TimeFieldFormat eFormat,
321 bool bDuration, std::u16string_view rText, int nCursor,
322 const LocaleDataWrapper& rLocaleDataWrapper);
324 virtual ~TimeFormatter() override;
326 virtual void Reformat() override;
327 virtual void ReformatAll() override;
329 void SetMin( const tools::Time& rNewMin );
330 const tools::Time& GetMin() const { return maMin; }
331 void SetMax( const tools::Time& rNewMax );
332 const tools::Time& GetMax() const { return maMax; }
334 void SetTimeFormat( TimeFormat eNewFormat );
335 TimeFormat GetTimeFormat() const { return mnTimeFormat;}
337 void SetFormat( TimeFieldFormat eNewFormat );
338 TimeFieldFormat GetFormat() const { return meFormat; }
340 void SetDuration( bool mbDuration );
341 bool IsDuration() const { return mbDuration; }
343 void SetTime( const tools::Time& rNewTime );
344 void SetUserTime( const tools::Time& rNewTime );
345 tools::Time GetTime() const;
346 void SetEmptyTime() { FormatterBase::SetEmptyFieldValue(); }
347 bool IsEmptyTime() const { return FormatterBase::IsEmptyFieldValue(); }
349 /** enables or disables the enforcement of valid values
351 If this is set to true (which is the default), then GetTime will always return a valid
352 time, no matter whether the current text can really be interpreted as time. (Note: this
353 is the compatible behavior).
355 If this is set to false, the GetTime will return GetInvalidTime, in case the current text
356 cannot be interpreted as time.
358 In addition, if this is set to false, the text in the field will <em>not</em> be corrected
359 when the control loses the focus - instead, the invalid input will be preserved.
361 void EnforceValidValue( bool _bEnforce ) { mbEnforceValidValue = _bEnforce; }
362 bool IsEnforceValidValue( ) const { return mbEnforceValidValue; }
365 class UNLESS_MERGELIBS(VCL_DLLPUBLIC) TimeField final : public SpinField, public TimeFormatter
367 private:
368 tools::Time maFirst;
369 tools::Time maLast;
371 SAL_DLLPRIVATE void ImplTimeSpinArea( bool bUp );
373 public:
374 explicit TimeField( vcl::Window* pParent, WinBits nWinStyle );
376 virtual bool PreNotify( NotifyEvent& rNEvt ) override;
377 virtual bool EventNotify( NotifyEvent& rNEvt ) override;
378 virtual void DataChanged( const DataChangedEvent& rDCEvt ) override;
380 virtual void Modify() override;
382 virtual void Up() override;
383 virtual void Down() override;
384 virtual void First() override;
385 virtual void Last() override;
387 void SetFirst( const tools::Time& rNewFirst ) { maFirst = rNewFirst; }
388 const tools::Time& GetFirst() const { return maFirst; }
389 void SetLast( const tools::Time& rNewLast ) { maLast = rNewLast; }
390 const tools::Time& GetLast() const { return maLast; }
392 void SetExtFormat( ExtTimeFieldFormat eFormat );
393 virtual void dispose() override;
396 class UNLESS_MERGELIBS(VCL_DLLPUBLIC) DateFormatter : public FormatterBase
398 private:
399 Formatter::StaticFormatter maStaticFormatter;
400 std::unique_ptr<CalendarWrapper> mxCalendarWrapper;
401 Date maFieldDate;
402 Date maLastDate;
403 Date maMin;
404 Date maMax;
405 bool mbLongFormat;
406 bool mbShowDateCentury;
407 ExtDateFieldFormat mnExtDateFormat;
408 bool mbEnforceValidValue;
410 protected:
411 DateFormatter(Edit* pEdit);
413 SAL_DLLPRIVATE const Date& ImplGetFieldDate() const { return maFieldDate; }
414 SAL_DLLPRIVATE void ImplDateReformat( const OUString& rStr, OUString& rOutStr );
415 SAL_DLLPRIVATE void ImplSetUserDate( const Date& rNewDate,
416 Selection const * pNewSelection = nullptr );
417 SAL_DLLPRIVATE OUString ImplGetDateAsText( const Date& rDate ) const;
418 SAL_DLLPRIVATE void ImplNewFieldValue( const Date& rDate );
419 CalendarWrapper& GetCalendarWrapper() const;
421 SAL_DLLPRIVATE bool ImplAllowMalformedInput() const;
423 public:
424 static OUString FormatDate(const Date& rNewDate, ExtDateFieldFormat eFormat, const LocaleDataWrapper& rLocaleData, const Formatter::StaticFormatter& rStaticFormatter);
425 static bool TextToDate(const OUString& rStr, Date& rTime, ExtDateFieldFormat eFormat, const LocaleDataWrapper& rLocaleDataWrapper, const CalendarWrapper& rCalendarWrapper);
426 static int GetDateArea(ExtDateFieldFormat& eFormat, std::u16string_view rText, int nCursor, const LocaleDataWrapper& rLocaleDataWrapper);
428 virtual ~DateFormatter() override;
430 virtual void Reformat() override;
431 virtual void ReformatAll() override;
433 void SetExtDateFormat( ExtDateFieldFormat eFormat );
434 ExtDateFieldFormat GetExtDateFormat( bool bResolveSystemFormat = false ) const;
436 void SetMin( const Date& rNewMin );
437 const Date& GetMin() const { return maMin; }
439 void SetMax( const Date& rNewMax );
440 const Date& GetMax() const { return maMax; }
443 // MT: Remove these methods too, ExtDateFormat should be enough!
444 // What should happen if using DDMMYYYY, but ShowCentury=false?
446 void SetLongFormat( bool bLong );
447 bool IsLongFormat() const { return mbLongFormat; }
448 void SetShowDateCentury( bool bShowCentury );
449 bool IsShowDateCentury() const { return mbShowDateCentury; }
452 void SetDate( const Date& rNewDate );
453 Date GetDate() const;
454 void SetEmptyDate();
455 bool IsEmptyDate() const;
457 void ResetLastDate() { maLastDate = Date( Date::EMPTY ); }
459 static void ExpandCentury( Date& rDate );
460 static void ExpandCentury( Date& rDate, sal_uInt16 nTwoDigitYearStart );
462 /** enables or disables the enforcement of valid values
464 If this is set to true (which is the default), then GetDate will always return a valid
465 date, no matter whether the current text can really be interpreted as date. (Note: this
466 is the compatible behavior).
468 If this is set to false, the GetDate will return GetInvalidDate, in case the current text
469 cannot be interpreted as date.
471 In addition, if this is set to false, the text in the field will \em not be corrected
472 when the control loses the focus - instead, the invalid input will be preserved.
474 void EnforceValidValue( bool _bEnforce ) { mbEnforceValidValue = _bEnforce; }
475 bool IsEnforceValidValue( ) const { return mbEnforceValidValue; }
478 class SAL_DLLPUBLIC_RTTI DateField : public SpinField, public DateFormatter
480 private:
481 Date maFirst;
482 Date maLast;
484 protected:
485 void ImplDateSpinArea( bool bUp );
487 public:
488 explicit DateField( vcl::Window* pParent, WinBits nWinStyle );
490 virtual bool PreNotify( NotifyEvent& rNEvt ) override;
491 virtual bool EventNotify( NotifyEvent& rNEvt ) override;
492 virtual void DataChanged( const DataChangedEvent& rDCEvt ) override;
494 virtual void Modify() override;
496 virtual void Up() override;
497 virtual void Down() override;
498 virtual void First() override;
499 virtual void Last() override;
501 void SetFirst( const Date& rNewFirst ) { maFirst = rNewFirst; }
502 const Date& GetFirst() const { return maFirst; }
503 void SetLast( const Date& rNewLast ) { maLast = rNewLast; }
504 const Date& GetLast() const { return maLast; }
505 virtual void dispose() override;
508 class UNLESS_MERGELIBS(VCL_DLLPUBLIC) NumericBox final : public ComboBox, public NumericFormatter
510 SAL_DLLPRIVATE void ImplNumericReformat( const OUString& rStr, sal_Int64& rValue, OUString& rOutStr );
511 public:
512 explicit NumericBox( vcl::Window* pParent, WinBits nWinStyle );
514 virtual Size CalcMinimumSize() const override;
516 virtual bool PreNotify( NotifyEvent& rNEvt ) override;
517 virtual bool EventNotify( NotifyEvent& rNEvt ) override;
518 virtual void DataChanged( const DataChangedEvent& rDCEvt ) override;
520 virtual void Modify() override;
522 virtual void ReformatAll() override;
524 virtual void dispose() override;
527 #define PATTERN_FORMAT_EMPTYLITERALS (sal_uInt16(0x0001))
529 class UNLESS_MERGELIBS(VCL_DLLPUBLIC) PatternFormatter : public FormatterBase
531 private:
532 OString m_aEditMask;
533 OUString maLiteralMask;
534 bool mbSameMask;
535 bool mbInPattKeyInput;
537 protected:
538 PatternFormatter(Edit* pEdit);
540 SAL_DLLPRIVATE bool ImplIsSameMask() const { return mbSameMask; }
541 SAL_DLLPRIVATE bool& ImplGetInPattKeyInput() { return mbInPattKeyInput; }
543 public:
544 virtual ~PatternFormatter() override;
546 virtual void Reformat() override;
548 void SetMask(const OString& rEditMask, const OUString& rLiteralMask );
549 const OString& GetEditMask() const { return m_aEditMask; }
550 const OUString& GetLiteralMask() const { return maLiteralMask; }
552 void SetString( const OUString& rStr );
553 OUString GetString() const;
556 class UNLESS_MERGELIBS(VCL_DLLPUBLIC) PatternField final : public SpinField, public PatternFormatter
558 public:
559 explicit PatternField( vcl::Window* pParent, WinBits nWinStyle );
561 virtual bool PreNotify( NotifyEvent& rNEvt ) override;
562 virtual bool EventNotify( NotifyEvent& rNEvt ) override;
563 virtual void Modify() override;
564 virtual void dispose() override;
567 class UNLESS_MERGELIBS(VCL_DLLPUBLIC) PatternBox final : public ComboBox, public PatternFormatter
569 public:
570 PatternBox( vcl::Window* pParent, WinBits nWinStyle );
572 virtual bool PreNotify( NotifyEvent& rNEvt ) override;
573 virtual bool EventNotify( NotifyEvent& rNEvt ) override;
575 virtual void Modify() override;
577 virtual void ReformatAll() override;
578 virtual void dispose() override;
581 class UNLESS_MERGELIBS(VCL_DLLPUBLIC) CurrencyBox final : public ComboBox, public CurrencyFormatter
583 public:
584 explicit CurrencyBox( vcl::Window* pParent, WinBits nWinStyle );
586 virtual bool PreNotify( NotifyEvent& rNEvt ) override;
587 virtual bool EventNotify( NotifyEvent& rNEvt ) override;
588 virtual void DataChanged( const DataChangedEvent& rDCEvt ) override;
590 virtual void Modify() override;
592 virtual void ReformatAll() override;
594 virtual void dispose() override;
597 class UNLESS_MERGELIBS(VCL_DLLPUBLIC) DateBox final : public ComboBox, public DateFormatter
599 public:
600 explicit DateBox( vcl::Window* pParent, WinBits nWinStyle );
602 virtual bool PreNotify( NotifyEvent& rNEvt ) override;
603 virtual bool EventNotify( NotifyEvent& rNEvt ) override;
604 virtual void DataChanged( const DataChangedEvent& rDCEvt ) override;
606 virtual void Modify() override;
608 virtual void ReformatAll() override;
609 virtual void dispose() override;
612 class UNLESS_MERGELIBS(VCL_DLLPUBLIC) TimeBox final : public ComboBox, public TimeFormatter
614 public:
615 explicit TimeBox( vcl::Window* pParent, WinBits nWinStyle );
617 virtual bool PreNotify( NotifyEvent& rNEvt ) override;
618 virtual bool EventNotify( NotifyEvent& rNEvt ) override;
619 virtual void DataChanged( const DataChangedEvent& rDCEvt ) override;
621 virtual void Modify() override;
623 virtual void ReformatAll() override;
624 virtual void dispose() override;
627 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */