42 #ifndef _MGUI_TEXT_EDIT_H 43 #define _MGUI_TEXT_EDIT_H 45 #if defined(_MGNCSCTRL_TEXTEDITOR) || (defined(_MGCTRL_TEXTEDIT) && defined(_MGCTRL_TEXTEDIT_USE_NEW_IMPL)) 52 #define _MGHAVE_TEXTEDITTITLE 0 54 DECLARE_OBJECT(mTextBuffer)
55 DECLARE_OBJECT(mTextIterator)
56 DECLARE_OBJECT(mTextLayout)
57 DECLARE_OBJECT(mTextLayoutNode)
58 DECLARE_OBJECT(mTextRender)
62 typedef struct _TextBufferObserverNode {
63 ITextBufferObserver* observer;
64 struct _TextBufferObserverNode* next;
65 }mTextBufferObserverNode;
67 #define mTextBufferHeader(Clss) \ 69 INTERFACE(ITextBuffer) \ 73 mTextBufferObserverNode* observers; 75 #define mTextBufferClassHeader(Clss, Super) \ 76 mObjectClassHeader(Clss, Super) \ 77 ITextBufferHeader(ITextBuffer, Clss) 81 DEFINE_OBJECT(mTextBuffer,
mObject)
85 #define mTextIteratorHeader(Clss) \ 87 INTERFACE(ITextIterator) \ 88 mTextBuffer* buffer; \ 91 #define mTextIteratorClassHeader(Clss, Super) \ 92 mObjectClassHeader(Clss, Super) \ 93 ITextIteratorHeader(ITextIterator, Clss) 97 DEFINE_OBJECT(mTextIterator,
mObject)
101 #define mTextLayoutHeader(Clss) \ 102 mCommBTreeHeader(Clss) \ 103 INTERFACE(ITextLayout) \ 104 ITextBuffer * text_buffer; \ 106 int cursor_x, cursor_y; \ 110 int sel_begin_x, sel_begin_y;\ 111 int sel_begin_height; \ 112 int text_sel_begin; \ 113 ITextLayoutContext* context; \ 114 PCLIPRGN dirty_area; \ 115 int old_height, new_height; //height changed include 117 #define mTextLayoutClassHeader(Clss, Super) \ 118 mCommBTreeClassHeader(Clss, Super) \ 119 ITextLayoutHeader(ITextLayout, Clss) 121 DEFINE_OBJECT(mTextLayout, mCommBTree)
125 #define mTextLayoutNodeHeader(Clss) \ 126 mCommBTreeNodeHeader(Clss) \ 131 #define mTextLayoutNodeClassHeader(Clss, Super) \ 132 mCommBTreeNodeClassHeader(Clss, Super) 134 DEFINE_OBJECT(mTextLayoutNode,mCommBTreeNode)
139 #define mTextRenderHeader(Clss) \ 140 mObjectHeader(Clss) \ 141 INTERFACE(ITextRender) 143 #define mTextRenderClassHeader(Clss, Super) \ 144 mObjectClassHeader(Clss, Super) \ 145 ITextRenderHeader(ITextRender, Clss) 147 DEFINE_OBJECT(mTextRender,
mObject)
153 ITextRender* GetTextRender(
int type);
156 DECLARE_OBJECT(mTextEditor)
163 #ifndef __MINIGUI_LIB__ 168 #define NCSCTRL_TEXTEDITOR NCSCLASSNAME("texteditor") 172 #define NCS_TEF_REPLACE_MODE 0x010000 173 #define NCS_TEF_HAS_PAINTED 0x020000 174 #define mTextEditor_isReplaceMode(self) \ 175 ((self)->flags&NCS_TEF_REPLACE_MODE) 176 #define mTextEditor_hasPainted(self) \ 177 ((self)->flags&NCS_TEF_HAS_PAINTED) 180 #ifdef _MGHAVE_TEXTEDITTITLE 181 #define TITLE_HEADER \ 182 int title_idx, title_text_idx; \ 183 int title_x, title_y, title_last_height; \ 184 int title_paracount; \ 185 int title_last_para_text_index; \ 186 int title_linecount; \ 187 int title_last_line_text_index; 189 #define TITLE_CLASS_HEADER(Clss) \ 190 void (*setTitle)(Clss*, const char* buff, int len); \ 191 int (*getTitle)(Clss*, char* buff, int max); 196 #define TITLE_CLASS_HEADER(Clss) 228 #define mTextEditorHeader(Clss) \ 229 mWidgetHeader(Clss) \ 230 INTERFACE(ITextLayoutContext) \ 231 mTextBuffer *textBuffer; \ 232 mTextLayout *textLayout; \ 233 int visWidth, visHeight;\ 236 unsigned int flags; \ 239 unsigned short scrollBarMode; \ 240 unsigned int scrollHStep; \ 241 unsigned int scrollVStep; \ 243 int oldOffX, oldOffY; \ 332 #define mTextEditorClassHeader(Clss, Super) \ 333 mWidgetClassHeader(Clss, Super) \ 334 ITextLayoutContextHeader(ITextLayoutContext, Clss) \ 335 int (*onChar)(Clss*, int asciiCode, DWORD keyFlags); \ 336 BOOL (*onFontChanged)(Clss*); \ 337 int (*getInvalidBkgnd)(Clss*, RECT *prc); \ 338 int (*onLButtonDBClk)(Clss*, int x, int y, DWORD keyFlags); \ 339 void (*onCSizeChanged)(Clss*, int cliWidth, int cliHeight); \ 340 void (*onSetFocus)(Clss*, HWND oldActiveWnd, int lParam); \ 341 void (*onKillFocus)(Clss*, HWND newActiveWnd, int lParam); \ 342 void (*onHScroll)(Clss*, int code, int mouseX); \ 343 void (*onVScroll)(Clss*, int code, int mouseY); \ 345 int (*getParaText)(Clss*, int index, int start, int len, char* buffer); \ 346 int (*getLineText)(Clss*, int index, int start, int len, char* buffer); \ 347 int (*getParaLength)(Clss*, int index, int *startPos); \ 348 int (*getParaLengthInMChar)(Clss*, int paraNo, int *startPos); \ 349 int (*getLineLength)(Clss*, int lineNo, int *startPos, BOOL bMChar); \ 350 int (*getParaNum)(Clss*); \ 351 int (*setText)(Clss*, const char* text); \ 352 int (*insertText)(Clss*, const char* text, int len); \ 353 int (*getText)(Clss*, char* text, int len); \ 354 int (*getTextLen)(Clss*); \ 355 BOOL (*enableCaret)(Clss*, BOOL enable); \ 356 int (*setCaretPosByPara)(Clss*, unsigned int paraIdx, unsigned int offChar, \ 358 int (*getCaretPosByPara)(Clss*, int *paraIdx, int *offChar, \ 359 int *height, BOOL isSel); \ 360 int (*setCaretPosByLine)(Clss*, unsigned int lineIdx, unsigned int offChar, \ 362 int (*getCaretPosByLine)(Clss*, int *lineIdx, int *offChar, \ 363 int *height, BOOL isSel); \ 364 int (*getLineCount)(Clss*); \ 365 void (*selectAll)(Clss*); \ 366 int (*setSel)(Clss*, unsigned int startParaIdx, unsigned int startOffChar, \ 367 unsigned int endParaIdx, unsigned int endOffChar); \ 368 int (*getSel)(Clss*, char *buffer, int len); \ 369 BOOL (*needLineDecorative)(Clss*); \ 370 void (*lineDecorative)(Clss*, int x, int y, int w, int h, \ 371 int lineNo, HDC hdc); \ 372 TITLE_CLASS_HEADER(Clss) 374 #ifndef __MINIGUI_LIB__ 380 #define NCSS_TE_READONLY (1<<NCSS_WIDGET_SHIFT) 386 #define NCSS_TE_UPPERCASE (2<<NCSS_WIDGET_SHIFT) 392 #define NCSS_TE_LOWERCASE (4<<NCSS_WIDGET_SHIFT) 398 #define NCSS_TE_NOHIDESEL (8<<NCSS_WIDGET_SHIFT) 404 #define NCSS_TE_AUTOWRAP (0x10<<NCSS_WIDGET_SHIFT) 410 #define NCSS_TE_BASELINE (0x20<<NCSS_WIDGET_SHIFT) 416 #define NCSS_TE_OWNERBKGND (0x40<<NCSS_WIDGET_SHIFT) 422 #define NCSS_TE_TITLE (0x80<<NCSS_WIDGET_SHIFT) 432 #define NCSS_TE_AUTOVSCROLL (0x100<<NCSS_WIDGET_SHIFT) 442 #define NCSS_TE_AUTOHSCROLL (0x200<<NCSS_WIDGET_SHIFT) 444 #define NCSS_TE_SHIFT (NCSS_WIDGET_SHIFT + 10) 457 NCS_TEF_SCROLLBAR_NEVER = 0,
462 NCS_TEF_SCROLLBAR_AUTO,
467 NCS_TEF_SCROLLBAR_ALWAYS,
479 NCSP_TE_READONLY = NCSP_WIDGET_MAX + 1,
489 NCSP_TE_SCROLL_HSTEP,
494 NCSP_TE_SCROLL_VSTEP,
509 NCSP_TE_PARAGRAPHCOUNT,
521 #define NCSP_TE_NUMOFPARAGRAPHS NCSP_TE_PARAGRAPHCOUNT 523 #ifndef __MINIGUI_LIB__ 528 enum mTextEditorNotify
533 NCSN_TE_CONTENTCHANGED = NCSN_WIDGET_MAX + 1,
572 typedef struct _mTextEditorRenderer mTextEditorRenderer;
576 DEFINE_OBJECT(mTextEditor,
mWidget)
578 #ifdef __MINIGUI_LIB__ 579 void TextEditorDrawLinesDecorative(mTextEditor *
self, HDC hdc,
int x,
int y,
int w,
int h);
580 #define mTextEditor_drawLinesDecorative TextEditorDrawLinesDecorative 582 void mTextEditor_drawLinesDecorative(mTextEditor *
self, HDC hdc,
int x,
int y,
int w,
int h);