mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-16 04:59:20 +02:00
added saving and opening from file from Darius
git-svn-id: trunk@7477 -
This commit is contained in:
parent
8a2365929a
commit
8ec346b211
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -815,6 +815,8 @@ ide/delphiunit2laz.lfm svneol=native#text/plain
|
|||||||
ide/delphiunit2laz.lrs svneol=native#text/pascal
|
ide/delphiunit2laz.lrs svneol=native#text/pascal
|
||||||
ide/delphiunit2laz.pas svneol=native#text/pascal
|
ide/delphiunit2laz.pas svneol=native#text/pascal
|
||||||
ide/dialogprocs.pas svneol=native#text/pascal
|
ide/dialogprocs.pas svneol=native#text/pascal
|
||||||
|
ide/diffdialog.lfm svneol=native#text/plain
|
||||||
|
ide/diffdialog.lrs svneol=native#text/plain
|
||||||
ide/diffdialog.pas svneol=native#text/pascal
|
ide/diffdialog.pas svneol=native#text/pascal
|
||||||
ide/diffpatch.pas svneol=native#text/pascal
|
ide/diffpatch.pas svneol=native#text/pascal
|
||||||
ide/diskdiffsdialog.pas svneol=native#text/pascal
|
ide/diskdiffsdialog.pas svneol=native#text/pascal
|
||||||
|
510
ide/diffdialog.lfm
Normal file
510
ide/diffdialog.lfm
Normal file
@ -0,0 +1,510 @@
|
|||||||
|
object DiffDlg: TDiffDlg
|
||||||
|
Caption = 'Diff dialog'
|
||||||
|
ClientHeight = 500
|
||||||
|
ClientWidth = 600
|
||||||
|
PixelsPerInch = 96
|
||||||
|
Position = poScreenCenter
|
||||||
|
HorzScrollBar.Page = 599
|
||||||
|
VertScrollBar.Page = 499
|
||||||
|
Left = 197
|
||||||
|
Height = 500
|
||||||
|
Top = 91
|
||||||
|
Width = 600
|
||||||
|
HelpType = htKeyword
|
||||||
|
object SaveDiffButton: TButton
|
||||||
|
Anchors = [akRight, akBottom]
|
||||||
|
Caption = 'Save Diff'
|
||||||
|
OnClick = SaveDiffButtonClick
|
||||||
|
TabOrder = 0
|
||||||
|
Left = 517
|
||||||
|
Height = 25
|
||||||
|
Top = 467
|
||||||
|
Width = 75
|
||||||
|
end
|
||||||
|
object OpenInEditorButton: TButton
|
||||||
|
Anchors = [akRight, akBottom]
|
||||||
|
Caption = 'OpenInEditorButton'
|
||||||
|
ModalResult = 6
|
||||||
|
TabOrder = 1
|
||||||
|
Left = 278
|
||||||
|
Height = 25
|
||||||
|
Top = 467
|
||||||
|
Width = 237
|
||||||
|
end
|
||||||
|
object CloseButton: TButton
|
||||||
|
Anchors = [akRight, akBottom]
|
||||||
|
BorderSpacing.OnChange = nil
|
||||||
|
Caption = 'CloseButton'
|
||||||
|
ModalResult = 1
|
||||||
|
TabOrder = 2
|
||||||
|
Left = 198
|
||||||
|
Height = 25
|
||||||
|
Top = 467
|
||||||
|
Width = 75
|
||||||
|
end
|
||||||
|
object Text1GroupBox: TGroupBox
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
Caption = 'Text1GroupBox'
|
||||||
|
ClientHeight = 62
|
||||||
|
ClientWidth = 580
|
||||||
|
ParentColor = True
|
||||||
|
TabOrder = 3
|
||||||
|
Left = 8
|
||||||
|
Height = 80
|
||||||
|
Top = 8
|
||||||
|
Width = 584
|
||||||
|
object Text1Combobox: TComboBox
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
MaxLength = 0
|
||||||
|
OnChange = Text1ComboboxChange
|
||||||
|
TabOrder = 0
|
||||||
|
Text = 'Text1Combobox'
|
||||||
|
Left = 6
|
||||||
|
Height = 21
|
||||||
|
Top = 6
|
||||||
|
Width = 488
|
||||||
|
end
|
||||||
|
object Text1OnlySelectionCheckBox: TCheckBox
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
Caption = 'Text1OnlySelectionCheckBox'
|
||||||
|
OnChange = OnChangeFlag
|
||||||
|
TabOrder = 1
|
||||||
|
Left = 6
|
||||||
|
Height = 23
|
||||||
|
Top = 32
|
||||||
|
Width = 488
|
||||||
|
end
|
||||||
|
object Text1FileOpenButton: TButton
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.OnChange = nil
|
||||||
|
Caption = 'File'
|
||||||
|
OnClick = FileOpenClick
|
||||||
|
TabOrder = 2
|
||||||
|
Left = 499
|
||||||
|
Height = 21
|
||||||
|
Top = 6
|
||||||
|
Width = 75
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object Text2GroupBox: TGroupBox
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
Caption = 'Text2GroupBox'
|
||||||
|
ClientHeight = 62
|
||||||
|
ClientWidth = 580
|
||||||
|
ParentColor = True
|
||||||
|
TabOrder = 4
|
||||||
|
Left = 8
|
||||||
|
Height = 80
|
||||||
|
Top = 96
|
||||||
|
Width = 584
|
||||||
|
object Text2Combobox: TComboBox
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.OnChange = nil
|
||||||
|
MaxLength = 0
|
||||||
|
OnChange = Text2ComboboxChange
|
||||||
|
TabOrder = 0
|
||||||
|
Text = 'Text2Combobox'
|
||||||
|
Left = 6
|
||||||
|
Height = 21
|
||||||
|
Top = 6
|
||||||
|
Width = 488
|
||||||
|
end
|
||||||
|
object Text2OnlySelectionCheckBox: TCheckBox
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.OnChange = nil
|
||||||
|
Caption = 'Text2OnlySelectionCheckBox'
|
||||||
|
OnChange = OnChangeFlag
|
||||||
|
TabOrder = 1
|
||||||
|
Left = 6
|
||||||
|
Height = 23
|
||||||
|
Top = 32
|
||||||
|
Width = 488
|
||||||
|
end
|
||||||
|
object Text2FileOpenButton: TButton
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
Caption = 'File'
|
||||||
|
OnClick = FileOpenClick
|
||||||
|
TabOrder = 2
|
||||||
|
Left = 499
|
||||||
|
Height = 21
|
||||||
|
Top = 6
|
||||||
|
Width = 75
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object OptionsGroupBox: TCheckGroup
|
||||||
|
Anchors = [akLeft, akRight, akBottom]
|
||||||
|
BorderSpacing.Top = 100
|
||||||
|
Caption = 'OptionsGroupBox'
|
||||||
|
Columns = 2
|
||||||
|
ParentColor = True
|
||||||
|
AnchorSideTop.Control = Text2GroupBox
|
||||||
|
Left = 8
|
||||||
|
Height = 83
|
||||||
|
Top = 375
|
||||||
|
Width = 584
|
||||||
|
end
|
||||||
|
object DiffSynEdit: TSynEdit
|
||||||
|
BorderSpacing.OnChange = nil
|
||||||
|
Font.Color = clBlack
|
||||||
|
Font.Height = -12
|
||||||
|
Font.Name = 'courier'
|
||||||
|
Font.Pitch = fpFixed
|
||||||
|
Height = 184
|
||||||
|
Name = 'DiffSynEdit'
|
||||||
|
TabOrder = 6
|
||||||
|
Width = 584
|
||||||
|
BookMarkOptions.Xoffset = -18
|
||||||
|
BookMarkOptions.OnChange = nil
|
||||||
|
Gutter.Visible = False
|
||||||
|
Gutter.OnChange = nil
|
||||||
|
Gutter.CodeFoldingWidth = 14
|
||||||
|
Keystrokes = <
|
||||||
|
item
|
||||||
|
Command = 3
|
||||||
|
ShortCut = 38
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 103
|
||||||
|
ShortCut = 8230
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 211
|
||||||
|
ShortCut = 16422
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 4
|
||||||
|
ShortCut = 40
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 104
|
||||||
|
ShortCut = 8232
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 212
|
||||||
|
ShortCut = 16424
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 1
|
||||||
|
ShortCut = 37
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 101
|
||||||
|
ShortCut = 8229
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 5
|
||||||
|
ShortCut = 16421
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 105
|
||||||
|
ShortCut = 24613
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 2
|
||||||
|
ShortCut = 39
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 102
|
||||||
|
ShortCut = 8231
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 6
|
||||||
|
ShortCut = 16423
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 106
|
||||||
|
ShortCut = 24615
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 10
|
||||||
|
ShortCut = 34
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 110
|
||||||
|
ShortCut = 8226
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 14
|
||||||
|
ShortCut = 16418
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 114
|
||||||
|
ShortCut = 24610
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 9
|
||||||
|
ShortCut = 33
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 109
|
||||||
|
ShortCut = 8225
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 13
|
||||||
|
ShortCut = 16417
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 113
|
||||||
|
ShortCut = 24609
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 7
|
||||||
|
ShortCut = 36
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 107
|
||||||
|
ShortCut = 8228
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 15
|
||||||
|
ShortCut = 16420
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 115
|
||||||
|
ShortCut = 24612
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 8
|
||||||
|
ShortCut = 35
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 108
|
||||||
|
ShortCut = 8227
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 16
|
||||||
|
ShortCut = 16419
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 116
|
||||||
|
ShortCut = 24611
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 223
|
||||||
|
ShortCut = 45
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 201
|
||||||
|
ShortCut = 16429
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 604
|
||||||
|
ShortCut = 8237
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 502
|
||||||
|
ShortCut = 46
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 603
|
||||||
|
ShortCut = 8238
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 501
|
||||||
|
ShortCut = 8
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 501
|
||||||
|
ShortCut = 8200
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 504
|
||||||
|
ShortCut = 16392
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 601
|
||||||
|
ShortCut = 32776
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 602
|
||||||
|
ShortCut = 40968
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 509
|
||||||
|
ShortCut = 13
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 199
|
||||||
|
ShortCut = 16449
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 201
|
||||||
|
ShortCut = 16451
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 610
|
||||||
|
ShortCut = 24649
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 509
|
||||||
|
ShortCut = 16461
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 510
|
||||||
|
ShortCut = 16462
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 503
|
||||||
|
ShortCut = 16468
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 611
|
||||||
|
ShortCut = 24661
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 604
|
||||||
|
ShortCut = 16470
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 603
|
||||||
|
ShortCut = 16472
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 507
|
||||||
|
ShortCut = 16473
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 506
|
||||||
|
ShortCut = 24665
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 601
|
||||||
|
ShortCut = 16474
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 602
|
||||||
|
ShortCut = 24666
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 301
|
||||||
|
ShortCut = 16432
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 302
|
||||||
|
ShortCut = 16433
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 303
|
||||||
|
ShortCut = 16434
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 304
|
||||||
|
ShortCut = 16435
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 305
|
||||||
|
ShortCut = 16436
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 306
|
||||||
|
ShortCut = 16437
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 307
|
||||||
|
ShortCut = 16438
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 308
|
||||||
|
ShortCut = 16439
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 309
|
||||||
|
ShortCut = 16440
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 310
|
||||||
|
ShortCut = 16441
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 351
|
||||||
|
ShortCut = 24624
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 352
|
||||||
|
ShortCut = 24625
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 353
|
||||||
|
ShortCut = 24626
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 354
|
||||||
|
ShortCut = 24627
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 355
|
||||||
|
ShortCut = 24628
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 356
|
||||||
|
ShortCut = 24629
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 357
|
||||||
|
ShortCut = 24630
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 358
|
||||||
|
ShortCut = 24631
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 359
|
||||||
|
ShortCut = 24632
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 360
|
||||||
|
ShortCut = 24633
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 231
|
||||||
|
ShortCut = 24654
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 232
|
||||||
|
ShortCut = 24643
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 233
|
||||||
|
ShortCut = 24652
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 612
|
||||||
|
ShortCut = 9
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 613
|
||||||
|
ShortCut = 8201
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Command = 250
|
||||||
|
ShortCut = 24642
|
||||||
|
end>
|
||||||
|
Lines.Strings = (
|
||||||
|
'DiffSynEdit'
|
||||||
|
)
|
||||||
|
SelectedColor.OnChange = nil
|
||||||
|
Cursor = crIBeam
|
||||||
|
Left = 8
|
||||||
|
Height = 184
|
||||||
|
Top = 184
|
||||||
|
Width = 584
|
||||||
|
end
|
||||||
|
object dlgSave: TSaveDialog
|
||||||
|
Title = 'Save file as'
|
||||||
|
DefaultExt = '.diff'
|
||||||
|
Filter = 'diff|*.diff|any file|*.*'
|
||||||
|
FilterIndex = 0
|
||||||
|
Title = 'Save file as'
|
||||||
|
left = 459
|
||||||
|
top = 48
|
||||||
|
end
|
||||||
|
object dlgOpen: TOpenDialog
|
||||||
|
Title = 'Open existing file'
|
||||||
|
DefaultExt = '.pas'
|
||||||
|
Filter = 'pascal files|*.pas;*.pp|any file|*.*'
|
||||||
|
FilterIndex = 0
|
||||||
|
Title = 'Open existing file'
|
||||||
|
left = 459
|
||||||
|
top = 12
|
||||||
|
end
|
||||||
|
end
|
101
ide/diffdialog.lrs
Normal file
101
ide/diffdialog.lrs
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
{ This is an automatically generated lazarus resource file }
|
||||||
|
|
||||||
|
LazarusResources.Add('TDiffDlg','FORMDATA',[
|
||||||
|
'TPF0'#8'TDiffDlg'#7'DiffDlg'#7'Caption'#6#11'Diff dialog'#12'ClientHeight'#3
|
||||||
|
+#244#1#11'ClientWidth'#3'X'#2#13'PixelsPerInch'#2'`'#8'Position'#7#14'poScre'
|
||||||
|
+'enCenter'#18'HorzScrollBar.Page'#3'W'#2#18'VertScrollBar.Page'#3#243#1#4'Le'
|
||||||
|
+'ft'#3#197#0#6'Height'#3#244#1#3'Top'#2'['#5'Width'#3'X'#2#8'HelpType'#7#9'h'
|
||||||
|
+'tKeyword'#0#7'TButton'#14'SaveDiffButton'#7'Anchors'#11#7'akRight'#8'akBott'
|
||||||
|
+'om'#0#7'Caption'#6#9'Save Diff'#7'OnClick'#7#19'SaveDiffButtonClick'#8'TabO'
|
||||||
|
+'rder'#2#0#4'Left'#3#5#2#6'Height'#2#25#3'Top'#3#211#1#5'Width'#2'K'#0#0#7'T'
|
||||||
|
+'Button'#18'OpenInEditorButton'#7'Anchors'#11#7'akRight'#8'akBottom'#0#7'Cap'
|
||||||
|
+'tion'#6#18'OpenInEditorButton'#11'ModalResult'#2#6#8'TabOrder'#2#1#4'Left'#3
|
||||||
|
+#22#1#6'Height'#2#25#3'Top'#3#211#1#5'Width'#3#237#0#0#0#7'TButton'#11'Close'
|
||||||
|
+'Button'#7'Anchors'#11#7'akRight'#8'akBottom'#0#22'BorderSpacing.OnChange'#13
|
||||||
|
+#7'Caption'#6#11'CloseButton'#11'ModalResult'#2#1#8'TabOrder'#2#2#4'Left'#3
|
||||||
|
+#198#0#6'Height'#2#25#3'Top'#3#211#1#5'Width'#2'K'#0#0#9'TGroupBox'#13'Text1'
|
||||||
|
+'GroupBox'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#7'Caption'#6#13'Tex'
|
||||||
|
+'t1GroupBox'#12'ClientHeight'#2'>'#11'ClientWidth'#3'D'#2#11'ParentColor'#9#8
|
||||||
|
+'TabOrder'#2#3#4'Left'#2#8#6'Height'#2'P'#3'Top'#2#8#5'Width'#3'H'#2#0#9'TCo'
|
||||||
|
+'mboBox'#13'Text1Combobox'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#9'M'
|
||||||
|
+'axLength'#2#0#8'OnChange'#7#19'Text1ComboboxChange'#8'TabOrder'#2#0#4'Text'
|
||||||
|
+#6#13'Text1Combobox'#4'Left'#2#6#6'Height'#2#21#3'Top'#2#6#5'Width'#3#232#1#0
|
||||||
|
+#0#9'TCheckBox'#26'Text1OnlySelectionCheckBox'#7'Anchors'#11#5'akTop'#6'akLe'
|
||||||
|
+'ft'#7'akRight'#0#7'Caption'#6#26'Text1OnlySelectionCheckBox'#8'OnChange'#7
|
||||||
|
+#12'OnChangeFlag'#8'TabOrder'#2#1#4'Left'#2#6#6'Height'#2#23#3'Top'#2' '#5'W'
|
||||||
|
+'idth'#3#232#1#0#0#7'TButton'#19'Text1FileOpenButton'#7'Anchors'#11#5'akTop'
|
||||||
|
+#7'akRight'#0#22'BorderSpacing.OnChange'#13#7'Caption'#6#4'File'#7'OnClick'#7
|
||||||
|
+#13'FileOpenClick'#8'TabOrder'#2#2#4'Left'#3#243#1#6'Height'#2#21#3'Top'#2#6
|
||||||
|
+#5'Width'#2'K'#0#0#0#9'TGroupBox'#13'Text2GroupBox'#7'Anchors'#11#5'akTop'#6
|
||||||
|
+'akLeft'#7'akRight'#0#7'Caption'#6#13'Text2GroupBox'#12'ClientHeight'#2'>'#11
|
||||||
|
+'ClientWidth'#3'D'#2#11'ParentColor'#9#8'TabOrder'#2#4#4'Left'#2#8#6'Height'
|
||||||
|
+#2'P'#3'Top'#2'`'#5'Width'#3'H'#2#0#9'TComboBox'#13'Text2Combobox'#7'Anchors'
|
||||||
|
+#11#5'akTop'#6'akLeft'#7'akRight'#0#22'BorderSpacing.OnChange'#13#9'MaxLengt'
|
||||||
|
+'h'#2#0#8'OnChange'#7#19'Text2ComboboxChange'#8'TabOrder'#2#0#4'Text'#6#13'T'
|
||||||
|
+'ext2Combobox'#4'Left'#2#6#6'Height'#2#21#3'Top'#2#6#5'Width'#3#232#1#0#0#9
|
||||||
|
+'TCheckBox'#26'Text2OnlySelectionCheckBox'#7'Anchors'#11#5'akTop'#6'akLeft'#7
|
||||||
|
+'akRight'#0#22'BorderSpacing.OnChange'#13#7'Caption'#6#26'Text2OnlySelection'
|
||||||
|
+'CheckBox'#8'OnChange'#7#12'OnChangeFlag'#8'TabOrder'#2#1#4'Left'#2#6#6'Heig'
|
||||||
|
+'ht'#2#23#3'Top'#2' '#5'Width'#3#232#1#0#0#7'TButton'#19'Text2FileOpenButton'
|
||||||
|
+#7'Anchors'#11#5'akTop'#7'akRight'#0#7'Caption'#6#4'File'#7'OnClick'#7#13'Fi'
|
||||||
|
+'leOpenClick'#8'TabOrder'#2#2#4'Left'#3#243#1#6'Height'#2#21#3'Top'#2#6#5'Wi'
|
||||||
|
+'dth'#2'K'#0#0#0#11'TCheckGroup'#15'OptionsGroupBox'#7'Anchors'#11#6'akLeft'
|
||||||
|
+#7'akRight'#8'akBottom'#0#17'BorderSpacing.Top'#2'd'#7'Caption'#6#15'Options'
|
||||||
|
+'GroupBox'#7'Columns'#2#2#11'ParentColor'#9#21'AnchorSideTop.Control'#7#13'T'
|
||||||
|
+'ext2GroupBox'#4'Left'#2#8#6'Height'#2'S'#3'Top'#3'w'#1#5'Width'#3'H'#2#0#0#8
|
||||||
|
+'TSynEdit'#11'DiffSynEdit'#22'BorderSpacing.OnChange'#13#10'Font.Color'#7#7
|
||||||
|
+'clBlack'#11'Font.Height'#2#244#9'Font.Name'#6#7'courier'#10'Font.Pitch'#7#7
|
||||||
|
+'fpFixed'#6'Height'#3#184#0#4'Name'#6#11'DiffSynEdit'#8'TabOrder'#2#6#5'Widt'
|
||||||
|
+'h'#3'H'#2#23'BookMarkOptions.Xoffset'#2#238#24'BookMarkOptions.OnChange'#13
|
||||||
|
+#14'Gutter.Visible'#8#15'Gutter.OnChange'#13#23'Gutter.CodeFoldingWidth'#2#14
|
||||||
|
+#10'Keystrokes'#14#1#7'Command'#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2'g'#8'S'
|
||||||
|
+'hortCut'#3'& '#0#1#7'Command'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Command'#2#4#8
|
||||||
|
+'ShortCut'#2'('#0#1#7'Command'#2'h'#8'ShortCut'#3'( '#0#1#7'Command'#3#212#0
|
||||||
|
+#8'ShortCut'#3'(@'#0#1#7'Command'#2#1#8'ShortCut'#2'%'#0#1#7'Command'#2'e'#8
|
||||||
|
+'ShortCut'#3'% '#0#1#7'Command'#2#5#8'ShortCut'#3'%@'#0#1#7'Command'#2'i'#8
|
||||||
|
+'ShortCut'#3'%`'#0#1#7'Command'#2#2#8'ShortCut'#2''''#0#1#7'Command'#2'f'#8
|
||||||
|
+'ShortCut'#3''' '#0#1#7'Command'#2#6#8'ShortCut'#3'''@'#0#1#7'Command'#2'j'#8
|
||||||
|
+'ShortCut'#3'''`'#0#1#7'Command'#2#10#8'ShortCut'#2'"'#0#1#7'Command'#2'n'#8
|
||||||
|
+'ShortCut'#3'" '#0#1#7'Command'#2#14#8'ShortCut'#3'"@'#0#1#7'Command'#2'r'#8
|
||||||
|
+'ShortCut'#3'"`'#0#1#7'Command'#2#9#8'ShortCut'#2'!'#0#1#7'Command'#2'm'#8'S'
|
||||||
|
+'hortCut'#3'! '#0#1#7'Command'#2#13#8'ShortCut'#3'!@'#0#1#7'Command'#2'q'#8
|
||||||
|
+'ShortCut'#3'!`'#0#1#7'Command'#2#7#8'ShortCut'#2'$'#0#1#7'Command'#2'k'#8'S'
|
||||||
|
+'hortCut'#3'$ '#0#1#7'Command'#2#15#8'ShortCut'#3'$@'#0#1#7'Command'#2's'#8
|
||||||
|
+'ShortCut'#3'$`'#0#1#7'Command'#2#8#8'ShortCut'#2'#'#0#1#7'Command'#2'l'#8'S'
|
||||||
|
+'hortCut'#3'# '#0#1#7'Command'#2#16#8'ShortCut'#3'#@'#0#1#7'Command'#2't'#8
|
||||||
|
+'ShortCut'#3'#`'#0#1#7'Command'#3#223#0#8'ShortCut'#2'-'#0#1#7'Command'#3#201
|
||||||
|
+#0#8'ShortCut'#3'-@'#0#1#7'Command'#3'\'#2#8'ShortCut'#3'- '#0#1#7'Command'#3
|
||||||
|
,#246#1#8'ShortCut'#2'.'#0#1#7'Command'#3'['#2#8'ShortCut'#3'. '#0#1#7'Comman'
|
||||||
|
+'d'#3#245#1#8'ShortCut'#2#8#0#1#7'Command'#3#245#1#8'ShortCut'#3#8' '#0#1#7
|
||||||
|
+'Command'#3#248#1#8'ShortCut'#3#8'@'#0#1#7'Command'#3'Y'#2#8'ShortCut'#4#8
|
||||||
|
+#128#0#0#0#1#7'Command'#3'Z'#2#8'ShortCut'#4#8#160#0#0#0#1#7'Command'#3#253#1
|
||||||
|
+#8'ShortCut'#2#13#0#1#7'Command'#3#199#0#8'ShortCut'#3'A@'#0#1#7'Command'#3
|
||||||
|
+#201#0#8'ShortCut'#3'C@'#0#1#7'Command'#3'b'#2#8'ShortCut'#3'I`'#0#1#7'Comma'
|
||||||
|
+'nd'#3#253#1#8'ShortCut'#3'M@'#0#1#7'Command'#3#254#1#8'ShortCut'#3'N@'#0#1#7
|
||||||
|
+'Command'#3#247#1#8'ShortCut'#3'T@'#0#1#7'Command'#3'c'#2#8'ShortCut'#3'U`'#0
|
||||||
|
+#1#7'Command'#3'\'#2#8'ShortCut'#3'V@'#0#1#7'Command'#3'['#2#8'ShortCut'#3'X'
|
||||||
|
+'@'#0#1#7'Command'#3#251#1#8'ShortCut'#3'Y@'#0#1#7'Command'#3#250#1#8'ShortC'
|
||||||
|
+'ut'#3'Y`'#0#1#7'Command'#3'Y'#2#8'ShortCut'#3'Z@'#0#1#7'Command'#3'Z'#2#8'S'
|
||||||
|
+'hortCut'#3'Z`'#0#1#7'Command'#3'-'#1#8'ShortCut'#3'0@'#0#1#7'Command'#3'.'#1
|
||||||
|
+#8'ShortCut'#3'1@'#0#1#7'Command'#3'/'#1#8'ShortCut'#3'2@'#0#1#7'Command'#3
|
||||||
|
+'0'#1#8'ShortCut'#3'3@'#0#1#7'Command'#3'1'#1#8'ShortCut'#3'4@'#0#1#7'Comman'
|
||||||
|
+'d'#3'2'#1#8'ShortCut'#3'5@'#0#1#7'Command'#3'3'#1#8'ShortCut'#3'6@'#0#1#7'C'
|
||||||
|
+'ommand'#3'4'#1#8'ShortCut'#3'7@'#0#1#7'Command'#3'5'#1#8'ShortCut'#3'8@'#0#1
|
||||||
|
+#7'Command'#3'6'#1#8'ShortCut'#3'9@'#0#1#7'Command'#3'_'#1#8'ShortCut'#3'0`'
|
||||||
|
+#0#1#7'Command'#3'`'#1#8'ShortCut'#3'1`'#0#1#7'Command'#3'a'#1#8'ShortCut'#3
|
||||||
|
+'2`'#0#1#7'Command'#3'b'#1#8'ShortCut'#3'3`'#0#1#7'Command'#3'c'#1#8'ShortCu'
|
||||||
|
+'t'#3'4`'#0#1#7'Command'#3'd'#1#8'ShortCut'#3'5`'#0#1#7'Command'#3'e'#1#8'Sh'
|
||||||
|
+'ortCut'#3'6`'#0#1#7'Command'#3'f'#1#8'ShortCut'#3'7`'#0#1#7'Command'#3'g'#1
|
||||||
|
+#8'ShortCut'#3'8`'#0#1#7'Command'#3'h'#1#8'ShortCut'#3'9`'#0#1#7'Command'#3
|
||||||
|
+#231#0#8'ShortCut'#3'N`'#0#1#7'Command'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Comm'
|
||||||
|
+'and'#3#233#0#8'ShortCut'#3'L`'#0#1#7'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7
|
||||||
|
+'Command'#3'e'#2#8'ShortCut'#3#9' '#0#1#7'Command'#3#250#0#8'ShortCut'#3'B`'
|
||||||
|
+#0#0#13'Lines.Strings'#1#6#11'DiffSynEdit'#0#22'SelectedColor.OnChange'#13#6
|
||||||
|
+'Cursor'#7#7'crIBeam'#4'Left'#2#8#6'Height'#3#184#0#3'Top'#3#184#0#5'Width'#3
|
||||||
|
+'H'#2#0#0#11'TSaveDialog'#7'dlgSave'#5'Title'#6#12'Save file as'#10'DefaultE'
|
||||||
|
+'xt'#6#5'.diff'#6'Filter'#6#24'diff|*.diff|any file|*.*'#11'FilterIndex'#2#0
|
||||||
|
+#5'Title'#6#12'Save file as'#4'left'#3#203#1#3'top'#2'0'#0#0#11'TOpenDialog'
|
||||||
|
+#7'dlgOpen'#5'Title'#6#18'Open existing file'#10'DefaultExt'#6#4'.pas'#6'Fil'
|
||||||
|
+'ter'#6'$pascal files|*.pas;*.pp|any file|*.*'#11'FilterIndex'#2#0#5'Title'#6
|
||||||
|
+#18'Open existing file'#4'left'#3#203#1#3'top'#2#12#0#0#0
|
||||||
|
]);
|
@ -1,8 +1,8 @@
|
|||||||
{ $Id$ }
|
{ $Id$ }
|
||||||
{
|
{
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
diffdialog.pp
|
diffdialog.pas
|
||||||
-------------
|
--------------
|
||||||
|
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
@ -29,9 +29,10 @@
|
|||||||
Author: Mattias Gaertner
|
Author: Mattias Gaertner
|
||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
The TDiffDialog is the dialog for showing the differences between two files.
|
The TDiffDlg is the dialog for showing the differences between two files.
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
unit DiffDialog;
|
unit DiffDialog;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$mode objfpc}{$H+}
|
||||||
@ -40,8 +41,8 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, Math, Forms, Controls, Buttons, StdCtrls,
|
Classes, SysUtils, Math, Forms, Controls, Buttons, StdCtrls,
|
||||||
SynEdit, LResources, LazarusIDEStrConsts, EditorOptions, IDEWindowIntf,
|
LResources, LazarusIDEStrConsts, EditorOptions, IDEWindowIntf,
|
||||||
InputHistory, DiffPatch;
|
InputHistory, DiffPatch, ExtCtrls, Dialogs, SynEdit;
|
||||||
|
|
||||||
type
|
type
|
||||||
TOnGetDiffFile = procedure(TextID: integer; OnlySelection: boolean;
|
TOnGetDiffFile = procedure(TextID: integer; OnlySelection: boolean;
|
||||||
@ -75,9 +76,20 @@ type
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
{ TDiffDialog }
|
{ TDiffDlg }
|
||||||
|
|
||||||
TDiffDialog = class(TForm)
|
TDiffDlg = class(TForm)
|
||||||
|
DiffSynEdit: TSynEdit;
|
||||||
|
Text1FileOpenButton: TButton;
|
||||||
|
dlgSave: TSaveDialog;
|
||||||
|
dlgOpen: TOpenDialog;
|
||||||
|
|
||||||
|
//buttons
|
||||||
|
SaveDiffButton: TButton;
|
||||||
|
OpenInEditorButton: TButton;
|
||||||
|
CloseButton: TButton;
|
||||||
|
Text2FileOpenButton: TButton;
|
||||||
|
|
||||||
// text 1
|
// text 1
|
||||||
Text1GroupBox: TGroupBox;
|
Text1GroupBox: TGroupBox;
|
||||||
Text1Combobox: TComboBox;
|
Text1Combobox: TComboBox;
|
||||||
@ -87,34 +99,16 @@ type
|
|||||||
Text2GroupBox: TGroupBox;
|
Text2GroupBox: TGroupBox;
|
||||||
Text2Combobox: TComboBox;
|
Text2Combobox: TComboBox;
|
||||||
Text2OnlySelectionCheckBox: TCheckBox;
|
Text2OnlySelectionCheckBox: TCheckBox;
|
||||||
|
|
||||||
// diff preview
|
|
||||||
DiffGroupbox: TGroupBox;
|
|
||||||
DiffSynEdit: TSynEdit;
|
|
||||||
|
|
||||||
// options
|
|
||||||
OptionsGroupBox: TGroupBox;
|
|
||||||
IgnoreCaseCheckBox: TCheckBox;
|
|
||||||
IgnoreEmptyLineChangesCheckBox: TCheckBox;
|
|
||||||
IgnoreHeadingSpacesCheckBox: TCheckBox;
|
|
||||||
IgnoreLineEndsCheckBox: TCheckBox;
|
|
||||||
IgnoreSpaceCharAmountCheckBox: TCheckBox;
|
|
||||||
IgnoreSpaceCharsCheckBox: TCheckBox;
|
|
||||||
IgnoreTrailingSpacesCheckBox: TCheckBox;
|
|
||||||
|
|
||||||
// buttons
|
|
||||||
CloseButton: TButton;
|
|
||||||
OpenInEditorButton: TButton;
|
|
||||||
|
|
||||||
procedure CloseButtonClick(Sender: TObject);
|
|
||||||
procedure DiffDialogResize(Sender: TObject);
|
// options
|
||||||
|
OptionsGroupBox: TCheckGroup;
|
||||||
|
|
||||||
|
procedure FileOpenClick(Sender: TObject);
|
||||||
procedure OnChangeFlag(Sender: TObject);
|
procedure OnChangeFlag(Sender: TObject);
|
||||||
procedure OpenInEditorButtonClick(Sender: TObject);
|
procedure SaveDiffButtonClick(Sender: TObject);
|
||||||
procedure OptionsGroupBoxResize(Sender: TObject);
|
|
||||||
procedure Text1ComboboxChange(Sender: TObject);
|
procedure Text1ComboboxChange(Sender: TObject);
|
||||||
procedure Text1GroupBoxResize(Sender: TObject);
|
|
||||||
procedure Text2ComboboxChange(Sender: TObject);
|
procedure Text2ComboboxChange(Sender: TObject);
|
||||||
procedure Text2GroupBoxResize(Sender: TObject);
|
|
||||||
private
|
private
|
||||||
FOnGetDiffFile: TOnGetDiffFile;
|
FOnGetDiffFile: TOnGetDiffFile;
|
||||||
fDiffNeedsUpdate: boolean;
|
fDiffNeedsUpdate: boolean;
|
||||||
@ -145,18 +139,25 @@ function ShowDiffDialog(Files: TDiffFiles; Text1Index: integer;
|
|||||||
OnGetDiffFile: TOnGetDiffFile;
|
OnGetDiffFile: TOnGetDiffFile;
|
||||||
var OpenDiffInEditor: boolean; var Diff: string): TModalResult;
|
var OpenDiffInEditor: boolean; var Diff: string): TModalResult;
|
||||||
|
|
||||||
|
const
|
||||||
|
IgnoreCaseCheckBox = 0;
|
||||||
|
IgnoreEmptyLineChangesCheckBox = 1;
|
||||||
|
IgnoreHeadingSpacesCheckBox = 2;
|
||||||
|
IgnoreLineEndsCheckBox = 3;
|
||||||
|
IgnoreSpaceCharAmountCheckBox = 4;
|
||||||
|
IgnoreSpaceCharsCheckBox = 5;
|
||||||
|
IgnoreTrailingSpacesCheckBox = 6;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
|
||||||
function ShowDiffDialog(Files: TDiffFiles; Text1Index: integer;
|
function ShowDiffDialog(Files: TDiffFiles; Text1Index: integer;
|
||||||
OnGetDiffFile: TOnGetDiffFile;
|
OnGetDiffFile: TOnGetDiffFile;
|
||||||
var OpenDiffInEditor: boolean; var Diff: string): TModalResult;
|
var OpenDiffInEditor: boolean; var Diff: string): TModalResult;
|
||||||
var
|
var
|
||||||
DiffDlg: TDiffDialog;
|
DiffDlg: TDiffDlg;
|
||||||
begin
|
begin
|
||||||
OpenDiffInEditor:=false;
|
OpenDiffInEditor:=false;
|
||||||
DiffDlg:=TDiffDialog.Create(nil);
|
DiffDlg:=TDiffDlg.Create(nil);
|
||||||
DiffDlg.BeginUpdate;
|
DiffDlg.BeginUpdate;
|
||||||
DiffDlg.OnGetDiffFile:=OnGetDiffFile;
|
DiffDlg.OnGetDiffFile:=OnGetDiffFile;
|
||||||
DiffDlg.Files:=Files;
|
DiffDlg.Files:=Files;
|
||||||
@ -175,295 +176,90 @@ begin
|
|||||||
DiffDlg.Free;
|
DiffDlg.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TDiffDialog }
|
{ TDiffDlg }
|
||||||
|
|
||||||
procedure TDiffDialog.DiffDialogResize(Sender: TObject);
|
procedure TDiffDlg.OnChangeFlag(Sender: TObject);
|
||||||
begin
|
|
||||||
// text 1
|
|
||||||
with Text1GroupBox do begin
|
|
||||||
SetBounds(3,3,(Parent.ClientWidth-3*3) div 2,70);
|
|
||||||
end;
|
|
||||||
|
|
||||||
// text 2
|
|
||||||
with Text2GroupBox do begin
|
|
||||||
SetBounds(Text1GroupBox.Left+Text1GroupBox.Width+3,Text1GroupBox.Top,
|
|
||||||
Text1GroupBox.Width,Text1GroupBox.Height);
|
|
||||||
end;
|
|
||||||
|
|
||||||
// diff preview
|
|
||||||
with DiffGroupbox do begin
|
|
||||||
SetBounds(Text1GroupBox.Left,Text1GroupBox.Top+Text1GroupBox.Height+5,
|
|
||||||
Parent.ClientWidth-2*Text1GroupBox.Left,
|
|
||||||
Max(30,Parent.ClientHeight-Text1GroupBox.Height-Text1GroupBox.Top
|
|
||||||
-170));
|
|
||||||
end;
|
|
||||||
|
|
||||||
// options
|
|
||||||
with OptionsGroupBox do begin
|
|
||||||
SetBounds(Text1GroupBox.Left,DiffGroupbox.Top+DiffGroupbox.Height+5,
|
|
||||||
DiffGroupbox.Width,116);
|
|
||||||
end;
|
|
||||||
|
|
||||||
// buttons
|
|
||||||
with CloseButton do begin
|
|
||||||
SetBounds(Parent.ClientWidth-300,Parent.ClientHeight-32,80,Height);
|
|
||||||
end;
|
|
||||||
|
|
||||||
with OpenInEditorButton do begin
|
|
||||||
SetBounds(CloseButton.Left+CloseButton.Width+10,CloseButton.Top,
|
|
||||||
200,CloseButton.Height);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TDiffDialog.OnChangeFlag(Sender: TObject);
|
|
||||||
begin
|
begin
|
||||||
UpdateDiff;
|
UpdateDiff;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDiffDialog.OpenInEditorButtonClick(Sender: TObject);
|
procedure TDiffDlg.FileOpenClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
ModalResult:=mrYes;
|
if dlgOpen.Execute then
|
||||||
end;
|
begin
|
||||||
|
//only add new files
|
||||||
procedure TDiffDialog.CloseButtonClick(Sender: TObject);
|
if Text1ComboBox.Items.IndexOf(dlgOpen.FileName) = -1 then
|
||||||
begin
|
begin
|
||||||
ModalResult:=mrOk;
|
Files.Add(TDiffFile.Create(dlgOpen.FileName,-1,False));
|
||||||
end;
|
Text1ComboBox.Items.Add(dlgOpen.FileName);
|
||||||
|
Text2ComboBox.Items.Add(dlgOpen.FileName);
|
||||||
procedure TDiffDialog.OptionsGroupBoxResize(Sender: TObject);
|
end;
|
||||||
var
|
|
||||||
y: Integer;
|
//set the combobox and make the diff
|
||||||
x: Integer;
|
if TButton(Sender).Name = 'Text1FileOpenButton'then
|
||||||
W: Integer;
|
with Text1ComboBox do
|
||||||
begin
|
begin
|
||||||
y:=0;
|
ItemIndex := Items.IndexOf(dlgOpen.FileName);
|
||||||
x:=4;
|
SetText1Index(Items.IndexOf(dlgOpen.FileName));
|
||||||
W:=(OptionsGroupBox.ClientWidth div 2)-8;
|
end
|
||||||
|
else
|
||||||
with IgnoreCaseCheckBox do begin
|
with Text2ComboBox do
|
||||||
SetBounds(x,y,w,Height);
|
begin
|
||||||
inc(y,Height+2);
|
ItemIndex := Items.IndexOf(dlgOpen.FileName);
|
||||||
end;
|
SetText2Index(Items.IndexOf(dlgOpen.FileName));
|
||||||
|
end;
|
||||||
with IgnoreEmptyLineChangesCheckBox do begin
|
|
||||||
SetBounds(x,y,w,Height);
|
|
||||||
inc(y,Height+2);
|
|
||||||
end;
|
|
||||||
|
|
||||||
with IgnoreHeadingSpacesCheckBox do begin
|
|
||||||
SetBounds(x,y,w,Height);
|
|
||||||
inc(y,Height+2);
|
|
||||||
end;
|
|
||||||
|
|
||||||
with IgnoreLineEndsCheckBox do begin
|
|
||||||
SetBounds(x,y,w+w,Height);
|
|
||||||
inc(y,Height+2);
|
|
||||||
end;
|
|
||||||
|
|
||||||
x:=(OptionsGroupBox.ClientWidth div 2)+4;
|
|
||||||
y:=2;
|
|
||||||
with IgnoreSpaceCharAmountCheckBox do begin
|
|
||||||
SetBounds(x,y,w,Height);
|
|
||||||
inc(y,Height+2);
|
|
||||||
end;
|
|
||||||
|
|
||||||
with IgnoreSpaceCharsCheckBox do begin
|
|
||||||
SetBounds(x,y,w,Height);
|
|
||||||
inc(y,Height+2);
|
|
||||||
end;
|
|
||||||
|
|
||||||
with IgnoreTrailingSpacesCheckBox do begin
|
|
||||||
SetBounds(x,y,w,Height);
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDiffDialog.Text1ComboboxChange(Sender: TObject);
|
procedure TDiffDlg.SaveDiffButtonClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if dlgSave.Execute then
|
||||||
|
DiffSynEdit.Lines.SaveToFile(dlgSave.FileName);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDiffDlg.Text1ComboboxChange(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
SetText1Index(Text1Combobox.Items.IndexOf(Text1Combobox.Text));
|
SetText1Index(Text1Combobox.Items.IndexOf(Text1Combobox.Text));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDiffDialog.Text1GroupBoxResize(Sender: TObject);
|
procedure TDiffDlg.Text2ComboboxChange(Sender: TObject);
|
||||||
begin
|
|
||||||
with Text1Combobox do begin
|
|
||||||
SetBounds(0,0,Parent.ClientWidth,Height);
|
|
||||||
end;
|
|
||||||
|
|
||||||
with Text1OnlySelectionCheckBox do begin
|
|
||||||
SetBounds(10,Text1Combobox.Top+Text1Combobox.Height+1,
|
|
||||||
Parent.ClientWidth-20,Height);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TDiffDialog.Text2ComboboxChange(Sender: TObject);
|
|
||||||
begin
|
begin
|
||||||
SetText2Index(Text2Combobox.Items.IndexOf(Text2Combobox.Text));
|
SetText2Index(Text2Combobox.Items.IndexOf(Text2Combobox.Text));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDiffDialog.Text2GroupBoxResize(Sender: TObject);
|
procedure TDiffDlg.SetupComponents;
|
||||||
begin
|
|
||||||
with Text2Combobox do begin
|
|
||||||
SetBounds(0,0,Parent.ClientWidth,Height);
|
|
||||||
end;
|
|
||||||
|
|
||||||
with Text2OnlySelectionCheckBox do begin
|
|
||||||
SetBounds(10,Text1Combobox.Top+Text1Combobox.Height+1,
|
|
||||||
Parent.ClientWidth-20,Height);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TDiffDialog.SetupComponents;
|
|
||||||
begin
|
begin
|
||||||
// text 1
|
// text 1
|
||||||
Text1GroupBox:=TGroupBox.Create(Self);
|
Text1GroupBox.Caption:=lisDiffDlgText1;
|
||||||
with Text1GroupBox do begin
|
Text1OnlySelectionCheckBox.Caption:=lisDiffDlgOnlySelection;
|
||||||
Name:='Text1GroupBox';
|
|
||||||
Parent:=Self;
|
|
||||||
Caption:=lisDiffDlgText1;
|
|
||||||
OnResize:=@Text1GroupBoxResize;
|
|
||||||
end;
|
|
||||||
|
|
||||||
Text1Combobox:=TComboBox.Create(Self);
|
|
||||||
with Text1Combobox do begin
|
|
||||||
Name:='Text1Combobox';
|
|
||||||
Parent:=Text1GroupBox;
|
|
||||||
OnChange:=@Text1ComboboxChange;
|
|
||||||
end;
|
|
||||||
|
|
||||||
Text1OnlySelectionCheckBox:=TCheckBox.Create(Self);
|
|
||||||
with Text1OnlySelectionCheckBox do begin
|
|
||||||
Name:='Text1OnlySelectionCheckBox';
|
|
||||||
Parent:=Text1GroupBox;
|
|
||||||
Caption:=lisDiffDlgOnlySelection;
|
|
||||||
OnClick:=@OnChangeFlag;
|
|
||||||
end;
|
|
||||||
|
|
||||||
// text 2
|
// text 2
|
||||||
Text2GroupBox:=TGroupBox.Create(Self);
|
Text2GroupBox.Caption:=lisDiffDlgText2;
|
||||||
with Text2GroupBox do begin
|
Text2OnlySelectionCheckBox.Caption:=lisDiffDlgOnlySelection;
|
||||||
Name:='Text2GroupBox';
|
|
||||||
Parent:=Self;
|
|
||||||
Caption:=lisDiffDlgText2;
|
|
||||||
OnResize:=@Text2GroupBoxResize;
|
|
||||||
end;
|
|
||||||
|
|
||||||
Text2Combobox:=TComboBox.Create(Self);
|
|
||||||
with Text2Combobox do begin
|
|
||||||
Name:='Text2Combobox';
|
|
||||||
Parent:=Text2GroupBox;
|
|
||||||
OnChange:=@Text2ComboboxChange;
|
|
||||||
end;
|
|
||||||
|
|
||||||
Text2OnlySelectionCheckBox:=TCheckBox.Create(Self);
|
|
||||||
with Text2OnlySelectionCheckBox do begin
|
|
||||||
Name:='Text2OnlySelectionCheckBox';
|
|
||||||
Parent:=Text2GroupBox;
|
|
||||||
Caption:=lisDiffDlgOnlySelection;
|
|
||||||
OnClick:=@OnChangeFlag;
|
|
||||||
end;
|
|
||||||
|
|
||||||
// diff preview
|
|
||||||
DiffGroupbox:=TGroupBox.Create(Self);
|
|
||||||
with DiffGroupbox do begin
|
|
||||||
Name:='DiffGroupbox';
|
|
||||||
Parent:=Self;
|
|
||||||
Caption:=lisMenuDiff;
|
|
||||||
end;
|
|
||||||
|
|
||||||
DiffSynEdit:=TSynEdit.Create(Self);
|
|
||||||
with DiffSynEdit do begin
|
|
||||||
Name:='DiffSynEdit';
|
|
||||||
Parent:=DiffGroupbox;
|
|
||||||
Gutter.Visible:=false;
|
|
||||||
Align:=alClient;
|
|
||||||
end;
|
|
||||||
|
|
||||||
// options
|
// options
|
||||||
OptionsGroupBox:=TGroupBox.Create(Self);
|
with OptionsGroupBox do
|
||||||
with OptionsGroupBox do begin
|
begin
|
||||||
Name:='OptionsGroupBox';
|
|
||||||
Parent:=Self;
|
|
||||||
Caption:=dlgFROpts;
|
Caption:=dlgFROpts;
|
||||||
OnResize:=@OptionsGroupBoxResize;
|
Items.Add(lisDiffDlgCaseInsensitive);
|
||||||
end;
|
Items.Add(lisDiffDlgIgnoreIfEmptyLinesWereAdd);
|
||||||
|
Items.Add(lisDiffDlgIgnoreSpacesAtStartOfLine);
|
||||||
IgnoreCaseCheckBox:=TCheckBox.Create(Self);
|
Items.Add(lisDiffDlgIgnoreSpacesAtEndOfLine);
|
||||||
with IgnoreCaseCheckBox do begin
|
Items.Add(lisDiffDlgIgnoreIfLineEndCharsDiffe);
|
||||||
Name:='IgnoreCaseCheckBox';
|
Items.Add(lisDiffDlgIgnoreIfSpaceCharsWereAdd);
|
||||||
Parent:=OptionsGroupBox;
|
Items.Add(lisDiffDlgIgnoreSpaces);
|
||||||
Caption:=lisDiffDlgCaseInsensitive;
|
|
||||||
OnClick:=@OnChangeFlag;
|
|
||||||
end;
|
|
||||||
|
|
||||||
IgnoreEmptyLineChangesCheckBox:=TCheckBox.Create(Self);
|
|
||||||
with IgnoreEmptyLineChangesCheckBox do begin
|
|
||||||
Name:='IgnoreEmptyLineChangesCheckBox';
|
|
||||||
Parent:=OptionsGroupBox;
|
|
||||||
Caption:=lisDiffDlgIgnoreIfEmptyLinesWereAdd;
|
|
||||||
OnClick:=@OnChangeFlag;
|
|
||||||
end;
|
|
||||||
|
|
||||||
IgnoreHeadingSpacesCheckBox:=TCheckBox.Create(Self);
|
|
||||||
with IgnoreHeadingSpacesCheckBox do begin
|
|
||||||
Name:='IgnoreHeadingSpacesCheckBox';
|
|
||||||
Parent:=OptionsGroupBox;
|
|
||||||
Caption:=lisDiffDlgIgnoreSpacesAtStartOfLine;
|
|
||||||
OnClick:=@OnChangeFlag;
|
|
||||||
end;
|
|
||||||
|
|
||||||
IgnoreTrailingSpacesCheckBox:=TCheckBox.Create(Self);
|
|
||||||
with IgnoreTrailingSpacesCheckBox do begin
|
|
||||||
Name:='IgnoreTrailingSpacesCheckBox';
|
|
||||||
Parent:=OptionsGroupBox;
|
|
||||||
Caption:=lisDiffDlgIgnoreSpacesAtEndOfLine;
|
|
||||||
OnClick:=@OnChangeFlag;
|
|
||||||
end;
|
|
||||||
|
|
||||||
IgnoreLineEndsCheckBox:=TCheckBox.Create(Self);
|
|
||||||
with IgnoreLineEndsCheckBox do begin
|
|
||||||
Name:='IgnoreLineEndsCheckBox';
|
|
||||||
Parent:=OptionsGroupBox;
|
|
||||||
Caption:=lisDiffDlgIgnoreIfLineEndCharsDiffe;
|
|
||||||
OnClick:=@OnChangeFlag;
|
|
||||||
end;
|
|
||||||
|
|
||||||
IgnoreSpaceCharAmountCheckBox:=TCheckBox.Create(Self);
|
|
||||||
with IgnoreSpaceCharAmountCheckBox do begin
|
|
||||||
Name:='IgnoreSpaceCharAmountCheckBox';
|
|
||||||
Parent:=OptionsGroupBox;
|
|
||||||
Caption:=lisDiffDlgIgnoreIfSpaceCharsWereAdd;
|
|
||||||
OnClick:=@OnChangeFlag;
|
|
||||||
end;
|
|
||||||
|
|
||||||
IgnoreSpaceCharsCheckBox:=TCheckBox.Create(Self);
|
|
||||||
with IgnoreSpaceCharsCheckBox do begin
|
|
||||||
Name:='IgnoreSpaceCharsCheckBox';
|
|
||||||
Parent:=OptionsGroupBox;
|
|
||||||
Caption:=lisDiffDlgIgnoreSpaces;
|
|
||||||
OnClick:=@OnChangeFlag;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// buttons
|
// buttons
|
||||||
CloseButton:=TButton.Create(Self);
|
CloseButton.Caption:=lisMenuClose;
|
||||||
with CloseButton do begin
|
OpenInEditorButton.Caption:=lisDiffDlgOpenDiffInEditor;
|
||||||
Name:='CloseButton';
|
|
||||||
Parent:=Self;
|
|
||||||
Caption:=lisMenuClose;
|
|
||||||
OnClick:=@CloseButtonClick;
|
|
||||||
end;
|
|
||||||
|
|
||||||
OpenInEditorButton:=TButton.Create(Self);
|
|
||||||
with OpenInEditorButton do begin
|
|
||||||
Name:='OpenInEditorButton';
|
|
||||||
Parent:=Self;
|
|
||||||
Caption:=lisDiffDlgOpenDiffInEditor;
|
|
||||||
OnClick:=@OpenInEditorButtonClick;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDiffDialog.UpdateDiff;
|
procedure TDiffDlg.UpdateDiff;
|
||||||
var
|
var
|
||||||
Text1Src, Text2Src: string;
|
Text1Src, Text2Src: string;
|
||||||
DiffTxt: String;
|
DiffTxt: String;
|
||||||
|
dat : TStrings;
|
||||||
begin
|
begin
|
||||||
if FLockCount>0 then begin
|
if FLockCount>0 then begin
|
||||||
fDiffNeedsUpdate:=true;
|
fDiffNeedsUpdate:=true;
|
||||||
@ -473,37 +269,50 @@ begin
|
|||||||
if (Text1=nil) or (Text2=nil) then begin
|
if (Text1=nil) or (Text2=nil) then begin
|
||||||
DiffSynEdit.Lines.Text:='';
|
DiffSynEdit.Lines.Text:='';
|
||||||
end else begin
|
end else begin
|
||||||
OnGetDiffFile(Text1.ID,
|
if Text1.ID = -1 then
|
||||||
Text1.SelectionAvailable and Text1OnlySelectionCheckBox.Checked,
|
begin
|
||||||
Text1Src);
|
dat := TStringList.Create;
|
||||||
OnGetDiffFile(Text2.ID,
|
dat.LoadFromFile(Text1.Name);
|
||||||
Text2.SelectionAvailable and Text2OnlySelectionCheckBox.Checked,
|
Text1Src := dat.Text;
|
||||||
Text2Src);
|
dat.Free;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
OnGetDiffFile(Text1.ID,
|
||||||
|
Text1.SelectionAvailable and Text1OnlySelectionCheckBox.Checked,
|
||||||
|
Text1Src);
|
||||||
|
|
||||||
|
if Text2.ID = -1 then
|
||||||
|
begin
|
||||||
|
dat := TStringList.Create;
|
||||||
|
dat.LoadFromFile(Text2.Name);
|
||||||
|
Text2Src := dat.Text;
|
||||||
|
dat.Free;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
OnGetDiffFile(Text2.ID,
|
||||||
|
Text2.SelectionAvailable and Text2OnlySelectionCheckBox.Checked,
|
||||||
|
Text2Src);
|
||||||
|
|
||||||
DiffTxt:=CreateTextDiff(Text1Src,Text2Src,GetDiffOptions,tdoContext);
|
DiffTxt:=CreateTextDiff(Text1Src,Text2Src,GetDiffOptions,tdoContext);
|
||||||
|
|
||||||
DiffSynEdit.Lines.Text:=DiffTxt;
|
DiffSynEdit.Lines.Text:=DiffTxt;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TDiffDialog.Create(TheOwner: TComponent);
|
constructor TDiffDlg.Create(TheOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
inherited Create(TheOwner);
|
inherited Create(TheOwner);
|
||||||
Name:='DiffDialog';
|
|
||||||
Caption := lisMenuDiff;
|
Caption := lisMenuDiff;
|
||||||
Width:=600;
|
IDEDialogLayoutList.ApplyLayout(Self,600,500);
|
||||||
Height:=400;
|
|
||||||
Position:=poScreenCenter;
|
|
||||||
IDEDialogLayoutList.ApplyLayout(Self,600,400);
|
|
||||||
OnResize:=@DiffDialogResize;
|
|
||||||
SetupComponents;
|
SetupComponents;
|
||||||
OnResize(nil);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TDiffDialog.Destroy;
|
destructor TDiffDlg.Destroy;
|
||||||
begin
|
begin
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDiffDialog.Init;
|
procedure TDiffDlg.Init;
|
||||||
var
|
var
|
||||||
LastText2Name: String;
|
LastText2Name: String;
|
||||||
i: Integer;
|
i: Integer;
|
||||||
@ -526,7 +335,7 @@ begin
|
|||||||
UpdateDiff;
|
UpdateDiff;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDiffDialog.FillTextComboBoxes;
|
procedure TDiffDlg.FillTextComboBoxes;
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
@ -545,7 +354,7 @@ begin
|
|||||||
Text2Combobox.Items.EndUpdate;
|
Text2Combobox.Items.EndUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDiffDialog.SetText1Index(NewIndex: integer);
|
procedure TDiffDlg.SetText1Index(NewIndex: integer);
|
||||||
var
|
var
|
||||||
OldText1: TDiffFile;
|
OldText1: TDiffFile;
|
||||||
begin
|
begin
|
||||||
@ -562,7 +371,7 @@ begin
|
|||||||
if Text1<>OldText1 then UpdateDiff;
|
if Text1<>OldText1 then UpdateDiff;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDiffDialog.SetText2Index(NewIndex: integer);
|
procedure TDiffDlg.SetText2Index(NewIndex: integer);
|
||||||
var
|
var
|
||||||
OldText2: TDiffFile;
|
OldText2: TDiffFile;
|
||||||
begin
|
begin
|
||||||
@ -579,7 +388,7 @@ begin
|
|||||||
if Text2<>OldText2 then UpdateDiff;
|
if Text2<>OldText2 then UpdateDiff;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDiffDialog.SaveSettings;
|
procedure TDiffDlg.SaveSettings;
|
||||||
begin
|
begin
|
||||||
InputHistories.DiffFlags:=GetDiffOptions;
|
InputHistories.DiffFlags:=GetDiffOptions;
|
||||||
if Text2<>nil then begin
|
if Text2<>nil then begin
|
||||||
@ -592,42 +401,42 @@ begin
|
|||||||
IDEDialogLayoutList.SaveLayout(Self);
|
IDEDialogLayoutList.SaveLayout(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDiffDialog.SetDiffOptions(NewOptions: TTextDiffFlags);
|
procedure TDiffDlg.SetDiffOptions(NewOptions: TTextDiffFlags);
|
||||||
begin
|
begin
|
||||||
IgnoreCaseCheckBox.Checked:=tdfIgnoreCase in NewOptions;
|
OptionsGroupBox.Checked[IgnoreCaseCheckBox]:=tdfIgnoreCase in NewOptions;
|
||||||
IgnoreEmptyLineChangesCheckBox.Checked:=tdfIgnoreEmptyLineChanges in NewOptions;
|
OptionsGroupBox.Checked[IgnoreEmptyLineChangesCheckBox]:=tdfIgnoreEmptyLineChanges in NewOptions;
|
||||||
IgnoreHeadingSpacesCheckBox.Checked:=tdfIgnoreHeadingSpaces in NewOptions;
|
OptionsGroupBox.Checked[IgnoreHeadingSpacesCheckBox]:=tdfIgnoreHeadingSpaces in NewOptions;
|
||||||
IgnoreLineEndsCheckBox.Checked:=tdfIgnoreLineEnds in NewOptions;
|
OptionsGroupBox.Checked[IgnoreLineEndsCheckBox]:=tdfIgnoreLineEnds in NewOptions;
|
||||||
IgnoreSpaceCharAmountCheckBox.Checked:=tdfIgnoreSpaceCharAmount in NewOptions;
|
OptionsGroupBox.Checked[IgnoreSpaceCharAmountCheckBox]:=tdfIgnoreSpaceCharAmount in NewOptions;
|
||||||
IgnoreSpaceCharsCheckBox.Checked:=tdfIgnoreSpaceChars in NewOptions;
|
OptionsGroupBox.Checked[IgnoreSpaceCharsCheckBox]:=tdfIgnoreSpaceChars in NewOptions;
|
||||||
IgnoreTrailingSpacesCheckBox.Checked:=tdfIgnoreTrailingSpaces in NewOptions;
|
OptionsGroupBox.Checked[IgnoreTrailingSpacesCheckBox]:=tdfIgnoreTrailingSpaces in NewOptions;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TDiffDialog.GetDiffOptions: TTextDiffFlags;
|
function TDiffDlg.GetDiffOptions: TTextDiffFlags;
|
||||||
begin
|
begin
|
||||||
Result:=[];
|
Result:=[];
|
||||||
if IgnoreCaseCheckBox.Checked then
|
if OptionsGroupBox.Checked[IgnoreCaseCheckBox] then
|
||||||
Include(Result,tdfIgnoreCase);
|
Include(Result,tdfIgnoreCase);
|
||||||
if IgnoreEmptyLineChangesCheckBox.Checked then
|
if OptionsGroupBox.Checked[IgnoreEmptyLineChangesCheckBox] then
|
||||||
Include(Result,tdfIgnoreEmptyLineChanges);
|
Include(Result,tdfIgnoreEmptyLineChanges);
|
||||||
if IgnoreHeadingSpacesCheckBox.Checked then
|
if OptionsGroupBox.Checked[IgnoreHeadingSpacesCheckBox] then
|
||||||
Include(Result,tdfIgnoreHeadingSpaces);
|
Include(Result,tdfIgnoreHeadingSpaces);
|
||||||
if IgnoreLineEndsCheckBox.Checked then
|
if OptionsGroupBox.Checked[IgnoreLineEndsCheckBox] then
|
||||||
Include(Result,tdfIgnoreLineEnds);
|
Include(Result,tdfIgnoreLineEnds);
|
||||||
if IgnoreSpaceCharAmountCheckBox.Checked then
|
if OptionsGroupBox.Checked[IgnoreSpaceCharAmountCheckBox] then
|
||||||
Include(Result,tdfIgnoreSpaceCharAmount);
|
Include(Result,tdfIgnoreSpaceCharAmount);
|
||||||
if IgnoreSpaceCharsCheckBox.Checked then
|
if OptionsGroupBox.Checked[IgnoreSpaceCharsCheckBox] then
|
||||||
Include(Result,tdfIgnoreSpaceChars);
|
Include(Result,tdfIgnoreSpaceChars);
|
||||||
if IgnoreTrailingSpacesCheckBox.Checked then
|
if OptionsGroupBox.Checked[IgnoreTrailingSpacesCheckBox] then
|
||||||
Include(Result,tdfIgnoreTrailingSpaces);
|
Include(Result,tdfIgnoreTrailingSpaces);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDiffDialog.BeginUpdate;
|
procedure TDiffDlg.BeginUpdate;
|
||||||
begin
|
begin
|
||||||
inc(FLockCount);
|
inc(FLockCount);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDiffDialog.EndUpdate;
|
procedure TDiffDlg.EndUpdate;
|
||||||
begin
|
begin
|
||||||
dec(FLockCount);
|
dec(FLockCount);
|
||||||
if (FLockCount=0) and fDiffNeedsUpdate then UpdateDiff;
|
if (FLockCount=0) and fDiffNeedsUpdate then UpdateDiff;
|
||||||
@ -675,5 +484,8 @@ begin
|
|||||||
while (Result>=0) and (Items[Result].Name<>Name) do dec(Result);
|
while (Result>=0) and (Items[Result].Name<>Name) do dec(Result);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
initialization
|
||||||
|
{$I diffdialog.lrs}
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user