54 #ifndef _MGUI_TEXT_EDIT_H 55 #define _MGUI_TEXT_EDIT_H 57 #if defined(_MGNCSCTRL_TEXTEDITOR) || (defined(_MGCTRL_TEXTEDIT) && defined(_MGCTRL_TEXTEDIT_USE_NEW_IMPL)) 64 #define _MGHAVE_TEXTEDITTITLE 0 66 DECLARE_OBJECT(mTextBuffer)
67 DECLARE_OBJECT(mTextIterator)
68 DECLARE_OBJECT(mTextLayout)
69 DECLARE_OBJECT(mTextLayoutNode)
70 DECLARE_OBJECT(mTextRender)
74 typedef struct _TextBufferObserverNode {
75 ITextBufferObserver* observer;
76 struct _TextBufferObserverNode* next;
77 }mTextBufferObserverNode;
79 #define mTextBufferHeader(Clss) \ 81 INTERFACE(ITextBuffer) \ 85 mTextBufferObserverNode* observers; 87 #define mTextBufferClassHeader(Clss, Super) \ 88 mObjectClassHeader(Clss, Super) \ 89 ITextBufferHeader(ITextBuffer, Clss) 93 DEFINE_OBJECT(mTextBuffer,
mObject)
97 #define mTextIteratorHeader(Clss) \ 99 INTERFACE(ITextIterator) \ 100 mTextBuffer* buffer; \ 103 #define mTextIteratorClassHeader(Clss, Super) \ 104 mObjectClassHeader(Clss, Super) \ 105 ITextIteratorHeader(ITextIterator, Clss) 109 DEFINE_OBJECT(mTextIterator,
mObject)
113 #define mTextLayoutHeader(Clss) \ 114 mCommBTreeHeader(Clss) \ 115 INTERFACE(ITextLayout) \ 116 ITextBuffer * text_buffer; \ 118 int cursor_x, cursor_y; \ 122 int sel_begin_x, sel_begin_y;\ 123 int sel_begin_height; \ 124 int text_sel_begin; \ 125 ITextLayoutContext* context; \ 126 PCLIPRGN dirty_area; \ 127 int old_height, new_height; //height changed include 129 #define mTextLayoutClassHeader(Clss, Super) \ 130 mCommBTreeClassHeader(Clss, Super) \ 131 ITextLayoutHeader(ITextLayout, Clss) 133 DEFINE_OBJECT(mTextLayout, mCommBTree)
137 #define mTextLayoutNodeHeader(Clss) \ 138 mCommBTreeNodeHeader(Clss) \ 143 #define mTextLayoutNodeClassHeader(Clss, Super) \ 144 mCommBTreeNodeClassHeader(Clss, Super) 146 DEFINE_OBJECT(mTextLayoutNode,mCommBTreeNode)
151 #define mTextRenderHeader(Clss) \ 152 mObjectHeader(Clss) \ 153 INTERFACE(ITextRender) 155 #define mTextRenderClassHeader(Clss, Super) \ 156 mObjectClassHeader(Clss, Super) \ 157 ITextRenderHeader(ITextRender, Clss) 159 DEFINE_OBJECT(mTextRender,
mObject)
165 ITextRender* GetTextRender(
int type);
168 DECLARE_OBJECT(mTextEditor)
175 #ifndef __MINIGUI_LIB__ 180 #define NCSCTRL_TEXTEDITOR NCSCLASSNAME("texteditor") 184 #define NCS_TEF_REPLACE_MODE 0x010000 185 #define NCS_TEF_HAS_PAINTED 0x020000 186 #define mTextEditor_isReplaceMode(self) \ 187 ((self)->flags&NCS_TEF_REPLACE_MODE) 188 #define mTextEditor_hasPainted(self) \ 189 ((self)->flags&NCS_TEF_HAS_PAINTED) 192 #ifdef _MGHAVE_TEXTEDITTITLE 193 #define TITLE_HEADER \ 194 int title_idx, title_text_idx; \ 195 int title_x, title_y, title_last_height; \ 196 int title_paracount; \ 197 int title_last_para_text_index; \ 198 int title_linecount; \ 199 int title_last_line_text_index; 201 #define TITLE_CLASS_HEADER(Clss) \ 202 void (*setTitle)(Clss*, const char* buff, int len); \ 203 int (*getTitle)(Clss*, char* buff, int max); 208 #define TITLE_CLASS_HEADER(Clss) 240 #define mTextEditorHeader(Clss) \ 241 mWidgetHeader(Clss) \ 242 INTERFACE(ITextLayoutContext) \ 243 mTextBuffer *textBuffer; \ 244 mTextLayout *textLayout; \ 245 int visWidth, visHeight;\ 248 unsigned int flags; \ 251 unsigned short scrollBarMode; \ 252 unsigned int scrollHStep; \ 253 unsigned int scrollVStep; \ 255 int oldOffX, oldOffY; \ 344 #define mTextEditorClassHeader(Clss, Super) \ 345 mWidgetClassHeader(Clss, Super) \ 346 ITextLayoutContextHeader(ITextLayoutContext, Clss) \ 347 int (*onChar)(Clss*, int asciiCode, DWORD keyFlags); \ 348 BOOL (*onFontChanged)(Clss*); \ 349 int (*getInvalidBkgnd)(Clss*, RECT *prc); \ 350 int (*onLButtonDBClk)(Clss*, int x, int y, DWORD keyFlags); \ 351 void (*onCSizeChanged)(Clss*, int cliWidth, int cliHeight); \ 352 void (*onSetFocus)(Clss*, HWND oldActiveWnd, int lParam); \ 353 void (*onKillFocus)(Clss*, HWND newActiveWnd, int lParam); \ 354 void (*onHScroll)(Clss*, int code, int mouseX); \ 355 void (*onVScroll)(Clss*, int code, int mouseY); \ 357 int (*getParaText)(Clss*, int index, int start, int len, char* buffer); \ 358 int (*getLineText)(Clss*, int index, int start, int len, char* buffer); \ 359 int (*getParaLength)(Clss*, int index, int *startPos); \ 360 int (*getParaLengthInMChar)(Clss*, int paraNo, int *startPos); \ 361 int (*getLineLength)(Clss*, int lineNo, int *startPos, BOOL bMChar); \ 362 int (*getParaNum)(Clss*); \ 363 int (*setText)(Clss*, const char* text); \ 364 int (*insertText)(Clss*, const char* text, int len); \ 365 int (*getText)(Clss*, char* text, int len); \ 366 int (*getTextLen)(Clss*); \ 367 BOOL (*enableCaret)(Clss*, BOOL enable); \ 368 int (*setCaretPosByPara)(Clss*, unsigned int paraIdx, unsigned int offChar, \ 370 int (*getCaretPosByPara)(Clss*, int *paraIdx, int *offChar, \ 371 int *height, BOOL isSel); \ 372 int (*setCaretPosByLine)(Clss*, unsigned int lineIdx, unsigned int offChar, \ 374 int (*getCaretPosByLine)(Clss*, int *lineIdx, int *offChar, \ 375 int *height, BOOL isSel); \ 376 int (*getLineCount)(Clss*); \ 377 void (*selectAll)(Clss*); \ 378 int (*setSel)(Clss*, unsigned int startParaIdx, unsigned int startOffChar, \ 379 unsigned int endParaIdx, unsigned int endOffChar); \ 380 int (*getSel)(Clss*, char *buffer, int len); \ 381 BOOL (*needLineDecorative)(Clss*); \ 382 void (*lineDecorative)(Clss*, int x, int y, int w, int h, \ 383 int lineNo, HDC hdc); \ 384 TITLE_CLASS_HEADER(Clss) 386 #ifndef __MINIGUI_LIB__ 392 #define NCSS_TE_READONLY (1<<NCSS_WIDGET_SHIFT) 398 #define NCSS_TE_UPPERCASE (2<<NCSS_WIDGET_SHIFT) 404 #define NCSS_TE_LOWERCASE (4<<NCSS_WIDGET_SHIFT) 410 #define NCSS_TE_NOHIDESEL (8<<NCSS_WIDGET_SHIFT) 416 #define NCSS_TE_AUTOWRAP (0x10<<NCSS_WIDGET_SHIFT) 422 #define NCSS_TE_BASELINE (0x20<<NCSS_WIDGET_SHIFT) 428 #define NCSS_TE_OWNERBKGND (0x40<<NCSS_WIDGET_SHIFT) 434 #define NCSS_TE_TITLE (0x80<<NCSS_WIDGET_SHIFT) 444 #define NCSS_TE_AUTOVSCROLL (0x100<<NCSS_WIDGET_SHIFT) 454 #define NCSS_TE_AUTOHSCROLL (0x200<<NCSS_WIDGET_SHIFT) 456 #define NCSS_TE_SHIFT (NCSS_WIDGET_SHIFT + 10) 469 NCS_TEF_SCROLLBAR_NEVER = 0,
474 NCS_TEF_SCROLLBAR_AUTO,
479 NCS_TEF_SCROLLBAR_ALWAYS,
491 NCSP_TE_READONLY = NCSP_WIDGET_MAX + 1,
501 NCSP_TE_SCROLL_HSTEP,
506 NCSP_TE_SCROLL_VSTEP,
521 NCSP_TE_PARAGRAPHCOUNT,
533 #define NCSP_TE_NUMOFPARAGRAPHS NCSP_TE_PARAGRAPHCOUNT 535 #ifndef __MINIGUI_LIB__ 540 enum mTextEditorNotify
545 NCSN_TE_CONTENTCHANGED = NCSN_WIDGET_MAX + 1,
584 typedef struct _mTextEditorRenderer mTextEditorRenderer;
588 DEFINE_OBJECT(mTextEditor,
mWidget)
590 #ifdef __MINIGUI_LIB__ 591 void TextEditorDrawLinesDecorative(mTextEditor *
self, HDC hdc,
int x,
int y,
int w,
int h);
592 #define mTextEditor_drawLinesDecorative TextEditorDrawLinesDecorative 594 void mTextEditor_drawLinesDecorative(mTextEditor *
self, HDC hdc,
int x,
int y,
int w,
int h);