diff --git a/uppsrc/Core/src.tpp/SocketWaitEvent$en-us.tpp b/uppsrc/Core/src.tpp/SocketWaitEvent$en-us.tpp index ee1b4268f..5f08e9a9c 100644 --- a/uppsrc/Core/src.tpp/SocketWaitEvent$en-us.tpp +++ b/uppsrc/Core/src.tpp/SocketWaitEvent$en-us.tpp @@ -56,4 +56,4 @@ for requested socket (or it is not open), returns 0.&] [s5;:SocketWaitEvent`:`:SocketWaitEvent`(`): [* SocketWaitEvent]()&] [s2;%% Constructor.&] [s3; &] -[s0;%% ] \ No newline at end of file +[s0;%% ]] \ No newline at end of file diff --git a/uppsrc/CtrlLib/EditCtrl.h b/uppsrc/CtrlLib/EditCtrl.h index 8424e95a5..6954e4109 100644 --- a/uppsrc/CtrlLib/EditCtrl.h +++ b/uppsrc/CtrlLib/EditCtrl.h @@ -153,13 +153,15 @@ protected: void SaveUndo(); void DoAutoFormat(); int GetTy() const; + void StdPasteFilter(WString&); protected: virtual void HighlightText(Vector& hl); public: - Callback1 WhenBar; - Callback WhenEnter; + Callback1 WhenBar; + Callback WhenEnter; + Callback1 WhenPasteFilter; static const Style& StyleDefault(); EditField& SetStyle(const Style& s); diff --git a/uppsrc/CtrlLib/EditField.cpp b/uppsrc/CtrlLib/EditField.cpp index c3333c027..6c1b689f4 100644 --- a/uppsrc/CtrlLib/EditField.cpp +++ b/uppsrc/CtrlLib/EditField.cpp @@ -788,11 +788,17 @@ void EditField::Cut() Finish(); } +void EditField::StdPasteFilter(WString&) +{ +} + void EditField::Paste() { if(!IsEditable()) return; - Insert(ReadClipboardUnicodeText()); + WString w = ReadClipboardUnicodeText(); + WhenPasteFilter(w); + Insert(w); Action(); Finish(); } diff --git a/uppsrc/CtrlLib/src.tpp/EditField$en-us.tpp b/uppsrc/CtrlLib/src.tpp/EditField$en-us.tpp index fbf5bf2a2..e24591597 100644 --- a/uppsrc/CtrlLib/src.tpp/EditField$en-us.tpp +++ b/uppsrc/CtrlLib/src.tpp/EditField$en-us.tpp @@ -49,6 +49,19 @@ used for edited text, including the standard static frame.&] default is StdBar.&] [s3; &] [s4; &] +[s5;:EditField`:`:WhenEnter: [_^Callback^ Callback]_[* WhenEnter]&] +[s2;%% This callback is invoked if user presses Enter key while in +EditField. If not empty, EditField also consumes Enter key (so +that it is not passed up in Ctrl hierarchy). Default is empty.&] +[s3; &] +[s4; &] +[s5;:EditField`:`:WhenPasteFilter: [_^Callback1^ Callback1]_[* When +PasteFilter]&] +[s2;%% This callback is invoked when Paste operation is performed +and can be used to alter the text to be pasted. Default is no +change to the text.&] +[s3; &] +[s4; &] [s5;:EditField`:`:Insert`(int`,const WString`&`): [@(0.0.255) int]_[* Insert]([@(0.0.255) i nt]_[*@3 pos], [@(0.0.255) const]_[_^WString^ WString][@(0.0.255) `&]_[*@3 text])&] [s2;%% [%- Inserts ][%-*@3 text] at [%-*@3 pos].&] @@ -199,6 +212,11 @@ ool]_[*@3 pwd]_`=_[@(0.0.255) true])&] displayed as asterisk. Returns `*this.&] [s3; &] [s4; &] +[s5;:EditField`:`:IsPassword`(`)const: [@(0.0.255) bool]_[* IsPassword]()_[@(0.0.255) const +]&] +[s2;%% Returns true if password mode is active.&] +[s3; &] +[s4; &] [s5;:EditField`:`:SetFilter`(int`(`*`)`(int`)`): [_^EditField^ EditField][@(0.0.255) `&]_ [* SetFilter]([@(0.0.255) int]_(`*[*@3 f])([@(0.0.255) int]))&] [s2;%% [%- Sets the character filter] [%-*@3 f]. All characters keystrokes @@ -243,6 +261,11 @@ Returns `*this.&] [s2; Same as AutoFormat(false).&] [s3; &] [s4; &] +[s5;:EditField`:`:IsAutoFormat`(`)const: [@(0.0.255) bool]_[* IsAutoFormat]()_[@(0.0.255) c +onst]&] +[s2;%% Returns true is AutoFormat is active.&] +[s3; &] +[s4; &] [s5;:EditField`:`:SetFont`(Font`): [_^EditField^ EditField][@(0.0.255) `&]_[* SetFont]([_^Font^ F ont]_[*@3 `_font])&] [s2;%% [%- Sets the ][%-*@3 font]. Returns `*this.&] @@ -254,12 +277,22 @@ ct]([@(0.0.255) bool]_[*@3 b]_`=_[@(0.0.255) true])&] clicked by mouse. Returns `*this.&] [s3; &] [s4; &] +[s5;:EditField`:`:IsClickSelect`(`)const: [@(0.0.255) bool]_[* IsClickSelect]()_[@(0.0.255) c +onst]&] +[s2;%% Returns true if ClickSelect is active.&] +[s3; &] +[s4; &] [s5;:EditField`:`:InitCaps`(bool`): [_^EditField^ EditField][@(0.0.255) `&]_[* InitCaps]([@(0.0.255) b ool]_[*@3 b]_`=_[@(0.0.255) true])&] [s2; In InitCaps mode, initial letters of entered text are uppercased. Returns `*this.&] [s3; &] [s4; &] +[s5;:EditField`:`:IsInitCaps`(`)const: [@(0.0.255) bool]_[* IsInitCaps]()_[@(0.0.255) const +]&] +[s2;%% Returns true if InitCaps is active.&] +[s3; &] +[s4; &] [s5;:EditField`:`:NullText`(const Image`&`,const char`*`,Color`): [_^EditField^ EditFie ld][@(0.0.255) `&]_[* NullText]([@(0.0.255) const]_[_^Image^ Image][@(0.0.255) `&]_[*@3 icon], [@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 text]_`=_t`_(`"([@(0.0.255) default])`"), @@ -285,6 +318,11 @@ nt]_[*@3 mc])&] `*this.&] [s3; &] [s4; &] +[s5;:EditField`:`:GetMaxChars`(`)const: [@(0.0.255) int]_[* GetMaxChars]()_[@(0.0.255) cons +t]&] +[s2;%% Returns the maximum number of characters limit set by MaxChars.&] +[s3; &] +[s4; &] [s5;:EditField`:`:AutoSize`(int`): [_^EditField^ EditField][@(0.0.255) `&]_[* AutoSize]([@(0.0.255) i nt]_[*@3 maxcx]_`=_INT`_MAX)&] [s2;%% [%- Resizes the width of EditField according to the length of @@ -319,11 +357,32 @@ onst]&] the right. Left alignment is default.&] [s3;%% &] [s4; &] +[s5;:EditField`:`:IsNoBackground`(`)const: [@(0.0.255) bool]_[* IsNoBackground]()_[@(0.0.255) c +onst]&] +[s2;%% Returns true if NoBackground is active.&] +[s3; &] +[s4; &] +[s5;:EditField`:`:IsAlignRight`(`)const: [@(0.0.255) bool]_[* IsAlignRight]()_[@(0.0.255) c +onst]&] +[s2;%% Returns true if AlignRight is active.&] +[s3; &] +[s4; &] [s5;:EditField`:`:GetChar`(int`)const: [@(0.0.255) virtual] [@(0.0.255) int]_[* GetChar]([@(0.0.255) i nt]_[*@3 i])_[@(0.0.255) const]&] [s2;%% Returns the character at [%-*@3 i] index.&] [s3;%% &] [s4; &] +[s5;:EditField`:`:GetCaretRect`(int`)const: [_^Rect^ Rect]_[* GetCaretRect]([@(0.0.255) int +]_[*@3 pos])_[@(0.0.255) const]&] +[s2;%% Returns the caret placement for character [%-*@3 pos] in EditField +view coordinates.&] +[s3;%% &] +[s4; &] +[s5;:EditField`:`:GetCaretRect`(`)const: [_^Rect^ Rect]_[* GetCaretRect]()_[@(0.0.255) cons +t]&] +[s2;%% Same as GetCaretRect(cursor).&] +[s3; &] +[s4; &] [s5;:EditField`:`:StyleDefault`(`): [@(0.0.255) static] [@(0.0.255) const]_[_^EditField`:`:Style^ S tyle][@(0.0.255) `&]_[* StyleDefault]()&] [s2;%% Returns the default style used to draw edit fields.&] @@ -340,4 +399,4 @@ tyle][@(0.0.255) `&]_[* StyleDefault]()&] ][3 _][*@3;3 ChStyle][@(0.0.255)3 <][*3 Style][@(0.0.255)3 >][3 _]&] [s9;%% This structure defines the visual style of an EditField.&] [s3; &] -[s0; ] \ No newline at end of file +[s0; ]] \ No newline at end of file