mirror of
https://github.com/moparisthebest/Simba
synced 2025-01-11 05:38:00 -05:00
Added tabs... TEST THIS OUT!
git-svn-id: http://www.villavu.com/repositories/merlijn/mufasa@163 3f818213-9676-44b0-a9b4-5e4c4e03d09d
This commit is contained in:
parent
7e06e85bee
commit
8755708b3a
726
Projects/SAMufasaGUI/framescript.lfm
Normal file
726
Projects/SAMufasaGUI/framescript.lfm
Normal file
@ -0,0 +1,726 @@
|
||||
object ScriptFrame: TScriptFrame
|
||||
Left = 0
|
||||
Height = 300
|
||||
Top = 0
|
||||
Width = 400
|
||||
ClientHeight = 300
|
||||
ClientWidth = 400
|
||||
TabOrder = 0
|
||||
DesignLeft = 775
|
||||
DesignTop = 204
|
||||
object SynEdit: TSynEdit
|
||||
Left = 0
|
||||
Height = 300
|
||||
Top = 0
|
||||
Width = 400
|
||||
Align = alClient
|
||||
Font.Height = -13
|
||||
Font.Name = 'Courier New'
|
||||
Font.Pitch = fpFixed
|
||||
Font.Quality = fqNonAntialiased
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
BookMarkOptions.OnChange = nil
|
||||
Gutter.Width = 57
|
||||
Gutter.MouseActions = <
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbLeft
|
||||
ClickCount = ccAny
|
||||
ClickDir = cdDown
|
||||
Command = 13
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbRight
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdUp
|
||||
Command = 12
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end>
|
||||
Highlighter = SynFreePascalSyn1
|
||||
Keystrokes = <
|
||||
item
|
||||
Command = ecUp
|
||||
ShortCut = 38
|
||||
end
|
||||
item
|
||||
Command = ecSelUp
|
||||
ShortCut = 8230
|
||||
end
|
||||
item
|
||||
Command = ecScrollUp
|
||||
ShortCut = 16422
|
||||
end
|
||||
item
|
||||
Command = ecDown
|
||||
ShortCut = 40
|
||||
end
|
||||
item
|
||||
Command = ecSelDown
|
||||
ShortCut = 8232
|
||||
end
|
||||
item
|
||||
Command = ecScrollDown
|
||||
ShortCut = 16424
|
||||
end
|
||||
item
|
||||
Command = ecLeft
|
||||
ShortCut = 37
|
||||
end
|
||||
item
|
||||
Command = ecSelLeft
|
||||
ShortCut = 8229
|
||||
end
|
||||
item
|
||||
Command = ecWordLeft
|
||||
ShortCut = 16421
|
||||
end
|
||||
item
|
||||
Command = ecSelWordLeft
|
||||
ShortCut = 24613
|
||||
end
|
||||
item
|
||||
Command = ecRight
|
||||
ShortCut = 39
|
||||
end
|
||||
item
|
||||
Command = ecSelRight
|
||||
ShortCut = 8231
|
||||
end
|
||||
item
|
||||
Command = ecWordRight
|
||||
ShortCut = 16423
|
||||
end
|
||||
item
|
||||
Command = ecSelWordRight
|
||||
ShortCut = 24615
|
||||
end
|
||||
item
|
||||
Command = ecPageDown
|
||||
ShortCut = 34
|
||||
end
|
||||
item
|
||||
Command = ecSelPageDown
|
||||
ShortCut = 8226
|
||||
end
|
||||
item
|
||||
Command = ecPageBottom
|
||||
ShortCut = 16418
|
||||
end
|
||||
item
|
||||
Command = ecSelPageBottom
|
||||
ShortCut = 24610
|
||||
end
|
||||
item
|
||||
Command = ecPageUp
|
||||
ShortCut = 33
|
||||
end
|
||||
item
|
||||
Command = ecSelPageUp
|
||||
ShortCut = 8225
|
||||
end
|
||||
item
|
||||
Command = ecPageTop
|
||||
ShortCut = 16417
|
||||
end
|
||||
item
|
||||
Command = ecSelPageTop
|
||||
ShortCut = 24609
|
||||
end
|
||||
item
|
||||
Command = ecLineStart
|
||||
ShortCut = 36
|
||||
end
|
||||
item
|
||||
Command = ecSelLineStart
|
||||
ShortCut = 8228
|
||||
end
|
||||
item
|
||||
Command = ecEditorTop
|
||||
ShortCut = 16420
|
||||
end
|
||||
item
|
||||
Command = ecSelEditorTop
|
||||
ShortCut = 24612
|
||||
end
|
||||
item
|
||||
Command = ecLineEnd
|
||||
ShortCut = 35
|
||||
end
|
||||
item
|
||||
Command = ecSelLineEnd
|
||||
ShortCut = 8227
|
||||
end
|
||||
item
|
||||
Command = ecEditorBottom
|
||||
ShortCut = 16419
|
||||
end
|
||||
item
|
||||
Command = ecSelEditorBottom
|
||||
ShortCut = 24611
|
||||
end
|
||||
item
|
||||
Command = ecToggleMode
|
||||
ShortCut = 45
|
||||
end
|
||||
item
|
||||
Command = ecCopy
|
||||
ShortCut = 16429
|
||||
end
|
||||
item
|
||||
Command = ecPaste
|
||||
ShortCut = 8237
|
||||
end
|
||||
item
|
||||
Command = ecDeleteChar
|
||||
ShortCut = 46
|
||||
end
|
||||
item
|
||||
Command = ecCut
|
||||
ShortCut = 8238
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLastChar
|
||||
ShortCut = 8
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLastChar
|
||||
ShortCut = 8200
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLastWord
|
||||
ShortCut = 16392
|
||||
end
|
||||
item
|
||||
Command = ecUndo
|
||||
ShortCut = 32776
|
||||
end
|
||||
item
|
||||
Command = ecRedo
|
||||
ShortCut = 40968
|
||||
end
|
||||
item
|
||||
Command = ecLineBreak
|
||||
ShortCut = 13
|
||||
end
|
||||
item
|
||||
Command = ecSelectAll
|
||||
ShortCut = 16449
|
||||
end
|
||||
item
|
||||
Command = ecCopy
|
||||
ShortCut = 16451
|
||||
end
|
||||
item
|
||||
Command = ecBlockIndent
|
||||
ShortCut = 24649
|
||||
end
|
||||
item
|
||||
Command = ecLineBreak
|
||||
ShortCut = 16461
|
||||
end
|
||||
item
|
||||
Command = ecInsertLine
|
||||
ShortCut = 16462
|
||||
end
|
||||
item
|
||||
Command = ecDeleteWord
|
||||
ShortCut = 16468
|
||||
end
|
||||
item
|
||||
Command = ecBlockUnindent
|
||||
ShortCut = 24661
|
||||
end
|
||||
item
|
||||
Command = ecPaste
|
||||
ShortCut = 16470
|
||||
end
|
||||
item
|
||||
Command = ecCut
|
||||
ShortCut = 16472
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLine
|
||||
ShortCut = 16473
|
||||
end
|
||||
item
|
||||
Command = ecDeleteEOL
|
||||
ShortCut = 24665
|
||||
end
|
||||
item
|
||||
Command = ecUndo
|
||||
ShortCut = 16474
|
||||
end
|
||||
item
|
||||
Command = ecRedo
|
||||
ShortCut = 24666
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker0
|
||||
ShortCut = 16432
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker1
|
||||
ShortCut = 16433
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker2
|
||||
ShortCut = 16434
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker3
|
||||
ShortCut = 16435
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker4
|
||||
ShortCut = 16436
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker5
|
||||
ShortCut = 16437
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker6
|
||||
ShortCut = 16438
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker7
|
||||
ShortCut = 16439
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker8
|
||||
ShortCut = 16440
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker9
|
||||
ShortCut = 16441
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker0
|
||||
ShortCut = 24624
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker1
|
||||
ShortCut = 24625
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker2
|
||||
ShortCut = 24626
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker3
|
||||
ShortCut = 24627
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker4
|
||||
ShortCut = 24628
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker5
|
||||
ShortCut = 24629
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker6
|
||||
ShortCut = 24630
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker7
|
||||
ShortCut = 24631
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker8
|
||||
ShortCut = 24632
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker9
|
||||
ShortCut = 24633
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel1
|
||||
ShortCut = 41009
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel2
|
||||
ShortCut = 41010
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel1
|
||||
ShortCut = 41011
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel1
|
||||
ShortCut = 41012
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel1
|
||||
ShortCut = 41013
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel6
|
||||
ShortCut = 41014
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel7
|
||||
ShortCut = 41015
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel8
|
||||
ShortCut = 41016
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel9
|
||||
ShortCut = 41017
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel0
|
||||
ShortCut = 41008
|
||||
end
|
||||
item
|
||||
Command = EcFoldCurrent
|
||||
ShortCut = 41005
|
||||
end
|
||||
item
|
||||
Command = EcUnFoldCurrent
|
||||
ShortCut = 41003
|
||||
end
|
||||
item
|
||||
Command = EcToggleMarkupWord
|
||||
ShortCut = 32845
|
||||
end
|
||||
item
|
||||
Command = ecNormalSelect
|
||||
ShortCut = 24654
|
||||
end
|
||||
item
|
||||
Command = ecColumnSelect
|
||||
ShortCut = 24643
|
||||
end
|
||||
item
|
||||
Command = ecLineSelect
|
||||
ShortCut = 24652
|
||||
end
|
||||
item
|
||||
Command = ecTab
|
||||
ShortCut = 9
|
||||
end
|
||||
item
|
||||
Command = ecShiftTab
|
||||
ShortCut = 8201
|
||||
end
|
||||
item
|
||||
Command = ecMatchBracket
|
||||
ShortCut = 24642
|
||||
end
|
||||
item
|
||||
Command = ecColSelUp
|
||||
ShortCut = 40998
|
||||
end
|
||||
item
|
||||
Command = ecColSelDown
|
||||
ShortCut = 41000
|
||||
end
|
||||
item
|
||||
Command = ecColSelLeft
|
||||
ShortCut = 40997
|
||||
end
|
||||
item
|
||||
Command = ecColSelRight
|
||||
ShortCut = 40999
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageDown
|
||||
ShortCut = 40994
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageBottom
|
||||
ShortCut = 57378
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageUp
|
||||
ShortCut = 40993
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageTop
|
||||
ShortCut = 57377
|
||||
end
|
||||
item
|
||||
Command = ecColSelLineStart
|
||||
ShortCut = 40996
|
||||
end
|
||||
item
|
||||
Command = ecColSelLineEnd
|
||||
ShortCut = 40995
|
||||
end
|
||||
item
|
||||
Command = ecColSelEditorTop
|
||||
ShortCut = 57380
|
||||
end
|
||||
item
|
||||
Command = ecColSelEditorBottom
|
||||
ShortCut = 57379
|
||||
end>
|
||||
MouseActions = <
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = [ssShift, ssAlt]
|
||||
Button = mbLeft
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdDown
|
||||
Command = 1
|
||||
MoveCaret = True
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = [ssShift]
|
||||
ShiftMask = [ssShift, ssAlt]
|
||||
Button = mbLeft
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdDown
|
||||
Command = 1
|
||||
MoveCaret = True
|
||||
Option = 1
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = [ssAlt]
|
||||
ShiftMask = [ssShift, ssAlt]
|
||||
Button = mbLeft
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdDown
|
||||
Command = 3
|
||||
MoveCaret = True
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = [ssShift, ssAlt]
|
||||
ShiftMask = [ssShift, ssAlt]
|
||||
Button = mbLeft
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdDown
|
||||
Command = 3
|
||||
MoveCaret = True
|
||||
Option = 1
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbRight
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdUp
|
||||
Command = 12
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbLeft
|
||||
ClickCount = ccDouble
|
||||
ClickDir = cdDown
|
||||
Command = 6
|
||||
MoveCaret = True
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbLeft
|
||||
ClickCount = ccTriple
|
||||
ClickDir = cdDown
|
||||
Command = 7
|
||||
MoveCaret = True
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbLeft
|
||||
ClickCount = ccQuad
|
||||
ClickDir = cdDown
|
||||
Command = 8
|
||||
MoveCaret = True
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbMiddle
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdDown
|
||||
Command = 10
|
||||
MoveCaret = True
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = [ssCtrl]
|
||||
ShiftMask = [ssShift, ssAlt, ssCtrl]
|
||||
Button = mbLeft
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdUp
|
||||
Command = 11
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end>
|
||||
MouseSelActions = <
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbLeft
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdDown
|
||||
Command = 9
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end>
|
||||
Lines.Strings = (
|
||||
'program new;'
|
||||
'begin'
|
||||
'end.'
|
||||
)
|
||||
BracketHighlightStyle = sbhsBoth
|
||||
OnChange = SynEditChange
|
||||
OnProcessCommand = SynEditProcessCommand
|
||||
OnSpecialLineColors = SynEditSpecialLineColors
|
||||
object TSynGutterPartList
|
||||
object TSynGutterMarks
|
||||
Width = 23
|
||||
end
|
||||
object TSynGutterLineNumber
|
||||
Width = 17
|
||||
MouseActions = <>
|
||||
MarkupInfo.Background = clBtnFace
|
||||
MarkupInfo.Foreground = clNone
|
||||
DigitCount = 2
|
||||
ShowOnlyLineNumbersMultiplesOf = 1
|
||||
ZeroStart = False
|
||||
LeadingZeros = False
|
||||
end
|
||||
object TSynGutterChanges
|
||||
Width = 4
|
||||
ModifiedColor = 59900
|
||||
SavedColor = clGreen
|
||||
end
|
||||
object TSynGutterSeparator
|
||||
Width = 2
|
||||
end
|
||||
object TSynGutterCodeFolding
|
||||
MouseActions = <
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbRight
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdUp
|
||||
Command = 16
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = [ssShift]
|
||||
Button = mbMiddle
|
||||
ClickCount = ccAny
|
||||
ClickDir = cdDown
|
||||
Command = 14
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = [ssShift]
|
||||
ShiftMask = [ssShift]
|
||||
Button = mbMiddle
|
||||
ClickCount = ccAny
|
||||
ClickDir = cdDown
|
||||
Command = 14
|
||||
MoveCaret = False
|
||||
Option = 1
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbLeft
|
||||
ClickCount = ccAny
|
||||
ClickDir = cdDown
|
||||
Command = 0
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end>
|
||||
MarkupInfo.Background = clNone
|
||||
MarkupInfo.Foreground = clGray
|
||||
MouseActionsExpanded = <
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbLeft
|
||||
ClickCount = ccAny
|
||||
ClickDir = cdDown
|
||||
Command = 14
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end>
|
||||
MouseActionsCollapsed = <
|
||||
item
|
||||
Shift = [ssCtrl]
|
||||
ShiftMask = [ssCtrl]
|
||||
Button = mbLeft
|
||||
ClickCount = ccAny
|
||||
ClickDir = cdDown
|
||||
Command = 15
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = [ssCtrl]
|
||||
Button = mbLeft
|
||||
ClickCount = ccAny
|
||||
ClickDir = cdDown
|
||||
Command = 15
|
||||
MoveCaret = False
|
||||
Option = 1
|
||||
Priority = 0
|
||||
end>
|
||||
end
|
||||
end
|
||||
end
|
||||
object SynFreePascalSyn1: TSynFreePascalSyn
|
||||
Enabled = False
|
||||
CommentAttri.Foreground = clBlue
|
||||
CommentAttri.Style = [fsBold]
|
||||
IdentifierAttri.Foreground = clDefault
|
||||
NumberAttri.Foreground = clNavy
|
||||
StringAttri.Foreground = clBlue
|
||||
SymbolAttri.Foreground = clRed
|
||||
DirectiveAttri.Foreground = clRed
|
||||
DirectiveAttri.Style = [fsBold]
|
||||
CompilerMode = pcmObjFPC
|
||||
NestedComments = True
|
||||
left = 320
|
||||
top = 16
|
||||
end
|
||||
end
|
151
Projects/SAMufasaGUI/framescript.lrs
Normal file
151
Projects/SAMufasaGUI/framescript.lrs
Normal file
@ -0,0 +1,151 @@
|
||||
LazarusResources.Add('TScriptFrame','FORMDATA',[
|
||||
'TPF0'#12'TScriptFrame'#11'ScriptFrame'#4'Left'#2#0#6'Height'#3','#1#3'Top'#2
|
||||
+#0#5'Width'#3#144#1#12'ClientHeight'#3','#1#11'ClientWidth'#3#144#1#8'TabOrd'
|
||||
+'er'#2#0#10'DesignLeft'#3#7#3#9'DesignTop'#3#204#0#0#8'TSynEdit'#7'SynEdit'#4
|
||||
+'Left'#2#0#6'Height'#3','#1#3'Top'#2#0#5'Width'#3#144#1#5'Align'#7#8'alClien'
|
||||
+'t'#11'Font.Height'#2#243#9'Font.Name'#6#11'Courier New'#10'Font.Pitch'#7#7
|
||||
+'fpFixed'#12'Font.Quality'#7#16'fqNonAntialiased'#11'ParentColor'#8#10'Paren'
|
||||
+'tFont'#8#8'TabOrder'#2#0#24'BookMarkOptions.OnChange'#13#12'Gutter.Width'#2
|
||||
+'9'#19'Gutter.MouseActions'#14#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7
|
||||
+#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#13
|
||||
+#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'
|
||||
+#11#0#6'Button'#7#7'mbRight'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cd'
|
||||
+'Up'#7'Command'#2#12#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#11'Hig'
|
||||
+'hlighter'#7#17'SynFreePascalSyn1'#10'Keystrokes'#14#1#7'Command'#7#4'ecUp'#8
|
||||
+'ShortCut'#2'&'#0#1#7'Command'#7#7'ecSelUp'#8'ShortCut'#3'& '#0#1#7'Command'
|
||||
+#7#10'ecScrollUp'#8'ShortCut'#3'&@'#0#1#7'Command'#7#6'ecDown'#8'ShortCut'#2
|
||||
+'('#0#1#7'Command'#7#9'ecSelDown'#8'ShortCut'#3'( '#0#1#7'Command'#7#12'ecSc'
|
||||
+'rollDown'#8'ShortCut'#3'(@'#0#1#7'Command'#7#6'ecLeft'#8'ShortCut'#2'%'#0#1
|
||||
+#7'Command'#7#9'ecSelLeft'#8'ShortCut'#3'% '#0#1#7'Command'#7#10'ecWordLeft'
|
||||
+#8'ShortCut'#3'%@'#0#1#7'Command'#7#13'ecSelWordLeft'#8'ShortCut'#3'%`'#0#1#7
|
||||
+'Command'#7#7'ecRight'#8'ShortCut'#2''''#0#1#7'Command'#7#10'ecSelRight'#8'S'
|
||||
+'hortCut'#3''' '#0#1#7'Command'#7#11'ecWordRight'#8'ShortCut'#3'''@'#0#1#7'C'
|
||||
+'ommand'#7#14'ecSelWordRight'#8'ShortCut'#3'''`'#0#1#7'Command'#7#10'ecPageD'
|
||||
+'own'#8'ShortCut'#2'"'#0#1#7'Command'#7#13'ecSelPageDown'#8'ShortCut'#3'" '#0
|
||||
+#1#7'Command'#7#12'ecPageBottom'#8'ShortCut'#3'"@'#0#1#7'Command'#7#15'ecSel'
|
||||
+'PageBottom'#8'ShortCut'#3'"`'#0#1#7'Command'#7#8'ecPageUp'#8'ShortCut'#2'!'
|
||||
+#0#1#7'Command'#7#11'ecSelPageUp'#8'ShortCut'#3'! '#0#1#7'Command'#7#9'ecPag'
|
||||
+'eTop'#8'ShortCut'#3'!@'#0#1#7'Command'#7#12'ecSelPageTop'#8'ShortCut'#3'!`'
|
||||
+#0#1#7'Command'#7#11'ecLineStart'#8'ShortCut'#2'$'#0#1#7'Command'#7#14'ecSel'
|
||||
+'LineStart'#8'ShortCut'#3'$ '#0#1#7'Command'#7#11'ecEditorTop'#8'ShortCut'#3
|
||||
+'$@'#0#1#7'Command'#7#14'ecSelEditorTop'#8'ShortCut'#3'$`'#0#1#7'Command'#7#9
|
||||
+'ecLineEnd'#8'ShortCut'#2'#'#0#1#7'Command'#7#12'ecSelLineEnd'#8'ShortCut'#3
|
||||
+'# '#0#1#7'Command'#7#14'ecEditorBottom'#8'ShortCut'#3'#@'#0#1#7'Command'#7
|
||||
+#17'ecSelEditorBottom'#8'ShortCut'#3'#`'#0#1#7'Command'#7#12'ecToggleMode'#8
|
||||
+'ShortCut'#2'-'#0#1#7'Command'#7#6'ecCopy'#8'ShortCut'#3'-@'#0#1#7'Command'#7
|
||||
+#7'ecPaste'#8'ShortCut'#3'- '#0#1#7'Command'#7#12'ecDeleteChar'#8'ShortCut'#2
|
||||
+'.'#0#1#7'Command'#7#5'ecCut'#8'ShortCut'#3'. '#0#1#7'Command'#7#16'ecDelete'
|
||||
+'LastChar'#8'ShortCut'#2#8#0#1#7'Command'#7#16'ecDeleteLastChar'#8'ShortCut'
|
||||
+#3#8' '#0#1#7'Command'#7#16'ecDeleteLastWord'#8'ShortCut'#3#8'@'#0#1#7'Comma'
|
||||
+'nd'#7#6'ecUndo'#8'ShortCut'#4#8#128#0#0#0#1#7'Command'#7#6'ecRedo'#8'ShortC'
|
||||
+'ut'#4#8#160#0#0#0#1#7'Command'#7#11'ecLineBreak'#8'ShortCut'#2#13#0#1#7'Com'
|
||||
+'mand'#7#11'ecSelectAll'#8'ShortCut'#3'A@'#0#1#7'Command'#7#6'ecCopy'#8'Shor'
|
||||
+'tCut'#3'C@'#0#1#7'Command'#7#13'ecBlockIndent'#8'ShortCut'#3'I`'#0#1#7'Comm'
|
||||
+'and'#7#11'ecLineBreak'#8'ShortCut'#3'M@'#0#1#7'Command'#7#12'ecInsertLine'#8
|
||||
+'ShortCut'#3'N@'#0#1#7'Command'#7#12'ecDeleteWord'#8'ShortCut'#3'T@'#0#1#7'C'
|
||||
+'ommand'#7#15'ecBlockUnindent'#8'ShortCut'#3'U`'#0#1#7'Command'#7#7'ecPaste'
|
||||
+#8'ShortCut'#3'V@'#0#1#7'Command'#7#5'ecCut'#8'ShortCut'#3'X@'#0#1#7'Command'
|
||||
+#7#12'ecDeleteLine'#8'ShortCut'#3'Y@'#0#1#7'Command'#7#11'ecDeleteEOL'#8'Sho'
|
||||
+'rtCut'#3'Y`'#0#1#7'Command'#7#6'ecUndo'#8'ShortCut'#3'Z@'#0#1#7'Command'#7#6
|
||||
+'ecRedo'#8'ShortCut'#3'Z`'#0#1#7'Command'#7#13'ecGotoMarker0'#8'ShortCut'#3
|
||||
+'0@'#0#1#7'Command'#7#13'ecGotoMarker1'#8'ShortCut'#3'1@'#0#1#7'Command'#7#13
|
||||
+'ecGotoMarker2'#8'ShortCut'#3'2@'#0#1#7'Command'#7#13'ecGotoMarker3'#8'Short'
|
||||
+'Cut'#3'3@'#0#1#7'Command'#7#13'ecGotoMarker4'#8'ShortCut'#3'4@'#0#1#7'Comma'
|
||||
+'nd'#7#13'ecGotoMarker5'#8'ShortCut'#3'5@'#0#1#7'Command'#7#13'ecGotoMarker6'
|
||||
+#8'ShortCut'#3'6@'#0#1#7'Command'#7#13'ecGotoMarker7'#8'ShortCut'#3'7@'#0#1#7
|
||||
+'Command'#7#13'ecGotoMarker8'#8'ShortCut'#3'8@'#0#1#7'Command'#7#13'ecGotoMa'
|
||||
+'rker9'#8'ShortCut'#3'9@'#0#1#7'Command'#7#12'ecSetMarker0'#8'ShortCut'#3'0`'
|
||||
+#0#1#7'Command'#7#12'ecSetMarker1'#8'ShortCut'#3'1`'#0#1#7'Command'#7#12'ecS'
|
||||
+'etMarker2'#8'ShortCut'#3'2`'#0#1#7'Command'#7#12'ecSetMarker3'#8'ShortCut'#3
|
||||
+'3`'#0#1#7'Command'#7#12'ecSetMarker4'#8'ShortCut'#3'4`'#0#1#7'Command'#7#12
|
||||
+'ecSetMarker5'#8'ShortCut'#3'5`'#0#1#7'Command'#7#12'ecSetMarker6'#8'ShortCu'
|
||||
+'t'#3'6`'#0#1#7'Command'#7#12'ecSetMarker7'#8'ShortCut'#3'7`'#0#1#7'Command'
|
||||
+#7#12'ecSetMarker8'#8'ShortCut'#3'8`'#0#1#7'Command'#7#12'ecSetMarker9'#8'Sh'
|
||||
+'ortCut'#3'9`'#0#1#7'Command'#7#12'EcFoldLevel1'#8'ShortCut'#4'1'#160#0#0#0#1
|
||||
+#7'Command'#7#12'EcFoldLevel2'#8'ShortCut'#4'2'#160#0#0#0#1#7'Command'#7#12
|
||||
,'EcFoldLevel1'#8'ShortCut'#4'3'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel1'#8
|
||||
+'ShortCut'#4'4'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel1'#8'ShortCut'#4'5'
|
||||
+#160#0#0#0#1#7'Command'#7#12'EcFoldLevel6'#8'ShortCut'#4'6'#160#0#0#0#1#7'Co'
|
||||
+'mmand'#7#12'EcFoldLevel7'#8'ShortCut'#4'7'#160#0#0#0#1#7'Command'#7#12'EcFo'
|
||||
+'ldLevel8'#8'ShortCut'#4'8'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel9'#8'Shor'
|
||||
+'tCut'#4'9'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel0'#8'ShortCut'#4'0'#160#0
|
||||
+#0#0#1#7'Command'#7#13'EcFoldCurrent'#8'ShortCut'#4'-'#160#0#0#0#1#7'Command'
|
||||
+#7#15'EcUnFoldCurrent'#8'ShortCut'#4'+'#160#0#0#0#1#7'Command'#7#18'EcToggle'
|
||||
+'MarkupWord'#8'ShortCut'#4'M'#128#0#0#0#1#7'Command'#7#14'ecNormalSelect'#8
|
||||
+'ShortCut'#3'N`'#0#1#7'Command'#7#14'ecColumnSelect'#8'ShortCut'#3'C`'#0#1#7
|
||||
+'Command'#7#12'ecLineSelect'#8'ShortCut'#3'L`'#0#1#7'Command'#7#5'ecTab'#8'S'
|
||||
+'hortCut'#2#9#0#1#7'Command'#7#10'ecShiftTab'#8'ShortCut'#3#9' '#0#1#7'Comma'
|
||||
+'nd'#7#14'ecMatchBracket'#8'ShortCut'#3'B`'#0#1#7'Command'#7#10'ecColSelUp'#8
|
||||
+'ShortCut'#4'&'#160#0#0#0#1#7'Command'#7#12'ecColSelDown'#8'ShortCut'#4'('
|
||||
+#160#0#0#0#1#7'Command'#7#12'ecColSelLeft'#8'ShortCut'#4'%'#160#0#0#0#1#7'Co'
|
||||
+'mmand'#7#13'ecColSelRight'#8'ShortCut'#4''''#160#0#0#0#1#7'Command'#7#16'ec'
|
||||
+'ColSelPageDown'#8'ShortCut'#4'"'#160#0#0#0#1#7'Command'#7#18'ecColSelPageBo'
|
||||
+'ttom'#8'ShortCut'#4'"'#224#0#0#0#1#7'Command'#7#14'ecColSelPageUp'#8'ShortC'
|
||||
+'ut'#4'!'#160#0#0#0#1#7'Command'#7#15'ecColSelPageTop'#8'ShortCut'#4'!'#224#0
|
||||
+#0#0#1#7'Command'#7#17'ecColSelLineStart'#8'ShortCut'#4'$'#160#0#0#0#1#7'Com'
|
||||
+'mand'#7#15'ecColSelLineEnd'#8'ShortCut'#4'#'#160#0#0#0#1#7'Command'#7#17'ec'
|
||||
+'ColSelEditorTop'#8'ShortCut'#4'$'#224#0#0#0#1#7'Command'#7#20'ecColSelEdito'
|
||||
+'rBottom'#8'ShortCut'#4'#'#224#0#0#0#0#12'MouseActions'#14#1#5'Shift'#11#0#9
|
||||
+'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8
|
||||
+'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#1#9'MoveCaret'#9#6'Option'#2
|
||||
+#0#8'Priority'#2#0#0#1#5'Shift'#11#7'ssShift'#0#9'ShiftMask'#11#7'ssShift'#5
|
||||
+'ssAlt'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6
|
||||
+'cdDown'#7'Command'#2#1#9'MoveCaret'#9#6'Option'#2#1#8'Priority'#2#0#0#1#5'S'
|
||||
+'hift'#11#5'ssAlt'#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbL'
|
||||
+'eft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#3#9
|
||||
+'MoveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#7'ssShift'#5'ssA'
|
||||
+'lt'#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbLeft'#10'ClickC'
|
||||
+'ount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#3#9'MoveCaret'#9#6
|
||||
+'Option'#2#1#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7
|
||||
+#7'mbRight'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2
|
||||
+#12#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMa'
|
||||
+'sk'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccDouble'#8'ClickDir'#7#6
|
||||
+'cdDown'#7'Command'#2#6#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'S'
|
||||
+'hift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccTri'
|
||||
+'ple'#8'ClickDir'#7#6'cdDown'#7'Command'#2#7#9'MoveCaret'#9#6'Option'#2#0#8
|
||||
+'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10
|
||||
+'ClickCount'#7#6'ccQuad'#8'ClickDir'#7#6'cdDown'#7'Command'#2#8#9'MoveCaret'
|
||||
+#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Butto'
|
||||
+'n'#7#8'mbMiddle'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Com'
|
||||
+'mand'#2#10#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#6's'
|
||||
+'sCtrl'#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#6'ssCtrl'#0#6'Button'#7#6'mbLe'
|
||||
+'ft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2#11#9'Mo'
|
||||
+'veCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#15'MouseSelActions'#14#1#5'Shi'
|
||||
+'ft'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSingl'
|
||||
+'e'#8'ClickDir'#7#6'cdDown'#7'Command'#2#9#9'MoveCaret'#8#6'Option'#2#0#8'Pr'
|
||||
+'iority'#2#0#0#0#13'Lines.Strings'#1#6#12'program new;'#6#5'begin'#6#4'end.'
|
||||
+#0#21'BracketHighlightStyle'#7#8'sbhsBoth'#8'OnChange'#7#13'SynEditChange'#16
|
||||
+'OnProcessCommand'#7#21'SynEditProcessCommand'#19'OnSpecialLineColors'#7#24
|
||||
+'SynEditSpecialLineColors'#0#18'TSynGutterPartList'#0#0#15'TSynGutterMarks'#0
|
||||
+#5'Width'#2#23#0#0#20'TSynGutterLineNumber'#0#5'Width'#2#17#12'MouseActions'
|
||||
+#14#0#21'MarkupInfo.Background'#7#9'clBtnFace'#21'MarkupInfo.Foreground'#7#6
|
||||
+'clNone'#10'DigitCount'#2#2#30'ShowOnlyLineNumbersMultiplesOf'#2#1#9'ZeroSta'
|
||||
+'rt'#8#12'LeadingZeros'#8#0#0#17'TSynGutterChanges'#0#5'Width'#2#4#13'Modifi'
|
||||
+'edColor'#4#252#233#0#0#10'SavedColor'#7#7'clGreen'#0#0#19'TSynGutterSeparat'
|
||||
+'or'#0#5'Width'#2#2#0#0#21'TSynGutterCodeFolding'#0#12'MouseActions'#14#1#5
|
||||
+'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#7'mbRight'#10'ClickCount'#7#8'ccS'
|
||||
+'ingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2#16#9'MoveCaret'#8#6'Option'#2#0#8
|
||||
+'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#7'ssShift'#0#6'Button'#7#8
|
||||
+'mbMiddle'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#14
|
||||
,#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#7'ssShift'#0#9
|
||||
+'ShiftMask'#11#7'ssShift'#0#6'Button'#7#8'mbMiddle'#10'ClickCount'#7#5'ccAny'
|
||||
+#8'ClickDir'#7#6'cdDown'#7'Command'#2#14#9'MoveCaret'#8#6'Option'#2#1#8'Prio'
|
||||
+'rity'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'Clic'
|
||||
+'kCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#0#9'MoveCaret'#8#6
|
||||
+'Option'#2#0#8'Priority'#2#0#0#0#21'MarkupInfo.Background'#7#6'clNone'#21'Ma'
|
||||
+'rkupInfo.Foreground'#7#6'clGray'#20'MouseActionsExpanded'#14#1#5'Shift'#11#0
|
||||
+#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDi'
|
||||
+'r'#7#6'cdDown'#7'Command'#2#14#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0
|
||||
+#0#0#21'MouseActionsCollapsed'#14#1#5'Shift'#11#6'ssCtrl'#0#9'ShiftMask'#11#6
|
||||
+'ssCtrl'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'c'
|
||||
+'dDown'#7'Command'#2#15#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'S'
|
||||
+'hift'#11#0#9'ShiftMask'#11#6'ssCtrl'#0#6'Button'#7#6'mbLeft'#10'ClickCount'
|
||||
+#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#15#9'MoveCaret'#8#6'Option'
|
||||
+#2#1#8'Priority'#2#0#0#0#0#0#0#0#17'TSynFreePascalSyn'#17'SynFreePascalSyn1'
|
||||
+#7'Enabled'#8#23'CommentAttri.Foreground'#7#6'clBlue'#18'CommentAttri.Style'
|
||||
+#11#6'fsBold'#0#26'IdentifierAttri.Foreground'#7#9'clDefault'#22'NumberAttri'
|
||||
+'.Foreground'#7#6'clNavy'#22'StringAttri.Foreground'#7#6'clBlue'#22'SymbolAt'
|
||||
+'tri.Foreground'#7#5'clRed'#25'DirectiveAttri.Foreground'#7#5'clRed'#20'Dire'
|
||||
+'ctiveAttri.Style'#11#6'fsBold'#0#12'CompilerMode'#7#9'pcmObjFPC'#14'NestedC'
|
||||
+'omments'#9#4'left'#3'@'#1#3'top'#2#16#0#0#0
|
||||
]);
|
169
Projects/SAMufasaGUI/framescript.pas
Normal file
169
Projects/SAMufasaGUI/framescript.pas
Normal file
@ -0,0 +1,169 @@
|
||||
unit framescript;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, LResources, Forms, SynHighlighterPas, SynEdit, mmlpsthread,ComCtrls, SynEditKeyCmds, LCLType, SynEditMarkupSpecialLine, Graphics;
|
||||
|
||||
type
|
||||
TScriptState = (ss_None,ss_Running,ss_Paused,ss_Stopping);
|
||||
{
|
||||
ss_None: Means the script either hasn't been run yet, or it has ended (Succesfully or terminated)
|
||||
ss_Running: Means the script is running as we speak :-)
|
||||
ss_Paused: Means the script is currently in pause modus.
|
||||
ss_Stopping: Means we've asked PS-Script politely to stop the script (next time we press the stop button we won't be that nice).
|
||||
}
|
||||
{ TScriptFrame }
|
||||
|
||||
TScriptFrame = class(TFrame)
|
||||
SynEdit: TSynEdit;
|
||||
SynFreePascalSyn1: TSynFreePascalSyn;
|
||||
procedure SynEditChange(Sender: TObject);
|
||||
procedure SynEditProcessCommand(Sender: TObject;
|
||||
var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer);
|
||||
procedure SynEditSpecialLineColors(Sender: TObject; Line: integer;
|
||||
var Special: boolean; var FG, BG: TColor);
|
||||
|
||||
private
|
||||
OwnerPage : TPageControl;
|
||||
OwnerSheet : TTabSheet;//The owner TTabsheet -> For title setting
|
||||
public
|
||||
ScriptErrorLine : integer; //Highlight the error line!
|
||||
ScriptFile : string;//The path to the saved/opened file currently in the SynEdit
|
||||
StartText : string;//The text synedit holds upon start/open/save
|
||||
ScriptName : string;//The name of the currently opened/saved file.
|
||||
ScriptDefault : string;//The default script e.g. program new; begin end.
|
||||
ScriptChanged : boolean;//We need this for that little * (edited star).
|
||||
ScriptThread : TMMLPSThread;//Just one thread for now..
|
||||
FScriptState : TScriptState;//Stores the ScriptState, if you want the Run/Pause/Start buttons to change accordingly, acces through Form1
|
||||
procedure undo;
|
||||
procedure redo;
|
||||
procedure ErrorThread(ErrorAtLine,ErrorPosition : integer; ErrorStr : string; ErrorType : TErrorType);
|
||||
procedure MakeActiveScriptFrame;
|
||||
procedure ScriptThreadTerminate(Sender: TObject);
|
||||
constructor Create(TheOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
{ public declarations }
|
||||
end;
|
||||
|
||||
implementation
|
||||
uses
|
||||
TestUnit;
|
||||
|
||||
{ TScriptFrame }
|
||||
|
||||
procedure TScriptFrame.SynEditChange(Sender: TObject);
|
||||
begin
|
||||
ScriptErrorLine:= -1;
|
||||
if not ScriptChanged then
|
||||
begin;
|
||||
ScriptChanged:= True;
|
||||
Form1.Caption:= Format(WindowTitle,[ScriptName + '*']);
|
||||
OwnerSheet.Caption:=ScriptName + '*';
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TScriptFrame.SynEditProcessCommand(Sender: TObject;
|
||||
var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer);
|
||||
begin
|
||||
if Command = ecUndo then
|
||||
begin;
|
||||
Command:= ecNone;
|
||||
Self.Undo;
|
||||
end else
|
||||
if Command = ecRedo then
|
||||
begin;
|
||||
Command := ecNone;
|
||||
Self.Redo;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TScriptFrame.SynEditSpecialLineColors(Sender: TObject;
|
||||
Line: integer; var Special: boolean; var FG, BG: TColor);
|
||||
begin
|
||||
if line = ScriptErrorLine then
|
||||
begin;
|
||||
Special := true;
|
||||
BG := $50a0ff;
|
||||
FG := 0;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TScriptFrame.undo;
|
||||
begin
|
||||
SynEdit.Undo;
|
||||
if ScriptChanged then
|
||||
if SynEdit.Lines.Text = StartText then
|
||||
begin;
|
||||
Form1.Caption:= format(WindowTitle,[ScriptName]);
|
||||
OwnerSheet.Caption:= ScriptName;
|
||||
ScriptChanged := false;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TScriptFrame.redo;
|
||||
begin
|
||||
SynEdit.Redo;
|
||||
if ScriptChanged then
|
||||
if SynEdit.Lines.Text = StartText then
|
||||
begin;
|
||||
Form1.Caption:= format(WindowTitle,[ScriptName]);
|
||||
OwnerSheet.Caption := ScriptName;
|
||||
ScriptChanged := false;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TScriptFrame.ErrorThread(ErrorAtLine, ErrorPosition: integer;
|
||||
ErrorStr: string; ErrorType: TErrorType);
|
||||
begin
|
||||
MakeActiveScriptFrame;
|
||||
ScriptErrorLine:= ErrorAtLine;
|
||||
SynEdit.SelStart:= ErrorPosition;
|
||||
Writeln(Format('Error: %s at line %d',[errorstr,erroratline]));
|
||||
SynEdit.Invalidate;
|
||||
end;
|
||||
|
||||
procedure TScriptFrame.MakeActiveScriptFrame;
|
||||
var
|
||||
i : integer;
|
||||
begin
|
||||
for i := 0 to OwnerPage.PageCount - 1 do
|
||||
if OwnerPage.Pages[i] = OwnerSheet then
|
||||
begin;
|
||||
OwnerPage.TabIndex := i;
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TScriptFrame.ScriptThreadTerminate(Sender: TObject);
|
||||
begin
|
||||
FScriptState:= ss_None;
|
||||
Form1.RefreshTab;
|
||||
end;
|
||||
|
||||
constructor TScriptFrame.Create(TheOwner: TComponent);
|
||||
begin
|
||||
inherited Create(TheOwner);
|
||||
OwnerSheet := TTabSheet(TheOwner);
|
||||
OwnerPage := TPageControl(OwnerSheet.Owner);
|
||||
StartText:= SynEdit.Lines.text;
|
||||
ScriptDefault:= StartText;
|
||||
ScriptName:= 'Untitled';
|
||||
ScriptChanged := false;
|
||||
FScriptState:= ss_None;
|
||||
ScriptErrorLine:= -1;
|
||||
OwnerSheet.Caption:= ScriptName;
|
||||
end;
|
||||
|
||||
destructor TScriptFrame.Destroy;
|
||||
begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
initialization
|
||||
{$I framescript.lrs}
|
||||
|
||||
end.
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -32,7 +32,7 @@ uses
|
||||
Interfaces, // this includes the LCL widgetset
|
||||
Forms, LResources, Window, files, MufasaTypes, Client, TestUnit, finder,
|
||||
mmlpsthread, bitmaps, colour_conv, plugins, DTM, colourpicker,
|
||||
windowselector, dtmutil, mmath, ocr;
|
||||
windowselector, dtmutil, mmath, ocr, web;
|
||||
|
||||
{$IFDEF WINDOWS}{$R project1.rc}{$ENDIF}
|
||||
|
||||
|
@ -1,9 +1,8 @@
|
||||
object Form1: TForm1
|
||||
Left = 457
|
||||
Left = 251
|
||||
Height = 553
|
||||
Top = 155
|
||||
Top = 340
|
||||
Width = 723
|
||||
ActiveControl = PanelSynedit
|
||||
Caption = 'Mufasa v2'
|
||||
ClientHeight = 533
|
||||
ClientWidth = 723
|
||||
@ -61,16 +60,16 @@ object Form1: TForm1
|
||||
Hint = 'Open a new tab'
|
||||
Top = 2
|
||||
Caption = 'TB_NewTab'
|
||||
Enabled = False
|
||||
ImageIndex = 15
|
||||
OnClick = ButtonNewTabClick
|
||||
end
|
||||
object TB_CloseTab: TToolButton
|
||||
Left = 168
|
||||
Hint = 'Close this tab'
|
||||
Top = 2
|
||||
Caption = 'TB_CloseTab'
|
||||
Enabled = False
|
||||
ImageIndex = 16
|
||||
OnClick = ButtonCloseTabClick
|
||||
end
|
||||
object ToolButton4: TToolButton
|
||||
Left = 191
|
||||
@ -186,716 +185,6 @@ object Form1: TForm1
|
||||
end>
|
||||
SimplePanel = False
|
||||
end
|
||||
object PanelSynedit: TPanel
|
||||
Left = 0
|
||||
Height = 331
|
||||
Top = 24
|
||||
Width = 723
|
||||
Align = alClient
|
||||
ClientHeight = 331
|
||||
ClientWidth = 723
|
||||
TabOrder = 2
|
||||
object SynEdit1: TSynEdit
|
||||
Left = 1
|
||||
Height = 329
|
||||
Top = 1
|
||||
Width = 721
|
||||
Align = alClient
|
||||
Font.Height = -13
|
||||
Font.Name = 'Courier New'
|
||||
Font.Pitch = fpFixed
|
||||
Font.Quality = fqNonAntialiased
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
BookMarkOptions.OnChange = nil
|
||||
Gutter.Width = 57
|
||||
Gutter.MouseActions = <
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbLeft
|
||||
ClickCount = ccAny
|
||||
ClickDir = cdDown
|
||||
Command = 13
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbRight
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdUp
|
||||
Command = 12
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end>
|
||||
Highlighter = SynFreePascalSyn1
|
||||
Keystrokes = <
|
||||
item
|
||||
Command = ecUp
|
||||
ShortCut = 38
|
||||
end
|
||||
item
|
||||
Command = ecSelUp
|
||||
ShortCut = 8230
|
||||
end
|
||||
item
|
||||
Command = ecScrollUp
|
||||
ShortCut = 16422
|
||||
end
|
||||
item
|
||||
Command = ecDown
|
||||
ShortCut = 40
|
||||
end
|
||||
item
|
||||
Command = ecSelDown
|
||||
ShortCut = 8232
|
||||
end
|
||||
item
|
||||
Command = ecScrollDown
|
||||
ShortCut = 16424
|
||||
end
|
||||
item
|
||||
Command = ecLeft
|
||||
ShortCut = 37
|
||||
end
|
||||
item
|
||||
Command = ecSelLeft
|
||||
ShortCut = 8229
|
||||
end
|
||||
item
|
||||
Command = ecWordLeft
|
||||
ShortCut = 16421
|
||||
end
|
||||
item
|
||||
Command = ecSelWordLeft
|
||||
ShortCut = 24613
|
||||
end
|
||||
item
|
||||
Command = ecRight
|
||||
ShortCut = 39
|
||||
end
|
||||
item
|
||||
Command = ecSelRight
|
||||
ShortCut = 8231
|
||||
end
|
||||
item
|
||||
Command = ecWordRight
|
||||
ShortCut = 16423
|
||||
end
|
||||
item
|
||||
Command = ecSelWordRight
|
||||
ShortCut = 24615
|
||||
end
|
||||
item
|
||||
Command = ecPageDown
|
||||
ShortCut = 34
|
||||
end
|
||||
item
|
||||
Command = ecSelPageDown
|
||||
ShortCut = 8226
|
||||
end
|
||||
item
|
||||
Command = ecPageBottom
|
||||
ShortCut = 16418
|
||||
end
|
||||
item
|
||||
Command = ecSelPageBottom
|
||||
ShortCut = 24610
|
||||
end
|
||||
item
|
||||
Command = ecPageUp
|
||||
ShortCut = 33
|
||||
end
|
||||
item
|
||||
Command = ecSelPageUp
|
||||
ShortCut = 8225
|
||||
end
|
||||
item
|
||||
Command = ecPageTop
|
||||
ShortCut = 16417
|
||||
end
|
||||
item
|
||||
Command = ecSelPageTop
|
||||
ShortCut = 24609
|
||||
end
|
||||
item
|
||||
Command = ecLineStart
|
||||
ShortCut = 36
|
||||
end
|
||||
item
|
||||
Command = ecSelLineStart
|
||||
ShortCut = 8228
|
||||
end
|
||||
item
|
||||
Command = ecEditorTop
|
||||
ShortCut = 16420
|
||||
end
|
||||
item
|
||||
Command = ecSelEditorTop
|
||||
ShortCut = 24612
|
||||
end
|
||||
item
|
||||
Command = ecLineEnd
|
||||
ShortCut = 35
|
||||
end
|
||||
item
|
||||
Command = ecSelLineEnd
|
||||
ShortCut = 8227
|
||||
end
|
||||
item
|
||||
Command = ecEditorBottom
|
||||
ShortCut = 16419
|
||||
end
|
||||
item
|
||||
Command = ecSelEditorBottom
|
||||
ShortCut = 24611
|
||||
end
|
||||
item
|
||||
Command = ecToggleMode
|
||||
ShortCut = 45
|
||||
end
|
||||
item
|
||||
Command = ecCopy
|
||||
ShortCut = 16429
|
||||
end
|
||||
item
|
||||
Command = ecPaste
|
||||
ShortCut = 8237
|
||||
end
|
||||
item
|
||||
Command = ecDeleteChar
|
||||
ShortCut = 46
|
||||
end
|
||||
item
|
||||
Command = ecCut
|
||||
ShortCut = 8238
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLastChar
|
||||
ShortCut = 8
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLastChar
|
||||
ShortCut = 8200
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLastWord
|
||||
ShortCut = 16392
|
||||
end
|
||||
item
|
||||
Command = ecUndo
|
||||
ShortCut = 32776
|
||||
end
|
||||
item
|
||||
Command = ecRedo
|
||||
ShortCut = 40968
|
||||
end
|
||||
item
|
||||
Command = ecLineBreak
|
||||
ShortCut = 13
|
||||
end
|
||||
item
|
||||
Command = ecSelectAll
|
||||
ShortCut = 16449
|
||||
end
|
||||
item
|
||||
Command = ecCopy
|
||||
ShortCut = 16451
|
||||
end
|
||||
item
|
||||
Command = ecBlockIndent
|
||||
ShortCut = 24649
|
||||
end
|
||||
item
|
||||
Command = ecLineBreak
|
||||
ShortCut = 16461
|
||||
end
|
||||
item
|
||||
Command = ecInsertLine
|
||||
ShortCut = 16462
|
||||
end
|
||||
item
|
||||
Command = ecDeleteWord
|
||||
ShortCut = 16468
|
||||
end
|
||||
item
|
||||
Command = ecBlockUnindent
|
||||
ShortCut = 24661
|
||||
end
|
||||
item
|
||||
Command = ecPaste
|
||||
ShortCut = 16470
|
||||
end
|
||||
item
|
||||
Command = ecCut
|
||||
ShortCut = 16472
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLine
|
||||
ShortCut = 16473
|
||||
end
|
||||
item
|
||||
Command = ecDeleteEOL
|
||||
ShortCut = 24665
|
||||
end
|
||||
item
|
||||
Command = ecUndo
|
||||
ShortCut = 16474
|
||||
end
|
||||
item
|
||||
Command = ecRedo
|
||||
ShortCut = 24666
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker0
|
||||
ShortCut = 16432
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker1
|
||||
ShortCut = 16433
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker2
|
||||
ShortCut = 16434
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker3
|
||||
ShortCut = 16435
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker4
|
||||
ShortCut = 16436
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker5
|
||||
ShortCut = 16437
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker6
|
||||
ShortCut = 16438
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker7
|
||||
ShortCut = 16439
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker8
|
||||
ShortCut = 16440
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker9
|
||||
ShortCut = 16441
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker0
|
||||
ShortCut = 24624
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker1
|
||||
ShortCut = 24625
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker2
|
||||
ShortCut = 24626
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker3
|
||||
ShortCut = 24627
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker4
|
||||
ShortCut = 24628
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker5
|
||||
ShortCut = 24629
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker6
|
||||
ShortCut = 24630
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker7
|
||||
ShortCut = 24631
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker8
|
||||
ShortCut = 24632
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker9
|
||||
ShortCut = 24633
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel1
|
||||
ShortCut = 41009
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel2
|
||||
ShortCut = 41010
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel1
|
||||
ShortCut = 41011
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel1
|
||||
ShortCut = 41012
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel1
|
||||
ShortCut = 41013
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel6
|
||||
ShortCut = 41014
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel7
|
||||
ShortCut = 41015
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel8
|
||||
ShortCut = 41016
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel9
|
||||
ShortCut = 41017
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel0
|
||||
ShortCut = 41008
|
||||
end
|
||||
item
|
||||
Command = EcFoldCurrent
|
||||
ShortCut = 41005
|
||||
end
|
||||
item
|
||||
Command = EcUnFoldCurrent
|
||||
ShortCut = 41003
|
||||
end
|
||||
item
|
||||
Command = EcToggleMarkupWord
|
||||
ShortCut = 32845
|
||||
end
|
||||
item
|
||||
Command = ecNormalSelect
|
||||
ShortCut = 24654
|
||||
end
|
||||
item
|
||||
Command = ecColumnSelect
|
||||
ShortCut = 24643
|
||||
end
|
||||
item
|
||||
Command = ecLineSelect
|
||||
ShortCut = 24652
|
||||
end
|
||||
item
|
||||
Command = ecTab
|
||||
ShortCut = 9
|
||||
end
|
||||
item
|
||||
Command = ecShiftTab
|
||||
ShortCut = 8201
|
||||
end
|
||||
item
|
||||
Command = ecMatchBracket
|
||||
ShortCut = 24642
|
||||
end
|
||||
item
|
||||
Command = ecColSelUp
|
||||
ShortCut = 40998
|
||||
end
|
||||
item
|
||||
Command = ecColSelDown
|
||||
ShortCut = 41000
|
||||
end
|
||||
item
|
||||
Command = ecColSelLeft
|
||||
ShortCut = 40997
|
||||
end
|
||||
item
|
||||
Command = ecColSelRight
|
||||
ShortCut = 40999
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageDown
|
||||
ShortCut = 40994
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageBottom
|
||||
ShortCut = 57378
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageUp
|
||||
ShortCut = 40993
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageTop
|
||||
ShortCut = 57377
|
||||
end
|
||||
item
|
||||
Command = ecColSelLineStart
|
||||
ShortCut = 40996
|
||||
end
|
||||
item
|
||||
Command = ecColSelLineEnd
|
||||
ShortCut = 40995
|
||||
end
|
||||
item
|
||||
Command = ecColSelEditorTop
|
||||
ShortCut = 57380
|
||||
end
|
||||
item
|
||||
Command = ecColSelEditorBottom
|
||||
ShortCut = 57379
|
||||
end>
|
||||
MouseActions = <
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = [ssShift, ssAlt]
|
||||
Button = mbLeft
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdDown
|
||||
Command = 1
|
||||
MoveCaret = True
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = [ssShift]
|
||||
ShiftMask = [ssShift, ssAlt]
|
||||
Button = mbLeft
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdDown
|
||||
Command = 1
|
||||
MoveCaret = True
|
||||
Option = 1
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = [ssAlt]
|
||||
ShiftMask = [ssShift, ssAlt]
|
||||
Button = mbLeft
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdDown
|
||||
Command = 3
|
||||
MoveCaret = True
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = [ssShift, ssAlt]
|
||||
ShiftMask = [ssShift, ssAlt]
|
||||
Button = mbLeft
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdDown
|
||||
Command = 3
|
||||
MoveCaret = True
|
||||
Option = 1
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbRight
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdUp
|
||||
Command = 12
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbLeft
|
||||
ClickCount = ccDouble
|
||||
ClickDir = cdDown
|
||||
Command = 6
|
||||
MoveCaret = True
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbLeft
|
||||
ClickCount = ccTriple
|
||||
ClickDir = cdDown
|
||||
Command = 7
|
||||
MoveCaret = True
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbLeft
|
||||
ClickCount = ccQuad
|
||||
ClickDir = cdDown
|
||||
Command = 8
|
||||
MoveCaret = True
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbMiddle
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdDown
|
||||
Command = 10
|
||||
MoveCaret = True
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = [ssCtrl]
|
||||
ShiftMask = [ssShift, ssAlt, ssCtrl]
|
||||
Button = mbLeft
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdUp
|
||||
Command = 11
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end>
|
||||
MouseSelActions = <
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbLeft
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdDown
|
||||
Command = 9
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end>
|
||||
Lines.Strings = (
|
||||
'program new;'
|
||||
'begin'
|
||||
'end.'
|
||||
)
|
||||
BracketHighlightStyle = sbhsBoth
|
||||
OnChange = OnSyneditChange
|
||||
OnProcessCommand = SynEditProcessCommand
|
||||
OnSpecialLineColors = SynEdit1SpecialLineColors
|
||||
object TSynGutterPartList
|
||||
object TSynGutterMarks
|
||||
Width = 23
|
||||
end
|
||||
object TSynGutterLineNumber
|
||||
Width = 17
|
||||
MouseActions = <>
|
||||
MarkupInfo.Background = clBtnFace
|
||||
MarkupInfo.Foreground = clNone
|
||||
DigitCount = 2
|
||||
ShowOnlyLineNumbersMultiplesOf = 1
|
||||
ZeroStart = False
|
||||
LeadingZeros = False
|
||||
end
|
||||
object TSynGutterChanges
|
||||
Width = 4
|
||||
ModifiedColor = 59900
|
||||
SavedColor = clGreen
|
||||
end
|
||||
object TSynGutterSeparator
|
||||
Width = 2
|
||||
end
|
||||
object TSynGutterCodeFolding
|
||||
MouseActions = <
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbRight
|
||||
ClickCount = ccSingle
|
||||
ClickDir = cdUp
|
||||
Command = 16
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = [ssShift]
|
||||
Button = mbMiddle
|
||||
ClickCount = ccAny
|
||||
ClickDir = cdDown
|
||||
Command = 14
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = [ssShift]
|
||||
ShiftMask = [ssShift]
|
||||
Button = mbMiddle
|
||||
ClickCount = ccAny
|
||||
ClickDir = cdDown
|
||||
Command = 14
|
||||
MoveCaret = False
|
||||
Option = 1
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbLeft
|
||||
ClickCount = ccAny
|
||||
ClickDir = cdDown
|
||||
Command = 0
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end>
|
||||
MarkupInfo.Background = clNone
|
||||
MarkupInfo.Foreground = clGray
|
||||
MouseActionsExpanded = <
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = []
|
||||
Button = mbLeft
|
||||
ClickCount = ccAny
|
||||
ClickDir = cdDown
|
||||
Command = 14
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end>
|
||||
MouseActionsCollapsed = <
|
||||
item
|
||||
Shift = [ssCtrl]
|
||||
ShiftMask = [ssCtrl]
|
||||
Button = mbLeft
|
||||
ClickCount = ccAny
|
||||
ClickDir = cdDown
|
||||
Command = 15
|
||||
MoveCaret = False
|
||||
Option = 0
|
||||
Priority = 0
|
||||
end
|
||||
item
|
||||
Shift = []
|
||||
ShiftMask = [ssCtrl]
|
||||
Button = mbLeft
|
||||
ClickCount = ccAny
|
||||
ClickDir = cdDown
|
||||
Command = 15
|
||||
MoveCaret = False
|
||||
Option = 1
|
||||
Priority = 0
|
||||
end>
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
object PanelMemo: TPanel
|
||||
Left = 0
|
||||
Height = 150
|
||||
@ -905,7 +194,7 @@ object Form1: TForm1
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
ClientHeight = 150
|
||||
ClientWidth = 723
|
||||
TabOrder = 3
|
||||
TabOrder = 2
|
||||
object Memo1: TMemo
|
||||
Left = 1
|
||||
Height = 148
|
||||
@ -926,6 +215,15 @@ object Form1: TForm1
|
||||
Align = alBottom
|
||||
ResizeAnchor = akBottom
|
||||
end
|
||||
object PageControl1: TPageControl
|
||||
Left = 0
|
||||
Height = 331
|
||||
Top = 24
|
||||
Width = 723
|
||||
Align = alClient
|
||||
TabOrder = 4
|
||||
OnChange = PageControl1Change
|
||||
end
|
||||
object MainMenu1: TMainMenu
|
||||
left = 560
|
||||
object MenuFile: TMenuItem
|
||||
@ -2053,20 +1351,6 @@ object Form1: TForm1
|
||||
OnClick = NoTray
|
||||
left = 464
|
||||
end
|
||||
object SynFreePascalSyn1: TSynFreePascalSyn
|
||||
Enabled = False
|
||||
CommentAttri.Foreground = clBlue
|
||||
CommentAttri.Style = [fsBold]
|
||||
IdentifierAttri.Foreground = clDefault
|
||||
NumberAttri.Foreground = clNavy
|
||||
StringAttri.Foreground = clBlue
|
||||
SymbolAttri.Foreground = clRed
|
||||
DirectiveAttri.Foreground = clRed
|
||||
DirectiveAttri.Style = [fsBold]
|
||||
CompilerMode = pcmObjFPC
|
||||
NestedComments = True
|
||||
left = 424
|
||||
end
|
||||
object TrayPopup: TPopupMenu
|
||||
left = 600
|
||||
object MenuItemShow: TMenuItem
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -35,19 +35,27 @@ uses
|
||||
MufasaTypes,
|
||||
mmlpsthread,
|
||||
window, // for the comp picker and selector
|
||||
colourpicker,
|
||||
colourpicker, framescript,
|
||||
windowselector,
|
||||
lcltype
|
||||
, SynEditKeyCmds,SynEditHighlighter, SynEditMarkupSpecialLine, SynEditMiscClasses;
|
||||
|
||||
type
|
||||
TScriptState = (ss_None,ss_Running,ss_Paused,ss_Stopping);
|
||||
{
|
||||
ss_None: Means the script either hasn't been run yet, or it has ended (Succesfully or terminated)
|
||||
ss_Running: Means the script is running as we speak :-)
|
||||
ss_Paused: Means the script is currently in pause modus.
|
||||
ss_Stopping: Means we've asked PS-Script politely to stop the script (next time we press the stop button we won't be that nice).
|
||||
}
|
||||
|
||||
{ TMufasaTab }
|
||||
|
||||
TMufasaTab = class(Tobject)
|
||||
private
|
||||
PageCtrl : TPageControl;
|
||||
public
|
||||
TabSheet : TTabsheet;
|
||||
ScriptFrame : TScriptFrame;
|
||||
procedure Clear;//This will 'reset' the ScriptFrame
|
||||
constructor Create(Page : TPageControl);
|
||||
destructor Destroy; override;
|
||||
end;
|
||||
|
||||
// Tab
|
||||
{ TForm1 }
|
||||
|
||||
TForm1 = class(TForm)
|
||||
@ -70,13 +78,11 @@ type
|
||||
MainMenu1: TMainMenu;
|
||||
MenuItemScript: TMenuItem;
|
||||
MenuItemRun: TMenuItem;
|
||||
PanelSynedit: TPanel;
|
||||
PageControl1: TPageControl;
|
||||
PanelMemo: TPanel;
|
||||
SplitterMemoSynedit: TSplitter;
|
||||
TrayPopup: TPopupMenu;
|
||||
StatusBar: TStatusBar;
|
||||
SynEdit1: TSynEdit;
|
||||
SynFreePascalSyn1: TSynFreePascalSyn;
|
||||
ToolBar1: TToolBar;
|
||||
TB_Run: TToolButton;
|
||||
TB_Pause: TToolButton;
|
||||
@ -97,14 +103,14 @@ type
|
||||
ToolButton8: TToolButton;
|
||||
TB_Convert: TToolButton;
|
||||
MTrayIcon: TTrayIcon;
|
||||
procedure ButtonDragClick(Sender: TObject);
|
||||
procedure ButtonCloseTabClick(Sender: TObject);
|
||||
procedure ButtonNewClick(Sender: TObject);
|
||||
procedure ButtonNewTabClick(Sender: TObject);
|
||||
procedure ButtonOpenClick(Sender: TObject);
|
||||
procedure ButtonPauseClick(Sender: TObject);
|
||||
procedure ButtonRunClick(Sender: TObject);
|
||||
procedure ButtonSaveClick(Sender: TObject);
|
||||
procedure ButtonClearClick(Sender: TObject);
|
||||
procedure ErrorThread(ErrorAtLine,ErrorPosition : integer; ErrorStr : string; ErrorType : TErrorType);
|
||||
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormDestroy(Sender: TObject);
|
||||
@ -122,35 +128,26 @@ type
|
||||
procedure MenuItemShowClick(Sender: TObject);
|
||||
procedure MenuItemStopClick(Sender: TObject);
|
||||
procedure OnLinePSScript(Sender: TObject);
|
||||
procedure OnSyneditChange(Sender: TObject);
|
||||
procedure ButtonPickClick(Sender: TObject);
|
||||
procedure MenuItemRedoClick(Sender: TObject);
|
||||
procedure ButtonSelectorDown(Sender: TObject; Button: TMouseButton;
|
||||
Shift: TShiftState; X, Y: Integer);
|
||||
procedure NoTray(Sender: TObject);
|
||||
procedure ScriptThreadTerminate(Sender: TObject);
|
||||
procedure SynEdit1SpecialLineColors(Sender: TObject; Line: integer;
|
||||
var Special: boolean; var FG, BG: TColor);
|
||||
procedure SynEditProcessCommand(Sender: TObject;
|
||||
var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer);
|
||||
procedure PageControl1Change(Sender: TObject);
|
||||
procedure ButtonStopClick(Sender: TObject);
|
||||
procedure ButtonTrayClick(Sender: TObject);
|
||||
procedure MenuItemUndoClick(Sender: TObject);
|
||||
private
|
||||
ScriptErrorLine : integer; //Highlight the error line!
|
||||
ScriptFile : string;//The path to the saved/opened file currently in the SynEdit
|
||||
StartText : string;//The text synedit holds upon start/open/save
|
||||
ScriptName : string;//The name of the currently opened/saved file.
|
||||
ScriptDefault : string;//The default script e.g. program new; begin end.
|
||||
ScriptChanged : boolean;//We need this for that little * (edited star).
|
||||
ScriptThread : TMMLPSThread;//Just one thread for now..
|
||||
FScriptState : TScriptState;//Defines the "state" of the current script. (Acces through property for form updates).
|
||||
function GetScriptState: TScriptState;
|
||||
procedure SetScriptState(const State: TScriptState);
|
||||
public
|
||||
CurrScript : TScriptFrame; //The current scriptframe
|
||||
CurrTab : TMufasaTab; //The current TMufasaTab
|
||||
Tabs : TList;
|
||||
Window: TMWindow;
|
||||
Picker: TMColorPicker;
|
||||
Selector: TMWindowSelector;
|
||||
property ScriptState : TScriptState read FScriptState write SetScriptState;
|
||||
property ScriptState : TScriptState read GetScriptState write SetScriptState;
|
||||
procedure SafeCallThread;
|
||||
function OpenScript : boolean;
|
||||
function SaveCurrentScript : boolean;
|
||||
@ -160,11 +157,16 @@ type
|
||||
procedure RunScript;
|
||||
procedure PauseScript;
|
||||
procedure StopScript;
|
||||
procedure undo;
|
||||
procedure redo;
|
||||
procedure Cut;
|
||||
procedure Paste;
|
||||
procedure AddTab;
|
||||
function DeleteTab( TabIndex : integer; CloseLast : boolean) : boolean;
|
||||
procedure ClearTab( TabIndex : integer);
|
||||
procedure RefreshTab;//Refreshes all the form items that depend on the Script (Panels, title etc.)
|
||||
end;
|
||||
{$ifdef mswindows}
|
||||
procedure Writeln( S : String);
|
||||
{$endif}
|
||||
const
|
||||
WindowTitle = 'Mufasa v2 - %s';//Title, where %s = the place of the filename.
|
||||
Panel_State = 0;
|
||||
@ -190,108 +192,154 @@ end;
|
||||
|
||||
procedure TForm1.RunScript;
|
||||
begin
|
||||
if ScriptState = ss_Paused then
|
||||
begin;
|
||||
with CurrScript do
|
||||
begin
|
||||
if ScriptState = ss_Paused then
|
||||
begin;
|
||||
ScriptThread.Resume;
|
||||
ScriptState := ss_Running;
|
||||
Exit;
|
||||
end else
|
||||
if ScriptState <> ss_None then
|
||||
begin;
|
||||
Writeln('The script hasn''t stopped yet, so we cannot start a new one.');
|
||||
exit;
|
||||
end;
|
||||
CurrentSyncInfo.SyncMethod:= @Self.SafeCallThread;
|
||||
ScriptThread := TMMLPSThread.Create(True,@CurrentSyncInfo);
|
||||
ScriptThread.SetPSScript(CurrScript.SynEdit.Lines.Text);
|
||||
ScriptThread.SetDebug(Self.Memo1);
|
||||
ScriptThread.OnError:=@ErrorThread;
|
||||
if ScriptFile <> '' then
|
||||
ScriptThread.SetPaths( ExtractFileDir(ScriptFile) + DS,IncludeTrailingPathDelimiter(ExpandFileName(MainDir +DS + '..' + DS + '..' + ds)))
|
||||
else
|
||||
ScriptThread.SetPaths('', IncludeTrailingPathDelimiter(ExpandFileName(MainDir +DS + '..' + DS + '..' + ds)));
|
||||
|
||||
// This doesn't actually set the Client's MWindow to the passed window, it
|
||||
// only copies the current set window handle.
|
||||
ScriptThread.Client.MWindow.SetWindow(Self.Window);
|
||||
|
||||
ScriptThread.OnTerminate:=@ScriptThreadTerminate;
|
||||
ScriptState:= ss_Running;
|
||||
//Lets run it!
|
||||
ScriptThread.Resume;
|
||||
ScriptState := ss_Running;
|
||||
Exit;
|
||||
end else
|
||||
if ScriptState <> ss_None then
|
||||
begin;
|
||||
Writeln('The script hasn''t stopped yet, so we cannot start a new one.');
|
||||
exit;
|
||||
end;
|
||||
CurrentSyncInfo.SyncMethod:= @Self.SafeCallThread;
|
||||
ScriptThread := TMMLPSThread.Create(True,@CurrentSyncInfo);
|
||||
ScriptThread.SetPSScript(Self.SynEdit1.Lines.Text);
|
||||
ScriptThread.SetDebug(Self.Memo1);
|
||||
ScriptThread.OnError:=@ErrorThread;
|
||||
if ScriptFile <> '' then
|
||||
ScriptThread.SetPaths( ExtractFileDir(ScriptFile) + DS,IncludeTrailingPathDelimiter(ExpandFileName(MainDir +DS + '..' + DS + '..' + ds)))
|
||||
else
|
||||
ScriptThread.SetPaths('', IncludeTrailingPathDelimiter(ExpandFileName(MainDir +DS + '..' + DS + '..' + ds)));
|
||||
|
||||
// This doesn't actually set the Client's MWindow to the passed window, it
|
||||
// only copies the current set window handle.
|
||||
ScriptThread.Client.MWindow.SetWindow(Self.Window);
|
||||
|
||||
ScriptThread.OnTerminate:=@ScriptThreadTerminate;
|
||||
ScriptState:= ss_Running;
|
||||
//Lets run it!
|
||||
ScriptThread.Resume;
|
||||
end;
|
||||
|
||||
procedure TForm1.PauseScript;
|
||||
begin
|
||||
if ScriptState = ss_Running then
|
||||
with CurrScript do
|
||||
begin;
|
||||
{$ifdef MSWindows}
|
||||
ScriptThread.Suspended:= True;
|
||||
ScriptState:= ss_Paused;
|
||||
{$else}
|
||||
Writeln('Linux users are screwed, no pause button for u!');
|
||||
{$endif}
|
||||
end else if ScriptState = ss_Paused then
|
||||
begin;
|
||||
ScriptThread.Resume;
|
||||
ScriptState := ss_Running;
|
||||
if ScriptState = ss_Running then
|
||||
begin;
|
||||
{$ifdef MSWindows}
|
||||
ScriptThread.Suspended:= True;
|
||||
ScriptState:= ss_Paused;
|
||||
{$else}
|
||||
Writeln('Linux users are screwed, no pause button for u!');
|
||||
{$endif}
|
||||
end else if ScriptState = ss_Paused then
|
||||
begin;
|
||||
ScriptThread.Resume;
|
||||
ScriptState := ss_Running;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TForm1.StopScript;
|
||||
begin
|
||||
case ScriptState of
|
||||
ss_Stopping:
|
||||
begin //Terminate the thread the tough way.
|
||||
writeln('Terminating the Scriptthread');
|
||||
KillThread(ScriptThread.Handle);
|
||||
ScriptThread.Free;
|
||||
ScriptState := ss_None;
|
||||
end;
|
||||
ss_Running:
|
||||
begin
|
||||
ScriptThread.PSScript.Stop;
|
||||
ScriptState := ss_Stopping;
|
||||
end;
|
||||
ss_Paused:
|
||||
begin
|
||||
ScriptThread.Resume;
|
||||
ScriptThread.PSScript.Stop;
|
||||
ScriptState:= ss_Stopping;
|
||||
end;
|
||||
with CurrScript do
|
||||
begin;
|
||||
case ScriptState of
|
||||
ss_Stopping:
|
||||
begin //Terminate the thread the tough way.
|
||||
writeln('Terminating the Scriptthread');
|
||||
KillThread(ScriptThread.Handle);
|
||||
ScriptThread.Free;
|
||||
ScriptState := ss_None;
|
||||
end;
|
||||
ss_Running:
|
||||
begin
|
||||
ScriptThread.PSScript.Stop;
|
||||
ScriptState := ss_Stopping;
|
||||
end;
|
||||
ss_Paused:
|
||||
begin
|
||||
ScriptThread.Resume;
|
||||
ScriptThread.PSScript.Stop;
|
||||
ScriptState:= ss_Stopping;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TForm1.Undo;
|
||||
begin
|
||||
SynEdit1.Undo;
|
||||
if ScriptChanged then
|
||||
if SynEdit1.Lines.Text = StartText then
|
||||
begin;
|
||||
Self.Caption:= format(WindowTitle,[ScriptName]);
|
||||
ScriptChanged := false;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TForm1.Redo;
|
||||
begin
|
||||
SynEdit1.Redo;
|
||||
if ScriptChanged then
|
||||
if SynEdit1.Lines.Text = StartText then
|
||||
begin;
|
||||
Self.Caption:= format(WindowTitle,[ScriptName]);
|
||||
ScriptChanged := false;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TForm1.Cut;
|
||||
begin
|
||||
SynEdit1.CutToClipboard;
|
||||
CurrScript.SynEdit.CutToClipboard;
|
||||
end;
|
||||
|
||||
procedure TForm1.Paste;
|
||||
begin
|
||||
SynEdit1.PasteFromClipboard;
|
||||
CurrScript.SynEdit.PasteFromClipboard;
|
||||
end;
|
||||
|
||||
procedure TForm1.AddTab;
|
||||
var
|
||||
Tab : TMufasaTab;
|
||||
begin;
|
||||
Tab := TMufasaTab.Create(Self.PageControl1);
|
||||
Tabs.Add(Tab);
|
||||
PageControl1.TabIndex:= Tabs.Count - 1;
|
||||
RefreshTab;
|
||||
end;
|
||||
|
||||
function TForm1.DeleteTab(TabIndex: integer; CloseLast : boolean) : boolean;
|
||||
var
|
||||
Tab : TMufasaTab;
|
||||
begin
|
||||
PageControl1.TabIndex:= TabIndex;
|
||||
//ScriptFrame now is now correct ;-D
|
||||
result := CanExitOrOpen;
|
||||
if not result then
|
||||
exit;
|
||||
Tab := TMufasaTab(Tabs[TabIndex]);
|
||||
if (Tabs.Count = 1) and (not CloseLast) then
|
||||
Tab.Clear
|
||||
else
|
||||
begin;
|
||||
Tab.Free;
|
||||
Tabs.Delete(TabIndex);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TForm1.ClearTab(TabIndex: integer);
|
||||
begin
|
||||
TMufasaTab(Tabs[TabIndex]).Clear;
|
||||
end;
|
||||
|
||||
procedure TForm1.RefreshTab;
|
||||
var
|
||||
Tab : TMufasaTab;
|
||||
Script : TScriptFrame;
|
||||
NewTab : integer;
|
||||
begin
|
||||
NewTab := PageControl1.TabIndex;
|
||||
Tab := TMufasaTab(Tabs[Newtab]);
|
||||
Script := Tab.ScriptFrame;
|
||||
Self.CurrScript := Script;
|
||||
Self.CurrTab := Tab;
|
||||
if Script.ScriptChanged then
|
||||
begin;
|
||||
Tab.TabSheet.Caption:= Script.ScriptName + '*';
|
||||
Self.Caption := Format(WindowTitle,[Script.ScriptName + '*'])
|
||||
end else
|
||||
begin;
|
||||
Self.Caption := Format(WindowTitle,[Script.ScriptName]);
|
||||
Tab.TabSheet.Caption:= Script.ScriptName;
|
||||
end;
|
||||
StatusBar.Panels[Panel_ScriptName].Text:= Script.ScriptName;
|
||||
StatusBar.Panels[Panel_ScriptPath].text:= Script.ScriptFile;
|
||||
SetScriptState(Tab.ScriptFrame.FScriptState);//To set the buttons right
|
||||
end;
|
||||
|
||||
procedure TForm1.ButtonRunClick(Sender: TObject);
|
||||
@ -309,9 +357,14 @@ begin
|
||||
Self.ClearScript;
|
||||
end;
|
||||
|
||||
procedure TForm1.ButtonDragClick(Sender: TObject);
|
||||
begin
|
||||
procedure TForm1.ButtonNewTabClick(Sender: TObject);
|
||||
begin;
|
||||
AddTab;
|
||||
end;
|
||||
|
||||
procedure TForm1.ButtonCloseTabClick(Sender: TObject);
|
||||
begin
|
||||
DeleteTab( PageControl1.TabIndex,false);
|
||||
end;
|
||||
|
||||
procedure TForm1.ButtonOpenClick(Sender: TObject);
|
||||
@ -329,40 +382,37 @@ begin
|
||||
Memo1.Clear;
|
||||
end;
|
||||
|
||||
procedure TForm1.ErrorThread(ErrorAtLine,ErrorPosition : integer; ErrorStr : string; ErrorType : TErrorType);
|
||||
begin
|
||||
ScriptErrorLine:= ErrorAtLine;
|
||||
SynEdit1.SelStart:= ErrorPosition;
|
||||
Writeln(Format('Error: %s at line %d',[errorstr,erroratline]));
|
||||
SynEdit1.Invalidate;
|
||||
end;
|
||||
|
||||
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
var
|
||||
i : integer;
|
||||
begin
|
||||
if not CanExitOrOpen then
|
||||
CloseAction := caNone;
|
||||
for i := Tabs.Count - 1 downto 0 do
|
||||
if not DeleteTab(i,true) then
|
||||
begin;
|
||||
CloseAction := caNone;
|
||||
exit
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TForm1.FormCreate(Sender: TObject);
|
||||
begin
|
||||
Tabs := TList.Create;
|
||||
AddTab;//Give it alteast 1 tab ;-).
|
||||
Window := TMWindow.Create;
|
||||
Picker := TMColorPicker.Create(Window);
|
||||
Selector := TMWindowSelector.Create(Window);
|
||||
StartText:= SynEdit1.Lines.text;
|
||||
ScriptDefault:= StartText;
|
||||
Caption := Format(WindowTitle,['Untitled']);
|
||||
ScriptName:= 'Untitled';
|
||||
ScriptChanged := false;
|
||||
ScriptState:= ss_None;
|
||||
ScriptErrorLine:= -1;
|
||||
MainDir:= ExtractFileDir(Application.ExeName);
|
||||
PluginsGlob := TMPlugins.Create;
|
||||
PluginsGlob.PluginDirs.Add(ExpandFileName(MainDir + DS + '..' + DS + '..'+ DS + 'Plugins'+ DS));
|
||||
// SynMemo1.sc
|
||||
end;
|
||||
|
||||
procedure TForm1.FormDestroy(Sender: TObject);
|
||||
var
|
||||
i : integer;
|
||||
begin
|
||||
for i := Tabs.Count - 1 downto 0 do
|
||||
TMufasaTab(Tabs[i]).Free;
|
||||
Tabs.free;
|
||||
Selector.Free;
|
||||
Picker.Free;
|
||||
Window.Free;
|
||||
@ -442,15 +492,7 @@ begin
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TForm1.OnSyneditChange(Sender: TObject);
|
||||
begin
|
||||
ScriptErrorLine:= -1;
|
||||
if not ScriptChanged then
|
||||
begin;
|
||||
ScriptChanged:= True;
|
||||
Self.Caption:= Format(WindowTitle,[ScriptName + '*']);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TForm1.ButtonPickClick(Sender: TObject);
|
||||
var
|
||||
@ -463,7 +505,7 @@ end;
|
||||
|
||||
procedure TForm1.MenuItemRedoClick(Sender: TObject);
|
||||
begin
|
||||
Self.redo;
|
||||
CurrScript.redo;
|
||||
end;
|
||||
|
||||
procedure TForm1.ButtonSelectorDown(Sender: TObject; Button: TMouseButton;
|
||||
@ -481,36 +523,9 @@ begin
|
||||
Form1.Hide;
|
||||
end;
|
||||
|
||||
procedure TForm1.ScriptThreadTerminate(Sender: TObject);
|
||||
procedure TForm1.PageControl1Change(Sender: TObject);
|
||||
begin
|
||||
ScriptState:= ss_None;
|
||||
end;
|
||||
|
||||
procedure TForm1.SynEdit1SpecialLineColors(Sender: TObject; Line: integer;
|
||||
var Special: boolean; var FG, BG: TColor);
|
||||
begin
|
||||
if line = ScriptErrorLine then
|
||||
begin;
|
||||
Special := true;
|
||||
BG := $50a0ff;
|
||||
FG := 0;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TForm1.SynEditProcessCommand(Sender: TObject;
|
||||
var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer);
|
||||
begin
|
||||
if Command = ecUndo then
|
||||
begin;
|
||||
Command:= ecNone;
|
||||
Self.Undo;
|
||||
end else
|
||||
if Command = ecRedo then
|
||||
begin;
|
||||
Command := ecNone;
|
||||
Self.Redo;
|
||||
end;
|
||||
RefreshTab();
|
||||
end;
|
||||
|
||||
procedure TForm1.ButtonStopClick(Sender: TObject);
|
||||
@ -526,14 +541,19 @@ end;
|
||||
|
||||
procedure TForm1.MenuItemUndoClick(Sender: TObject);
|
||||
begin
|
||||
Self.Undo;
|
||||
CurrScript.Undo;
|
||||
end;
|
||||
|
||||
function TForm1.GetScriptState: TScriptState;
|
||||
begin
|
||||
result := CurrScript.FScriptState;
|
||||
end;
|
||||
|
||||
procedure TForm1.SetScriptState(const State: TScriptState);
|
||||
begin
|
||||
FScriptState:= State;
|
||||
CurrScript.FScriptState:= State;
|
||||
with Self.StatusBar.panels[Panel_State] do
|
||||
case FScriptState of
|
||||
case state of
|
||||
ss_Running : begin Text := 'Running'; TB_Run.Enabled:= False; {$ifdef MSWindows}TB_Pause.Enabled:= True; {$endif} TB_Stop.Enabled:= True; end;
|
||||
ss_Paused : begin Text := 'Paused'; TB_Run.Enabled:= True; {$ifdef MSWindows}TB_Pause.Enabled:= True; {$endif} TB_Stop.Enabled:= True; end;
|
||||
ss_Stopping: begin Text := 'Stopping';TB_Run.Enabled:= False; TB_Pause.Enabled:= False; TB_Stop.Enabled:= True; TB_Stop.ImageIndex := Image_Terminate end;
|
||||
@ -566,16 +586,17 @@ begin;
|
||||
if Execute then
|
||||
if FileExists(FileName) then
|
||||
begin;
|
||||
SynEdit1.Lines.LoadFromFile(FileName);
|
||||
StartText := SynEdit1.Lines.text;
|
||||
ScriptName:= ExtractFileNameOnly(FileName);
|
||||
WriteLn('Script name will be: ' + ScriptName);
|
||||
ScriptFile:= FileName;
|
||||
StatusBar.Panels[Panel_ScriptName].Text:= ScriptName;
|
||||
StatusBar.Panels[Panel_ScriptPath].text:= FileName;
|
||||
Self.Caption:= Format(WindowTitle,[ScriptName]);
|
||||
ScriptChanged := false;
|
||||
Result := True;
|
||||
with CurrScript do
|
||||
begin
|
||||
SynEdit.Lines.LoadFromFile(FileName);
|
||||
StartText := SynEdit.Lines.text;
|
||||
ScriptName:= ExtractFileNameOnly(FileName);
|
||||
WriteLn('Script name will be: ' + ScriptName);
|
||||
ScriptFile:= FileName;
|
||||
ScriptChanged := false;
|
||||
RefreshTab();
|
||||
Result := True;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
Free;
|
||||
@ -584,49 +605,53 @@ end;
|
||||
|
||||
function TForm1.SaveCurrentScript: boolean;
|
||||
begin
|
||||
Result := (ScriptFile <> '');
|
||||
if Result then
|
||||
begin;
|
||||
ScriptChanged := false;
|
||||
SynEdit1.Lines.SaveToFile(ScriptFile);
|
||||
StartText:= SynEdit1.Lines.Text;
|
||||
SynEdit1.MarkTextAsSaved;
|
||||
Self.Caption:= Format(WindowTitle,[ScriptName]);
|
||||
end
|
||||
else
|
||||
result := SaveCurrentScriptAs;
|
||||
with CurrScript do
|
||||
begin
|
||||
Result := (ScriptFile <> '');
|
||||
if Result then
|
||||
begin;
|
||||
ScriptChanged := false;
|
||||
SynEdit.Lines.SaveToFile(ScriptFile);
|
||||
StartText:= SynEdit.Lines.Text;
|
||||
SynEdit.MarkTextAsSaved;
|
||||
Self.Caption:= Format(WindowTitle,[ScriptName]);
|
||||
end
|
||||
else
|
||||
result := SaveCurrentScriptAs;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TForm1.SaveCurrentScriptAs: boolean;
|
||||
begin
|
||||
Result := false;
|
||||
with TSaveDialog.Create(nil) do
|
||||
try
|
||||
Filter:= 'Mufasa files|*.cogat;*.mufa;*.pas;*.txt|Any Files|*.*';
|
||||
if Execute then
|
||||
begin;
|
||||
if ExtractFileExt(FileName) = '' then
|
||||
begin;
|
||||
ScriptFile := FileName + '.mufa';
|
||||
end else
|
||||
ScriptFile := FileName;
|
||||
SynEdit1.Lines.SaveToFile(ScriptFile);
|
||||
ScriptName:= ExtractFileNameOnly(ScriptFile);
|
||||
StatusBar.Panels[Panel_ScriptName].Text:= ScriptName;
|
||||
StatusBar.Panels[Panel_ScriptPath].text := ScriptFile;
|
||||
Self.Caption:= Format(WindowTitle,[ScriptName]);
|
||||
WriteLn('Script name will be: ' + ScriptName);
|
||||
Result := True;
|
||||
end;
|
||||
finally
|
||||
Free;
|
||||
end;
|
||||
if result then
|
||||
with CurrScript do
|
||||
begin;
|
||||
Writeln('Succesfully saved: ' + ScriptFile);
|
||||
StartText:= SynEdit1.Lines.Text;
|
||||
SynEdit1.MarkTextAsSaved;
|
||||
ScriptChanged := false;
|
||||
Result := false;
|
||||
with TSaveDialog.Create(nil) do
|
||||
try
|
||||
Filter:= 'Mufasa files|*.cogat;*.mufa;*.pas;*.txt|Any Files|*.*';
|
||||
if Execute then
|
||||
begin;
|
||||
if ExtractFileExt(FileName) = '' then
|
||||
begin;
|
||||
ScriptFile := FileName + '.mufa';
|
||||
end else
|
||||
ScriptFile := FileName;
|
||||
SynEdit.Lines.SaveToFile(ScriptFile);
|
||||
ScriptName:= ExtractFileNameOnly(ScriptFile);
|
||||
WriteLn('Script name will be: ' + ScriptName);
|
||||
RefreshTab();
|
||||
Result := True;
|
||||
end;
|
||||
finally
|
||||
Free;
|
||||
end;
|
||||
if result then
|
||||
begin;
|
||||
Writeln('Succesfully saved: ' + ScriptFile);
|
||||
StartText:= SynEdit.Lines.Text;
|
||||
SynEdit.MarkTextAsSaved;
|
||||
ScriptChanged := false;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -636,7 +661,23 @@ var
|
||||
begin;
|
||||
Self.Enabled := False;//We HAVE to answer the popup
|
||||
Result := True;
|
||||
if StartText <> Synedit1.Lines.text then
|
||||
if ScriptState <> ss_None then
|
||||
begin
|
||||
if ScriptState <> ss_Stopping then
|
||||
begin
|
||||
result := False;
|
||||
Case MessageBox(0,pchar('Do you want to stop the script?'), Pchar('Script is still running.'),
|
||||
MB_YESNOCANCEL or MB_ICONQUESTION) of
|
||||
IDYES : StopScript;
|
||||
end;
|
||||
end else
|
||||
Case MessageBox(0,pchar('Do you want to terminate the script?'), Pchar('Script is stopping.'),
|
||||
MB_YESNOCANCEL or MB_ICONQUESTION) of
|
||||
IDNO,IDCancel: Result := false;
|
||||
IDYES : StopScript;
|
||||
end;
|
||||
end;
|
||||
if Result and (CurrScript.StartText <> CurrScript.SynEdit.Lines.text) then
|
||||
Case MessageBox(0,pchar('Do you want to save the script?'), Pchar('Script has been modified.'),
|
||||
MB_YESNOCANCEL or MB_ICONQUESTION) of
|
||||
IDCANCEL : Result := False;
|
||||
@ -650,20 +691,43 @@ function TForm1.ClearScript: boolean;
|
||||
begin
|
||||
if CanExitOrOpen then
|
||||
begin;
|
||||
ScriptFile:= '';
|
||||
ScriptName:= 'Untitled';
|
||||
StartText:= ScriptDefault;
|
||||
SynEdit1.Lines.Text:= ScriptDefault;
|
||||
StatusBar.Panels[Panel_ScriptName].Text:= 'Untitled';
|
||||
StatusBar.Panels[Panel_ScriptPath].Text:= '';
|
||||
Self.Caption := Format(WindowTitle,['Untitled']);
|
||||
ScriptChanged:= false;
|
||||
CurrTab.Clear;
|
||||
RefreshTab();
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
{ TMufasaTab }
|
||||
|
||||
procedure TMufasaTab.Clear;
|
||||
begin
|
||||
ScriptFrame.Free;
|
||||
ScriptFrame := TScriptFrame.Create(Tabsheet);
|
||||
ScriptFrame.Parent := Tabsheet;
|
||||
ScriptFrame.Align:= alClient;
|
||||
end;
|
||||
|
||||
constructor TMufasaTab.Create(Page: TPageControl);
|
||||
begin
|
||||
inherited Create;
|
||||
PageCtrl := Page;
|
||||
Tabsheet := TTabSheet.Create(Page);
|
||||
Tabsheet.PageControl := Page;
|
||||
ScriptFrame := TScriptFrame.Create(Tabsheet);
|
||||
ScriptFrame.Parent := Tabsheet;
|
||||
ScriptFrame.Align:= alClient;
|
||||
end;
|
||||
|
||||
destructor TMufasaTab.Destroy;
|
||||
begin
|
||||
ScriptFrame.Free;
|
||||
TabSheet.Free;
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
initialization
|
||||
{$I testunit.lrs}
|
||||
|
||||
|
||||
end.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user