Page 1 sur 2

Aide avec Scintilla ?

Publié : mer. 11/mai/2005 20:57
par Polo
Salut !
Quelqu'un peu m'aider à utiliser scintilla ?
Je suis en train d'essayer d'utiliser la Syntax Highlighting, mais... je vois pas comment on fait :oops:
Et c'est pas les sources de JapBe qui vont m'aider, c'est trop le fouilli :roll:
Merci !
Gaetan

Publié : mer. 25/mai/2005 21:28
par Polo
Ben alors ? Personne ne l'utilise ?

Publié : jeu. 26/mai/2005 6:14
par Progi1984
Tu veux un ceode d'utilisation de coloration syntaxique ou simplement de Scintilla !
proveanat de www.2dev.org

Code : Tout sélectionner

#INVALID_POSITION = -1
#SCI_START = 2000
#SCI_OPTIONAL_START = 3000
#SCI_LEXER_START = 4000
#SCI_ADDTEXT = 2001
#SCI_ADDSTYLEDTEXT = 2002
#SCI_INSERTTEXT = 2003
#SCI_CLEARALL = 2004
#SCI_CLEARDOCUMENTSTYLE = 2005
#SCI_GETLENGTH = 2006
#SCI_GETCHARAT = 2007
#SCI_GETCURRENTPOS = 2008
#SCI_GETANCHOR = 2009
#SCI_GETSTYLEAT = 2010
#SCI_REDO = 2011
#SCI_SETUNDOCOLLECTION = 2012
#SCI_SELECTALL = 2013
#SCI_SETSAVEPOINT = 2014
#SCI_GETSTYLEDTEXT = 2015
#SCI_CANREDO = 2016
#SCI_MARKERLINEFROMHANDLE = 2017
#SCI_MARKERDELETEHANDLE = 2018
#SCI_GETUNDOCOLLECTION = 2019
#SCWS_INVISIBLE = 0
#SCWS_VISIBLEALWAYS = 1
#SCWS_VISIBLEAFTERINDENT = 2
#SCI_GETVIEWWS = 2020
#SCI_SETVIEWWS = 2021
#SCI_POSITIONFROMPOINT = 2022
#SCI_POSITIONFROMPOINTCLOSE = 2023
#SCI_GOTOLINE = 2024
#SCI_GOTOPOS = 2025
#SCI_SETANCHOR = 2026
#SCI_GETCURLINE = 2027
#SCI_GETENDSTYLED = 2028
#SC_EOL_CRLF = 0
#SC_EOL_CR = 1
#SC_EOL_LF = 2
#SCI_CONVERTEOLS = 2029
#SCI_GETEOLMODE = 2030
#SCI_SETEOLMODE = 2031
#SCI_STARTSTYLING = 2032
#SCI_SETSTYLING = 2033
#SCI_GETBUFFEREDDRAW = 2034
#SCI_SETBUFFEREDDRAW = 2035
#SCI_SETTABWIDTH = 2036
#SCI_GETTABWIDTH = 2121
#SC_CP_UTF8 = 65001
#SC_CP_DBCS = 1
#SCI_SETCODEPAGE = 2037
#SCI_SETUSEPALETTE = 2039
#MARKER_MAX = 31
#SC_MARK_CIRCLE = 0
#SC_MARK_ROUNDRECT = 1
#SC_MARK_ARROW = 2
#SC_MARK_SMALLRECT = 3
#SC_MARK_SHORTARROW = 4
#SC_MARK_EMPTY = 5
#SC_MARK_ARROWDOWN = 6
#SC_MARK_MINUS = 7
#SC_MARK_PLUS = 8
#SC_MARK_VLINE = 9
#SC_MARK_LCORNER = 10
#SC_MARK_TCORNER = 11
#SC_MARK_BOXPLUS = 12
#SC_MARK_BOXPLUSCONNECTED = 13
#SC_MARK_BOXMINUS = 14
#SC_MARK_BOXMINUSCONNECTED = 15
#SC_MARK_LCORNERCURVE = 16
#SC_MARK_TCORNERCURVE = 17
#SC_MARK_CIRCLEPLUS = 18
#SC_MARK_CIRCLEPLUSCONNECTED = 19
#SC_MARK_CIRCLEMINUS = 20
#SC_MARK_CIRCLEMINUSCONNECTED = 21
#SC_MARK_BACKGROUND = 22
#SC_MARK_DOTDOTDOT = 23
#SC_MARK_ARROWS = 24
#SC_MARK_PIXMAP = 25
#SC_MARK_CHARACTER = 10000
#SC_MARKNUM_FOLDEREND = 25
#SC_MARKNUM_FOLDEROPENMID = 26
#SC_MARKNUM_FOLDERMIDTAIL = 27
#SC_MARKNUM_FOLDERTAIL = 28
#SC_MARKNUM_FOLDERSUB = 29
#SC_MARKNUM_FOLDER = 30
#SC_MARKNUM_FOLDEROPEN = 31
;#SC_MASK_FOLDERS 0xFE000000
#SCI_MARKERDEFINE = 2040
#SCI_MARKERSETFORE = 2041
#SCI_MARKERSETBACK = 2042
#SCI_MARKERADD = 2043
#SCI_MARKERDELETE = 2044
#SCI_MARKERDELETEALL = 2045
#SCI_MARKERGET = 2046
#SCI_MARKERNEXT = 2047
#SCI_MARKERPREVIOUS = 2048
#SCI_MARKERDEFINEPIXMAP = 2049
#SC_MARGIN_SYMBOL = 0
#SC_MARGIN_NUMBER = 1
#SCI_SETMARGINTYPEN = 2240
#SCI_GETMARGINTYPEN = 2241
#SCI_SETMARGINWIDTHN = 2242
#SCI_GETMARGINWIDTHN = 2243
#SCI_SETMARGINMASKN = 2244
#SCI_GETMARGINMASKN = 2245
#SCI_SETMARGINSENSITIVEN = 2246
#SCI_GETMARGINSENSITIVEN = 2247
#STYLE_DEFAULT = 32
#STYLE_LINENUMBER = 33
#STYLE_BRACELIGHT = 34
#STYLE_BRACEBAD = 35
#STYLE_CONTROLCHAR = 36
#STYLE_INDENTGUIDE = 37
#STYLE_LASTPREDEFINED = 39
#STYLE_MAX = 127
#SC_CHARSET_ANSI = 0
#SC_CHARSET_DEFAULT = 1
#SC_CHARSET_BALTIC = 186
#SC_CHARSET_CHINESEBIG5 = 136
#SC_CHARSET_EASTEUROPE = 238
#SC_CHARSET_GB2312 = 134
#SC_CHARSET_GREEK = 161
#SC_CHARSET_HANGUL = 129
#SC_CHARSET_MAC = 77
#SC_CHARSET_OEM = 255
#SC_CHARSET_RUSSIAN = 204
#SC_CHARSET_SHIFTJIS = 128
#SC_CHARSET_SYMBOL = 2
#SC_CHARSET_TURKISH = 162
#SC_CHARSET_JOHAB = 130
#SC_CHARSET_HEBREW = 177
#SC_CHARSET_ARABIC = 178
#SC_CHARSET_VIETNAMESE = 163
#SC_CHARSET_THAI = 222
#SCI_STYLECLEARALL = 2050
#SCI_STYLESETFORE = 2051
#SCI_STYLESETBACK = 2052
#SCI_STYLESETBOLD = 2053
#SCI_STYLESETITALIC = 2054
#SCI_STYLESETSIZE = 2055
#SCI_STYLESETFONT = 2056
#SCI_STYLESETEOLFILLED = 2057
#SCI_STYLERESETDEFAULT = 2058
#SCI_STYLESETUNDERLINE = 2059
#SC_CASE_MIXED = 0
#SC_CASE_UPPER = 1
#SC_CASE_LOWER = 2
#SCI_STYLESETCASE = 2060
#SCI_STYLESETCHARACTERSET = 2066
#SCI_STYLESETHOTSPOT = 2409
#SCI_SETSELFORE = 2067
#SCI_SETSELBACK = 2068
#SCI_SETCARETFORE = 2069
#SCI_ASSIGNCMDKEY = 2070
#SCI_CLEARCMDKEY = 2071
#SCI_CLEARALLCMDKEYS = 2072
#SCI_SETSTYLINGEX = 2073
#SCI_STYLESETVISIBLE = 2074
#SCI_GETCARETPERIOD = 2075
#SCI_SETCARETPERIOD = 2076
#SCI_SETWORDCHARS = 2077
#SCI_BEGINUNDOACTION = 2078
#SCI_ENDUNDOACTION = 2079
#INDIC_MAX = 7
#INDIC_PLAIN = 0
#INDIC_SQUIGGLE = 1
#INDIC_TT = 2
#INDIC_DIAGONAL = 3
#INDIC_STRIKE = 4
;#INDIC0_MASK 0x20
;#INDIC1_MASK 0x40
;#INDIC2_MASK 0x80
;#INDICS_MASK 0xE0
#SCI_INDICSETSTYLE = 2080
#SCI_INDICGETSTYLE = 2081
#SCI_INDICSETFORE = 2082
#SCI_INDICGETFORE = 2083
#SCI_SETWHITESPACEFORE = 2084
#SCI_SETWHITESPACEBACK = 2085
#SCI_SETSTYLEBITS = 2090
#SCI_GETSTYLEBITS = 2091
#SCI_SETLINESTATE = 2092
#SCI_GETLINESTATE = 2093
#SCI_GETMAXLINESTATE = 2094
#SCI_GETCARETLINEVISIBLE = 2095
#SCI_SETCARETLINEVISIBLE = 2096
#SCI_GETCARETLINEBACK = 2097
#SCI_SETCARETLINEBACK = 2098
#SCI_STYLESETCHANGEABLE = 2099
#SCI_AUTOCSHOW = 2100
#SCI_AUTOCCANCEL = 2101
#SCI_AUTOCACTIVE = 2102
#SCI_AUTOCPOSSTART = 2103
#SCI_AUTOCCOMPLETE = 2104
#SCI_AUTOCSTOPS = 2105
#SCI_AUTOCSETSEPARATOR = 2106
#SCI_AUTOCGETSEPARATOR = 2107
#SCI_AUTOCSELECT = 2108
#SCI_AUTOCSETCANCELATSTART = 2110
#SCI_AUTOCGETCANCELATSTART = 2111
#SCI_AUTOCSETFILLUPS = 2112
#SCI_AUTOCSETCHOOSESINGLE = 2113
#SCI_AUTOCGETCHOOSESINGLE = 2114
#SCI_AUTOCSETIGNORECASE = 2115
#SCI_AUTOCGETIGNORECASE = 2116
#SCI_USERLISTSHOW = 2117
#SCI_AUTOCSETAUTOHIDE = 2118
#SCI_AUTOCGETAUTOHIDE = 2119
#SCI_AUTOCSETDROPRESTOFWORD = 2270
#SCI_AUTOCGETDROPRESTOFWORD = 2271
#SCI_REGISTERIMAGE = 2405
#SCI_CLEARREGISTEREDIMAGES = 2408
#SCI_AUTOCGETTYPESEPARATOR = 2285
#SCI_AUTOCSETTYPESEPARATOR = 2286
#SCI_SETINDENT = 2122
#SCI_GETINDENT = 2123
#SCI_SETUSETABS = 2124
#SCI_GETUSETABS = 2125
#SCI_SETLINEINDENTATION = 2126
#SCI_GETLINEINDENTATION = 2127
#SCI_GETLINEINDENTPOSITION = 2128
#SCI_GETCOLUMN = 2129
#SCI_SETHSCROLLBAR = 2130
#SCI_GETHSCROLLBAR = 2131
#SCI_SETINDENTATIONGUIDES = 2132
#SCI_GETINDENTATIONGUIDES = 2133
#SCI_SETHIGHLIGHTGUIDE = 2134
#SCI_GETHIGHLIGHTGUIDE = 2135
#SCI_GETLINEENDPOSITION = 2136
#SCI_GETCODEPAGE = 2137
#SCI_GETCARETFORE = 2138
#SCI_GETUSEPALETTE = 2139
#SCI_GETREADONLY = 2140
#SCI_SETCURRENTPOS = 2141
#SCI_SETSELECTIONSTART = 2142
#SCI_GETSELECTIONSTART = 2143
#SCI_SETSELECTIONEND = 2144
#SCI_GETSELECTIONEND = 2145
#SCI_SETPRINTMAGNIFICATION = 2146
#SCI_GETPRINTMAGNIFICATION = 2147
#SC_PRINT_NORMAL = 0
#SC_PRINT_INVERTLIGHT = 1
#SC_PRINT_BLACKONWHITE = 2
#SC_PRINT_COLOURONWHITE = 3
#SC_PRINT_COLOURONWHITEDEFAULTBG = 4
#SCI_SETPRINTCOLOURMODE = 2148
#SCI_GETPRINTCOLOURMODE = 2149
#SCFIND_WHOLEWORD = 2
#SCFIND_MATCHCASE = 4
;#SCFIND_WORDSTART 0x00100000
;#SCFIND_REGEXP 0x00200000
;#SCFIND_POSIX 0x00400000
#SCI_FINDTEXT = 2150
#SCI_FORMATRANGE = 2151
#SCI_GETFIRSTVISIBLELINE = 2152
#SCI_GETLINE = 2153
#SCI_GETLINECOUNT = 2154
#SCI_SETMARGINLEFT = 2155
#SCI_GETMARGINLEFT = 2156
#SCI_SETMARGINRIGHT = 2157
#SCI_GETMARGINRIGHT = 2158
#SCI_GETMODIFY = 2159
#SCI_SETSEL = 2160
#SCI_GETSELTEXT = 2161
#SCI_GETTEXTRANGE = 2162
#SCI_HIDESELECTION = 2163
#SCI_POINTXFROMPOSITION = 2164
#SCI_POINTYFROMPOSITION = 2165
#SCI_LINEFROMPOSITION = 2166
#SCI_POSITIONFROMLINE = 2167
#SCI_LINESCROLL = 2168
#SCI_SCROLLCARET = 2169
#SCI_REPLACESEL = 2170
#SCI_SETREADONLY = 2171
#SCI_NULL = 2172
#SCI_CANPASTE = 2173
#SCI_CANUNDO = 2174
#SCI_EMPTYUNDOBUFFER = 2175
#SCI_UNDO = 2176
#SCI_CUT = 2177
#SCI_COPY = 2178
#SCI_PASTE = 2179
#SCI_CLEAR = 2180
#SCI_SETTEXT = 2181
#SCI_GETTEXT = 2182
#SCI_GETTEXTLENGTH = 2183
#SCI_GETDIRECTFUNCTION = 2184
#SCI_GETDIRECTPOINTER = 2185
#SCI_SETOVERTYPE = 2186
#SCI_GETOVERTYPE = 2187
#SCI_SETCARETWIDTH = 2188
#SCI_GETCARETWIDTH = 2189
#SCI_SETTARGETSTART = 2190
#SCI_GETTARGETSTART = 2191
#SCI_SETTARGETEND = 2192
#SCI_GETTARGETEND = 2193
#SCI_REPLACETARGET = 2194
#SCI_REPLACETARGETRE = 2195
#SCI_SEARCHINTARGET = 2197
#SCI_SETSEARCHFLAGS = 2198
#SCI_GETSEARCHFLAGS = 2199
#SCI_CALLTIPSHOW = 2200
#SCI_CALLTIPCANCEL = 2201
#SCI_CALLTIPACTIVE = 2202
#SCI_CALLTIPPOSSTART = 2203
#SCI_CALLTIPSETHLT = 2204
#SCI_CALLTIPSETBACK = 2205
#SCI_CALLTIPSETFORE = 2206
#SCI_CALLTIPSETFOREHLT = 2207
#SCI_VISIBLEFROMDOCLINE = 2220
#SCI_DOCLINEFROMVISIBLE = 2221
;#SC_FOLDLEVELBASE 0x400
;#SC_FOLDLEVELWHITEFLAG 0x1000
;#SC_FOLDLEVELHEADERFLAG 0x2000
;#SC_FOLDLEVELBOXHEADERFLAG 0x4000
;#SC_FOLDLEVELBOXFOOTERFLAG 0x8000
;#SC_FOLDLEVELCONTRACTED 0x10000
;#SC_FOLDLEVELUNINDENT 0x20000
;#SC_FOLDLEVELNUMBERMASK 0x0FFF
#SCI_SETFOLDLEVEL = 2222
#SCI_GETFOLDLEVEL = 2223
#SCI_GETLASTCHILD = 2224
#SCI_GETFOLDPARENT = 2225
#SCI_SHOWLINES = 2226
#SCI_HIDELINES = 2227
#SCI_GETLINEVISIBLE = 2228
#SCI_SETFOLDEXPANDED = 2229
#SCI_GETFOLDEXPANDED = 2230
#SCI_TOGGLEFOLD = 2231
#SCI_ENSUREVISIBLE = 2232
;#SC_FOLDFLAG_LINEBEFORE_EXPANDED 0x0002
;#SC_FOLDFLAG_LINEBEFORE_CONTRACTED 0x0004
;#SC_FOLDFLAG_LINEAFTER_EXPANDED 0x0008
;#SC_FOLDFLAG_LINEAFTER_CONTRACTED 0x0010
;#SC_FOLDFLAG_LEVELNUMBERS 0x0040
;#SC_FOLDFLAG_BOX 0x0001
#SCI_SETFOLDFLAGS = 2233
#SCI_ENSUREVISIBLEENFORCEPOLICY = 2234
#SCI_SETTABINDENTS = 2260
#SCI_GETTABINDENTS = 2261
#SCI_SETBACKSPACEUNINDENTS = 2262
#SCI_GETBACKSPACEUNINDENTS = 2263
#SC_TIME_FOREVER = 10000000
#SCI_SETMOUSEDWELLTIME = 2264
#SCI_GETMOUSEDWELLTIME = 2265
#SCI_WORDSTARTPOSITION = 2266
#SCI_WORDENDPOSITION = 2267
#SC_WRAP_NONE = 0
#SC_WRAP_WORD = 1
#SCI_SETWRAPMODE = 2268
#SCI_GETWRAPMODE = 2269
#SC_CACHE_NONE = 0
#SC_CACHE_CARET = 1
#SC_CACHE_PAGE = 2
#SC_CACHE_DOCUMENT = 3
#SCI_SETLAYOUTCACHE = 2272
#SCI_GETLAYOUTCACHE = 2273
#SCI_SETSCROLLWIDTH = 2274
#SCI_GETSCROLLWIDTH = 2275
#SCI_TEXTWIDTH = 2276
#SCI_SETENDATLASTLINE = 2277
#SCI_GETENDATLASTLINE = 2278
#SCI_TEXTHEIGHT = 2279
#SCI_SETVSCROLLBAR = 2280
#SCI_GETVSCROLLBAR = 2281
#SCI_APPENDTEXT = 2282
#SCI_GETTWOPHASEDRAW = 2283
#SCI_SETTWOPHASEDRAW = 2284
#SCI_TARGETFROMSELECTION = 2287
#SCI_LINESJOIN = 2288
#SCI_LINESSPLIT = 2289
#SCI_SETFOLDMARGINCOLOUR = 2290
#SCI_SETFOLDMARGINHICOLOUR = 2291
#SCI_LINEDOWN = 2300
#SCI_LINEDOWNEXTEND = 2301
#SCI_LINEUP = 2302
#SCI_LINEUPEXTEND = 2303
#SCI_CHARLEFT = 2304
#SCI_CHARLEFTEXTEND = 2305
#SCI_CHARRIGHT = 2306
#SCI_CHARRIGHTEXTEND = 2307
#SCI_WORDLEFT = 2308
#SCI_WORDLEFTEXTEND = 2309
#SCI_WORDRIGHT = 2310
#SCI_WORDRIGHTEXTEND = 2311
#SCI_HOME = 2312
#SCI_HOMEEXTEND = 2313
#SCI_LINEEND = 2314
#SCI_LINEENDEXTEND = 2315
#SCI_DOCUMENTSTART = 2316
#SCI_DOCUMENTSTARTEXTEND = 2317
#SCI_DOCUMENTEND = 2318
#SCI_DOCUMENTENDEXTEND = 2319
#SCI_PAGEUP = 2320
#SCI_PAGEUPEXTEND = 2321
#SCI_PAGEDOWN = 2322
#SCI_PAGEDOWNEXTEND = 2323
#SCI_EDITTOGGLEOVERTYPE = 2324
#SCI_CANCEL = 2325
#SCI_DELETEBACK = 2326
#SCI_TAB = 2327
#SCI_BACKTAB = 2328
#SCI_NEWLINE = 2329
#SCI_FORMFEED = 2330
#SCI_VCHOME = 2331
#SCI_VCHOMEEXTEND = 2332
#SCI_ZOOMIN = 2333
#SCI_ZOOMOUT = 2334
#SCI_DELWORDLEFT = 2335
#SCI_DELWORDRIGHT = 2336
#SCI_LINECUT = 2337
#SCI_LINEDELETE = 2338
#SCI_LINETRANSPOSE = 2339
#SCI_LINEDUPLICATE = 2404
#SCI_LOWERCASE = 2340
#SCI_UPPERCASE = 2341
#SCI_LINESCROLLDOWN = 2342
#SCI_LINESCROLLUP = 2343
#SCI_DELETEBACKNOTLINE = 2344
#SCI_HOMEDISPLAY = 2345
#SCI_HOMEDISPLAYEXTEND = 2346
#SCI_LINEENDDISPLAY = 2347
#SCI_LINEENDDISPLAYEXTEND = 2348
#SCI_HOMEWRAP = 2349
#SCI_HOMEWRAPEXTEND = 2450
#SCI_LINEENDWRAP = 2451
#SCI_LINEENDWRAPEXTEND = 2452
#SCI_VCHOMEWRAP = 2453
#SCI_VCHOMEWRAPEXTEND = 2454
#SCI_MOVECARETINSIDEVIEW = 2401
#SCI_LINELENGTH = 2350
#SCI_BRACEHIGHLIGHT = 2351
#SCI_BRACEBADLIGHT = 2352
#SCI_BRACEMATCH = 2353
#SCI_GETVIEWEOL = 2355
#SCI_SETVIEWEOL = 2356
#SCI_GETDOCPOINTER = 2357
#SCI_SETDOCPOINTER = 2358
#SCI_SETMODEVENTMASK = 2359
#EDGE_NONE = 0
#EDGE_LINE = 1
#EDGE_BACKGROUND = 2
#SCI_GETEDGECOLUMN = 2360
#SCI_SETEDGECOLUMN = 2361
#SCI_GETEDGEMODE = 2362
#SCI_SETEDGEMODE = 2363
#SCI_GETEDGECOLOUR = 2364
#SCI_SETEDGECOLOUR = 2365
#SCI_SEARCHANCHOR = 2366
#SCI_SEARCHNEXT = 2367
#SCI_SEARCHPREV = 2368
#SCI_LINESONSCREEN = 2370
#SCI_USEPOPUP = 2371
#SCI_SELECTIONISRECTANGLE = 2372
#SCI_SETZOOM = 2373
#SCI_GETZOOM = 2374
#SCI_CREATEDOCUMENT = 2375
#SCI_ADDREFDOCUMENT = 2376
#SCI_RELEASEDOCUMENT = 2377
#SCI_GETMODEVENTMASK = 2378
#SCI_SETFOCUS = 2380
#SCI_GETFOCUS = 2381
#SCI_SETSTATUS = 2382
#SCI_GETSTATUS = 2383
#SCI_SETMOUSEDOWNCAPTURES = 2384
#SCI_GETMOUSEDOWNCAPTURES = 2385
#SC_CURSORNORMAL = -1
#SC_CURSORWAIT = 4
#SCI_SETCURSOR = 2386
#SCI_GETCURSOR = 2387
#SCI_SETCONTROLCHARSYMBOL = 2388
#SCI_GETCONTROLCHARSYMBOL = 2389
#SCI_WORDPARTLEFT = 2390
#SCI_WORDPARTLEFTEXTEND = 2391
#SCI_WORDPARTRIGHT = 2392
#SCI_WORDPARTRIGHTEXTEND = 2393
;#VISIBLE_SLOP 0x01
;#VISIBLE_STRICT 0x04
#SCI_SETVISIBLEPOLICY = 2394
#SCI_DELLINELEFT = 2395
#SCI_DELLINERIGHT = 2396
#SCI_SETXOFFSET = 2397
#SCI_GETXOFFSET = 2398
#SCI_CHOOSECARETX = 2399
#SCI_GRABFOCUS = 2400
;#CARET_SLOP 0x01
;#CARET_STRICT 0x04
;#CARET_JUMPS 0x10
;#CARET_EVEN 0x08
#SCI_SETXCARETPOLICY = 2402
#SCI_SETYCARETPOLICY = 2403
#SCI_SETPRINTWRAPMODE = 2406
#SCI_GETPRINTWRAPMODE = 2407
#SCI_SETHOTSPOTACTIVEFORE = 2410
#SCI_SETHOTSPOTACTIVEBACK = 2411
#SCI_SETHOTSPOTACTIVEUNDERLINE = 2412
#SCI_PARADOWN = 2413
#SCI_PARADOWNEXTEND = 2414
#SCI_PARAUP = 2415
#SCI_PARAUPEXTEND = 2416
#SCI_STARTRECORD = 3001
#SCI_STOPRECORD = 3002
#SCI_SETLEXER = 4001
#SCI_GETLEXER = 4002
#SCI_COLOURISE = 4003
#SCI_SETPROPERTY = 4004
#SCI_SETKEYWORDS = 4005
#SCI_SETLEXERLANGUAGE = 4006
#SCI_LOADLEXERLIBRARY = 4007
;#SC_MOD_INSERTTEXT 0x1
;#SC_MOD_DELETETEXT 0x2
;#SC_MOD_CHANGESTYLE 0x4
;#SC_MOD_CHANGEFOLD 0x8
;#SC_PERFORMED_USER 0x10
;#SC_PERFORMED_UNDO 0x20
;#SC_PERFORMED_REDO 0x40
;#SC_LASTSTEPINUNDOREDO 0x100
;#SC_MOD_CHANGEMARKER 0x200
;#SC_MOD_BEFOREINSERT 0x400
;#SC_MOD_BEFOREDELETE 0x800
;#SC_MODEVENTMASKALL 0xF77
#SCEN_CHANGE = 768
#SCEN_SETFOCUS = 512
#SCEN_KILLFOCUS = 256
#SCK_DOWN = 300
#SCK_UP = 301
#SCK_LEFT = 302
#SCK_RIGHT = 303
#SCK_HOME = 304
#SCK_END = 305
#SCK_PRIOR = 306
#SCK_NEXT = 307
#SCK_DELETE = 308
#SCK_INSERT = 309
#SCK_ESCAPE = 7
#SCK_BACK = 8
#SCK_TAB = 9
#SCK_RETURN = 13
#SCK_ADD = 310
#SCK_SUBTRACT = 311
#SCK_DIVIDE = 312
#SCMOD_SHIFT = 1
#SCMOD_CTRL = 2
#SCMOD_ALT = 4
#SCN_STYLENEEDED = 2000
#SCN_CHARADDED = 2001
#SCN_SAVEPOINTREACHED = 2002
#SCN_SAVEPOINTLEFT = 2003
#SCN_MODIFYATTEMPTRO = 2004
#SCN_KEY = 2005
#SCN_DOUBLECLICK = 2006
#SCN_UPDATEUI = 2007
#SCN_MODIFIED = 2008
#SCN_MACRORECORD = 2009
#SCN_MARGINCLICK = 2010
#SCN_NEEDSHOWN = 2011
#SCN_PAINTED = 2013
#SCN_USERLISTSELECTION = 2014
#SCN_URIDROPPED = 2015
#SCN_DWELLSTART = 2016
#SCN_DWELLEND = 2017
#SCN_ZOOM = 2018
#SCN_HOTSPOTCLICK = 2019
#SCN_HOTSPOTDOUBLECLICK = 2020
#SCN_CALLTIPCLICK = 2021
;//--Autogenerated -- End of section automatically generated from Scintilla.iface

;// These structures are defined To be exactly the same shape as the Win32
;// CHARRANGE, TEXTRANGE, FINDTEXTEX, FORMATRANGE, And NMHDR structs.
;// So older code that treats Scintilla as a RichEdit will work.

;Structure CharacterRange
; cpMin.l
; cpMax.l
;EndStructure

;Structure TextRange
; chrg.CharacterRange
; *lpstrText.s
;EndStructure

;Structure TextToFind
; chrg.CharacterRange
; *lpstrText.s
; chrgText.CharacterRange
;EndStructure

;#ifdef PLATFORM_H

;// This Structure is used in printing And requires some of the graphics types
;// from Platform.h. Not needed by most client code.

;struct RangeToFormat {
; SurfaceID hdc;
; SurfaceID hdcTarget;
; PRectangle rc;
; PRectangle rcPage;
; CharacterRange chrg;
;};

;#endif

;struct NotifyHeader {
; // hwndFrom is really an environment specifc window handle Or pointer
; // but most clients of Scintilla.h do not have this type visible.
; //WindowID hwndFrom;
; void *hwndFrom;
; unsigned int idFrom;
; unsigned int code;
;};

Structure SCNotification
NotifyHeader.NMHDR
position.l ; // SCN_STYLENEEDED, SCN_MODIFIED, SCN_DWELLSTART, SCN_DWELLEND
ch.l ; // SCN_CHARADDED, SCN_KEY
modifiers.l ; // SCN_KEY
modificationType.l ; // SCN_MODIFIED
*text.s ; // SCN_MODIFIED
length.l ; // SCN_MODIFIED
linesAdded.l ; // SCN_MODIFIED
message.l ; // SCN_MACRORECORD
wParam.l ; // SCN_MACRORECORD
lParam.l ; // SCN_MACRORECORD
line.l ; // SCN_MODIFIED
foldLevelNow.l ; // SCN_MODIFIED
foldLevelPrev.l ; // SCN_MODIFIED
margin.l ; // SCN_MARGINCLICK
listType.l ; // SCN_USERLISTSELECTION
x.l ; // SCN_DWELLSTART, SCN_DWELLEND
y.l ; // SCN_DWELLSTART, SCN_DWELLEND
EndStructure

;// Deprecation section listing all API features that are deprecated And will
;// will be removed completely in a future version.
;// To enable these features define INCLUDE_DEPRECATED_FEATURES;

;#ifdef INCLUDE_DEPRECATED_FEATURES;

#SCI_SETCARETPOLICY = 2369
;#CARET_CENTER = 0x02
;#CARET_XEVEN = 0x08
;#CARET_XJUMPS = 0x10

#SCN_POSCHANGED = 2012
#SCN_CHECKBRACE = 2007

; --------------------------------------------------------------------------------------------------------------------

; USE IT AT YOUR OWN RISK!!!
;
; REMEMBER: THIS IS OLD STUFF FROM 2003...
; DON"T KNOW WHAT I DID BACK THEN...
; BUT IT SEEMS TO WORK SOMEHOW - STILL...
; USE IT AT YOUR OWN RISK!!!



Declare SaveAsSourceFile(hwndScintilla)
;
; this is the structure for the scintilla callbacks
;STRUC NMHDR
;.hwndFrom RESD 1
;.idfrom RESD 1
;.code RESD 1
;ENDSTRUC
Global lpnmhdr.NMHDR
;
; this is the handle of the scintilla control
Global hwndSciEditGadget
;
; this is the footer of a purebasic source code
Structure PureBasicSourceFile
FileName.s
ExecutableFormat.s
Executable.s
UseIcon.s
EnableAsm.b
EnableNT4.b
EnableXP.b
EndStructure

Global Make.PureBasicSourceFile
;
; when creating a new file...
Procedure ClearMakeFileInfo()
Make\FileName = "New File"
Make\ExecutableFormat = ""
Make\Executable = ""
Make\UseIcon = ""
Make\EnableAsm = 0
Make\EnableNT4 = 0
Make\EnableXP = 0
EndProcedure
;
Procedure RedrawWindow()
;this needs to be in a own procedure to work properly...
WindowEvent() : WindowEvent() : WindowEvent()
WindowEvent() : WindowEvent() : WindowEvent()
EndProcedure

; seems to work...
Procedure SciEditGadget(hwndParent,x,y,w,h)
hmod = OpenLibrary(1, "SciLexer.dll")
If (hmod) = 0
MessageRequester( "Error loading Scintilla", "The Scintilla DLL could not be loaded.", #MB_OK | #MB_ICONERROR)
Else
hInstance = GetModuleHandle_(0)
hwndScintilla = CreateWindowEx_(0, "Scintilla"," ", #WS_CHILD|#WS_VISIBLE|#WS_TABSTOP,x,y,w,h,hwndParent,0,hInstance,0)
EndIf
ShowWindow_(hwndScintilla, #SW_SHOWNORMAL)
ProcedureReturn hwndScintilla
EndProcedure


Procedure SCI_ShowVScrollBar(hwndScintilla)
SendMessage_(hwndScintilla, #SCI_SETVSCROLLBAR, 1, 0)
EndProcedure

Procedure SCI_Undo(hwndScintilla)
SendMessage_(hwndScintilla, #SCI_UNDO, 0, 0)
EndProcedure

Procedure SCI_Redo(hwndScintilla)
SendMessage_(hwndScintilla, #SCI_REDO, 0, 0)
EndProcedure

Procedure SCI_SetSavePoint(hwndScintilla)
SendMessage_(hwndScintilla, #SCI_SETSAVEPOINT, 0, 0)
EndProcedure

Procedure SCI_Cut(hwndScintilla)
SendMessage_(hwndScintilla, #SCI_CUT, 0, 0)
EndProcedure

Procedure SCI_Copy(hwndScintilla)
SendMessage_(hwndScintilla, #SCI_COPY, 0, 0)
EndProcedure

Procedure SCI_Paste(hwndScintilla)
SendMessage_(hwndScintilla, #SCI_PASTE, 0, 0)
EndProcedure

Procedure SCI_SelectAll(hwndScintilla)
SendMessage_(hwndScintilla, #SCI_SELECTALL, 0, 0)
EndProcedure

Procedure SCI_GotoLine(hwndScintilla,Line)
SendMessage_(hwndScintilla, #SCI_GOTOLINE, Line, 0)
SetFocus_(hwndScintilla)
; SendMessage_(hwndScintilla, #SCI_SETCURRENTPOS, Line, 0)
EndProcedure

; seems to work...
Procedure SCI_ClearAll(hwndScintilla)
SendMessage_(hwndScintilla, #SCI_CLEARALL, 0, 0)
EndProcedure

; seems to work...
Procedure SCI_NewLine(hwndScintilla)
SendMessage_(hwndScintilla, #SCI_NEWLINE, 0, 0)
EndProcedure

; seems to work...
Procedure SCI_FormFeed(hwndScintilla)
SendMessage_(hwndScintilla, #SCI_FORMFEED, 0, 0)
EndProcedure


; seems to work...
Procedure SCI_AddText(hwndScintilla, String$)
Length = Len(String$)
SendMessage_(hwndScintilla, #SCI_ADDTEXT, Length, String$)
EndProcedure

Procedure SCI_SetText(hwndScintilla, *StringBuffer)
SendMessage_(hwndScintilla, #SCI_SETTEXT, 0, *StringBuffer)
EndProcedure

Procedure SCI_GetLine(hwndScintilla, Line, *StringBuffer)
ProcedureReturn SendMessage_(hwndScintilla, #SCI_GETLINE, Line, *StringBuffer)
EndProcedure

; Returns the number of lines in the document. There is always at least one.
; seems to work...
Procedure SCI_GetLineCount(hwndScintilla)
ProcedureReturn SendMessage_(hwndScintilla, #SCI_GETLINECOUNT, 0, 0) - 1
EndProcedure

Procedure SCI_LineLength(hwndScintilla, Line)
ProcedureReturn SendMessage_(hwndScintilla, #SCI_LINELENGTH, Line, 0) -1
EndProcedure

;Is the document different from when it was last saved?
Procedure SCI_GetModify(hwndScintilla)
ProcedureReturn SendMessage_(hwndScintilla, #SCI_GETMODIFY, 0, 0)
EndProcedure

;# Retrieve the x value of the point in the window where a position is displayed.
Procedure SCI_PointXFromPosition(hwndScintilla,x)
ProcedureReturn SendMessage_(hwndScintilla, #SCI_POINTXFROMPOSITION, 0, x)
EndProcedure

;# Retrieve the y value of the point in the window where a position is displayed.
Procedure SCI_PointYFromPosition(hwndScintilla,y)
ProcedureReturn SendMessage_(hwndScintilla, #SCI_POINTYFROMPOSITION, 0, y)
EndProcedure



Procedure WindowCallback(WindowID, Message, wParam, lParam)
ReturnValue = #PB_ProcessPureBasicEvents
Shared hwndSciEditGadget

Select Message
Case #WM_MOVE

Case #WM_SIZE
;UpdateStatusBar(0)
ResizeGadget(0, 8, 28, WindowWidth()-16,WindowHeight()-56)

;ResizeScintillaGadget()
SetWindowPos_(hwndSciEditGadget,0,10,30,WindowWidth()-20,WindowHeight()-60,0)

;ReturnValue = 1

Case #WM_NOTIFY
; *lpnmhdr.NMHDR = lParam ;works
*lpnmhdr.NMHDR = EventlParam() ;works
Select *lpnmhdr\hwndFrom

Case hwndSciEditGadget

Select *lpnmhdr\code

Case #SCN_CHARADDED
; Debug SCI_GetModify(hwndSciEditGadget)
; Debug SCI_PointXFromPosition(hwndSciEditGadget,0)
; Debug SCI_PointYFromPosition(hwndSciEditGadget,0)
; Debug SCI_GetLineCount(hwndSciEditGadget)

; MessageRequester("Scintilla code: "+Str(*lpnmhdr\code), "A new char came up...",0)

EndSelect

EndSelect

EndSelect

ProcedureReturn ReturnValue

EndProcedure


Procedure NewSourceFile(hwndScintilla)
SCI_ClearAll(hwndScintilla)
ClearMakeFileInfo()
SCI_SetSavePoint(hwndScintilla)
EndProcedure

Procedure OpenSourceFile(hwndScintilla) ; AddText
Make\FileName = OpenFileRequester("Open File","","PureBasic file |*.PB| All Files |*.*",0)

If OpenFile(1, Make\FileName)
SCI_ClearAll(hwndScintilla)

FileSeek(Lof() - 1)
Repeat
EndByte = ReadByte ()
Position = Loc()
FileSeek(Loc() - 2)
Until EndByte = 0 Or Position = 1

If Position = 1
EndPosition = Lof()
; MessageRequester("Title","Special 'End of text' character not found...",0)
Else
EndPosition = Loc()
; MessageRequester("Title","End of text"+ Str(EndPosition),0)
FileSeek(EndPosition)

Repeat
Text$ = ReadString()
TextExecutableFormat$ = Left(Text$,19)
If TextExecutableFormat$ = "; ExecutableFormat="
Make\ExecutableFormat = RemoveString(Text$, "; ExecutableFormat=", 1)
EndIf
TextExecutable$ = Left(Text$,13)
If TextExecutable$ = "; Executable="
Make\Executable = RemoveString(Text$, "; Executable=", 1)
EndIf
TextUseIcon$ = Left(Text$,10)
If TextUseIcon$ = "; UseIcon="
Make\UseIcon = RemoveString(Text$, "; UseIcon=", 1)
EndIf
If Text$ = "; EnableAsm"
Make\EnableAsm = 1
EndIf
If Text$ = "; EnableNT4"
Make\EnableNT4 = 1
EndIf
If Text$ = "; EnableXP"
Make\EnableXP = 1
EndIf
Until Loc() >= Lof()
EndIf

FileSeek(0)

Repeat
Text$ = ReadString()
SCI_AddText(hwndScintilla, Text$ + Chr(10))
; SCI_NewLine(hwndSciEditGadget)
; SCI_FormFeed(hwndSciEditGadget)
Until Loc() >= EndPosition

CloseFile(1)
WindowEvent() : WindowEvent() : WindowEvent()
SCI_SetSavePoint(hwndScintilla)
Else
If Len(Make\FileName) > 0
MessageRequester("Error","Can't open file...",0)
EndIf
EndIf
EndProcedure

Procedure SaveSourceFile(hwndScintilla)
; Shared ExecutableFormat$
;Make\FileName = "MyTestSave.pb"
If Make\FileName = "New File"
Make\FileName = SaveFileRequester("Save As",Make\FileName,"PureBasic file |*.PB| All Files |*.*",0) + ".pb"
EndIf

If Make\FileName = ".pb"
Make\FileName = "New File"
Else
; If ExamineDirectory(1, "", Make\FileName)
; Result = MessageRequester(Make\FileName,"Overwrite this file?",#PB_MessageRequester_YesNo)
; If Result = 6
DeleteFile(Make\FileName + ".bak")
If RenameFile(Make\FileName, Make\FileName + ".bak")
DeleteFile(Make\FileName)
EndIf
; EndIf
; EndIf

If OpenFile(1,Make\FileName)
Lines = SCI_GetLineCount(hwndScintilla)

For CurrentLine = 0 To Lines
Size = SCI_LineLength(hwndScintilla, CurrentLine)
If Size >= 0
String$ = Space(Size + 1)
SCI_GetLine(hwndScintilla, CurrentLine, @String$)
WriteString(Left(String$, Size + 1))
EndIf
Next

WriteByte(0)
WriteStringN("")
If Len(Make\ExecutableFormat) > 0
WriteStringN("; ExecutableFormat=" + Make\ExecutableFormat)
EndIf
If Len(Make\Executable) > 0
WriteStringN("; Executable=" + Make\Executable)
EndIf
If Len(Make\UseIcon) > 0
WriteStringN("; UseIcon=" + Make\UseIcon)
EndIf
If Make\EnableAsm
WriteStringN("; " + "EnableAsm")
EndIf
If Make\EnableNT4
WriteStringN("; " + "EnableNT4")
EndIf
If Make\EnableXP
WriteStringN("; " + "EnableXP")
EndIf
WriteStringN("; EOF")
CloseFile(1)
SCI_SetSavePoint(hwndScintilla)
EndIf
EndIf

EndProcedure

Procedure SaveAsSourceFile(hwndScintilla)
Make\FileName = SaveFileRequester("Save As",Make\FileName,"PureBasic file |*.PB| All Files |*.*",0) + ".pb"
SaveSourceFile(hwndScintilla)
EndProcedure

Procedure CloseSourceFile(hwndScintilla)
; Ckeck
If SCI_GetModify(hwndSciEditGadget)
Result = MessageRequester(Make\FileName,"File changed, save this file?",#PB_MessageRequester_YesNoCancel)
; Debug Result

If Result = 2 ; cancel
Else
If Result = 6 ; yes
SaveSourceFile(hwndScintilla)
EndIf
SCI_ClearAll(hwndScintilla)
SCI_SetSavePoint(hwndScintilla)
ClearMakeFileInfo()
EndIf
Else
SCI_ClearAll(hwndScintilla)
SCI_SetSavePoint(hwndScintilla)
ClearMakeFileInfo()
EndIf
EndProcedure


; main
If OpenWindow(0, 150, 150, 320,240, #PB_Window_SystemMenu |#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget,"SciEdit for PureBasic")

CreateMenu(1,WindowID())
MenuTitle("File")
MenuItem(0, "&New" + Chr(9) + "Ctrl+N")
MenuItem(1, "&Open" + Chr(9) + "Ctrl+O")
MenuItem(2, "&Save" + Chr(9) + "Ctrl+S")
MenuItem(3, "&Save As...")
MenuItem(4, "&Close" + Chr(9) + "Ctrl+W")
MenuBar()
MenuItem(5, "&Quit")
MenuTitle("Edit")
MenuItem(10, "&Undo" + Chr(9) + "Ctrl+Z")
MenuItem(11, "&Redo" + Chr(9) + "Ctrl+Y")
MenuBar()
MenuItem(12, "&Cut" + Chr(9) + "Ctrl+X")
MenuItem(13, "&Copy" + Chr(9) + "Ctrl+C")
MenuItem(14, "&Paste" + Chr(9) + "Ctrl+V")
MenuBar()
MenuItem(15, "&Select All" + Chr(9) + "Ctrl+A")
MenuBar()
MenuItem(16, "&Goto..." + Chr(9) + "Ctrl+G")


CreateToolBar(1,WindowID())
ToolBarStandardButton(0, #PB_ToolBarIcon_New)
ToolBarToolTip(0, "New File")
ToolBarStandardButton(1, #PB_ToolBarIcon_Open)
ToolBarToolTip(1, "Open File")
ToolBarStandardButton(2, #PB_ToolBarIcon_Save)
ToolBarToolTip(2, "Save File")
ToolBarSeparator()
ToolBarStandardButton(4, #PB_ToolBarIcon_Delete)
ToolBarToolTip(4, "Close File")
ToolBarSeparator()
ToolBarStandardButton(12, #PB_ToolBarIcon_Cut)
ToolBarToolTip(12, "Cut")
ToolBarStandardButton(13, #PB_ToolBarIcon_Copy)
ToolBarToolTip(13, "Copy")
ToolBarStandardButton(14, #PB_ToolBarIcon_Paste)
ToolBarToolTip(14, "Paste")

;create Edit Gadget
CreateGadgetList(WindowID())
Frame3DGadget(0, 8, 28, WindowWidth()-16,WindowHeight()-56, "", #PB_Frame3D_Double)
hwndSciEditGadget=SciEditGadget(WindowID(),10,30,WindowWidth()-20,WindowHeight()-60)

; SayHelloID = CreateThread(@SayHello(), hwndSciEditGadget)
; SayHello(hwndSciEditGadget)
;KillThread(SayHelloID)

; start...
NewSourceFile(hwndSciEditGadget)
; done...
; Lines = SCI_GetLineCount(hwndSciEditGadget)
; Debug Lines
SetWindowCallback(@WindowCallback())

SCI_ShowVScrollBar(hwndSciEditGadget)

Repeat
EventID.l = WaitWindowEvent()
Select EventID

Case #PB_EventMenu

Select EventMenuID()
Case 0
CloseSourceFile(hwndSciEditGadget)
NewSourceFile(hwndSciEditGadget)
Case 1
CloseSourceFile(hwndSciEditGadget)
OpenSourceFile(hwndSciEditGadget)
; Debug SCI_GetLineCount(hwndSciEditGadget)
; Debug SCI_GetModify(hwndSciEditGadget)
; Debug SCI_LineLength(hwndSciEditGadget, 3)
Case 2
SaveSourceFile(hwndSciEditGadget)

Case 3
SaveAsSourceFile(hwndSciEditGadget)

Case 4
CloseSourceFile(hwndSciEditGadget)

Case 5
EventID = #PB_EventCloseWindow

Case 10
SCI_Undo(hwndSciEditGadget)

Case 11
SCI_Redo(hwndSciEditGadget)

Case 12
SCI_Cut(hwndSciEditGadget)

Case 13
SCI_Copy(hwndSciEditGadget)

Case 14
SCI_Paste(hwndSciEditGadget)

Case 15
SCI_SelectAll(hwndSciEditGadget)

Case 16
SCI_GotoLine(hwndSciEditGadget,Val(InputRequester("Goto","","")) - 1)

EndSelect

EndSelect

Until EventID = #PB_EventCloseWindow

CloseSourceFile(hwndSciEditGadget)

EndIf
DestroyWindow_(hwndSciEditGadget)
End

Publié : jeu. 26/mai/2005 18:13
par Polo
Merci !
En fait j'aurai voulu pour la coloration syntaxique avec scintilla :)

Publié : jeu. 26/mai/2005 20:37
par Progi1984
Je m'y attaque !

Publié : jeu. 26/mai/2005 20:51
par Polo
Merci !!! 8O

Publié : jeu. 26/mai/2005 21:44
par Progi1984
Enfin, je vais essayer !

Publié : jeu. 26/mai/2005 21:47
par Polo
Pas de prob, de toute façon, c'est l'intention qui compte :)
En tout cas merci encore pour proposer ton aide, parce que je galère avec ça, moi :oops:

Publié : ven. 27/mai/2005 20:49
par Polo
T'y arrives ? J'ai encore jeté un coup d'oeil (assez long, comme coup d'oeil, d'ailleurs :D) sur les sources de Japbe, ben... :oops:
Je dois être nul, parce que si c'était moi l'auteur de ce fouilli je serais incapable de corriger un bug si quelqu'un en trouve un tellement c'est le foutoir !

Publié : sam. 28/mai/2005 20:41
par Polo
Ben là j'ai carrément jeté + d'un coup d'oeil, mais j'ai toujours du mal :(
Y a personne qui utilise scintilla ici ?

Publié : sam. 28/mai/2005 21:26
par Progi1984
essaie avec ca, ca vient de JapBe :

Code : Tout sélectionner

effacé car trop lon et inutile 

Publié : sam. 28/mai/2005 21:29
par Polo
Ben oui, les fonctions je les ai déjà (c'est la seule chose que j'ai réussi à extraire de JapBe), le truc, c'est que je sais pas trop comment les utiliser...
Mon but, c'est d'écrire un nouvel éditeur parce que JapBe est un peu trop lourdingue à mon goût ;)

Publié : sam. 28/mai/2005 21:37
par Progi1984
Moi, aussi je osuhiate faire un IDE pour un log d'algo, mais Scintilla est coriace à comprendre !

Publié : sam. 28/mai/2005 23:20
par Progi1984
Code commenté par moi meme et donné par Erix14 concernant le folding :

Code : Tout sélectionner

#STYLE_DEFAULT          = 32
#STYLE_LINENUMBER       = 33
#SCI_STYLESETSIZE       = 2055
#SCI_STYLESETFONT       = 2056
#SCI_STYLESETFORE       = 2051
#SCI_STYLESETBACK       = 2052
#SCI_STYLECLEARALL      = 2050
#SCI_SETMARGINWIDTHN    = 2242
#SCI_INSERTTEXT         = 2003
#SCI_SETSELBACK         = 2068
#SCI_SETSELFORE         = 2067
#SCI_SETCARETFORE       = 2069
#SCI_SETCARETWIDTH      = 2188
#SCI_STARTSTYLING       = 2032
#SCI_SETSTYLING         = 2033
#SCI_MARKERDEFINE       = 2040
#SC_MARK_ARROW          = 2
#SC_MARK_ARROWDOWN      = 6
#SCI_MARKERADD          = 2043
#SCI_MARKERDELETE       = 2044
#SCI_SHOWLINES          = 2226
#SCI_HIDELINES          = 2227
#SCI_SETFOLDEXPANDED    = 2229
#SCN_MARGINCLICK        = 2010
#SCI_LINEFROMPOSITION   = 2166
#SCI_MARKERGET          = 2046
#SCI_SETINDENTATIONGUIDES=2132
#SCI_SETINDENT          = 2122
#SCI_SETFOLDFLAGS       = 2233
#SCI_SETLINEINDENTATION = 2126
#SCI_SETMARGINSENSITIVEN= 2246
#SCI_SETMARGINMASKN     = 2244
#SC_MASK_FOLDERS        = $FE000000
#SCI_SETFOLDLEVEL       = 2222
#SC_FOLDLEVELHEADERFLAG = $2000

Structure NotifyHeader
     hwndFrom.l
     idFrom.l
     code.l
EndStructure
Structure SCNotification
     NMHDR.NotifyHeader
     position.l;   // SCN_STYLENEEDED, SCN_MODIFIED, SCN_DWELLSTART, SCN_DWELLEND
     ch.l;      // SCN_CHARADDED, SCN_KEY
     modifiers.l;   // SCN_KEY
     modificationType.l;   // SCN_MODIFIED
     text.l;         // SCN_MODIFIED
     length.l;      // SCN_MODIFIED
     linesAdded.l;    // SCN_MODIFIED
     message.l;         // SCN_MACRORECORD
     wParam.l;         // SCN_MACRORECORD
     lParam.l;       // SCN_MACRORECORD
     line.l;      // SCN_MODIFIED
     foldLevelNow.l;   // SCN_MODIFIED
     foldLevelPrev.l;   // SCN_MODIFIED
     margin.l;      // SCN_MARGINCLICK
     listType.l;   // SCN_USERLISTSELECTION
     x.l;         // SCN_DWELLSTART, SCN_DWELLEND
     y.l;      // SCN_DWELLSTART, SCN_DWELLEND
EndStructure

Global hLib,hwnd,Brosse,hScintilla

Procedure WindowCallback(WindowId, message, wParam, lParam)
     Result = #PB_ProcessPureBasicEvents
     Select message
      Case #wm_notify
               *msg.SCNotification=lParam
               If *msg\NMHDR\hwndFrom = hScintilla
                    Select *msg\NMHDR\code
                         Case #SCN_MARGINCLICK
                              If *msg\margin=1
                     Ligne = SendMessage_(hScintilla,#SCI_LINEFROMPOSITION,*msg\position,0)
                     Marker = SendMessage_(hScintilla,#SCI_MARKERGET,Ligne,0)
                     Debug Marker
                     If Marker & 1
                                        SendMessage_(hScintilla,#SCI_SETFOLDEXPANDED,0,1)
                                        SendMessage_(hScintilla,#SCI_MARKERDELETE,Ligne,0)
                                        SendMessage_(hScintilla,#SCI_MARKERADD,Ligne,1)
                                        SendMessage_(hScintilla,#SCI_SHOWLINES,1,6)
                                   ElseIf Marker & 2
                                        SendMessage_(hScintilla,#SCI_SETFOLDEXPANDED,0,1)
                                        SendMessage_(hScintilla,#SCI_MARKERDELETE,Ligne,1)
                                        SendMessage_(hScintilla,#SCI_MARKERADD,Ligne,0)
                                        SendMessage_(hScintilla,#SCI_HIDELINES,1,6)
                                   EndIf
                              EndIf
                    EndSelect
               EndIf
     EndSelect
     ProcedureReturn Result
EndProcedure

hLib = OpenLibrary(1,"SciLexer.dll")
hwnd = OpenWindow(0,0,0,600,400,#PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_Invisible,"Scintilla")
SetWindowCallback(@WindowCallback())
If hLib
     hInstance = GetModuleHandle_(0)
     hScintilla = CreateWindowEx_(0, "Scintilla"," ", #WS_CHILD|#WS_VISIBLE|#WS_TABSTOP,10,10,580,380,hwnd,0,hInstance,0)
Else
     MessageRequester( "Erreur Scintilla", "La DLL n'est pas chargé.", #MB_OK | #MB_ICONERROR)
     End
EndIf
;Brosse = CreateSolidBrush_(RGB(55, 82, 55))
;SetClassLong_(WindowID(0), #GCL_HBRBackGround, Brosse)
; SendMessage_(hScintilla,#SCI_STYLESETFONT,#STYLE_DEFAULT,"Verdana"); police par défaut
; SendMessage_(hScintilla,#SCI_STYLESETSIZE,#STYLE_DEFAULT,12) ;taille par défaut
; SendMessage_(hScintilla,#SCI_STYLESETFORE,#STYLE_DEFAULT,RGB(250,250,250)) ; couleur de la police
; SendMessage_(hScintilla,#SCI_STYLESETBACK,#STYLE_DEFAULT,RGB(40,40,80)) ; couleur du fond
 SendMessage_(hScintilla,#SCI_STYLECLEARALL,0,0);
 SendMessage_(hScintilla,#SCI_STYLESETFORE,1,RGB(0,250,0)); définti une liste de couleur comme en rtf
 SendMessage_(hScintilla,#SCI_STYLESETFORE,2,RGB(0,250,250));
 SendMessage_(hScintilla,#SCI_STYLESETFORE,3,RGB(250,250,0));
 SendMessage_(hScintilla,#SCI_STYLESETFORE,4,RGB(250,100,0));
 SendMessage_(hScintilla,#SCI_STYLESETBACK,#STYLE_LINENUMBER,RGB(80,80,160)) ; fond
 SendMessage_(hScintilla,#SCI_STYLESETFORE,#STYLE_LINENUMBER,RGB(250,250,250)); écriture
 SendMessage_(hScintilla,#SCI_SETMARGINWIDTHN,0,30);  Affiche les numero des lignes
 SendMessage_(hScintilla,#SCI_SETSELBACK,#True,RGB(0,100,150)); Détermine la couleur de fond de la sélection
 SendMessage_(hScintilla,#SCI_SETSELFORE,#False,0); La couleur du texte sélectionné est inchangée
 SendMessage_(hScintilla,#SCI_SETCARETFORE,RGB(250,200,100),0); Couleur du curseur
 SendMessage_(hScintilla,#SCI_SETCARETWIDTH,2,0); Largeur du curseur
 SendMessage_(hScintilla,#SCI_SETINDENTATIONGUIDES,#True,0) ; Affiche le guide d'indentation
 SendMessage_(hScintilla,#SCI_SETINDENT,8,0) ; Détermine la longueur de la tabulation

Texte$ = "Ouvre le PLIAGE pour voir ma REPONSE..."+Chr(13)
Texte$ + "Je ne vois pas en quoi s'est"+Chr(13)
Texte$ + "une blague ?"+Chr(13)
Texte$ + "Si c'est une ruse pour obtenir du code,"+Chr(13)
Texte$ + "elle est de mauvais goût..."+Chr(13)
Texte$ + "Forcer quelqu'un à te donner son code en l'agressant,"+Chr(13)
Texte$ + "ce n'est pas bien... et te fera du tort..."+Chr(13)
Texte$ + "Fin de la REPONSE"

SendMessage_(hScintilla,#SCI_INSERTTEXT,-1,Texte$) ; insère le texte à la fin !
  For t=1 To 6
       SendMessage_(hScintilla,#SCI_SETLINEINDENTATION,t,8) ; indente  le texte de 8 espaces
  Next
 ;SendMessage_(hScintilla,#SCI_SETLINEINDENTATION,2,16)
 ;SendMessage_(hScintilla,#SCI_SETLINEINDENTATION,4,16)
 ;SendMessage_(hScintilla,#SCI_SETLINEINDENTATION,6,16)
 
  SendMessage_(hScintilla,#SCI_STARTSTYLING,9,$FF);x=début de la coloration y=??
  SendMessage_(hScintilla,#SCI_SETSTYLING,8,1) ;x=nombre de caractère y : numéro de couleur dans le dico
  SendMessage_(hScintilla,#SCI_STARTSTYLING,29,$FF)
  SendMessage_(hScintilla,#SCI_SETSTYLING,7,2)
  SendMessage_(hScintilla,#SCI_STARTSTYLING,40,$FF)
  SendMessage_(hScintilla,#SCI_SETSTYLING,213,4)
  SendMessage_(hScintilla,#SCI_STARTSTYLING,266,$FF)
  SendMessage_(hScintilla,#SCI_SETSTYLING,7,4)
 
 SendMessage_(hScintilla,#SCI_SETMARGINSENSITIVEN,1,#True); active le folding
 SendMessage_(hScintilla,#SCI_SETMARGINMASKN,1,~#SC_MASK_FOLDERS);masque la couleur différente du folding
 SendMessage_(hScintilla,#SCI_MARKERDEFINE,0,#SC_MARK_ARROW) ; définit la fleche pour le droite (replié)
 SendMessage_(hScintilla,#SCI_MARKERDEFINE,1,#SC_MARK_ARROWDOWN) ; définti la fleche pour le bas (déplié)
 
 SendMessage_(hScintilla,#SCI_SETFOLDFLAGS,16,0)
 SendMessage_(hScintilla,#SCI_SETFOLDLEVEL,0,#SC_FOLDLEVELHEADERFLAG)
 SendMessage_(hScintilla,#SCI_MARKERADD,0,0) ; ajoute le petit triangle : y0 triangle pointé vers la gauche 1vers le bas
 SendMessage_(hScintilla,#SCI_HIDELINES,1,6); Cacher des lignes : ligne de départ, ombre de lignes
 SendMessage_(hScintilla,#SCI_SETFOLDEXPANDED,1,1); x ? y fait une ligne endessous du folder

  Debug SendMessage_(hScintilla,#SCI_GETLEXER,0,0)
HideWindow(0,0)
Repeat
     message = WaitWindowEvent()
     Select  message
          Case #PB_Event_CloseWindow
;               DeleteObject_(Brosse)
               End
     EndSelect
ForEver
On se motive, on va réussir à sortir qqch !

Publié : dim. 29/mai/2005 7:53
par erix14
Petite précision, SCI_STYLECLEARALL initialise toutes les couleurs avec les couleurs contenues dans #STYLE_DEFAULT. La couleur de la ligne de pillage est déterminée par la couleur numéro 0.
Si vous voulez utiliser un Lexer contenu dans SciLexer par exemple HTML rajouter ce code

Code : Tout sélectionner

#SCLEX_HTML = 4
#SCI_SETLEXER           = 4001
SendMessage_(hScintilla,#SCI_SETLEXER,#SCLEX_HTML,0)
si vous voulez le faire vous-même vous devez traiter les messages #SCN_UPDATEUI et #SCN_CHARADDED à la suite de #SCN_MARGINCLICK dans la procédure WindowCallback.
Pour mieux comprendre, je vous conseille de jeter un oeil au fichier Editor.cpp du source de scintilla.