mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-28 10:02:14 +00:00
ADD: Encoding support to internal differ tool
This commit is contained in:
parent
7da67f4cec
commit
52f6a53c9a
4 changed files with 262 additions and 11 deletions
158
src/fdiffer.lfm
158
src/fdiffer.lfm
|
|
@ -1,7 +1,7 @@
|
|||
object frmDiffer: TfrmDiffer
|
||||
Left = 157
|
||||
Left = 158
|
||||
Height = 370
|
||||
Top = 60
|
||||
Top = 152
|
||||
Width = 760
|
||||
Caption = 'Compare files'
|
||||
ClientHeight = 350
|
||||
|
|
@ -11,7 +11,7 @@ object frmDiffer: TfrmDiffer
|
|||
OnDestroy = FormDestroy
|
||||
OnResize = FormResize
|
||||
Position = poDefault
|
||||
LCLVersion = '0.9.31'
|
||||
LCLVersion = '0.9.29'
|
||||
object ToolBar: TToolBar
|
||||
Left = 0
|
||||
Height = 26
|
||||
|
|
@ -178,6 +178,7 @@ object frmDiffer: TfrmDiffer
|
|||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
|
||||
}
|
||||
NumGlyphs = 0
|
||||
OnClick = btnLeftEncodingClick
|
||||
end
|
||||
object btnLeftSave: TSpeedButton
|
||||
AnchorSideLeft.Control = pnlLeftBox
|
||||
|
|
@ -369,6 +370,7 @@ object frmDiffer: TfrmDiffer
|
|||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
|
||||
}
|
||||
NumGlyphs = 0
|
||||
OnClick = btnRightEncodingClick
|
||||
end
|
||||
object btnRightSave: TSpeedButton
|
||||
AnchorSideLeft.Control = pnlRightBox
|
||||
|
|
@ -843,10 +845,140 @@ object frmDiffer: TfrmDiffer
|
|||
end
|
||||
object miSaveLeftAs: TMenuItem
|
||||
Action = actSaveLeftAs
|
||||
Bitmap.Data = {
|
||||
C6070000424DC607000000000000360000002800000016000000160000000100
|
||||
2000000000009007000064000000640000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000004864720036546523FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000
|
||||
00006279867E364246FF44778DFB252D34FF757575FF787878FF787878FF7878
|
||||
78FF787878FF787878FF787878FF1A191BFF19191BFF1D1C1FFF1F1F21EFFFFF
|
||||
FF00000000000000000000000000000000000000000000000000567181049DBC
|
||||
CAFF7AB8CCFF3C92AEFF1F6E89FF161517FF181719FF8A8A8AFF909090FF9090
|
||||
90FF909090FF343336FF201F21FF4E4D51FF212023FFFFFFFF00000000000000
|
||||
000000000000000000000000000000000000FFFFFF0088A1AFFFB0CAD6FF2C3A
|
||||
3EFF0B96C1FF0C6885FF070707FF404040FF9C9C9CFF9F9F9FFF9F9F9FFF3F3E
|
||||
41FF252426FF58575AFF252426FFFFFFFF000000000000000000000000000000
|
||||
00000000000000000000FFFFFF004E606CFF2C9ABDFF242C2FFF213136FF0BA3
|
||||
D2FF0C5166FF2B2B2BFF606060FFAEAEAEFFAEAEAEFF414042FF272728FF4443
|
||||
46FF2A292BFFFFFFFF0000000000000000000000000000000000000000000000
|
||||
0000FFFFFF002E2D30FF298FB2FF1695BDFF252829FF18343DFF0EADDFFF2E5E
|
||||
6CFF424242FF959595FFD3D3D3FF272629FF242326FF464549FF2E2D30FFFFFF
|
||||
FF00000000000000000000000000000000000000000000000000FFFFFF003130
|
||||
32FF494B4FFF46ADCEFF1582A5FF262626FF0E3845FF0CABDDFF173641FF1D1C
|
||||
1DFF3D3D3FFF4B4A4DFF4B4A4DFF4B4A4DFF313032FFFFFFFF00000000000000
|
||||
000000000000000000000000000000000000FFFFFF00333335FF4F4E51FF4A51
|
||||
56FF67C6E4FF4E899CFF252525FF094558FF0DA4D5FF1E2F36FF252426FF4847
|
||||
49FF4F4E51FF4F4E51FF333335FFFFFFFF000000000000000000000000000000
|
||||
00000000000000000000FFFFFF00363537FF535254FFE8DED4FFCCD0C9FF84DC
|
||||
F7FF54808CFF252525FF12617AFF1CA6D1FF666867FF827B74FFDDD1C7FF5352
|
||||
54FF363537FFFFFFFF0000000000000000000000000000000000000000000000
|
||||
0000FFFFFF00383739FF565557FFF1EAE2FFB8A28BFF979D92FF71D8F7FF3456
|
||||
5FFF1D1D1DFF117390FF2199BCFF5E5449FF9F9A94FF555456FF383739FFFFFF
|
||||
FF00000000000000000000000000000000000000000000000000FFFFFF003B3A
|
||||
3BFF5A595BFFF7F3EEFFF7F3EFFFF7F3EFFFAFCFD7FF33CAF9FF2C454CFF1518
|
||||
19FF178BB0FF3DA2C1FF8F8B88FF464546FF3B3A3BFFFFFFFF00000000000000
|
||||
000000000000000000000000000000000000FFFFFF003D3C3DFF5D5C5EFFFDFC
|
||||
FBFFFBF9F8FFFBF9F9FFFBF9F8FF94C3D1FF32C4F1FF27363BFF0E171AFF1598
|
||||
C1FF57A6BEFF3D3C3EFF3B3A3BFFFFFFFF000000000000000000000000000000
|
||||
00000000000000000000FFFFFF003F3E40FF616062FFFDFAF9FFCFB69CFFCFB6
|
||||
9CFFCFB69CFFCFB69CFF5E9FABFF2EB3DBFF242B2DFF0B1C21FF11A0CDFF2E60
|
||||
7AFF3E3D3FFFFFFFFF0000000000000000000000000000000000000000000000
|
||||
0000FFFFFF00414042FF59595AFFFAF4F1FFFAF4F0FFFAF4F0FFFAF4F0FFFAF4
|
||||
F1FFF9F5F2FF55C6E9FF36AFD4FF1E2020FF1D2B85FF05079AFF3A394FFFFFFF
|
||||
FF00000000000000000000000000000000000000000000000000FFFFFF004B4B
|
||||
4CEF444344FFB9B4B3FFB9B4B3FFB9B4B3FFB9B4B3FFB9B6B4FFBBB6B4FFB6B6
|
||||
B5FF34B6DEFF446AC0FF1B1BCEFF1111A3FF4A4A4DEFFFFFFF00000000000000
|
||||
000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00186FAB174345
|
||||
D3D63A3ACFB25353D418FFFFFF00FFFFFF000000000000000000000000000000
|
||||
00000000000000000000
|
||||
}
|
||||
OnClick = actSaveLeftAsExecute
|
||||
end
|
||||
object miSaveRightAs: TMenuItem
|
||||
Action = actSaveRightAs
|
||||
Bitmap.Data = {
|
||||
C6070000424DC607000000000000360000002800000016000000160000000100
|
||||
2000000000009007000064000000640000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000004864720036546523FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000
|
||||
00006279867E364246FF44778DFB252D34FF757575FF787878FF787878FF7878
|
||||
78FF787878FF787878FF787878FF1A191BFF19191BFF1D1C1FFF1F1F21EFFFFF
|
||||
FF00000000000000000000000000000000000000000000000000567181049DBC
|
||||
CAFF7AB8CCFF3C92AEFF1F6E89FF161517FF181719FF8A8A8AFF909090FF9090
|
||||
90FF909090FF343336FF201F21FF4E4D51FF212023FFFFFFFF00000000000000
|
||||
000000000000000000000000000000000000FFFFFF0088A1AFFFB0CAD6FF2C3A
|
||||
3EFF0B96C1FF0C6885FF070707FF404040FF9C9C9CFF9F9F9FFF9F9F9FFF3F3E
|
||||
41FF252426FF58575AFF252426FFFFFFFF000000000000000000000000000000
|
||||
00000000000000000000FFFFFF004E606CFF2C9ABDFF242C2FFF213136FF0BA3
|
||||
D2FF0C5166FF2B2B2BFF606060FFAEAEAEFFAEAEAEFF414042FF272728FF4443
|
||||
46FF2A292BFFFFFFFF0000000000000000000000000000000000000000000000
|
||||
0000FFFFFF002E2D30FF298FB2FF1695BDFF252829FF18343DFF0EADDFFF2E5E
|
||||
6CFF424242FF959595FFD3D3D3FF272629FF242326FF464549FF2E2D30FFFFFF
|
||||
FF00000000000000000000000000000000000000000000000000FFFFFF003130
|
||||
32FF494B4FFF46ADCEFF1582A5FF262626FF0E3845FF0CABDDFF173641FF1D1C
|
||||
1DFF3D3D3FFF4B4A4DFF4B4A4DFF4B4A4DFF313032FFFFFFFF00000000000000
|
||||
000000000000000000000000000000000000FFFFFF00333335FF4F4E51FF4A51
|
||||
56FF67C6E4FF4E899CFF252525FF094558FF0DA4D5FF1E2F36FF252426FF4847
|
||||
49FF4F4E51FF4F4E51FF333335FFFFFFFF000000000000000000000000000000
|
||||
00000000000000000000FFFFFF00363537FF535254FFE8DED4FFCCD0C9FF84DC
|
||||
F7FF54808CFF252525FF12617AFF1CA6D1FF666867FF827B74FFDDD1C7FF5352
|
||||
54FF363537FFFFFFFF0000000000000000000000000000000000000000000000
|
||||
0000FFFFFF00383739FF565557FFF1EAE2FFB8A28BFF979D92FF71D8F7FF3456
|
||||
5FFF1D1D1DFF117390FF2199BCFF5E5449FF9F9A94FF555456FF383739FFFFFF
|
||||
FF00000000000000000000000000000000000000000000000000FFFFFF003B3A
|
||||
3BFF5A595BFFF7F3EEFFF7F3EFFFF7F3EFFFAFCFD7FF33CAF9FF2C454CFF1518
|
||||
19FF178BB0FF3DA2C1FF8F8B88FF464546FF3B3A3BFFFFFFFF00000000000000
|
||||
000000000000000000000000000000000000FFFFFF003D3C3DFF5D5C5EFFFDFC
|
||||
FBFFFBF9F8FFFBF9F9FFFBF9F8FF94C3D1FF32C4F1FF27363BFF0E171AFF1598
|
||||
C1FF57A6BEFF3D3C3EFF3B3A3BFFFFFFFF000000000000000000000000000000
|
||||
00000000000000000000FFFFFF003F3E40FF616062FFFDFAF9FFCFB69CFFCFB6
|
||||
9CFFCFB69CFFCFB69CFF5E9FABFF2EB3DBFF242B2DFF0B1C21FF11A0CDFF2E60
|
||||
7AFF3E3D3FFFFFFFFF0000000000000000000000000000000000000000000000
|
||||
0000FFFFFF00414042FF59595AFFFAF4F1FFFAF4F0FFFAF4F0FFFAF4F0FFFAF4
|
||||
F1FFF9F5F2FF55C6E9FF36AFD4FF1E2020FF1D2B85FF05079AFF3A394FFFFFFF
|
||||
FF00000000000000000000000000000000000000000000000000FFFFFF004B4B
|
||||
4CEF444344FFB9B4B3FFB9B4B3FFB9B4B3FFB9B4B3FFB9B6B4FFBBB6B4FFB6B6
|
||||
B5FF34B6DEFF446AC0FF1B1BCEFF1111A3FF4A4A4DEFFFFFFF00000000000000
|
||||
000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00186FAB174345
|
||||
D3D63A3ACFB25353D418FFFFFF00FFFFFF000000000000000000000000000000
|
||||
00000000000000000000
|
||||
}
|
||||
OnClick = actSaveRightAsExecute
|
||||
end
|
||||
object miDivider6: TMenuItem
|
||||
|
|
@ -1425,6 +1557,18 @@ object frmDiffer: TfrmDiffer
|
|||
OnClick = actCopyRightToLeftExecute
|
||||
end
|
||||
end
|
||||
object miEncoding: TMenuItem
|
||||
Caption = 'Encoding'
|
||||
object miEncodingLeft: TMenuItem
|
||||
Caption = 'Left'
|
||||
end
|
||||
object miEncodingRight: TMenuItem
|
||||
Caption = 'Right'
|
||||
end
|
||||
end
|
||||
object miAbout: TMenuItem
|
||||
Caption = 'About'
|
||||
end
|
||||
end
|
||||
object ActionList: TActionList
|
||||
Images = ImageList
|
||||
|
|
@ -2621,4 +2765,12 @@ object frmDiffer: TfrmDiffer
|
|||
OnClick = actEditSelectAllExecute
|
||||
end
|
||||
end
|
||||
object pmEncodingLeft: TPopupMenu
|
||||
left = 256
|
||||
top = 144
|
||||
end
|
||||
object pmEncodingRight: TPopupMenu
|
||||
left = 319
|
||||
top = 144
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
TFRMDIFFER.CAPTION=Compare files
|
||||
TFRMDIFFER.FRMDIFFER.CAPTION=Compare files
|
||||
TFRMDIFFER.MNUFILE.CAPTION=File
|
||||
TFRMDIFFER.MIDIVIDER7.CAPTION=-
|
||||
TFRMDIFFER.MIDIVIDER6.CAPTION=-
|
||||
|
|
@ -13,6 +13,10 @@ TFRMDIFFER.MNUACTIONS.CAPTION=&Actions
|
|||
TFRMDIFFER.MIDIVIDER1.CAPTION=-
|
||||
TFRMDIFFER.MIDIVIDER2.CAPTION=-
|
||||
TFRMDIFFER.MIDIVIDER5.CAPTION=-
|
||||
TFRMDIFFER.MIENCODING.CAPTION=Encoding
|
||||
TFRMDIFFER.MIENCODINGLEFT.CAPTION=Left
|
||||
TFRMDIFFER.MIENCODINGRIGHT.CAPTION=Right
|
||||
TFRMDIFFER.MIABOUT.CAPTION=About
|
||||
TFRMDIFFER.ACTSAVE.CAPTION=Save
|
||||
TFRMDIFFER.ACTSAVEAS.CAPTION=Save as...
|
||||
TFRMDIFFER.ACTSTARTCOMPARE.CAPTION=Compare
|
||||
|
|
|
|||
107
src/fdiffer.pas
107
src/fdiffer.pas
|
|
@ -3,7 +3,7 @@
|
|||
-------------------------------------------------------------------------
|
||||
Internal diff and merge tool
|
||||
|
||||
Copyright (C) 2010 Koblov Alexander (Alexx2000@mail.ru)
|
||||
Copyright (C) 2010-2011 Koblov Alexander (Alexx2000@mail.ru)
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
|
@ -72,6 +72,10 @@ type
|
|||
edtFileNameRight: TFileNameEdit;
|
||||
ImageList: TImageList;
|
||||
MainMenu: TMainMenu;
|
||||
miEncodingRight: TMenuItem;
|
||||
miEncodingLeft: TMenuItem;
|
||||
miAbout: TMenuItem;
|
||||
miEncoding: TMenuItem;
|
||||
miSaveRightAs: TMenuItem;
|
||||
miSaveLeftAs: TMenuItem;
|
||||
miCopyContext: TMenuItem;
|
||||
|
|
@ -132,6 +136,8 @@ type
|
|||
btnLeftSaveAs: TSpeedButton;
|
||||
btnRightSave: TSpeedButton;
|
||||
btnRightSaveAs: TSpeedButton;
|
||||
pmEncodingLeft: TPopupMenu;
|
||||
pmEncodingRight: TPopupMenu;
|
||||
Splitter: TSplitter;
|
||||
StatusBar: TStatusBar;
|
||||
ToolBar: TToolBar;
|
||||
|
|
@ -173,6 +179,8 @@ type
|
|||
procedure actSaveRightExecute(Sender: TObject);
|
||||
procedure actStartCompareExecute(Sender: TObject);
|
||||
procedure actKeepScrollingExecute(Sender: TObject);
|
||||
procedure btnLeftEncodingClick(Sender: TObject);
|
||||
procedure btnRightEncodingClick(Sender: TObject);
|
||||
procedure edtFileNameLeftAcceptFileName(Sender: TObject; var Value: String);
|
||||
procedure edtFileNameRightAcceptFileName(Sender: TObject; var Value: String);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
|
|
@ -185,12 +193,18 @@ type
|
|||
SynDiffEditRight: TSynDiffEdit;
|
||||
HashListLeft,
|
||||
HashListRight: TList;
|
||||
EncodingList: TStringList;
|
||||
procedure Clear(bLeft, bRight: Boolean);
|
||||
procedure BuildHashList(bLeft, bRight: Boolean);
|
||||
procedure ChooseEncoding(SynDiffEdit: TSynDiffEdit);
|
||||
procedure ChooseEncoding(MenuItem: TMenuItem; Encoding: String);
|
||||
procedure FillEncodingMenu(TheOwner: TMenuItem; MenuHandler: TNotifyEvent; GroupIndex: LongInt);
|
||||
procedure LoadFromFile(SynDiffEdit: TSynDiffEdit; const FileName: UTF8String);
|
||||
procedure SaveToFile(SynDiffEdit: TSynDiffEdit; const FileName: UTF8String);
|
||||
procedure OpenFileLeft(const FileName: UTF8String);
|
||||
procedure OpenFileRight(const FileName: UTF8String);
|
||||
procedure SetEncodingLeft(Sender: TObject);
|
||||
procedure SetEncodingRight(Sender: TObject);
|
||||
procedure SynDiffEditEnter(Sender: TObject);
|
||||
procedure SynDiffEditLeftStatusChange(Sender: TObject; Changes: TSynStatusChanges);
|
||||
procedure SynDiffEditRightStatusChange(Sender: TObject; Changes: TSynStatusChanges);
|
||||
|
|
@ -433,6 +447,9 @@ end;
|
|||
|
||||
procedure TfrmDiffer.actBinaryCompareExecute(Sender: TObject);
|
||||
begin
|
||||
miEncoding.Enabled:= not actBinaryCompare.Checked;
|
||||
btnLeftEncoding.Enabled:= not actBinaryCompare.Checked;
|
||||
btnRightEncoding.Enabled:= not actBinaryCompare.Checked;
|
||||
if actBinaryCompare.Checked then
|
||||
begin
|
||||
SynDiffEditLeft.Lines.Clear;
|
||||
|
|
@ -559,6 +576,16 @@ begin
|
|||
|
||||
end;
|
||||
|
||||
procedure TfrmDiffer.btnLeftEncodingClick(Sender: TObject);
|
||||
begin
|
||||
pmEncodingLeft.PopUp(Mouse.CursorPos.X, Mouse.CursorPos.Y);
|
||||
end;
|
||||
|
||||
procedure TfrmDiffer.btnRightEncodingClick(Sender: TObject);
|
||||
begin
|
||||
pmEncodingRight.PopUp(Mouse.CursorPos.X, Mouse.CursorPos.Y);
|
||||
end;
|
||||
|
||||
procedure TfrmDiffer.edtFileNameLeftAcceptFileName(Sender: TObject;
|
||||
var Value: String);
|
||||
begin
|
||||
|
|
@ -594,6 +621,14 @@ begin
|
|||
SynDiffEditActive:= SynDiffEditLeft;
|
||||
// Initialize property storage
|
||||
InitPropStorage(Self);
|
||||
// Fill encoding menu
|
||||
EncodingList:= TStringList.Create;
|
||||
GetSupportedEncodings(EncodingList);
|
||||
FillEncodingMenu(miEncodingLeft, @SetEncodingLeft, 1);
|
||||
FillEncodingMenu(miEncodingRight, @SetEncodingRight, 2);
|
||||
FillEncodingMenu(pmEncodingLeft.Items, @SetEncodingLeft, 1);
|
||||
FillEncodingMenu(pmEncodingRight.Items, @SetEncodingRight, 2);
|
||||
EncodingList.Free;
|
||||
end;
|
||||
|
||||
procedure TfrmDiffer.FormDestroy(Sender: TObject);
|
||||
|
|
@ -650,17 +685,60 @@ begin
|
|||
actStartCompare.Enabled := (HashListLeft.Count > 0) and (HashListRight.Count > 0);
|
||||
end;
|
||||
|
||||
procedure TfrmDiffer.ChooseEncoding(SynDiffEdit: TSynDiffEdit);
|
||||
begin
|
||||
if SynDiffEdit = SynDiffEditLeft then
|
||||
begin
|
||||
ChooseEncoding(miEncodingLeft, SynDiffEdit.Encoding);
|
||||
ChooseEncoding(pmEncodingLeft.Items, SynDiffEdit.Encoding);
|
||||
end
|
||||
else
|
||||
begin
|
||||
ChooseEncoding(miEncodingRight, SynDiffEdit.Encoding);
|
||||
ChooseEncoding(pmEncodingRight.Items, SynDiffEdit.Encoding);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmDiffer.ChooseEncoding(MenuItem: TMenuItem; Encoding: String);
|
||||
var
|
||||
I: Integer;
|
||||
begin
|
||||
Encoding:= NormalizeEncoding(Encoding);
|
||||
for I:= 0 to MenuItem.Count - 1 do
|
||||
if SameText(NormalizeEncoding(MenuItem.Items[I].Caption), Encoding) then
|
||||
MenuItem.Items[I].Checked:= True;
|
||||
end;
|
||||
|
||||
procedure TfrmDiffer.FillEncodingMenu(TheOwner: TMenuItem;
|
||||
MenuHandler: TNotifyEvent; GroupIndex: LongInt);
|
||||
var
|
||||
I: Integer;
|
||||
mi: TMenuItem;
|
||||
begin
|
||||
for I:= 0 to EncodingList.Count - 1 do
|
||||
begin
|
||||
mi:= TMenuItem.Create(TheOwner);
|
||||
mi.Caption:= EncodingList[I];
|
||||
mi.RadioItem:= True;
|
||||
mi.GroupIndex:= GroupIndex;
|
||||
mi.OnClick:= MenuHandler;
|
||||
TheOwner.Add(mi);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmDiffer.LoadFromFile(SynDiffEdit: TSynDiffEdit; const FileName: UTF8String);
|
||||
var
|
||||
Encoding: AnsiString;
|
||||
fsFileStream: TFileStreamEx = nil;
|
||||
begin
|
||||
fsFileStream:= TFileStreamEx.Create(FileName, fmOpenRead or fmShareDenyNone);
|
||||
try
|
||||
SynDiffEdit.Lines.LoadFromStream(fsFileStream);
|
||||
if Encoding = EmptyStr then
|
||||
Encoding:= GuessEncoding(SynDiffEdit.Lines.Text);
|
||||
SynDiffEdit.Lines.Text:= ConvertEncoding(SynDiffEdit.Lines.Text, Encoding, EncodingUTF8);
|
||||
if Length(SynDiffEdit.Encoding) = 0 then
|
||||
begin
|
||||
SynDiffEdit.Encoding:= GuessEncoding(SynDiffEdit.Lines.Text);
|
||||
ChooseEncoding(SynDiffEdit);
|
||||
end;
|
||||
SynDiffEdit.Lines.Text:= ConvertEncoding(SynDiffEdit.Lines.Text, SynDiffEdit.Encoding, EncodingUTF8);
|
||||
finally
|
||||
fsFileStream.Free;
|
||||
end;
|
||||
|
|
@ -669,7 +747,6 @@ end;
|
|||
procedure TfrmDiffer.SaveToFile(SynDiffEdit: TSynDiffEdit;
|
||||
const FileName: UTF8String);
|
||||
var
|
||||
Encoding: AnsiString;
|
||||
slStringList: TStringListEx;
|
||||
begin
|
||||
slStringList:= TStringListEx.Create;
|
||||
|
|
@ -678,7 +755,7 @@ begin
|
|||
// remove fake lines
|
||||
SynDiffEdit.RemoveFakeLines(slStringList);
|
||||
// restore encoding
|
||||
slStringList.Text:= ConvertEncoding(slStringList.Text, EncodingUTF8, Encoding);
|
||||
slStringList.Text:= ConvertEncoding(slStringList.Text, EncodingUTF8, SynDiffEdit.Encoding);
|
||||
// save to file
|
||||
slStringList.SaveToFile(FileName);
|
||||
SynDiffEdit.Modified:= False; // needed for the undo stack
|
||||
|
|
@ -721,6 +798,22 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmDiffer.SetEncodingLeft(Sender: TObject);
|
||||
begin
|
||||
SynDiffEditLeft.Encoding:= (Sender as TMenuItem).Caption;
|
||||
ChooseEncoding(miEncodingLeft, SynDiffEditLeft.Encoding);
|
||||
ChooseEncoding(pmEncodingLeft.Items, SynDiffEditLeft.Encoding);
|
||||
actReload.Execute;
|
||||
end;
|
||||
|
||||
procedure TfrmDiffer.SetEncodingRight(Sender: TObject);
|
||||
begin
|
||||
SynDiffEditRight.Encoding:= (Sender as TMenuItem).Caption;
|
||||
ChooseEncoding(miEncodingRight, SynDiffEditRight.Encoding);
|
||||
ChooseEncoding(pmEncodingRight.Items, SynDiffEditRight.Encoding);
|
||||
actReload.Execute;
|
||||
end;
|
||||
|
||||
procedure TfrmDiffer.SynDiffEditEnter(Sender: TObject);
|
||||
begin
|
||||
SynDiffEditActive:= (Sender as TSynDiffEdit);
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ type
|
|||
FDiff: TDiff;
|
||||
FSpecialLineMarkupEvent: TSpecialLineMarkupEvent;
|
||||
FDiffCount: Integer;
|
||||
FEncoding: String;
|
||||
private
|
||||
function GetDiffCount: Integer;
|
||||
function GetDiffKind(Index: Integer): TChangeKind;
|
||||
|
|
@ -97,6 +98,7 @@ type
|
|||
property DiffKind[Index: Integer]: TChangeKind read GetDiffKind;
|
||||
property DiffCount: Integer read GetDiffCount;
|
||||
property LineNumber[Index: Integer]: PtrInt read GetLineNumber write SetLineNumber;
|
||||
property Encoding: String read FEncoding write FEncoding;
|
||||
published
|
||||
property OnStatusChange;
|
||||
end;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue