Code archives/BlitzPlus Gui/CreateSyntaxArea(...)

This code has been declared by its author to be Public Domain code.

Download source code

CreateSyntaxArea(...) by ShadowTurtle2003
Hi.

Heres Syntax Sample:
Abs
After
And
Before
Case
Const
Data
Default
Delete
Dim
Each
Else
ElseIf
EndIf
Exit
False
Field
First
Float
For
Forever
Function
Global
Gosub
Goto
Handle
If
Include
Insert
Int
Last
Local
Mod
New
Next
Not
Null
Object
Or
Pi
Read
Repeat
Restore
Return
Sar
Select
Sgn
Shl
Shr
Step
Str
Then
To
True
Type
Until
Wend
While
Xor
DebugLog
FreeTimer
WaitTimer
CreateTimer
SetEnv
GetEnv
SystemProperty
CommandLine
MilliSecs
Delay
ExecFile
RuntimeError
AppTitle
Stop
End
RuntimeStats
EntityName
NameEntity
FreeEntity
ShowEntity
HideEntity
EntityOrder
EntityAutoFade
EntityFX
EntityBlend
EntityTexture
EntityShininess
EntityAlpha
EntityColor
PaintEntity
FindChild
GetChild
CountChildren
EntityParent
Animating
AnimLength
AnimTime
AnimSeq
ExtractAnimSeq
AddAnimSeq
SetAnimKey
Animate
SetAnimTime
AlignToVector
PointEntity
RotateEntity
ScaleEntity
PositionEntity
TranslateEntity
TurnEntity
MoveEntity
CollisionTriangle
CollisionSurface
CollisionEntity
CollisionTime
CollisionNZ
CollisionNY
CollisionNX
CollisionZ
CollisionY
CollisionX
CountCollisions
EntityCollided
EntityDistance
EntityBox
EntityRadius
GetEntityType
GetParent
EntityPickMode
EntityType
ResetEntity
DeltaYaw
DeltaPitch
VectorPitch
VectorYaw
TFormedZ
TFormedY
TFormedX
TFormNormal
TFormVector
TFormPoint
GetMatElement
EntityRoll
EntityYaw
EntityPitch
EntityZ
EntityY
EntityX
CopyEntity
EmitSound
CreateListener
ModifyTerrain
TerrainHeight
TerrainSize
TerrainZ
TerrainY
TerrainX
TerrainShading
TerrainDetail
LoadTerrain
CreateTerrain
CreatePlane
CreateMirror
BSPAmbientLight
BSPLighting
LoadBSP
MD2Animating
MD2AnimLength
MD2AnimTime
AnimateMD2
LoadMD2
SpriteViewMode
HandleSprite
ScaleSprite
RotateSprite
LoadSprite
CreateSprite
CreatePivot
LightConeAngles
LightRange
LightColor
CreateLight
PickedTriangle
PickedSurface
PickedEntity
PickedTime
PickedNZ
PickedNY
PickedNX
PickedZ
PickedY
PickedX
CameraPick
LinePick
EntityPick
EntityVisible
EntityInView
ProjectedZ
ProjectedY
ProjectedX
CameraProject
CameraFogMode
CameraFogRange
CameraFogColor
CameraViewport
CameraProjMode
CameraClsMode
CameraClsColor
CameraRange
CameraZoom
CreateCamera
TriangleVertex
VertexW
VertexV
VertexU
VertexAlpha
VertexBlue
VertexGreen
VertexRed
VertexNZ
VertexNY
VertexNX
VertexZ
VertexY
VertexX
CountTriangles
CountVertices
VertexTexCoords
VertexColor
VertexNormal
VertexCoords
AddTriangle
AddVertex
PaintSurface
ClearSurface
FindSurface
CreateSurface
GetSurface
CountSurfaces
MeshesIntersect
MeshDepth
MeshHeight
MeshWidth
LightMesh
UpdateNormals
AddMesh
PaintMesh
FlipMesh
FitMesh
PositionMesh
RotateMesh
ScaleMesh
CopyMesh
CreateCone
CreateCylinder
CreateSphere
CreateCube
CreateMesh
LoadAnimSeq
LoadAnimMesh
LoadMesh
BrushFX
BrushBlend
BrushTexture
BrushShininess
BrushAlpha
BrushColor
FreeBrush
LoadBrush
CreateBrush
TextureFilter
ClearTextureFilters
TextureBuffer
TextureHeight
TextureWidth
PositionTexture
RotateTexture
ScaleTexture
TextureCoords
TextureBlend
FreeTexture
LoadAnimTexture
LoadTexture
CreateTexture
Stats3D
TrisRendered
ActiveTextures
ClearWorld
RenderWorld
CaptureWorld
UpdateWorld
Collisions
ClearCollisions
AmbientLight
WireFrame
AntiAlias
Dither
WBuffer
HWMultiTex
LoaderMatrix
NetMsgData
NetMsgTo
NetMsgFrom
NetMsgType
RecvNetMsg
SendNetMsg
NetPlayerLocal
NetPlayerName
DeleteNetPlayer
CreateNetPlayer
StopNetGame
JoinNetGame
HostNetGame
StartNetGame
Load3DSound
ChannelPlaying
ChannelPan
ChannelVolume
ChannelPitch
ResumeChannel
PauseChannel
StopChannel
PlayCDTrack
PlayMusic
PlaySound
SoundPan
SoundVolume
SoundPitch
LoopSound
FreeSound
LoadSound
DirectInputEnabled
EnableDirectInput
FlushJoy
JoyVDir
JoyUDir
JoyZDir
JoyYDir
JoyXDir
JoyHat
JoyRoll
JoyYaw
JoyPitch
JoyV
JoyU
JoyZ
JoyY
JoyX
JoyWait
WaitJoy
GetJoy
JoyHit
JoyDown
JoyType
MoveMouse
FlushMouse
MouseZSpeed
MouseYSpeed
MouseXSpeed
MouseZ
MouseY
MouseX
MouseWait
WaitMouse
GetMouse
MouseHit
MouseDown
FlushKeys
WaitKey
GetKey
KeyHit
KeyDown
HidePointer
ShowPointer
Locate
Input
Print
Write
ImageRectCollide
ImageRectOverlap
RectsOverlap
ImagesCollide
ImagesOverlap
TFormFilter
TFormImage
RotateImage
ResizeImage
ScaleImage
ImageYHandle
ImageXHandle
ImageHeight
ImageWidth
AutoMidHandle
MidHandle
HandleImage
MaskImage
DrawBlockRect
DrawImageRect
TileBlock
TileImage
DrawBlock
DrawImage
ImageBuffer
GrabImage
SaveImage
FreeImage
LoadAnimImage
CreateImage
CopyImage
LoadImage
CloseMovie
MoviePlaying
MovieHeight
MovieWidth
DrawMovie
OpenMovie
StringHeight
StringWidth
FontHeight
FontWidth
FreeFont
LoadFont
CopyRect
Text
Line
Oval
Rect
Plot
Cls
SetFont
ClsColor
ColorBlue
ColorGreen
ColorRed
GetColor
Color
Viewport
Origin
CopyPixelFast
CopyPixel
WritePixelFast
ReadPixelFast
WritePixel
ReadPixel
UnlockBuffer
LockBuffer
SaveBuffer
LoadBuffer
GraphicsBuffer
SetBuffer
GraphicsDepth
GraphicsHeight
GraphicsWidth
Flip
VWait
ScanLine
BackBuffer
FrontBuffer
GammaBlue
GammaGreen
GammaRed
UpdateGamma
SetGamma
EndGraphics
Graphics3D
Graphics
Windowed3D
GfxMode3D
GfxMode3DExists
CountGfxModes3D
GfxDriver3D
TotalVidMem
AvailVidMem
GfxModeDepth
GfxModeHeight
GfxModeWidth
GfxModeExists
CountGfxModes
SetGfxDriver
GfxDriverName
CountGfxDrivers
CallDLL
WriteBytes
ReadBytes
PokeFloat
PokeInt
PokeShort
PokeByte
PeekFloat
PeekInt
PeekShort
PeekByte
CopyBank
ResizeBank
BankSize
FreeBank
CreateBank
DeleteFile
CopyFile
FileType
FileSize
DeleteDir
CreateDir
ChangeDir
CurrentDir
NextFile
CloseDir
ReadDir
SeekFile
FilePos
CloseFile
WriteFile
ReadFile
OpenFile
TCPTimeouts
TCPStreamPort
TCPStreamIP
AcceptTCPStream
CloseTCPServer
CreateTCPServer
CloseTCPStream
OpenTCPStream
UDPTimeouts
UDPMsgPort
UDPMsgIP
UDPStreamPort
UDPStreamIP
RecvUDPMsg
SendUDPMsg
CloseUDPStream
CreateUDPStream
HostIP
CountHostIPs
DottedIP
CopyStream
WriteLine
WriteString
WriteFloat
WriteInt
WriteShort
WriteByte
ReadLine
ReadString
ReadFloat
ReadInt
ReadShort
ReadByte
ReadAvail
Eof
CurrentTime
CurrentDate
Bin
Hex
Len
Asc
Chr
RSet
LSet
Trim
Lower
Upper
Mid
Instr
Replace
Right
Left
String
RndSeed
SeedRnd
Rand
Rnd
Log10
Log
Exp
Ceil
Floor
Sqr
ATan2
ATan
ACos
ASin
Tan
Cos
Sin

Have fun. Cu, ST. :)
wnd = CreateWindow("SyntaxArea Sample", 10, 10, 400, 400, 0, 1) 
butn1 = CreateButton("Exit.", 2, 2, 100, 30, wnd) 

S_Style = CreateSyntaxStyle() 
SyntaxAreaWordsFromFile S_Style, "syntax.txt", 255, 255, 0 

S_Area = CreateSyntaxArea(2, 40, 388, 300, wnd) 
SetSyntaxAreaStyle S_Area, S_Style 

Programm = 1 
While Programm 
  MyEvent = WaitEvent() 
  If EventSource() = butn1 Then Programm = 0 

  SyntaxAreaScanAll S_Area 
Wend 


Type SyntaxAreas 
  Field S_Handle 
  Field S_GadGet 
  Field S_Style.SyntaxStyles 
End Type 

Type SyntaxStyles 
  Field S_Handle 
  Field Color_BG[3] 
  Field Color_StdFont[3] 
  Field S_Char1$ 
  Field S_Char2$ 
  Field S_Char3$ 
  Field Font 
  Field FontName$ 
  Field FontSize 
  Field MaxWordLen 
End Type 

Type SyntaxWord 
  Field S_Style.SyntaxStyles 
  Field Word$ 
  Field Color_StdFont[3] 
End Type 

Function CreateSyntaxArea(x1,y1,x2,y2,g,s=0) 
  nextround=1 
  While nextround = 1 
    newhandle = Rnd(99999) : nextround=0 
    For SA.SyntaxAreas = Each SyntaxAreas 
      If SA\S_Handle = newhandle Then nextround=1 
    Next 
  Wend 

  SA.SyntaxAreas = New SyntaxAreas 
  SA\S_Handle = newhandle 
  SA\S_GadGet = CreateTextArea(x1, y1, x2, y2,g,s) 

  Return SA\S_Handle 
End Function 

Function SetSyntaxAreaStyle(H_Syntax, H_Style) 
  For SA.SyntaxAreas = Each SyntaxAreas 
    If SA\S_Handle = H_Syntax Then 
      For SS.SyntaxStyles = Each SyntaxStyles 
        If SS\S_Handle = H_Style Then 
          SA\S_Style = SS 
          SetTextAreaColor SA\S_GadGet, SS\Color_BG[1], SS\Color_BG[2], SS\Color_BG[3], 1 
          SetTextAreaColor SA\S_GadGet, SS\Color_StdFont[1], SS\Color_StdFont[2], SS\Color_StdFont[3] 
          SS\Font = LoadFont(SS\FontName$, SS\FontSize) 
          SetTextAreaFont SA\S_GadGet, SS\Font 
          FreeFont SS\Font 
        End If 
      Next 
    End If 
  Next 
End Function 

Function CreateSyntaxStyle() 
  .n_round : newhandle = Rnd(99999) : For SS.SyntaxStyles = Each SyntaxStyles 
  If SS\S_Handle = newhandle Then Goto n_round 
  Next  

  SS.SyntaxStyles = New SyntaxStyles 
  SS\S_Handle = newhandle 
  SS\Color_BG[1] = 50 : SS\Color_BG[2] = 50 : SS\Color_BG[3] = 255 
  SS\Color_StdFont[1] = 255 : SS\Color_StdFont[2] = 255 : SS\Color_StdFont[3] = 255 
  SS\FontName$ = "Blitz" 
  SS\FontSize = 20 
  SS\S_Char1$ = "1234567890" 
  SS\S_Char2$ = "´!"+Chr$(34)+"§&/()=?`<,.*'>;:!" 
  SS\S_Char3$ = "qwertzuiopüasdfghjklöäßyxcvbnmQWERTZUIOPÜASDFGHJKLÖÄYXCVBNM$%#" 

  Return SS\S_Handle 
End Function 

Function SyntaxAreaAddWord(H_Style, Word$, C_R, C_G, C_B) 
  For SS.SyntaxStyles = Each SyntaxStyles 
    If SS\S_Handle = H_Style Then 
      SW.SyntaxWord = New SyntaxWord 
      SW\S_Style = SS 
      SW\Word$ = Word$ 
      SW\Color_StdFont[1] = C_R : SW\Color_StdFont[2] = C_G : SW\Color_StdFont[3] = C_B 

      If SS\MaxWordLen < Word$ Then SS\MaxWordLen = Len(Word$) 
    End If 
  Next 
End Function 

Function SyntaxAreaWordsFromFile(H_Style, FileName$, C_R, C_G, C_B) 
  TheFile = ReadFile(FileName$) 
    While Not Eof(TheFile) 
      Word$ = ReadLine$(TheFile) 
      If Instr(Word$, " ") Then Word$ = Mid$(Word$, 1, Instr(Word$, " ")-1) 
      SyntaxAreaAddWord(H_Style, Word$, C_R, C_G, C_B) 
    Wend 
  CloseFile(TheFile) 
End Function 

Function SyntaxAreaScanAll(H_Syntax) 
  For SA.SyntaxAreas = Each SyntaxAreas 
    If SA\S_Handle = H_Syntax Then 
      SyntaxCur = TextAreaCursor(SA\S_GadGet) 
      SyntaxText$ = TextAreaText$(SA\S_GadGet) 

      CurA = SyntaxCur 
      Repeat 
        If (CurA < 1) Or (Not Instr(SA\S_Style\S_Char1$+SA\S_Style\S_Char3$, Mid$(SyntaxText$,CurA,1))>0) Then Exit 
        CurA = CurA - 1 
      Forever 

      mabs = 1 
      If Not Instr(SA\S_Style\S_Char1$+SA\S_Style\S_Char3$, Mid$(SyntaxText$,CurA,1))>0 Then CurA=CurA+1 : mabs = 0 

      CurB = CurA 
      Repeat 
        If (CurB > Len(SyntaxText$)) Or (Not Instr(SA\S_Style\S_Char1$+SA\S_Style\S_Char3$, Mid$(SyntaxText$,CurB,1))>0) Then Exit 
        CurB = CurB + 1 
      Forever 

      Word$ = Mid$(SyntaxText$, CurA+mabs, CurB-CurA-mabs) 

      FormatTextAreaText SA\S_GadGet, SA\S_Style\Color_StdFont[1], SA\S_Style\Color_StdFont[2], SA\S_Style\Color_StdFont[3], 0, CurA-mabs-1, CurB-CurA 
      fWord = 0 
      For SW.SyntaxWord = Each SyntaxWord 
        If SA\S_Style = SW\S_Style Then 
          If Lower(Word$) = Lower(SW\Word$) Then 
            FormatTextAreaText SA\S_GadGet, SW\Color_StdFont[1], SW\Color_StdFont[2], SW\Color_StdFont[3], 0, CurA-mabs-1, CurB-CurA 
            fWord = 1 
          End If 
        End If 
      Next 

      If fWord = 0 Then FormatTextAreaText SA\S_GadGet, SA\S_Style\Color_StdFont[1], SA\S_Style\Color_StdFont[2], SA\S_Style\Color_StdFont[3], 0, SyntaxCur-1,1 
    End If 
  Next 
End Function

Comments

None.

Code Archives Forum