00001
00072 #ifndef INC_MGUI_EDIT_H
00073 #define INC_MGUI_EDIT_H
00074
00075 #ifndef INC_MGUI_EDITBASE_H
00076 #include <mgui/editbase.h>
00077 #endif
00078
00079 #ifndef INC_MGUI_KEYCODE_H
00080 #include <mgui/keycode.h>
00081 #endif
00082
00083 #ifndef INC_MI32_RANGE_H
00084 #include <mi32/range.h>
00085 #endif
00086
00087 #ifndef INC_MI32_LATLONFM_H
00088 #include <mi32/latlonfm.h>
00089 #endif
00090
00091 #ifndef INC_MI32_UNITCONV_H
00092 #include <mi32/unitconv.h>
00093 #endif
00094
00095
00096 #ifndef GENERATING_DOXYGEN_OUTPUT
00097 struct TEXTSTYLE;
00098 struct COLOR;
00099 struct XeTextSyntaxParseCallbackData;
00100 #endif
00101
00102
00103 namespace MGUI {
00104
00105
00107 class CTRL_EDIT_STRING : public MGUI::CTRL_EDIT_BASE {
00108 public:
00109
00110 enum FLAGS {
00111 FLAG_Default = CTRL_EDIT_BASE::CREATEFLAG_None,
00112 FLAG_RightJustify = CTRL_EDIT_BASE::CREATEFLAG_RightAlign,
00113 FLAG_ReadOnly = CTRL_EDIT_BASE::CREATEFLAG_ReadOnly,
00114 FLAG_Opaque = CTRL_EDIT_BASE::CREATEFLAG_Opaque,
00115 FLAG_WidthInPixels = CTRL_EDIT_BASE::CREATEFLAG_WidthInPixels,
00116 FLAG_UseFixedWidthFont = CTRL_EDIT_BASE::CREATEFLAG_UseFixedWidthFont,
00117 };
00118
00120 CTRL_EDIT_STRING (
00121 );
00122
00124 virtual ~CTRL_EDIT_STRING (
00125 );
00126
00128 void ClearValue (
00129 bool notify = true
00130 );
00131
00133 void Create (
00134 MGUI::LAYOUT_PANE_BASE& ParentPane,
00135 int maxlen,
00136 int width = 0,
00137 FLAGS flags = FLAG_Default,
00138 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedHeight
00139 );
00140
00142 const MISTRING& GetValue (
00143 );
00144
00147 void IniRead (
00148 INIHANDLE IniHandle,
00149 const char *IniGroup,
00150 const char *IniField,
00151 bool notify = true
00152 );
00153
00155 void IniWrite (
00156 INIHANDLE IniHandle,
00157 const char *IniGroup,
00158 const char *IniField
00159 ) const { ::IniWrite(IniHandle,IniGroup,IniField,m_value); }
00160
00162 void SetCursorPos (
00163 int nCharIndex
00164 );
00165
00167 void SetDelegateOnValidate (
00168 FastDelegate<bool(MISTRING&)> delegate
00169 ) { m_DelegateOnValidate = delegate; }
00170
00174 void SetValue (
00175 const MIUNICODE* string,
00176 bool notify = true
00177 );
00178
00179 private:
00180 #ifndef GENERATING_DOXYGEN_OUTPUT
00181
00182 FastDelegate<bool(MISTRING&)> m_DelegateOnValidate;
00183 MISTRING m_value;
00184
00185 bool OnValidate (MISTRING& string) const;
00186
00187 virtual void v_UpdateValue (MISTRING& newvalue);
00188
00189 CTRL_EDIT_STRING (const CTRL_EDIT_STRING&);
00190 CTRL_EDIT_STRING& operator= (const CTRL_EDIT_STRING&);
00191 #endif // GENERATING_DOXYGEN_OUTPUT
00192
00195 virtual bool v_OnValidate (
00196 MISTRING& string
00197 ) const;
00198
00199 };
00200
00201 #ifndef GENERATING_DOXYGEN_OUTPUT
00202 DEFINE_ENUM_OP_BITWISE(MGUI::CTRL_EDIT_STRING::FLAGS)
00203 #endif
00204
00205
00206
00209 class FORM_EDIT_STRING : public MGUI::FORM_COMPOSITE {
00210 public:
00212 FORM_EDIT_STRING (
00213 );
00214
00216 virtual ~FORM_EDIT_STRING (
00217 );
00218
00220 void ClearValue (
00221 bool notify = true
00222 ) { m_editctrl.ClearValue(notify); }
00223
00225 void Create (
00226 MGUI::LAYOUT_PANE_BASE& ParentPane,
00227 const MISTRING& label,
00228 int maxlen,
00229 int width = 0,
00230 MGUI::CTRL_EDIT_STRING::FLAGS flags = MGUI::CTRL_EDIT_STRING::FLAG_Default,
00231 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedHeight,
00232 MGUI::CTRL_LABEL::STYLE labelstyle = MGUI::CTRL_LABEL::STYLE_LeftNoWrap
00233 );
00234
00236 MGUI::CTRL_EDIT_STRING& GetEditCtrl (
00237 ) { return (m_editctrl); }
00238
00241 MGUI::CTRL_LABEL& GetLabel (
00242 ) { return (m_label); }
00243
00245 const MISTRING& GetValue (
00246 ) { return (m_editctrl.GetValue()); }
00247
00249 bool HasValue (
00250 ) const { return (m_editctrl.HasValue()); }
00251
00254 void IniRead (
00255 INIHANDLE IniHandle,
00256 const char *IniGroup,
00257 const char *IniField,
00258 bool notify = true
00259 ) { m_editctrl.IniRead(IniHandle,IniGroup,IniField,notify); }
00260
00262 void IniWrite (
00263 INIHANDLE IniHandle,
00264 const char *IniGroup,
00265 const char *IniField
00266 ) const { m_editctrl.IniWrite(IniHandle,IniGroup,IniField); }
00267
00269 void SetDelegateOnActivate (
00270 DELEGATE_VOID_NOPARMS delegate
00271 ) { m_editctrl.SetDelegateOnActivate(delegate); }
00272
00275 void SetDelegateOnChangeValue (
00276 DELEGATE_VOID_NOPARMS delegate
00277 ) { m_editctrl.SetDelegateOnChangeValue(delegate); }
00278
00281 void SetDelegateOnUserEdit (
00282 DELEGATE_VOID_NOPARMS delegate
00283 ) { m_editctrl.SetDelegateOnUserEdit(delegate); }
00284
00286 void SetDelegateOnValidate (
00287 FastDelegate<bool(MISTRING&)> delegate
00288 ) { m_editctrl.SetDelegateOnValidate(delegate); }
00289
00291 void SetLabel (
00292 const MISTRING& label
00293 ) { m_label.SetLabel(label); }
00294
00296 void SetSelection (
00297 int StartChar = 0,
00298 int EndChar = -1,
00299 bool NoScroll = true
00300 ) { m_editctrl.SetSelection(StartChar,EndChar,NoScroll); }
00301
00304 void SetValidChars (
00305 const MIUNICODE* string,
00306 bool invert = false
00307 ) { m_editctrl.SetValidChars(string,invert); }
00308
00312 void SetValue (
00313 const MIUNICODE* string,
00314 bool notify = true
00315 ) { m_editctrl.SetValue(string,notify); }
00316
00317 private:
00318 #ifndef GENERATING_DOXYGEN_OUTPUT
00319 CTRL_LABEL m_label;
00320 CTRL_EDIT_STRING m_editctrl;
00321
00322 virtual void v_SetFocus () const;
00323 #endif // GENERATING_DOXYGEN_OUTPUT
00324 };
00325
00326
00327
00329 class CTRL_EDIT_NUMBER : public MGUI::CTRL_EDIT_BASE {
00330 public:
00331
00332 enum FLAGS {
00333 FLAG_Default = CTRL_EDIT_BASE::CREATEFLAG_None,
00334 FLAG_ReadOnly = CTRL_EDIT_BASE::CREATEFLAG_ReadOnly,
00335 FLAG_Opaque = CTRL_EDIT_BASE::CREATEFLAG_Opaque,
00336 FLAG_WidthInPixels = CTRL_EDIT_BASE::CREATEFLAG_WidthInPixels,
00337 FLAG_UseFixedWidthFont = CTRL_EDIT_BASE::CREATEFLAG_UseFixedWidthFont,
00338 FLAG_NoMin = 0x0001,
00339 FLAG_NoMax = 0x0002,
00340 FLAG_NoRange = 0x0003,
00341 FLAG_NoDefault = 0x0004,
00342 FLAG_AddOne = 0x0008,
00343 FLAG_BlankZero = 0x0020,
00344 FLAG_LeftJustify = 0x0080
00345 };
00346
00347 enum FORMAT {
00348 FORMAT_Decimal,
00349 FORMAT_Exponential,
00350 FORMAT_Latitude,
00351 FORMAT_Longitude,
00352 FORMAT_DegMinSec
00353 };
00354
00356 CTRL_EDIT_NUMBER (
00357 );
00358
00360 virtual ~CTRL_EDIT_NUMBER (
00361 );
00362
00364 void ClearValue (
00365 bool notify = true
00366 );
00367
00369 void Create (
00370 MGUI::LAYOUT_PANE_BASE& ParentPane,
00371 double dft,
00372 double min,
00373 double max,
00374 int places = 0,
00375 int width = 0,
00376 FLAGS flags = FLAG_Default,
00377 FORMAT format = FORMAT_Decimal,
00378 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize
00379 );
00380
00383 const DOUBLE_RANGE& GetRange (
00384 ) const { return (m_range); }
00385
00387 double GetValue (
00388 );
00389
00391 bool HasValue (
00392 );
00393
00396 void IniRead (
00397 INIHANDLE IniHandle,
00398 const char *IniGroup,
00399 const char *IniField,
00400 bool notify = true
00401 );
00402
00404 void IniWrite (
00405 INIHANDLE IniHandle,
00406 const char *IniGroup,
00407 const char *IniField
00408 ) const { ::IniWrite(IniHandle,IniGroup,IniField,m_value); }
00409
00412 void SetFormat (
00413 FORMAT format,
00414 int places = -2,
00415 bool notify = true
00416 );
00417
00419
00420
00421
00422
00425 bool SetRange (
00426 const DOUBLE_RANGE& range,
00427 bool notify = true,
00428 FLAGS flags = FLAG_Default
00429 );
00430
00433 bool SetRange (
00434 double minimum,
00435 double maximum,
00436 bool notify = true,
00437 FLAGS flags = FLAG_Default
00438 );
00439
00441 void SetValue (
00442 double value,
00443 bool notify = true
00444 );
00445
00447 void SetUnitConversion (
00448 const UNITCONV& unitconv
00449 );
00450
00451 private:
00452 #ifndef GENERATING_DOXYGEN_OUTPUT
00453
00454 CTRL_LABEL m_UnitLabel;
00455 FORMAT m_Format;
00456 FLAGS m_flags;
00457 DMSTYPE m_DegToStrFlags;
00458 INT16 m_places;
00459 INT16 m_dmsplaces;
00460 double m_value;
00461 DOUBLE_RANGE m_range;
00462 UNITCONV m_unitconv;
00463
00464 bool CheckRange (double& value) const;
00465
00466 void UpdateText ();
00467
00468 virtual void v_UpdateValue (MISTRING& newvalue);
00469
00470 CTRL_EDIT_NUMBER (const CTRL_EDIT_NUMBER&);
00471 CTRL_EDIT_NUMBER& operator= (const CTRL_EDIT_NUMBER&);
00472 #endif // GENERATING_DOXYGEN_OUTPUT
00473 };
00474
00475 #ifndef GENERATING_DOXYGEN_OUTPUT
00476 DEFINE_ENUM_OP_BITWISE(MGUI::CTRL_EDIT_NUMBER::FLAGS)
00477 #endif
00478
00479
00480
00483 class FORM_EDIT_NUMBER_BASE : public MGUI::FORM_COMPOSITE {
00484 public:
00486 FORM_EDIT_NUMBER_BASE ();
00487
00489 virtual ~FORM_EDIT_NUMBER_BASE ();
00490
00492 void ClearValue (
00493 bool notify = true
00494 ) { m_editctrl.ClearValue(notify); }
00495
00497 MGUI::CTRL_EDIT_NUMBER& GetEditCtrl (
00498 ) { return (m_editctrl); }
00499
00502 const DOUBLE_RANGE& GetRange (
00503 ) const { return (m_editctrl.GetRange()); }
00504
00506 double GetValue (
00507 ) { return (m_editctrl.GetValue()); }
00508
00510 bool HasValue (
00511 ) { return (m_editctrl.HasValue()); }
00512
00515 void IniRead (
00516 INIHANDLE IniHandle,
00517 const char *IniGroup,
00518 const char *IniField,
00519 bool notify = true
00520 ) { m_editctrl.IniRead(IniHandle,IniGroup,IniField,notify); }
00521
00523 void IniWrite (
00524 INIHANDLE IniHandle,
00525 const char *IniGroup,
00526 const char *IniField
00527 ) const { m_editctrl.IniWrite(IniHandle,IniGroup,IniField); }
00528
00530 void SetDelegateOnActivate (
00531 DELEGATE_VOID_NOPARMS delegate
00532 ) { m_editctrl.SetDelegateOnActivate(delegate); }
00533
00536 void SetDelegateOnChangeValue (
00537 DELEGATE_VOID_NOPARMS delegate
00538 ) { m_editctrl.SetDelegateOnChangeValue(delegate); }
00539
00542 void SetDelegateOnUserEdit (
00543 DELEGATE_VOID_NOPARMS delegate
00544 ) { m_editctrl.SetDelegateOnUserEdit(delegate); }
00545
00548 void SetFormat (
00549 MGUI::CTRL_EDIT_NUMBER::FORMAT format,
00550 int places = -1,
00551 bool notify = true
00552 ) { m_editctrl.SetFormat(format,places,notify); }
00553
00556 bool SetRange (
00557 const DOUBLE_RANGE& range,
00558 bool notify = true,
00559 MGUI::CTRL_EDIT_NUMBER::FLAGS flags = MGUI::CTRL_EDIT_NUMBER::FLAG_Default
00560 ) { return (m_editctrl.SetRange(range,notify,flags)); }
00561
00564 bool SetRange (
00565 double minimum,
00566 double maximum,
00567 bool notify = true,
00568 MGUI::CTRL_EDIT_NUMBER::FLAGS flags = MGUI::CTRL_EDIT_NUMBER::FLAG_Default
00569 ) { return (m_editctrl.SetRange(minimum,maximum,notify,flags)); }
00570
00572 void SetReadOnly (
00573 bool ReadOnly = true
00574 ) { m_editctrl.SetReadOnly(ReadOnly); }
00575
00577 void SetValue (
00578 double value,
00579 bool notify = true
00580 ) { m_editctrl.SetValue(value,notify); }
00581
00583 void SetUnitConversion (
00584 const UNITCONV& unitconv
00585 ) { m_editctrl.SetUnitConversion(unitconv); }
00586
00587 private:
00588 #ifndef GENERATING_DOXYGEN_OUTPUT
00589 CTRL_EDIT_NUMBER m_editctrl;
00590
00591 virtual void v_SetFocus () const;
00592 #endif // GENERATING_DOXYGEN_OUTPUT
00593 };
00594
00595
00597 class FORM_EDIT_NUMBER : public FORM_EDIT_NUMBER_BASE {
00598 public:
00599
00601 FORM_EDIT_NUMBER ();
00602
00604 virtual ~FORM_EDIT_NUMBER ();
00605
00607 void Create (
00608 MGUI::LAYOUT_PANE_BASE& ParentPane,
00609 const MISTRING& label,
00610 double dft,
00611 double min,
00612 double max,
00613 int places = 0,
00614 int width = 0,
00615 CTRL_EDIT_NUMBER::FLAGS flags = CTRL_EDIT_NUMBER::FLAG_Default,
00616 CTRL_EDIT_NUMBER::FORMAT format = CTRL_EDIT_NUMBER::FORMAT_Decimal,
00617 LAYOUT_SIZEALIGN sizealign = LAYOUT_SIZEALIGN_FixedSize,
00618 CTRL_LABEL::STYLE labelstyle = CTRL_LABEL::STYLE_LeftNoWrap
00619 );
00620
00623 CTRL_LABEL& GetLabel (
00624 ) { return (m_label); }
00625
00627 void SetLabel (
00628 const MISTRING& label
00629 ) { m_label.SetLabel(label); }
00630
00631 private:
00632 #ifndef GENERATING_DOXYGEN_OUTPUT
00633 CTRL_LABEL m_label;
00634 #endif // GENERATING_DOXYGEN_OUTPUT
00635 };
00636
00637
00639 class FORM_EDIT_NUMBER2 : public FORM_EDIT_NUMBER_BASE {
00640 public:
00641
00643 FORM_EDIT_NUMBER2 ();
00644
00646 virtual ~FORM_EDIT_NUMBER2 ();
00647
00649 void Create (
00650 LAYOUT_PANE_BASE& ParentPane,
00651 const MISTRING& labelBefore,
00652 const MISTRING& labelAfter,
00653 double dft,
00654 double min,
00655 double max,
00656 int places = 0,
00657 int width = 0,
00658 CTRL_EDIT_NUMBER::FLAGS flags = CTRL_EDIT_NUMBER::FLAG_Default,
00659 CTRL_EDIT_NUMBER::FORMAT format = CTRL_EDIT_NUMBER::FORMAT_Decimal,
00660 LAYOUT_SIZEALIGN EditSizeAlign = LAYOUT_SIZEALIGN_FixedSize,
00661 LAYOUT_SIZEALIGN LabelAfterSizeAlign = LAYOUT_SIZEALIGN_FixedSize
00662 );
00663
00666 CTRL_LABEL& GetLabelAfter (
00667 ) { return (m_labelAfter); }
00668
00670 void SetLabelAfter (
00671 const MISTRING& label
00672 ) { m_labelAfter.SetLabel(label); }
00673
00676 MGUI::CTRL_LABEL& GetLabelBefore (
00677 ) { return (m_labelBefore); }
00678
00680 void SetLabelBefore (
00681 const MISTRING& label
00682 ) { m_labelBefore.SetLabel(label); }
00683
00684 private:
00685 #ifndef GENERATING_DOXYGEN_OUTPUT
00686 CTRL_LABEL m_labelBefore;
00687 CTRL_LABEL m_labelAfter;
00688 #endif // GENERATING_DOXYGEN_OUTPUT
00689 };
00690
00691
00693 class FORM_EDIT_RANGE : public MGUI::FORM_COMPOSITE {
00694 public:
00695
00697 FORM_EDIT_RANGE (
00698 );
00699
00701 virtual ~FORM_EDIT_RANGE (
00702 );
00703
00705 void ClearValue (
00706 bool notify = true
00707 );
00708
00710 void Create (
00711 MGUI::LAYOUT_PANE_BASE& ParentPane,
00712 const DOUBLE_RANGE& dft,
00713 double min,
00714 double max,
00715 double mininterval = 0,
00716 int places = 0,
00717 int width = 0,
00718 CTRL_EDIT_NUMBER::FLAGS flags = CTRL_EDIT_NUMBER::FLAG_Default,
00719 CTRL_EDIT_NUMBER::FORMAT format = CTRL_EDIT_NUMBER::FORMAT_Decimal,
00720 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize
00721 );
00722
00724 void Create (
00725 MGUI::LAYOUT_PANE_BASE& ParentPane,
00726 const MISTRING& label,
00727 const DOUBLE_RANGE& dft,
00728 double min,
00729 double max,
00730 double mininterval = 0,
00731 int places = 0,
00732 int width = 0,
00733 CTRL_EDIT_NUMBER::FLAGS flags = CTRL_EDIT_NUMBER::FLAG_Default,
00734 CTRL_EDIT_NUMBER::FORMAT format = CTRL_EDIT_NUMBER::FORMAT_Decimal,
00735 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize,
00736 MGUI::CTRL_LABEL::STYLE labelstyle = MGUI::CTRL_LABEL::STYLE_LeftNoWrap
00737 );
00738
00740 MGUI::CTRL_EDIT_NUMBER& GetEditCtrlMax (
00741 ) { return (m_MaxEN); }
00742
00744 MGUI::CTRL_EDIT_NUMBER& GetEditCtrlMin (
00745 ) { return (m_MinEN); }
00746
00749 const DOUBLE_RANGE& GetRange (
00750 ) const { return (m_MinEN.GetRange()); }
00751
00754 MGUI::CTRL_LABEL& GetLabel (
00755 ) { return (m_RangeLabel); }
00756
00758 DOUBLE_RANGE GetValue (
00759 ) { return (DOUBLE_RANGE(m_MinEN.GetValue(),m_MaxEN.GetValue())); }
00760
00762 bool HasValue (
00763 ) { return (m_MinEN.HasValue() && m_MaxEN.HasValue()); }
00764
00766 void SetAutoSwap (
00767 bool AutoSwap = true
00768 ) { m_AutoSwap = AutoSwap; }
00769
00772 void SetDelegateOnChangeValue (
00773 DELEGATE_VOID_NOPARMS delegate
00774 ) { m_DelegateOnChangeValue = delegate; }
00775
00778 void SetFormat (
00779 CTRL_EDIT_NUMBER::FORMAT format,
00780 int places = -1
00781 ) {
00782 m_MinEN.SetFormat(format,places);
00783 m_MaxEN.SetFormat(format,places);
00784 }
00785
00787 void SetLabel (
00788 const MISTRING& label
00789 ) { m_RangeLabel.SetLabel(label); }
00790
00792
00793
00794
00795
00796
00797
00798
00801 bool SetMinInterval (
00802 double MinInterval,
00803 bool notify = true
00804 );
00805
00808 bool SetRange (
00809 const DOUBLE_RANGE& range,
00810 bool notify = true,
00811 CTRL_EDIT_NUMBER::FLAGS flags = CTRL_EDIT_NUMBER::FLAG_Default
00812 );
00813
00816 bool SetRange (
00817 double minimum,
00818 double maximum,
00819 bool notify = true,
00820 CTRL_EDIT_NUMBER::FLAGS flags = CTRL_EDIT_NUMBER::FLAG_Default
00821 );
00822
00824 void SetReadOnly (
00825 bool ReadOnly = true
00826 ) {
00827 m_MinEN.SetReadOnly(ReadOnly);
00828 m_MaxEN.SetReadOnly(ReadOnly);
00829 }
00830
00832 void SetUnitConversion (
00833 const UNITCONV& unitconv
00834 ) {
00835 m_MinEN.SetUnitConversion(unitconv);
00836 m_MaxEN.SetUnitConversion(unitconv);
00837 }
00838
00840 void SetUnitLabel (
00841 const MISTRING& label
00842 );
00843
00845 void SetValue (
00846 const DOUBLE_RANGE& value,
00847 bool notify = true
00848 );
00849
00850 private:
00851 #ifndef GENERATING_DOXYGEN_OUTPUT
00852
00853 DELEGATE_VOID_NOPARMS m_DelegateOnChangeValue;
00854 CTRL_LABEL m_RangeLabel;
00855 CTRL_EDIT_NUMBER m_MinEN;
00856 CTRL_LABEL m_ToLabel;
00857 CTRL_EDIT_NUMBER m_MaxEN;
00858 CTRL_LABEL m_UnitLabel;
00859 double m_MinInterval;
00860 bool m_AutoSwap;
00861
00862 bool AdjustForInterval (CTRL_EDIT_NUMBER *pEN = 0);
00863
00864 void CreateMinToMax (
00865 const DOUBLE_RANGE& dft,
00866 double min,
00867 double max,
00868 double mininterval,
00869 int places,
00870 int width,
00871 CTRL_EDIT_NUMBER::FLAGS flags,
00872 CTRL_EDIT_NUMBER::FORMAT format,
00873 MGUI::LAYOUT_SIZEALIGN sizealign
00874 );
00875
00876 void NotifyChangeValue ();
00877 void OnChangeValueMax ();
00878 void OnChangeValueMin ();
00879
00880
00881 virtual void v_SetFocus () const;
00882
00883 #endif // GENERATING_DOXYGEN_OUTPUT
00884
00885 };
00886
00887
00888
00890 class CTRL_EDIT_TEXT : public MGUI::CTRL_EDIT_BASE {
00891 public:
00892
00893 enum FLAGS {
00894 FLAG_Default = CTRL_EDIT_BASE::CREATEFLAG_None,
00895 FLAG_RightJustify = CTRL_EDIT_BASE::CREATEFLAG_RightAlign,
00896 FLAG_ReadOnly = CTRL_EDIT_BASE::CREATEFLAG_ReadOnly,
00897 FLAG_Opaque = CTRL_EDIT_BASE::CREATEFLAG_Opaque,
00898 FLAG_WidthInPixels = CTRL_EDIT_BASE::CREATEFLAG_WidthInPixels,
00899 FLAG_UseFixedWidthFont = CTRL_EDIT_BASE::CREATEFLAG_UseFixedWidthFont,
00900 FLAG_SizeInPixels = CTRL_EDIT_BASE::CREATEFLAG_SizeInPixels,
00901 FLAG_WYSIWYG = 0x0001,
00902 FLAG_NoWordWrap = 0x0002,
00903 };
00904
00905 typedef fastdelegate::FastDelegate<void(INT32 lin, INT32 col)> DELEGATE_ONCURSORMOTION;
00906
00908 CTRL_EDIT_TEXT (
00909 );
00910
00912 virtual ~CTRL_EDIT_TEXT (
00913 );
00914
00916 bool CanUndo (
00917 ) const;
00918
00920 void ClearValue (
00921 bool notify = true
00922 );
00923
00925 void Create (
00926 MGUI::LAYOUT_PANE_BASE& ParentPane,
00927 int width = 0,
00928 int height = 0,
00929 FLAGS flags = FLAG_Default,
00930 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedHeight
00931 );
00932
00938 bool Find (
00939 const MISTRING& SearchString,
00940 bool bCaseSensitive = true,
00941 bool bNext = false
00942 );
00943
00946 bool GetCaretPos (
00947 int& caretrow,
00948 int& caretcolumn
00949 ) const;
00950
00954 int GetFirstVisibleLine (
00955 ) const;
00956
00958 int GetLineCount (
00959 ) const;
00960
00965 int GetLineFromChar (
00966 int nIndex = -1
00967 ) const;
00968
00969
00973 int GetLineIndex (
00974 int nLine = -1
00975 );
00976
00983 int GetLineLength (
00984 int nLine = -1
00985 );
00986
00989 void GetStyle (
00990 TEXTSTYLE& style,
00991 int offset = -1
00992 ) const;
00993
00995 const MISTRING& GetValue (
00996 );
00997
00999 void HandleKey (
01000 MGUI::KEYCODE keycode,
01001 MGUI::KEYSTATE keystate
01002 );
01003
01005 void HideCursor (
01006 );
01007
01009 void LineScroll (
01010 int nLines,
01011 int nChars = 0
01012 );
01013
01015 void SetCursorPos (
01016 int nCharIndex,
01017 bool bScroll = true
01018 );
01019
01021 void SetCursorPos (
01022 int line,
01023 int col,
01024 bool bScroll = true
01025 );
01026
01037 void SetDelegateOnHyperLink (
01038 DELEGATE_VOID_MISTRING delegate
01039 ) { m_DelegateOnHyperLink = delegate; }
01040
01044 void SetDelegateOnCursorMotion (
01045 DELEGATE_ONCURSORMOTION delegate
01046 ) { m_DelegateOnCursorMotion = delegate; }
01047
01048
01049 #ifndef GENERATING_DOXYGEN_OUTPUT
01050
01051
01054 void SetDelegateOnSyntaxHighlight (
01055 fastdelegate::FastDelegate<void(XeTextSyntaxParseCallbackData*)> delegate
01056 );
01057 #endif
01058
01062 void SetStyle (
01063 const TEXTSTYLE& style
01064 );
01065
01068 void SetStyle (
01069 const TEXTSTYLE& style,
01070 int start,
01071 int end
01072 );
01073
01079 void SetTabStops (
01080 int cxEachStop
01081 );
01082
01086 void SetValue (
01087 const MIUNICODE* string,
01088 bool notify = true
01089 );
01090
01092 void ShowCursor (
01093 );
01094
01096 void Undo (
01097 );
01098
01099 private:
01100
01101 #ifndef GENERATING_DOXYGEN_OUTPUT
01102 MISTRING m_value;
01103 DELEGATE_VOID_MISTRING m_DelegateOnHyperLink;
01104 fastdelegate::FastDelegate<void(XeTextSyntaxParseCallbackData*)> m_DelegateOnSyntaxHighlight;
01105 DELEGATE_ONCURSORMOTION m_DelegateOnCursorMotion;
01106 static void CB_HyperLink (Widget, CTRL_EDIT_TEXT*, void*);
01107 static void CB_SyntaxHighlight (Widget, CTRL_EDIT_TEXT*, void*);
01108 static void CB_CursorMotion (Widget, CTRL_EDIT_TEXT*, void*);
01109 virtual void v_UpdateValue (MISTRING& newvalue);
01110 void OnEditButton(ID, bool);
01111
01112 CTRL_EDIT_TEXT (const CTRL_EDIT_TEXT&);
01113 CTRL_EDIT_TEXT& operator= (const CTRL_EDIT_TEXT&);
01114 #endif // GENERATING_DOXYGEN_OUTPUT
01115 };
01116
01117 #ifndef GENERATING_DOXYGEN_OUTPUT
01118 DEFINE_ENUM_OP_BITWISE(MGUI::CTRL_EDIT_TEXT::FLAGS)
01119 #endif
01120
01121
01122 }
01123
01124 #endif // INC_MGUI_EDIT_H