EditorGadget with Linenumbers

Just starting out? Need help? Post your questions and find answers here.
User avatar
fsw
Addict
Addict
Posts: 1603
Joined: Tue Apr 29, 2003 9:18 pm
Location: North by Northwest

Post by fsw »

@Ryan:
I used this for loading the RaEdit control:

Code: Select all

Procedure CreateRAEdit(hPar.l,x,y,w,h)

  hREd = CreateWindowEx_(#WS_EX_CLIENTEDGE , #szClassName, 0, #WS_CHILD | #WS_VISIBLE, x, y, w, h, hPar, 0, hInstance, 0)
  ; Without the next lines the program crashes if the TAB key is pressed...
  edopt.EDITOPT
  edopt\tabsize = 1
  edopt\exptabs = #TRUE ;#TRUE = TABS are converted to SPACE ;#FALSE = real TABS
  SendMessage_(hREd, #REM_TABWIDTH, edopt\tabsize,edopt\exptabs) ;wParam=nChars, lParam=TRUE/FALSE (Expand tabs)

  ProcedureReturn hREd

EndProcedure
Look at the code for the TAB key :!:

Also, if I remember right, you have to disable these Keyboard shortcuts:

Code: Select all

RemoveKeyboardShortcut(#Window, #PB_Shortcut_Tab) 
RemoveKeyboardShortcut(#Window, #PB_Shortcut_Tab|#PB_Shortcut_Shift) 
because a PB-Window has these 2 shortcuts build in.

About help files:
it seems that hardcore asm coders don't make help files (it was hard to write, so it should be hard to read...), but if you look at the asm source code you get an idea how it works.

And actually RaEdit is a 100% replacement for RichEdit - so if you have docs for RichEdit you can use it for RaEdit too (except for the special Editor functions like highliting, folding etc.)
Last edited by fsw on Fri Feb 25, 2005 5:07 pm, edited 4 times in total.
User avatar
fsw
Addict
Addict
Posts: 1603
Joined: Tue Apr 29, 2003 9:18 pm
Location: North by Northwest

Post by fsw »

Here the Include file I used for the RaEdit constants and structs.

Code: Select all


;Default colors
#DEFBCKCOLOR          = $00C0F0F0
#DEFTXTCOLOR          = $00000000
#DEFSELBCKCOLOR       = $00800000
#DEFSELTXTCOLOR       = $00FFFFFF
#DEFCMNTCOLOR         = $02008000
#DEFSTRCOLOR          = $00A00000
#DEFOPRCOLOR          = $000000A0
#DEFHILITE1           = $00F0C0C0 ;$00A8FFFF
#DEFHILITE2           = $00C0F0C0
#DEFHILITE3           = $00C0C0F0
#DEFSELBARCOLOR       = $00C0C0C0
#DEFSELBARPEN         = $00808080
#DEFLNRCOLOR          = $00800000
#DEFNUMCOLOR          = $00808080

;Window styles
#STYLE_NOSPLITT       = $0001   ;No splitt button
#STYLE_NOLINENUMBER   = $0002   ;No linenumber button
#STYLE_NOCOLLAPSE     = $0004   ;No expand/collapse buttons
#STYLE_NOHSCROLL      = $0008   ;No horizontal scrollbar
#STYLE_NOVSCROLL      = $0010   ;No vertical scrollbar
#STYLE_NOHILITE       = $0020   ;No color hiliting
#STYLE_NOSIZEGRIP     = $0040   ;No size grip
#STYLE_NODBLCLICK     = $0080   ;No action on double clicks
#STYLE_READONLY       = $0100   ;Text is locked
#STYLE_NODIVIDERLINE  = $0200   ;Blocks are not divided by line
#STYLE_NOBACKBUFFER   = $0400   ;Drawing directly to screen DC
#STYLE_NOSTATE        = $0800   ;No state indicator
#STYLE_DRAGDROP       = $1000   ;Drag & Drop support, app must load ole
#STYLE_SCROLLTIP      = $2000   ;Scrollbar tooltip

;Private edit messages
#REM_RAINIT     = #WM_USER+9999 ;wParam=0, lParam=pointer to controls DIALOG struct
#REM_BASE       = #WM_USER+1000

Enumeration #REM_BASE
#REM_SETHILITEWORDS   ; #REM_BASE+0   ;wParam=Color, lParam=lpszWords
#REM_SETFONT          ; #REM_BASE+1   ;wParam=nLineSpacing, lParam=lpRAFONT
#REM_GETFONT          ; #REM_BASE+2   ;wParam=0, lParam=lpRAFONT
#REM_SETCOLOR         ; #REM_BASE+3   ;wParam=0, lParam=lpRACOLOR
#REM_GETCOLOR         ; #REM_BASE+4   ;wParam=0, lParam=lpRACOLOR
#REM_SETHILITELINE    ; #REM_BASE+5   ;wParam=Line, lParam=Color
#REM_GETHILITELINE    ; #REM_BASE+6   ;wParam=Line, lParam=0
#REM_SETBOOKMARK      ; #REM_BASE+7   ;wParam=Line,           lParam=Type
#REM_GETBOOKMARK      ; #REM_BASE+8   ;wParam=Line,           lParam=0
#REM_CLRBOOKMARKS     ; #REM_BASE+9   ;wParam=0,              lParam=Type
#REM_NXTBOOKMARK      ; #REM_BASE+10  ;wParam=Line,           lParam=Type
#REM_PRVBOOKMARK      ; #REM_BASE+11  ;wParam=Line,           lParam=Type
#REM_FINDBOOKMARK     ; #REM_BASE+12  ;wParam=BmID,           lParam=0
#REM_SETBLOCKS        ; #REM_BASE+13  ;wParam=[lpLINERANGE],  lParam=lpRABLOCKDEF
#REM_ISLINE           ; #REM_BASE+14  ;wParam=Line,           lParam=lpszDef
#REM_GETWORD          ; #REM_BASE+15  ;wParam=BuffSize,       lParam=lpBuff
#REM_COLLAPSE         ; #REM_BASE+16  ;wParam=Line,           lParam=lpRABLOCKDEF
#REM_COLLAPSEALL      ; #REM_BASE+17  ;wParam=0, lParam=lpRABLOCKDEF
#REM_EXPAND           ; #REM_BASE+18  ;wParam=Line, lParam=0
#REM_EXPANDALL        ; #REM_BASE+19  ;wParam=0, lParam=0
#REM_LOCKLINE         ; #REM_BASE+20  ;wParam=Line, lParam=TRUE/FALSE
#REM_ISLINELOCKED     ; #REM_BASE+21  ;wParam=Line, lParam=0
#REM_HIDELINE         ; #REM_BASE+22  ;wParam=Line, lParam=TRUE/FALSE
#REM_ISLINEHIDDEN     ; #REM_BASE+23  ;wParam=Line, lParam=0
#REM_AUTOINDENT       ; #REM_BASE+24  ;wParam=0, lParam=TRUE/FALSE
#REM_TABWIDTH         ; #REM_BASE+25  ;wParam=nChars, lParam=TRUE/FALSE (Expand tabs)
#REM_SELBARWIDTH      ; #REM_BASE+26  ;wParam=nWidth, lParam=0
#REM_LINENUMBERWIDTH  ; #REM_BASE+27  ;wParam=nWidth, lParam=0
#REM_MOUSEWHEEL       ; #REM_BASE+28  ;wParam=nLines, lParam=0
#REM_SUBCLASS         ; #REM_BASE+29  ;wParam=0, lParam=lpWndProc
#REM_SETSPLIT         ; #REM_BASE+30  ;wParam=nSplit, lParam=0
#REM_GETSPLIT         ; #REM_BASE+31  ;wParam=0, lParam=0
#REM_VCENTER          ; #REM_BASE+32  ;wParam=0, lParam=0
#REM_REPAINT          ; #REM_BASE+33  ;wParam=0, lParam=TRUE/FALSE (Paint Now)
#REM_BMCALLBACK       ; #REM_BASE+34  ;wParam=0, lParam=lpBmProc
#REM_READONLY         ; #REM_BASE+35  ;wParam=0, lParam=TRUE/FALSE
#REM_INVALIDATELINE   ; #REM_BASE+36  ;wParam=Line, lParam=0
#REM_SETPAGESIZE      ; #REM_BASE+37  ;wParam=nLines, lParam=0
#REM_GETPAGESIZE      ; #REM_BASE+38  ;wParam=0, lParam=0
#REM_GETCHARTAB       ; #REM_BASE+39  ;wParam=nChar, lParam=0
#REM_SETCHARTAB       ; #REM_BASE+40  ;wParam=nChar, lParam=nValue
#REM_SETCOMMENTBLOCKS ; #REM_BASE+41  ;wParam=lpStart, lParam=lpEnd
#REM_SETWORDGROUP     ; #REM_BASE+42  ;wParam=0, lParam=nGroup (0-15)
#REM_GETWORDGROUP     ; #REM_BASE+43  ;wParam=0, lParam=0
#REM_SETBMID          ; #REM_BASE+44  ;wParam=nLine, lParam=nBmID
#REM_GETBMID          ; #REM_BASE+45  ;wParam=nLine, lParam=0
#REM_ISCHARPOS        ; #REM_BASE+46  ;wParam=CP, lParam=0, returns 1 if comment block, 2 if comment, 3 if string
#REM_HIDELINES        ; #REM_BASE+47  ;wParam=nLine, lParam=nLines
#REM_SETDIVIDERLINE   ; #REM_BASE+48  ;wParam=nLine, lParam=TRUE/FALSE
#REM_ISINBLOCK        ; #REM_BASE+49  ;wParam=nLine, lParam=lpRABLOCKDEF
#REM_TRIMSPACE        ; #REM_BASE+50  ;wParam=nLine, lParam=fLeft
#REM_SAVESEL          ; #REM_BASE+51  ;wParam=0, lParam=0
#REM_RESTORESEL       ; #REM_BASE+52  ;wParam=0, lParam=0
#REM_GETCURSORWORD    ; #REM_BASE+53  ;wParam=BuffSize, lParam=lpBuff
#REM_SETSEGMENTBLOCK  ; #REM_BASE+54  ;wParam=nLine, lParam=TRUE/FALSE
EndEnumeration

;Line hiliting
#STATE_HILITEOFF  = $0
#STATE_HILITE1    = $1
#STATE_HILITE2    = $2
#STATE_HILITE3    = $3
#STATE_HILITEMASK = $3

;Bookmarks
#STATE_BMOFF  = $00
#STATE_BM1    = $10
#STATE_BM2    = $20
#STATE_BM3    = $30
#STATE_BM4    = $40
#STATE_BM5    = $50
#STATE_BM6    = $60
#STATE_BM7    = $70
#STATE_BM8    = $80
#STATE_BMMASK = $0F0

;Line states
#STATE_LOCKED       = $0100
#STATE_HIDDEN       = $0200
#STATE_COMMENT      = $0400
#STATE_DIVIDERLINE  = $0800
#STATE_SEGMENTBLOCK = $1000
#STATE_GARBAGE      = $80000000

;Character table types
#CT_NONE        = $0
#CT_CHAR        = $1
#CT_OPER        = $2
#CT_HICHAR      = $3
#CT_CMNTCHAR    = $4
#CT_STRING      = $5
#CT_CMNTDBLCHAR = $6

Structure RAFONT ;struct
 hFont.l               ;Code edit normal
 hIFont.l              ;Code edit italics
 hLnrFont.l            ;Line numbers
EndStructure ;RAFONT ends

Structure RACOLOR ;struct
 bckcol.l              ;Back color
 txtcol.l              ;Text color
 selbckcol.l           ;Sel back color
 seltxtcol.l           ;Sel text color
 cmntcol.l             ;Comment color
 strcol.l              ;String color
 oprcol.l              ;Operator color
 hicol1.l              ;Line hilite 1
 hicol2.l              ;Line hilite 2
 hicol3.l              ;Line hilite 3
 selbarbck.l           ;Selection bar
 selbarpen.l           ;Selection bar pen
 lnrcol.l              ;Line numbers color
 numcol.l              ;Numbers & hex color
EndStructure ;RACOLOR ends

Structure RASELCHANGE ;struct
 nmhdr.NMHDR           ;NMHDR 
 chrg.CHARRANGE        ;CHARRANGE     ;Current selection
 seltyp.w              ;SEL_TEXT or SEL_OBJECT
 line.l                ;Line number
 cpLine.l              ;Character position of first character
 lpLine.l              ;Pointer to line
 nlines.l              ;Total number of lines
 nhidden.l             ;Total number of hidden lines
 fchanged.l            ;TRUE if changed since last
 npage.l               ;Page number
 nWordGroup.l          ;Hilite word group
EndStructure ;RASELCHANGE ends

#BD_NONESTING    = $01 ;Set to true for non nested blocks
#BD_DIVIDERLINE  = $02 ;Draws a divider line
#BD_INCLUDELAST  = $04 ;lpszEnd line is also collapsed
#BD_LOOKAHEAD    = $08 ;Look 500 lines ahead for the ending
#BD_SEGMENTBLOCK = $10 ;Segment block, collapse till next segmentblock

Structure RABLOCKDEF ;struct
 lpszStart.l      ;Block start
 lpszEnd.l        ;Block end
 lpszNot1.l       ;Dont hide line containing this or set to NULL
 lpszNot2.l       ;Dont hide line containing this or set to NULL
 flag.l        ;
EndStructure ;RABLOCKDEF ends

Structure LINERANGE ;struct
 lnMin.l          ;Starting line
 lnMax.l          ;Ending line
EndStructure ;LINERANGE ends

Structure EDITOPT ;struct
 tabsize.l    
 exptabs.l    
 indent.l     
 hiliteline.l 
EndStructure ;EDITOPT ends

;.const
#szClassName = "RAEdit"
Hope this helps :wink:
RJP Computing
Enthusiast
Enthusiast
Posts: 202
Joined: Sun Apr 27, 2003 4:44 am
Location: Michigan, USA
Contact:

Post by RJP Computing »

Yes very much. Here is an example for people to try. Use the file fsw posted right above this post and save it as RaEdit.pbi.

Code: Select all

XIncludeFile "RaEdit.pbi"

;- Gadget Constants
#Gadget_RaEdit = 1

Global hRaEd.l
Global hRAEditDLL.l

; -- RaEditGadget
Procedure RaEditGadget(guiID, hwndParent, x, y, w, h)
  hRAEditDLL = LoadLibrary_("RAEdit.dll")
  If hRAEditDLL = 0
    MessageRequester("RaEdit Example", "Could not find RAEdit.dll", #MB_OK | #MB_ICONERROR)
    End
  Else
    OleInitialize_(#Null)
    hInstance.l = GetModuleHandle_(#Null) 
    hREd = CreateWindowEx_(#WS_EX_CLIENTEDGE, #szClassName, "", #WS_CHILD | #WS_VISIBLE | #STYLE_NOBACKBUFFER | #STYLE_DRAGDROP | #STYLE_SCROLLTIP | #STYLE_DRAGDROP | #STYLE_NOCOLLAPSE, x, y, w, h, hwndParent, guiID, hInstance, 0) 
    
    ; Without the next lines the program crashes if the TAB key is pressed... 
    edopt.EDITOPT 
    edopt\tabsize = 4 
    edopt\exptabs = #True ;#TRUE = TABS are converted to SPACE ;#FALSE = real TABS 
    SendMessage_(hREd, #REM_TABWIDTH, edopt\tabsize,edopt\exptabs) ;wParam=nChars, lParam=TRUE/FALSE (Expand tabs) 
  EndIf 
  ProcedureReturn hREd 
EndProcedure

; ---------------------------------------------------------
If OpenWindow(0, 0, 0, 800, 600, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #WS_CLIPCHILDREN, "RaEdit Example")
  ; Remove the built into PureBasic shortcuts
  RemoveKeyboardShortcut(0, #PB_Shortcut_Tab) 
  RemoveKeyboardShortcut(0, #PB_Shortcut_Tab|#PB_Shortcut_Shift)
  
  If CreateGadgetList(WindowID())
    hRaEd = RaEditGadget(#Gadget_RaEdit, WindowID(0), 0, 0, WindowWidth(), WindowHeight())
  EndIf
EndIf

Repeat
  Event.l = WaitWindowEvent()
  Select Event
    Case #PB_Event_SizeWindow
      MoveWindow_(hRaEd, 0, 0, WindowWidth(), WindowHeight(), #True)
  EndSelect
Until Event = #PB_EventCloseWindow

; This seems to crash the program so I am commenting them out
;FreeLibrary_(hRAEditDLL)

End
To get the RAEdit.dll go to the SimEd Project Page.
Last edited by RJP Computing on Sat Feb 26, 2005 6:37 am, edited 3 times in total.
-Ryan
RJP Computing

Ubuntu 8.10/WinXP, AMD Athlon 64 3000+, 1000MB RAM, AC 97 Audio, nVidia GeForce 7600GT 512MB
RJP Computing
Enthusiast
Enthusiast
Posts: 202
Joined: Sun Apr 27, 2003 4:44 am
Location: Michigan, USA
Contact:

Post by RJP Computing »

I have a question about 'LoadLibrary' and 'FreeLibrary'. Do you always have to call 'FreeLibrary' because in the example above it makes the program crash if I call 'FreeLibrary' or does the program always free the dll at the close of the program.
-Ryan
RJP Computing

Ubuntu 8.10/WinXP, AMD Athlon 64 3000+, 1000MB RAM, AC 97 Audio, nVidia GeForce 7600GT 512MB
sverson
Enthusiast
Enthusiast
Posts: 286
Joined: Sun Jul 04, 2004 12:15 pm
Location: Germany

Post by sverson »

Thx fsw & RJP RaEdit is worth testing it!
RJP Computing wrote:I have a question about 'LoadLibrary' and 'FreeLibrary'. Do you always have to call 'FreeLibrary' because in the example above it makes the program crash if I call 'FreeLibrary' or does the program always free the dll at the close of the program.
Just remove the Window before Freelibrary. :-)

Code: Select all

Until Event = #PB_EventCloseWindow

DestroyWindow_(hRaEd)
FreeLibrary_(hRAEditDLL)

End
I took the 'Loadlibrary' off your RaEditGadget():

Code: Select all

XIncludeFile "RaEdit.pbi"

;- Gadget Constants
#Gadget_RaEdit = 1

Global hRaEd.l
Global DLL_RaEdit.l


Procedure InitRaEdit()
  If DLL_RaEdit=0
    DLL_RaEdit = LoadLibrary_("RAEdit.dll")  
  EndIf
  ProcedureReturn DLL_RaEdit
EndProcedure

Procedure ExitRaEdit()
  If DLL_RaEdit
    FreeLibrary_(DLL_RaEdit)
    DLL_RaEdit=0
  EndIf
EndProcedure

; -- RaEditGadget
Procedure RaEditGadget(guiID, hWndParent, x, y, w, h)
  OleInitialize_(#Null)
  hInstance.l = GetModuleHandle_(#Null)
  hREd = CreateWindowEx_(#WS_EX_CLIENTEDGE, #szClassName, "", #WS_CHILD | #WS_VISIBLE | #STYLE_NOBACKBUFFER | #STYLE_DRAGDROP | #STYLE_SCROLLTIP | #STYLE_DRAGDROP | #STYLE_NOCOLLAPSE, x, y, w, h, hWndParent, guiID, hInstance, 0)
  
  ; Without the next lines the program crashes if the TAB key is pressed...
  edopt.EDITOPT
  edopt\tabsize = 4
  edopt\exptabs = #True ;#TRUE = TABS are converted to SPACE ;#FALSE = real TABS
  SendMessage_(hREd, #REM_TABWIDTH, edopt\tabsize,edopt\exptabs) ;wParam=nChars, lParam=TRUE/FALSE (Expand tabs)
  ProcedureReturn hREd
EndProcedure

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

If InitRaEdit()
  If OpenWindow(0, 0, 0, 800, 600, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #WS_CLIPCHILDREN, "RaEdit Example")
    ; Remove the built into PureBasic shortcuts
    RemoveKeyboardShortcut(0, #PB_Shortcut_Tab)
    RemoveKeyboardShortcut(0, #PB_Shortcut_Tab|#PB_Shortcut_Shift)
    
    If CreateGadgetList(WindowID())
      hRaEd = RaEditGadget(#Gadget_RaEdit, WindowID(0), 0, 0, WindowWidth(), WindowHeight())
    EndIf
  EndIf
  
  Repeat
    Event.l = WaitWindowEvent()
    Select Event
      Case #PB_Event_SizeWindow
        MoveWindow_(hRaEd, 0, 0, WindowWidth(), WindowHeight(), #True)
    EndSelect
  Until Event = #PB_EventCloseWindow
  DestroyWindow_(hRaEd)
  ExitRaEdit()
Else
  MessageRequester("RaEdit Example", "Could not find RAEdit.dll", #MB_OK | #MB_ICONERROR)
EndIf

End
;-) sverson
gnozal
PureBasic Expert
PureBasic Expert
Posts: 4229
Joined: Sat Apr 26, 2003 8:27 am
Location: Strasbourg / France
Contact:

Post by gnozal »

Very interesting !
And the ASM sources are included !!
If there is no license problem, maybe some of the elites around here could make a RAEdit static library, so no more DLL needed ?
For free libraries and tools, visit my web site (also home of jaPBe V3 and PureFORM).
User avatar
Progi1984
Addict
Addict
Posts: 806
Joined: Fri Feb 25, 2005 1:01 am
Location: France > Rennes
Contact:

Post by Progi1984 »

Hello I'm a french programmer !
Two small question :
I want to create a small IDE :
- How can use my file containing all commands of the specific language ?
- Is there a example using all existing commands of the Raedit library ?

Thanks you !
RJP Computing
Enthusiast
Enthusiast
Posts: 202
Joined: Sun Apr 27, 2003 4:44 am
Location: Michigan, USA
Contact:

Post by RJP Computing »

sverson,
I still get the crash when using your code. Sorry I am on Windows XP sp1.
-Ryan
RJP Computing

Ubuntu 8.10/WinXP, AMD Athlon 64 3000+, 1000MB RAM, AC 97 Audio, nVidia GeForce 7600GT 512MB
User avatar
fsw
Addict
Addict
Posts: 1603
Joined: Tue Apr 29, 2003 9:18 pm
Location: North by Northwest

Post by fsw »

Just wanted to inform you guys/gals that (while working with wxWidgets and freebasic) that with the 'wxStyledTextCtrl' (this wx control is using the scintilla control as a basis) you can have multiple scintilla gadgets.

Don't know though what the wx guys/gals did to change scintilla's behaviour regarding multiple controls. This said, AFAIK only the 'wxStyledTextCtrl' has this nice behaviour.

Thought I let you know.
User avatar
Progi1984
Addict
Addict
Posts: 806
Joined: Fri Feb 25, 2005 1:01 am
Location: France > Rennes
Contact:

Post by Progi1984 »

Excuse me FSW !
Have you got an example with some Scintilla which runs Ok?
User avatar
fsw
Addict
Addict
Posts: 1603
Joined: Tue Apr 29, 2003 9:18 pm
Location: North by Northwest

Post by fsw »

Progi1984 wrote:Excuse me FSW !
Have you got an example with some Scintilla which runs Ok?
Suppose you want a running scintilla control with purebasic...

Code: Select all

; 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!!!
;
; by fsw
;
; NOT COMPLETELY FINISHED THOUGH....
; USE IT AT YOUR OWN RISK!!!
;
; test of using the Schintilla library for an editor
; all Scintilla commands can be used by Sendmessage_(bla,bla...
; or directly with pointers to the Scintilla commands...

; --------------------------------------------------------------------------------------------------------------------
; this is the header file for the scintilla control
; by Franco
; NOT COMPLETELY FINISHED THOUGH....
; JUST A PROOF OF CONCEPT!!!!!!
;
;
;
; USE IT AT YOUR OWN RISK!!!
;
;
;
;// Scintilla source code edit control
;/** @file Scintilla.h
; ** Interface To the edit control.
; **/
;// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>
;// The License.txt file describes the conditions under which this software may be distributed.
;
;// Most of this file is automatically generated from the Scintilla.iface interface definition
;// file which contains any comments about the definitions. HFacer.py does the generation.

;#if PLAT_WIN
;// Return false on failure:
;bool Scintilla_RegisterClasses(void *hInstance);
;bool Scintilla_ReleaseResources();
;#endif
;int Scintilla_LinkLexers();

;// Here should be placed typedefs For uptr_t, an unsigned integer type large enough To
;// hold a pointer And sptr_t, a signed integer large enough To hold a pointer.
;// May need To be changed For 64 bit platforms.
;#if _MSC_VER >= 1300
;#include <BaseTsd.h>
;#endif
;#ifdef MAXULONG_PTR
;typedef ULONG_PTR uptr_t;
;typedef LONG_PTR sptr_t;
;#else
;typedef unsigned long uptr_t;
;typedef long sptr_t;
;#endif

;typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam, sptr_t lParam);

;//++Autogenerated -- start of section automatically generated from Scintilla.iface
#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
no additional files needed

hope this helps
User avatar
Progi1984
Addict
Addict
Posts: 806
Joined: Fri Feb 25, 2005 1:01 am
Location: France > Rennes
Contact:

Post by Progi1984 »

Thank you for that !
But you said that :
you can have multiple scintilla gadgets.
have you an example for that ?
Thanks !
PS: The english forum is so good !
User avatar
fsw
Addict
Addict
Posts: 1603
Joined: Tue Apr 29, 2003 9:18 pm
Location: North by Northwest

Post by fsw »

Progi1984 wrote:Thank you for that !
But you said that :
you can have multiple scintilla gadgets.
have you an example for that ?
Thanks !
PS: The english forum is so good !
Yeah, but I was talking about freebasic in connection with wxStyledTextCtrl (the scintilla gadget under wx...).


-----------------------------------------
OK,OK I stand corrected :shock:
-----------------------------------------

Just played around with the last code I posted, and added a second scintilla control and it worked.

Suppose the scintilla guy's/gal's changed something in the last 2 years...

Here the code I used (quick and dirty...):

Code: Select all

; 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!!!
;
; by Franco
;
; NOT COMPLETELY FINISHED THOUGH....
; USE IT AT YOUR OWN RISK!!!
;
; test of using the Schintilla library for an editor
; all Scintilla commands can be used by Sendmessage_(bla,bla...
; or directly with pointers to the Scintilla commands...

; --------------------------------------------------------------------------------------------------------------------
; this is the header file for the scintilla control
; by Franco
; NOT COMPLETELY FINISHED THOUGH....
; JUST A PROOF OF CONCEPT!!!!!!
;
;
;
; USE IT AT YOUR OWN RISK!!!
;
;
;
;// Scintilla source code edit control
;/** @file Scintilla.h
; ** Interface To the edit control.
; **/
;// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>
;// The License.txt file describes the conditions under which this software may be distributed.
;
;// Most of this file is automatically generated from the Scintilla.iface interface definition
;// file which contains any comments about the definitions. HFacer.py does the generation.

;#if PLAT_WIN
;// Return false on failure:
;bool Scintilla_RegisterClasses(void *hInstance);
;bool Scintilla_ReleaseResources();
;#endif
;int Scintilla_LinkLexers();

;// Here should be placed typedefs For uptr_t, an unsigned integer type large enough To
;// hold a pointer And sptr_t, a signed integer large enough To hold a pointer.
;// May need To be changed For 64 bit platforms.
;#if _MSC_VER >= 1300
;#include <BaseTsd.h>
;#endif
;#ifdef MAXULONG_PTR
;typedef ULONG_PTR uptr_t;
;typedef LONG_PTR sptr_t;
;#else
;typedef unsigned long uptr_t;
;typedef long sptr_t;
;#endif

;typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam, sptr_t lParam);

;//++Autogenerated -- start of section automatically generated from Scintilla.iface
#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
  Shared hwndSciEditGadget2
  
  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)/2,WindowHeight()-60,0)
      SetWindowPos_(hwndSciEditGadget2,0,10 + ((WindowWidth()-20)/2),30,(WindowWidth()-20)/2,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 1st" + Chr(9) + "Ctrl+N") 
  MenuItem(1, "&Open 1st" + Chr(9) + "Ctrl+O") 
  MenuItem(2, "&Save 1st" + Chr(9) + "Ctrl+S") 
  MenuItem(3, "&Save 1st As...") 
  MenuItem(4, "&Close 1st" + Chr(9) + "Ctrl+W") 
  MenuBar()
  MenuItem(100, "&New 2nd" + Chr(9) + "Ctrl+N") 
  MenuItem(101, "&Open 2nd" + Chr(9) + "Ctrl+O") 
  MenuItem(102, "&Save 2nd" + Chr(9) + "Ctrl+S") 
  MenuItem(103, "&Save 2nd As...") 
  MenuItem(104, "&Close 2nd" + 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)/2,WindowHeight()-60)
  hwndSciEditGadget2=SciEditGadget(WindowID(),10 + ((WindowWidth()-20)/2),30,(WindowWidth()-20)/2,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 100
            CloseSourceFile(hwndSciEditGadget2)
            NewSourceFile(hwndSciEditGadget2)

          Case 1
            CloseSourceFile(hwndSciEditGadget)
            OpenSourceFile(hwndSciEditGadget)
;            Debug SCI_GetLineCount(hwndSciEditGadget)
;            Debug SCI_GetModify(hwndSciEditGadget)
;            Debug SCI_LineLength(hwndSciEditGadget, 3)

          Case 101
            CloseSourceFile(hwndSciEditGadget2)
            OpenSourceFile(hwndSciEditGadget2)

          Case 2
            SaveSourceFile(hwndSciEditGadget)
            
          Case 102
            SaveSourceFile(hwndSciEditGadget2)

          Case 3
            SaveAsSourceFile(hwndSciEditGadget)

          Case 103
            SaveAsSourceFile(hwndSciEditGadget2)

          Case 4
            CloseSourceFile(hwndSciEditGadget)

          Case 104
            CloseSourceFile(hwndSciEditGadget2)

          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)
  DestroyWindow_(hwndSciEditGadget2)
End
toolbar functions work only with the 1st control...
User avatar
Progi1984
Addict
Addict
Posts: 806
Joined: Fri Feb 25, 2005 1:01 am
Location: France > Rennes
Contact:

Post by Progi1984 »

En fait, i want to use Scintilla in a editor and use highlighting for that. But i want to use panelgadget so i need some active scintilla gagdets.
User avatar
Progi1984
Addict
Addict
Posts: 806
Joined: Fri Feb 25, 2005 1:01 am
Location: France > Rennes
Contact:

Post by Progi1984 »

Do someone have an idea to create some active Scintilla or RaEdit gadgets with a panelgagdet ?

Thanks !
Post Reply