xj qian
2024-10-18 918cf2c844f524641396e72c6ecebcc620c57813
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
#pragma once
 
#include "wobject/xcontrol.hpp"
#include "kobject/kxsedit.hpp"
 
using kxsedit = Hxsoft::XFrame::IXSEdit;
class xsedit : public xcontrol
{
    public:
        xsedit():xcontrol(nullptr){}
        xsedit(void * implptr):xcontrol(implptr){}
        kxsedit* getKXSEdit(){return (kxsedit*)this->GetNativePtr();}
    public:
 
        // @access public macro members
        // @cmember return linenumber display flag
        BOOL GetDisplayLinenumbers()
        {
            return getKXSEdit()->GetDisplayLinenumbers();
        }
        // @cmember return selection display flag
        BOOL GetDisplaySelection()
        {
            return getKXSEdit()->GetDisplaySelection();
        }
        // @cmember return folding margin display flag
        BOOL GetDisplayFolding()
        {
            return getKXSEdit()->GetDisplayFolding();
        }
        // @cmember set search flags
        void SetSearchflags(int nSearchflags)
        {
            return getKXSEdit()->SetSearchflags(nSearchflags);
        }
        int GetSearchflags()
        {
            return getKXSEdit()->GetSearchflags();
        }
 
public:
    // @access public function members
    // @cmember register a window class to use scintilla in a dialog
    //static BOOL Register(CWinApp *app, UINT id);
    // @cmember try to load Lexer DLL
    static HMODULE LoadScintillaDll(LPCTSTR szLexerDll = NULL)
    {
        return kxsedit::LoadScintillaDll(szLexerDll);
    }
    // @cmember create window
    // BOOL Create (LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
    // @cmember Set Text to the Scintilla control
    void SetText(LPCTSTR szText)
    {
        return getKXSEdit()->SetText(szText);
    }
    // @cmember Get Text from the Scintilla control
    void GetText(LPTSTR& strText)
    {
        return getKXSEdit()->GetText(strText);
    }
    // @cmember Get Text from the Scintilla control
    LPTSTR GetText()
    {
        return getKXSEdit()->GetText();
    }
    // @cmember Load a file
    BOOL LoadFile(LPCTSTR szFile)
    {
        return getKXSEdit()->LoadFile(szFile);
    }
    // @cmember Save a file
    BOOL SaveFile(LPCTSTR szFile)
    {
        return getKXSEdit()->SaveFile(szFile);
    }
    // @cmember try to find lexer format from extension
    int GetFormatFromExtension(LPCTSTR szExtension)
    {
        return getKXSEdit()->GetFormatFromExtension(szExtension);
    }
    // @cmember calcluate number of chars needed for linenumberdisplay
    int GetLinenumberChars()
    {
        return getKXSEdit()->GetLinenumberChars();
    }
    // @cmember calcluate number of pixels for linenumber display
    int GetLinenumberWidth()
    {
        return getKXSEdit()->GetLinenumberWidth();
    }
    // @cmember set display of linenumbers on/off
    void SetDisplayLinenumbers(BOOL bFlag = true)
    {
        return getKXSEdit()->SetDisplayLinenumbers(bFlag);
    }
    // @cmember set display of selection/bookmark margin on/off
    void SetDisplaySelection(BOOL bFlag = true)
    {
        return getKXSEdit()->SetDisplaySelection(bFlag);
    }
    // @cmember set display of source folding margin on/off
    void SetDisplayFolding(BOOL bFlag = true)
    {
        return getKXSEdit()->SetDisplayFolding(bFlag);
    }
    // @cmember cut selection to clipboard
    void Cut()
    {
        return getKXSEdit()->Cut();
    }
    // @cmember copy selection to clipboard
    void Copy()
    {
        return getKXSEdit()->Copy();
    }
    // @cmember paste from clipboard
    void Paste()
    {
        return getKXSEdit()->Paste();
    }
    // @cmember clear selection
    void Clear()
    {
        return getKXSEdit()->Clear();
    }
    // @cmember undo last change
    void Undo()
    {
        return getKXSEdit()->Undo();
    }
    // @cmember redo last change
    void Redo()
    {
        return getKXSEdit()->Redo();
    }
    // @cmember check if we can undo
    BOOL CanUndo()
    {
        return getKXSEdit()->CanUndo();
    }
    // @cmember check if we can redo
    BOOL CanRedo()
    {
        return getKXSEdit()->CanRedo();
    }
    // @cmember check if we have something to paste from clipboard
    BOOL CanPaste()
    {
        return getKXSEdit()->CanPaste();
    }
    // @cmember select complete text
    void SelectAll()
    {
        return getKXSEdit()->SelectAll();
    }
    // @cmember return the current line number
    long GetCurrentLine()
    {
        return getKXSEdit()->GetCurrentLine();
    }
    // @cmember return the current column number
    long GetCurrentColumn()
    {
        return getKXSEdit()->GetCurrentColumn();
    }
    // @cmember return the current character position within the file
    long GetCurrentPosition()
    {
        return getKXSEdit()->GetCurrentPosition();
    }
    // @cmember return the current style number at the current character position
    int GetCurrentStyle()
    {
        return getKXSEdit()->GetCurrentStyle();
    }
    // @cmember return the current folding level at the current character position
    int GetCurrentFoldinglevel()
    {
        return getKXSEdit()->GetCurrentFoldinglevel();
    }
    // @cmember set the fontname for a style number
    void SetFontname(int nStyle, LPCTSTR szFontname)
    {
        return getKXSEdit()->SetFontname(nStyle, szFontname);
    }
    // @cmember set the fontname height in points for a style number
    void SetFontheight(int nStyle, int nHeight)
    {
        return getKXSEdit()->SetFontheight(nStyle, nHeight);
    }
    // @cmember set the foregroundcolor for a style number
    void SetForeground(int nStyle, COLORREF crForeground)
    {
        return getKXSEdit()->SetForeground(nStyle, crForeground);
    }
    // @cmember set the backgroundcolor for a style number
    void SetBackground(int nStyle, COLORREF crBackground)
    {
        return getKXSEdit()->SetBackground(nStyle,crBackground);
    }
    // @cmember set given style to bold
    void SetBold(int nStyle, BOOL bFlag)
    {
        return getKXSEdit()->SetBold(nStyle,bFlag);
    }
    // @cmember set given style to bold
    void SetItalic(int nStyle, BOOL bFlag)
    {
        return getKXSEdit()->SetItalic(nStyle,bFlag);
    }
    // @cmember set given style to bold
    void SetUnderline(int nStyle, BOOL bFlag)
    {
        return getKXSEdit()->SetUnderline(nStyle,bFlag);
    }
    // @cmember get flag if we are in overstrike mode
    BOOL GetOverstrike()
    {
        return getKXSEdit()->GetOverstrike();
    }
    // @cmember set flag for overstrike mode
    void SetOverstrike(BOOL bOverstrike)
    {
        return getKXSEdit()->SetOverstrike(bOverstrike);
    }
    // @cmember init the view with reasonable defaults
    void Init()
    {
        return getKXSEdit()->Init();
    }
    // @cmember called whenever the text is changed - we can update any indicators and do brace matching
    void UpdateUI()
    {
        return getKXSEdit()->UpdateUI();
    }
    // @cmember do default folding 
    void DoDefaultFolding(int nMargin, long lPosition)
    {
        return getKXSEdit()->DoDefaultFolding(nMargin,lPosition);
    }
    // @cmember refresh lexer and display after new settings
    void Refresh()
    {
        return getKXSEdit()-> Refresh();
    }
    // @cmember add a bookmark = marker type 0
    void AddBookmark(long lLine)
    {
        return getKXSEdit()->AddBookmark(lLine);;
    }
    // @cmember delete a bookmark = marker type 0
    void DeleteBookmark(long lLine)
    {
        return getKXSEdit()->DeleteBookmark(lLine);
    }
    // @cmember check for bookmark = marker type 0
    BOOL HasBookmark(long lLine)
    {
        return getKXSEdit()->HasBookmark(lLine);
    }
    // @cmember Find next bookmark
    void FindNextBookmark()
    {
        return getKXSEdit()->FindNextBookmark();
    }
    // @cmember Find previous bookmark
    void FindPreviousBookmark()
    {
        return getKXSEdit()->FindPreviousBookmark();
    }
    // @cmember goto line
    void GotoLine(long lLine)
    {
        return getKXSEdit()->GotoLine(lLine);
    }
    // @cmember goto position
    void GotoPosition(long lPos)
    {
        return getKXSEdit()->GotoPosition(lPos);
    }
    // @cmember search forward for a given text
    BOOL SearchForward(LPTSTR szText)
    {
        return getKXSEdit()->SearchForward(szText);
    }
    // @cmember search backward for a given text
    BOOL SearchBackward(LPTSTR szText)
    {
        return getKXSEdit()->SearchBackward(szText);
    }
    // @cmember replace a text found by SearchForward or SearchBackward
    void ReplaceSearchedText(LPCTSTR szText)
    {
        return getKXSEdit()->ReplaceSearchedText(szText);
    }
    // @cmember Set your own lexer
    void SetLexer(int nLexer)
    {
        return getKXSEdit()->SetLexer(nLexer);
    }
    // @cmember return start position of selection
    long GetSelectionStart()
    {
        //return getKXSEdit()->GetSelectionStart();
        return -1;
    }
    // @cmember return end position of selection
    long GetSelectionEnd()
    {
        //return getKXSEdit()->GetSelectionEnd();
        return -1;
    }
    // @cmember get selected text
    LPTSTR GetSelectedText()
    {
        return getKXSEdit()->GetSelectedText();
    }
    // @cmember replace all in buffer or selection
    int ReplaceAll(LPTSTR szFind, LPTSTR szReplace, BOOL bSelection = true)
    {
        return getKXSEdit()->ReplaceAll(szFind,szReplace,bSelection);
    }
public:
    // @cmember load text
    int LoadContent(xstring bstr, LPCTSTR ext = L".xml")
    {
        return getKXSEdit()->LoadContent((BSTR)bstr.c_str(), ext);
    }
    // @cmember set text
    int SetContent(xstring bstr, LPCTSTR ext = L".xml")
    {
        return getKXSEdit()->SetContent((BSTR)bstr.c_str(), ext);
    }
    // @cmember get text
    int GetContent(xstring&  xs)
    {
        BSTR bstr = nullptr;
        int ret = getKXSEdit()->GetContent(&bstr);
        xs= xstring(bstr, true);
        return 1;
    }
public:
    int OnFindDlg()
    {
        return getKXSEdit()->OnFindDlg();
    }
    int OnReplaceDlg()
    {
        return getKXSEdit()->OnReplaceDlg();
    }
};