project data is now stored in .lpi file

removal of SVNSettingsForm
removal of TSVNSettings

git-svn-id: trunk@17195 -
This commit is contained in:
darius 2008-11-03 12:31:00 +00:00
parent 20fc2c1900
commit b861fd7cda
7 changed files with 57 additions and 725 deletions

3
.gitattributes vendored
View File

@ -900,9 +900,6 @@ components/lazsvnpkg/svndiffform.pas svneol=native#text/plain
components/lazsvnpkg/svnlogform.lfm svneol=native#text/plain
components/lazsvnpkg/svnlogform.lrs svneol=native#text/plain
components/lazsvnpkg/svnlogform.pas svneol=native#text/plain
components/lazsvnpkg/svnsettingsform.lfm svneol=native#text/plain
components/lazsvnpkg/svnsettingsform.lrs svneol=native#text/plain
components/lazsvnpkg/svnsettingsform.pas svneol=native#text/plain
components/lazsvnpkg/svnstatusform.lfm svneol=native#text/plain
components/lazsvnpkg/svnstatusform.lrs svneol=native#text/plain
components/lazsvnpkg/svnstatusform.pas svneol=native#text/plain

View File

@ -23,7 +23,7 @@ unit LazSVNIntf;
interface
uses
Classes, SysUtils, LCLtype, LResources, ProjectIntf;
Classes, SysUtils, LCLtype, LResources, ProjectIntf, LCLProc;
procedure ProcSVNLog(Sender: TObject);
procedure ProcSVNCommit(Sender: TObject);
@ -37,7 +37,7 @@ implementation
uses
MenuIntf, IDECommands, Controls, Forms, Dialogs,
SVNLogForm, SVNUpdateForm, SVNDiffForm, SVNStatusForm, LazIDEIntf, SVNClasses,
SVNSettingsForm, SrcEditorIntf;
SVNAddProjectForm, SrcEditorIntf;
var
CmdSVNLog : TIDECommand;
@ -81,21 +81,24 @@ begin
CmdSVNDiff, 'menu_svn_diff');
RegisterIDEMenuCommand(mnuSVNSection, 'SVNSettings', rsSettings, nil, nil,
CmdSVNSettings, 'menu_environment_options');
SVNSettingsFrm := TSVNSettingsFrm.Create(nil);
end;
procedure ProcSVNLog(Sender: TObject);
var
Repo: string;
IsActive: boolean;
sBool: string;
begin
If Assigned(LazarusIDE) and Assigned(LazarusIDE.ActiveProject) then
begin
Repo := ExtractFilePath(LazarusIDE.ActiveProject.ProjectInfoFile);
IsActive := SVNSettings.RepositoryByPath(LazarusIDE.ActiveProject.ProjectInfoFile, Repo);
Repo := LazarusIDE.ActiveProject.CustomSessionData.Values[SVN_REPOSITORY];
sBool := LazarusIDE.ActiveProject.CustomSessionData.Values[SVN_ACTIVE];
if sBool <> '' then
IsActive := StrToBool(sBool)
else
IsActive := False;
if IsActive then
if IsActive and (Repo <> '') then
ShowSVNLogFrm(Repo)
else
ShowMessage(rsProjectIsNotActiveInSVNSettingsPleaseActivateFirst);
@ -106,13 +109,18 @@ procedure ProcSVNCommit(Sender: TObject);
var
Repo: string;
IsActive: boolean;
sBool: string;
begin
If Assigned(LazarusIDE) and Assigned(LazarusIDE.ActiveProject) then
begin
Repo := ExtractFilePath(LazarusIDE.ActiveProject.ProjectInfoFile);
IsActive := SVNSettings.RepositoryByPath(LazarusIDE.ActiveProject.ProjectInfoFile, Repo);
Repo := LazarusIDE.ActiveProject.CustomSessionData.Values[SVN_REPOSITORY];
sBool := LazarusIDE.ActiveProject.CustomSessionData.Values[SVN_ACTIVE];
if sBool <> '' then
IsActive := StrToBool(sBool)
else
IsActive := False;
if IsActive then
if IsActive and (Repo <> '') then
ShowSVNStatusFrm(Repo)
else
ShowMessage(rsProjectIsNotActiveInSVNSettingsPleaseActivateFirst);
@ -123,13 +131,20 @@ procedure ProcSVNUpdate(Sender: TObject);
var
Repo: string;
IsActive: boolean;
sBool: string;
begin
If Assigned(LazarusIDE) and Assigned(LazarusIDE.ActiveProject) then
begin
Repo := ExtractFilePath(LazarusIDE.ActiveProject.ProjectInfoFile);
IsActive := SVNSettings.RepositoryByPath(LazarusIDE.ActiveProject.ProjectInfoFile, Repo);
Repo := LazarusIDE.ActiveProject.CustomSessionData.Values[SVN_REPOSITORY];
sBool := LazarusIDE.ActiveProject.CustomSessionData.Values[SVN_ACTIVE];
if sBool <> '' then
IsActive := StrToBool(sBool)
else
IsActive := False;
if IsActive then
debugln('ProcSVNUpdate repo='+Repo+' isactive='+sBool);
if IsActive and (Repo <> '') then
ShowSVNUpdateFrm(Repo)
else
ShowMessage(rsProjectIsNotActiveInSVNSettingsPleaseActivateFirst);
@ -141,12 +156,18 @@ var
Repo: string;
IsActive: boolean;
SrcFile: string;
sBool: string;
begin
If Assigned(LazarusIDE) and Assigned(LazarusIDE.ActiveProject) then
begin
Repo := ExtractFilePath(LazarusIDE.ActiveProject.ProjectInfoFile);
IsActive := SVNSettings.RepositoryByPath(LazarusIDE.ActiveProject.ProjectInfoFile, Repo);
if IsActive then
Repo := LazarusIDE.ActiveProject.CustomSessionData.Values[SVN_REPOSITORY];
sBool := LazarusIDE.ActiveProject.CustomSessionData.Values[SVN_ACTIVE];
if sBool <> '' then
IsActive := StrToBool(sBool)
else
IsActive := False;
if IsActive and (Repo <> '') then
begin
SrcFile := SourceEditorWindow.ActiveEditor.FileName;
@ -162,7 +183,7 @@ end;
procedure ProcSVNSettings(Sender: TObject);
begin
ShowSVNSettingsFrm;
ShowSVNAddProjectFrm;
end;
initialization

View File

@ -47,31 +47,36 @@ type
{ public declarations }
end;
function ShowSVNAddProjectFrm(AProject: string; var ARepository: string; AActive: boolean = true): TModalResult;
function ShowSVNAddProjectFrm: TModalResult;
implementation
uses
SVNClasses;
SVNClasses, LazIDEIntf;
function ShowSVNAddProjectFrm(AProject: string; var ARepository: string; AActive: boolean = true): TModalResult;
function ShowSVNAddProjectFrm: TModalResult;
var
SVNAddProjectFrm: TSVNAddProjectFrm;
begin
SVNAddProjectFrm := TSVNAddProjectFrm.Create(nil);
SVNAddProjectFrm.ProjectEdit.Text:=AProject;
SVNAddProjectFrm.RepositoryEdit.Text:=ARepository;
SVNAddProjectFrm.ActiveCheckBox.Checked:=AActive;
SVNAddProjectFrm.ProjectEdit.Text:=LazarusIDE.ActiveProject.ProjectInfoFile;
SVNAddProjectFrm.RepositoryEdit.Text:=LazarusIDE.ActiveProject.CustomSessionData.Values[SVN_REPOSITORY];
try
SVNAddProjectFrm.ActiveCheckBox.Checked:=StrToBool(LazarusIDE.ActiveProject.CustomSessionData.Values[SVN_ACTIVE]);
except
SVNAddProjectFrm.ActiveCheckBox.Checked:=False;
end;
Result := SVNAddProjectFrm.ShowModal;
ARepository := SVNAddProjectFrm.RepositoryEdit.Text;
if Result = mrOK then
SVNSettings.UpdateProject(SVNAddProjectFrm.ProjectEdit.Text,
SVNAddProjectFrm.RepositoryEdit.Text,
SVNAddProjectFrm.ActiveCheckBox.Checked);
begin
LazarusIDE.ActiveProject.CustomSessionData.Values[SVN_REPOSITORY] := SVNAddProjectFrm.RepositoryEdit.Text;
LazarusIDE.ActiveProject.CustomSessionData.Values[SVN_ACTIVE] := BoolToStr(SVNAddProjectFrm.ActiveCheckBox.Checked);
LazarusIDE.ActiveProject.Modified:=True;
end;
SVNAddProjectFrm.Free;
end;

View File

@ -23,7 +23,7 @@ unit SVNClasses;
interface
uses
Classes, SysUtils, ComCtrls, FileUtil, XMLCfg, LCLProc, Dialogs, Controls,
Classes, SysUtils, ComCtrls, FileUtil, LCLProc, Dialogs, Controls,
XMLRead, DOM, Process, StdCtrls, Forms;
resourcestring
@ -70,40 +70,12 @@ resourcestring
const
READ_BYTES = 2048;
SVN_REPOSITORY = 'SVN repository';
SVN_ACTIVE = 'SVN active';
type
TSortDirection = (sdAscending, sdDescending);
{ TSVNSettings }
TSVNSettings = class(TObject)
private
{ private declarations }
XML: TXMLConfig;
function GetActive(Index: integer): boolean;
function GetPath(Index: integer): string;
function GetProjectCount: integer;
function GetRepository(Index: integer): string;
procedure SetActive(Index: integer; const AValue: boolean);
procedure SetPath(Index: integer; const AValue: string);
procedure SetProjectCount(const AValue: integer);
procedure SetRepository(Index: integer; const AValue: string);
public
{ public declarations }
constructor Create(const AFileName: string);
destructor Destroy; override;
function RepositoryByPath(APath: string; var ARepo: string): boolean;
procedure AddProject(APath, ARepo: string; AActive: boolean = False);
procedure UpdateProject(APath, ARepo: string; AActive: boolean);
procedure DeleteProjectByIndex(Index: integer);
property ProjectCount: integer read GetProjectCount write SetProjectCount;
property Path[Index: integer]: string read GetPath write SetPath;
property Repository[Index: integer]: string read GetRepository write SetRepository;
property Active[Index: integer]: boolean read GetActive write SetActive;
end;
TStatusItemName = (siChecked, siPath, siExtension, siPropStatus, siItemStatus,
siRevision, siCommitRevision, siAuthor, siDate);
@ -140,9 +112,6 @@ type
property SortItem: TStatusItemName read FSortItem write FSortItem;
end;
var
SVNSettings: TSVNSettings;
procedure CmdLineToMemo(CmdLine: string; Memo: TMemo);
procedure SetColumn(ListView: TListView; ColNo, DefaultWidth: integer; AName: string; AutoSize: boolean = true);
function SVNExecutable: string;
@ -278,144 +247,6 @@ begin
Result := EncodeDate(y,m,d) + EncodeTime(h,n,s,0);
end;
{ TSVNSettings }
function TSVNSettings.GetActive(Index: integer): boolean;
begin
Result := XML.GetValue('projects/item' + IntToStr(Index) + '/active', False);
end;
function TSVNSettings.GetPath(Index: integer): string;
begin
Result := XML.GetValue('projects/item' + IntToStr(Index) + '/path', '');
end;
function TSVNSettings.GetProjectCount: integer;
begin
Result := XML.GetValue('projects/count', 0);
end;
function TSVNSettings.GetRepository(Index: integer): string;
begin
Result := XML.GetValue('projects/item' + IntToStr(Index) + '/repository', '');
end;
procedure TSVNSettings.SetActive(Index: integer; const AValue: boolean);
begin
XML.SetValue('projects/item' + IntToStr(Index) + '/active', AValue);
end;
procedure TSVNSettings.SetPath(Index: integer; const AValue: string);
begin
XML.SetValue('projects/item' + IntToStr(Index) + '/path', AValue);
end;
procedure TSVNSettings.SetProjectCount(const AValue: integer);
begin
XML.SetValue('projects/count', AValue);
end;
procedure TSVNSettings.SetRepository(Index: integer; const AValue: string);
begin
XML.SetValue('projects/item' + IntToStr(Index) + '/repository', AValue);
end;
constructor TSVNSettings.Create(const AFileName: string);
begin
XML := TXMLConfig.Create(nil);
XML.Filename:=AFileName;
end;
destructor TSVNSettings.Destroy;
begin
XML.Flush;
XML.Free;
inherited Destroy;
end;
procedure TSVNSettings.AddProject(APath, ARepo: string; AActive: boolean);
var
count: integer;
begin
count := ProjectCount;
Inc(Count);
ProjectCount := count;
Path[Count - 1] := APath;
Active[Count - 1] := AActive;
Repository[Count - 1] := ARepo;
end;
procedure TSVNSettings.UpdateProject(APath, ARepo: string; AActive: boolean);
var
count: integer;
i: integer;
begin
debugln('TSVNSettings.UpdateProject searching for project');
count := ProjectCount;
for i := 0 to Count - 1 do
if Path[i] = APath then
begin
Active[i] := AActive;
Repository[i] := ARepo;
exit;
end;
//project not found, so add it as new
debugln('TSVNSettings.UpdateProject project not found adding a new one');
AddProject(APath, ARepo, AActive);
end;
procedure TSVNSettings.DeleteProjectByIndex(Index: integer);
var
i: integer;
count: integer;
begin
count := ProjectCount;
ProjectCount := count - 1;
for i := Index to count - 1 do
begin
Active[i] := Active[i + 1];
Path[i] := Path[i + 1];
Repository[i] := Repository[i + 1];
end;
XML.DeletePath('projects/item' + IntToStr(count - 1) + '/active');
XML.DeletePath('projects/item' + IntToStr(count - 1) + '/path');
XML.DeletePath('projects/item' + IntToStr(count - 1) + '/repository');
end;
function TSVNSettings.RepositoryByPath(APath: string; var ARepo: string
): boolean;
var
count: integer;
i: integer;
begin
debugln('TSVNSettingsFrm.GetRepository APath=' + APath);
count := ProjectCount;
for i := 0 to Count - 1 do
if Path[i] = APath then
begin
Result := Active[i];
ARepo := Repository[i];
exit;
end;
if QuestionDlg('Project not found',
'Current project not in project list. Would you like to add it?',
mtWarning,
[mrYes, mrNo],
0) = mrYes then
begin
ShowSVNAddProjectFrm(APath, ARepo, True);
Result := True;
end;
end;
function SortSelectedAscending(Item1, Item2: Pointer): Integer;
begin
if PSVNStatusItem(Item1)^.Checked > PSVNStatusItem(Item2)^.Checked then
@ -724,12 +555,5 @@ begin
Sort(ASortItem, sdAscending);
end;
initialization
//GetAppConfigDir(False) + 'lazsvnsettings.xml';
SVNSettings := TSVNSettings.Create('lazsvnsettings.xml');
finalization
SVNSettings.Free;
end.

View File

@ -1,233 +0,0 @@
object SVNSettingsFrm: TSVNSettingsFrm
Left = 290
Height = 369
Top = 175
Width = 639
HelpContext = 0
ActiveControl = ProjectsListView
Align = alNone
AllowDropFiles = False
AutoScroll = True
AutoSize = False
BorderIcons = [biSystemMenu, biMinimize, biMaximize]
BorderStyle = bsSizeable
Caption = 'SVNSettingsFrm'
ChildSizing.LeftRightSpacing = 0
ChildSizing.TopBottomSpacing = 0
ChildSizing.HorizontalSpacing = 0
ChildSizing.VerticalSpacing = 0
ChildSizing.ControlsPerLine = 0
ClientHeight = 369
ClientWidth = 639
DockSite = False
DragKind = dkDrag
DragMode = dmManual
Enabled = True
Font.Height = 0
Font.Style = []
FormStyle = fsNormal
OnCreate = FormCreate
OnShow = FormShow
ParentBiDiMode = True
ParentFont = False
Position = poDesigned
ShowInTaskBar = stDefault
UseDockManager = False
LCLVersion = '0.9.27'
WindowState = wsNormal
object ButtonPanel: TButtonPanel
Left = 6
Height = 48
Top = 321
Width = 627
HelpContext = 0
Align = alBottom
AutoSize = True
ButtonOrder = boDefault
TabOrder = 0
DefaultButton = pbOK
ShowButtons = [pbOK]
ShowGlyphs = [pbOK, pbCancel, pbClose, pbHelp]
Visible = True
object EditButton: TBitBtn
Left = 78
Height = 34
Top = 8
Width = 98
HelpContext = 0
Align = alLeft
AutoSize = True
BorderSpacing.Left = 0
BorderSpacing.Top = 0
BorderSpacing.Right = 0
BorderSpacing.Bottom = 0
BorderSpacing.Around = 6
BorderSpacing.CellAlignHorizontal = ccaFill
BorderSpacing.CellAlignVertical = ccaFill
Cancel = False
Caption = 'EditButton'
Default = False
Enabled = True
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001340
58FF15425EFF25699CFF2C76B4FF3B8BBAADFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001242
59FF5D9CD4FFA6CFF5FFA9CFECFF488BC1FF2C76B4FFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001E6D
93FFCBE3F9FF61AAECFF4098E8FF1567C2FF1660AAFF2C76B4FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001E6D
93FFC8E1F2FFD1E7FAFF347DB5FF3199C3FF6DC4DCFF4A9CCFFF3483C7FFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002063
98202689B9FFB0CBE1FF67A9C8FF60DCF5FF44D6F4FF8EEEFAFF5DB4E6FF3B8F
D9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF002689B9FFBEE6F2FFB3F4FCFF60DCF5FF44D6F4FF8EEEFAFF5DB4
E6FF3B8FD9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF002790BFFFC3EDF8FFB3F4FCFF60DCF5FF44D6F4FF8EEE
FAFF5DB4E6FF3B8FD9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF002FBAE4FFC3EDF8FFB3F4FCFF60DCF5FF44D6
F4FF8EEEFAFF5DB4E6FF3B8FD9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002FBAE4FFC3EDF8FFB3F4FCFF60DC
F5FF44D6F4FF8EEEFAFF5DB4E6FF3B8FD9FFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002FBAE4FFC3EDF8FFB3F4
FCFF68D9F5FF6FCFF3FF599DD0FF73ABDDFF4F91C9FFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002FBAE4FFC3ED
F8FFA8E2F8FF6CAEDDFFA5CFF4FFA5CFF4FFBDDBF7FF5393CBF7FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002FBA
E4FFA7D4F4FFC5E1F8FFCCE3F9FFCCE3F9FFBDDBF7FF4F90C9FDFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF0050A8D9FF6AA5D8FFC9E1F7FFCBE3F8FF4295CAFF3182C2AEFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002FBAE4094FAADBEA5093CAFD4E90C8FF2F9DD2DF35A4DE19FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
Kind = bkCustom
Layout = blGlyphLeft
Margin = -1
ModalResult = 0
NumGlyphs = 0
OnClick = EditButtonClick
ParentFont = True
ParentShowHint = True
Spacing = 3
TabOrder = 4
TabStop = True
Visible = True
end
object DeleteButton: TBitBtn
Left = 182
Height = 34
Top = 8
Width = 116
HelpContext = 0
Align = alLeft
AutoSize = True
BorderSpacing.Left = 0
BorderSpacing.Top = 0
BorderSpacing.Right = 0
BorderSpacing.Bottom = 0
BorderSpacing.Around = 6
BorderSpacing.CellAlignHorizontal = ccaFill
BorderSpacing.CellAlignVertical = ccaFill
Cancel = False
Caption = 'DeleteButton'
Default = False
Enabled = True
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000004900
0000A81D6B00D071DD00BABDB600BABDB600BABDB600BABDB600BABDB600BABD
B600BABDB600BABDB60000000000000000000000000000000000F2DECA008989
89FF898989FFF2DECA00898989FF898989FFF2DECA00898989FF898989FFF2DF
CC00898989FF898989FFF2DFCC00898989FF898989FFF2DFCC001313FFFF0809
FFFF0303FFFFF0DCC700F0DCC700F0DCC700F0DCC700F0DCC700F1DDC800F1DD
C800F1DDC800F1DDC800F1DDC8007A7BFFFF898989FFF1DDC8001413FFFF0809
FFFF0302FFFF0D0EFFFFEFD9C400EFD9C400EFD9C400EFD9C400F0DAC500F0DA
C500F0DAC500F0DAC5006F70FFFF7A7AFFFFF0DAC500F0DAC5001414FFFF0909
FFFF0202FFFF0E0DFFFFEED7C000EED7C000EED7C000EED7C000EFD8C200EFD8
C200EFD8C2006464FFFF6F70FFFF7B7BFFFF898989FFEFD8C200EDD5BD000909
FFFF0202FFFF0D0DFFFF1818FFFFEDD5BD00EDD5BD00EDD5BD00EDD6BF00EDD6
BF00EDD6BF006465FFFF6F6FFFFFEDD6BF00898989FFEDD6BF00ECD2BA008989
89FF0202FFFF0D0DFFFF1817FFFF2223FFFFECD2BA00ECD2BA00ECD4BC00ECD4
BC005A5AFFFF6464FFFF6F70FFFFECD4BC00ECD4BC00ECD4BC00EAD0B7008989
89FFEAD0B7000D0DFFFF1817FFFF2223FFFF2E2EFFFFEAD0B700EBD1B8004E4F
FFFF595AFFFF6464FFFFEBD1B800EBD1B800898989FFEBD1B800F3E0CD00F3E0
CD00F3E0CD00F3E0CD001717FFFF2222FFFF2D2DFFFF3938FFFF4343FFFF4E4E
FFFF5959FFFFEACFB500EACFB500EACFB500898989FFEACFB500F4E2D1008989
89FFF4E2D100F4E2D100F4E2D1002222FFFF2D2EFFFF3838FFFF4343FFFF4E4D
FFFFF3E1CF00F3E1CF00F3E1CF00F3E1CF00F3E1CF00F3E1CF00F5E5D4008989
89FFF5E5D400F5E5D400F5E5D4002222FFFF2D2DFFFF3738FFFF4242FFFF4E4E
FFFFF4E3D300F4E3D300F4E3D300F4E3D300898989FFF4E3D300F6E7D800F6E7
D800F6E7D8000C0CFFFF1717FFFF2222FFFF2C2DFFFF3737FFFF4343FFFF4E4D
FFFF5859FFFFF5E6D600F5E6D600F5E6D600898989FFF5E6D600F6E9DB000B0A
FFFF0101FFFF0B0BFFFF1617FFFF2222FFFF2C2DFFFFF6E9DB00F6E8DA00F6E8
DA005858FFFF6363FFFF6E6EFFFFF6E8DA00F6E8DA00F6E8DA001616FFFF0A0B
FFFF0000FFFF0B0BFFFF1616FFFFF7EBDF00F7EBDF00F7EBDF00F7EADD00F7EA
DD00F7EADD00F7EADD006E6EFFFF7979FFFF8384FFFF7878FFFF1615FFFF0A0A
FFFF0000FFFFF8EEE200898989FF898989FFF8EEE200898989FF898989FFF8ED
E100898989FF898989FFF8EDE100898989FF898989FFF8EDE100F9F0E600F9F0
E600F9F0E600F9F0E600F9F0E600F9F0E600F9F0E600F9F0E600F9EFE400F9EF
E400F9EFE400F9EFE400F9EFE400F9EFE400F9EFE400F9EFE400
}
Kind = bkCustom
Layout = blGlyphLeft
Margin = -1
ModalResult = 0
NumGlyphs = 0
OnClick = DeleteButtonClick
ParentFont = True
ParentShowHint = True
Spacing = 3
TabOrder = 5
TabStop = True
Visible = True
end
end
object ProjectsListView: TListView
Left = 6
Height = 309
Top = 6
Width = 627
HelpContext = 0
Align = alClient
BorderSpacing.Left = 0
BorderSpacing.Top = 0
BorderSpacing.Right = 0
BorderSpacing.Bottom = 0
BorderSpacing.Around = 6
BorderSpacing.CellAlignHorizontal = ccaFill
BorderSpacing.CellAlignVertical = ccaFill
BorderWidth = 0
Checkboxes = True
Columns = <
item
AutoSize = False
end
item
AutoSize = False
Width = 559
end>
ColumnClick = True
DragCursor = crDrag
DragMode = dmManual
Enabled = True
HideSelection = True
MultiSelect = False
ParentShowHint = True
ReadOnly = False
RowSelect = True
ScrollBars = ssBoth
ShowColumnHeaders = True
SortColumn = 0
SortType = stNone
TabStop = True
TabOrder = 1
ToolTips = True
Visible = True
ViewStyle = vsReport
OnChange = ProjectsListViewChange
end
end

View File

@ -1,150 +0,0 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TSVNSettingsFrm','FORMDATA',[
'TPF0'#15'TSVNSettingsFrm'#14'SVNSettingsFrm'#4'Left'#3'"'#1#6'Height'#3'q'#1
+#3'Top'#3#175#0#5'Width'#3''#2#11'HelpContext'#2#0#13'ActiveControl'#7#16'P'
+'rojectsListView'#5'Align'#7#6'alNone'#14'AllowDropFiles'#8#10'AutoScroll'#9
+#8'AutoSize'#8#11'BorderIcons'#11#12'biSystemMenu'#10'biMinimize'#10'biMaxim'
+'ize'#0#11'BorderStyle'#7#10'bsSizeable'#7'Caption'#6#14'SVNSettingsFrm'#28
+'ChildSizing.LeftRightSpacing'#2#0#28'ChildSizing.TopBottomSpacing'#2#0#29'C'
+'hildSizing.HorizontalSpacing'#2#0#27'ChildSizing.VerticalSpacing'#2#0#27'Ch'
+'ildSizing.ControlsPerLine'#2#0#12'ClientHeight'#3'q'#1#11'ClientWidth'#3''
+#2#8'DockSite'#8#8'DragKind'#7#6'dkDrag'#8'DragMode'#7#8'dmManual'#7'Enabled'
+#9#11'Font.Height'#2#0#10'Font.Style'#11#0#9'FormStyle'#7#8'fsNormal'#8'OnCr'
+'eate'#7#10'FormCreate'#6'OnShow'#7#8'FormShow'#14'ParentBiDiMode'#9#10'Pare'
+'ntFont'#8#8'Position'#7#10'poDesigned'#13'ShowInTaskBar'#7#9'stDefault'#14
+'UseDockManager'#8#10'LCLVersion'#6#6'0.9.27'#11'WindowState'#7#8'wsNormal'#0
+#12'TButtonPanel'#11'ButtonPanel'#4'Left'#2#6#6'Height'#2'0'#3'Top'#3'A'#1#5
+'Width'#3's'#2#11'HelpContext'#2#0#5'Align'#7#8'alBottom'#8'AutoSize'#9#11'B'
+'uttonOrder'#7#9'boDefault'#8'TabOrder'#2#0#13'DefaultButton'#7#4'pbOK'#11'S'
+'howButtons'#11#4'pbOK'#0#10'ShowGlyphs'#11#4'pbOK'#8'pbCancel'#7'pbClose'#6
+'pbHelp'#0#7'Visible'#9#0#7'TBitBtn'#10'EditButton'#4'Left'#2'N'#6'Height'#2
+'"'#3'Top'#2#8#5'Width'#2'b'#11'HelpContext'#2#0#5'Align'#7#6'alLeft'#8'Auto'
+'Size'#9#18'BorderSpacing.Left'#2#0#17'BorderSpacing.Top'#2#0#19'BorderSpaci'
+'ng.Right'#2#0#20'BorderSpacing.Bottom'#2#0#20'BorderSpacing.Around'#2#6'!Bo'
+'rderSpacing.CellAlignHorizontal'#7#7'ccaFill'#31'BorderSpacing.CellAlignVer'
+'tical'#7#7'ccaFill'#6'Cancel'#8#7'Caption'#6#10'EditButton'#7'Default'#8#7
+'Enabled'#9#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0
+'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0
+#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#19'@X'#255#21'B^'#255'%i'#156#255',v'#180#255';'#139
+#186#173#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#18'BY'#255']'#156#212#255#166#207#245#255#169#207#236#255'H'#139
+#193#255',v'#180#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#30'm'#147#255#203#227#249#255'a'#170#236#255'@'#152#232#255#21'g'
+#194#255#22'`'#170#255',v'#180#255#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#30'm'#147#255#200#225#242#255#209#231#250#255'4}'#181#255'1'#153
+#195#255'm'#196#220#255'J'#156#207#255'4'#131#199#255#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0' c'#152' &'#137#185#255#176#203#225#255'g'#169#200#255'`'#220
+#245#255'D'#214#244#255#142#238#250#255']'#180#230#255';'#143#217#255#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'&'#137#185#255#190#230#242#255#179
+#244#252#255'`'#220#245#255'D'#214#244#255#142#238#250#255']'#180#230#255';'
+#143#217#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0''''#144#191
+#255#195#237#248#255#179#244#252#255'`'#220#245#255'D'#214#244#255#142#238
+#250#255']'#180#230#255';'#143#217#255#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'/'#186#228#255#195#237#248#255#179#244#252#255'`'#220#245#255
+'D'#214#244#255#142#238#250#255']'#180#230#255';'#143#217#255#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'/'#186#228#255#195#237#248#255#179#244
+#252#255'`'#220#245#255'D'#214#244#255#142#238#250#255']'#180#230#255';'#143
+#217#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'/'#186#228#255#195
+#237#248#255#179#244#252#255'h'#217#245#255'o'#207#243#255'Y'#157#208#255's'
+#171#221#255'O'#145#201#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'/'#186#228#255#195#237#248#255#168#226#248#255'l'#174#221#255#165#207#244
+#255#165#207#244#255#189#219#247#255'S'#147#203#247#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'/'#186#228#255#167#212#244#255#197#225#248#255#204
,#227#249#255#204#227#249#255#189#219#247#255'O'#144#201#253#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'P'#168#217#255'j'#165#216
+#255#201#225#247#255#203#227#248#255'B'#149#202#255'1'#130#194#174#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'/'#186#228#9'O'#170
+#219#234'P'#147#202#253'N'#144#200#255'/'#157#210#223'5'#164#222#25#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#4'Kind'#7
+#8'bkCustom'#6'Layout'#7#11'blGlyphLeft'#6'Margin'#2#255#11'ModalResult'#2#0
+#9'NumGlyphs'#2#0#7'OnClick'#7#15'EditButtonClick'#10'ParentFont'#9#14'Paren'
+'tShowHint'#9#7'Spacing'#2#3#8'TabOrder'#2#4#7'TabStop'#9#7'Visible'#9#0#0#7
+'TBitBtn'#12'DeleteButton'#4'Left'#3#182#0#6'Height'#2'"'#3'Top'#2#8#5'Width'
+#2't'#11'HelpContext'#2#0#5'Align'#7#6'alLeft'#8'AutoSize'#9#18'BorderSpacin'
+'g.Left'#2#0#17'BorderSpacing.Top'#2#0#19'BorderSpacing.Right'#2#0#20'Border'
+'Spacing.Bottom'#2#0#20'BorderSpacing.Around'#2#6'!BorderSpacing.CellAlignHo'
+'rizontal'#7#7'ccaFill'#31'BorderSpacing.CellAlignVertical'#7#7'ccaFill'#6'C'
+'ancel'#8#7'Caption'#6#12'DeleteButton'#7'Default'#8#7'Enabled'#9#10'Glyph.D'
+'ata'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0
+#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'I'#0
+#0#0#168#29'k'#0#208'q'#221#0#186#189#182#0#186#189#182#0#186#189#182#0#186
+#189#182#0#186#189#182#0#186#189#182#0#186#189#182#0#186#189#182#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#242#222#202#0#137#137#137#255#137#137#137#255#242#222
+#202#0#137#137#137#255#137#137#137#255#242#222#202#0#137#137#137#255#137#137
+#137#255#242#223#204#0#137#137#137#255#137#137#137#255#242#223#204#0#137#137
+#137#255#137#137#137#255#242#223#204#0#19#19#255#255#8#9#255#255#3#3#255#255
+#240#220#199#0#240#220#199#0#240#220#199#0#240#220#199#0#240#220#199#0#241
+#221#200#0#241#221#200#0#241#221#200#0#241#221#200#0#241#221#200#0'z{'#255
+#255#137#137#137#255#241#221#200#0#20#19#255#255#8#9#255#255#3#2#255#255#13
+#14#255#255#239#217#196#0#239#217#196#0#239#217#196#0#239#217#196#0#240#218
+#197#0#240#218#197#0#240#218#197#0#240#218#197#0'op'#255#255'zz'#255#255#240
+#218#197#0#240#218#197#0#20#20#255#255#9#9#255#255#2#2#255#255#14#13#255#255
+#238#215#192#0#238#215#192#0#238#215#192#0#238#215#192#0#239#216#194#0#239
+#216#194#0#239#216#194#0'dd'#255#255'op'#255#255'{{'#255#255#137#137#137#255
+#239#216#194#0#237#213#189#0#9#9#255#255#2#2#255#255#13#13#255#255#24#24#255
+#255#237#213#189#0#237#213#189#0#237#213#189#0#237#214#191#0#237#214#191#0
+#237#214#191#0'de'#255#255'oo'#255#255#237#214#191#0#137#137#137#255#237#214
+#191#0#236#210#186#0#137#137#137#255#2#2#255#255#13#13#255#255#24#23#255#255
+'"#'#255#255#236#210#186#0#236#210#186#0#236#212#188#0#236#212#188#0'ZZ'#255
+#255'dd'#255#255'op'#255#255#236#212#188#0#236#212#188#0#236#212#188#0#234
+#208#183#0#137#137#137#255#234#208#183#0#13#13#255#255#24#23#255#255'"#'#255
+#255'..'#255#255#234#208#183#0#235#209#184#0'NO'#255#255'YZ'#255#255'dd'#255
+#255#235#209#184#0#235#209#184#0#137#137#137#255#235#209#184#0#243#224#205#0
+#243#224#205#0#243#224#205#0#243#224#205#0#23#23#255#255'""'#255#255'--'#255
+#255'98'#255#255'CC'#255#255'NN'#255#255'YY'#255#255#234#207#181#0#234#207
+#181#0#234#207#181#0#137#137#137#255#234#207#181#0#244#226#209#0#137#137#137
+#255#244#226#209#0#244#226#209#0#244#226#209#0'""'#255#255'-.'#255#255'88'
+#255#255'CC'#255#255'NM'#255#255#243#225#207#0#243#225#207#0#243#225#207#0
+#243#225#207#0#243#225#207#0#243#225#207#0#245#229#212#0#137#137#137#255#245
+#229#212#0#245#229#212#0#245#229#212#0'""'#255#255'--'#255#255'78'#255#255'B'
+'B'#255#255'NN'#255#255#244#227#211#0#244#227#211#0#244#227#211#0#244#227#211
+#0#137#137#137#255#244#227#211#0#246#231#216#0#246#231#216#0#246#231#216#0#12
+#12#255#255#23#23#255#255'""'#255#255',-'#255#255'77'#255#255'CC'#255#255'NM'
+#255#255'XY'#255#255#245#230#214#0#245#230#214#0#245#230#214#0#137#137#137
+#255#245#230#214#0#246#233#219#0#11#10#255#255#1#1#255#255#11#11#255#255#22
+#23#255#255'""'#255#255',-'#255#255#246#233#219#0#246#232#218#0#246#232#218#0
+'XX'#255#255'cc'#255#255'nn'#255#255#246#232#218#0#246#232#218#0#246#232#218
+#0#22#22#255#255#10#11#255#255#0#0#255#255#11#11#255#255#22#22#255#255#247
+#235#223#0#247#235#223#0#247#235#223#0#247#234#221#0#247#234#221#0#247#234
+#221#0#247#234#221#0'nn'#255#255'yy'#255#255#131#132#255#255'xx'#255#255#22
+#21#255#255#10#10#255#255#0#0#255#255#248#238#226#0#137#137#137#255#137#137
+#137#255#248#238#226#0#137#137#137#255#137#137#137#255#248#237#225#0#137#137
+#137#255#137#137#137#255#248#237#225#0#137#137#137#255#137#137#137#255#248
,#237#225#0#249#240#230#0#249#240#230#0#249#240#230#0#249#240#230#0#249#240
+#230#0#249#240#230#0#249#240#230#0#249#240#230#0#249#239#228#0#249#239#228#0
+#249#239#228#0#249#239#228#0#249#239#228#0#249#239#228#0#249#239#228#0#249
+#239#228#0#4'Kind'#7#8'bkCustom'#6'Layout'#7#11'blGlyphLeft'#6'Margin'#2#255
+#11'ModalResult'#2#0#9'NumGlyphs'#2#0#7'OnClick'#7#17'DeleteButtonClick'#10
+'ParentFont'#9#14'ParentShowHint'#9#7'Spacing'#2#3#8'TabOrder'#2#5#7'TabStop'
+#9#7'Visible'#9#0#0#0#9'TListView'#16'ProjectsListView'#4'Left'#2#6#6'Height'
+#3'5'#1#3'Top'#2#6#5'Width'#3's'#2#11'HelpContext'#2#0#5'Align'#7#8'alClient'
+#18'BorderSpacing.Left'#2#0#17'BorderSpacing.Top'#2#0#19'BorderSpacing.Right'
+#2#0#20'BorderSpacing.Bottom'#2#0#20'BorderSpacing.Around'#2#6'!BorderSpacin'
+'g.CellAlignHorizontal'#7#7'ccaFill'#31'BorderSpacing.CellAlignVertical'#7#7
+'ccaFill'#11'BorderWidth'#2#0#10'Checkboxes'#9#7'Columns'#14#1#8'AutoSize'#8
+#0#1#8'AutoSize'#8#5'Width'#3'/'#2#0#0#11'ColumnClick'#9#10'DragCursor'#7#6
+'crDrag'#8'DragMode'#7#8'dmManual'#7'Enabled'#9#13'HideSelection'#9#11'Multi'
+'Select'#8#14'ParentShowHint'#9#8'ReadOnly'#8#9'RowSelect'#9#10'ScrollBars'#7
+#6'ssBoth'#17'ShowColumnHeaders'#9#10'SortColumn'#2#0#8'SortType'#7#6'stNone'
+#7'TabStop'#9#8'TabOrder'#2#1#8'ToolTips'#9#7'Visible'#9#9'ViewStyle'#7#8'vs'
+'Report'#8'OnChange'#7#22'ProjectsListViewChange'#0#0#0
]);

View File

@ -1,132 +0,0 @@
{ Copyright (C) 2008 Darius Blaszijk
This source is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.
This code is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
A copy of the GNU General Public License is available on the World Wide Web
at <http://www.gnu.org/copyleft/gpl.html>. You can also obtain it by writing
to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
}
unit SVNSettingsForm;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ButtonPanel, ComCtrls, SVNClasses, LCLProc, Buttons, SVNAddProjectForm;
type
{ TSVNSettingsFrm }
TSVNSettingsFrm = class(TForm)
DeleteButton: TBitBtn;
EditButton: TBitBtn;
ButtonPanel: TButtonPanel;
ProjectsListView: TListView;
procedure DeleteButtonClick(Sender: TObject);
procedure EditButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ProjectsListViewChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
private
{ private declarations }
public
{ public declarations }
procedure UpdateProjectListView;
end;
procedure ShowSVNSettingsFrm;
var
SVNSettingsFrm: TSVNSettingsFrm;
implementation
procedure ShowSVNSettingsFrm;
begin
SVNSettingsFrm.ShowModal;
end;
{ TSVNSettingsFrm }
procedure TSVNSettingsFrm.FormShow(Sender: TObject);
begin
UpdateProjectListView;
end;
procedure TSVNSettingsFrm.ProjectsListViewChange(Sender: TObject;
Item: TListItem; Change: TItemChange);
begin
SVNSettings.Active[Item.Index] := Item.Checked;
end;
procedure TSVNSettingsFrm.UpdateProjectListView;
var
count: integer;
i: integer;
begin
ProjectsListView.Clear;
count := SVNSettings.ProjectCount;
for i := 0 to Count - 1 do
with ProjectsListView.Items.Add do
begin
Caption := SVNSettings.Path[i];
Checked := SVNSettings.Active[i];
SubItems.Add(SVNSettings.Repository[i]);
end;
end;
procedure TSVNSettingsFrm.FormCreate(Sender: TObject);
begin
SetColumn(ProjectsListView, 0, 250, rsProjectName);
SetColumn(ProjectsListView, 1, 250, rsRepositoryPath);
EditButton.Caption := rsEdit;
DeleteButton.Caption := rsDelete;
end;
procedure TSVNSettingsFrm.EditButtonClick(Sender: TObject);
var
AProject: string;
ARepository: string;
AChecked: boolean;
begin
if Assigned(ProjectsListView.Selected) then
begin
AProject:=ProjectsListView.Selected.Caption;
ARepository:=ProjectsListView.Selected.SubItems[0];
AChecked:=ProjectsListView.Selected.Checked;
if ShowSVNAddProjectFrm(AProject, ARepository, AChecked) = mrOK then
UpdateProjectListView;
end;
end;
procedure TSVNSettingsFrm.DeleteButtonClick(Sender: TObject);
begin
if Assigned(ProjectsListView.Selected) then
begin
SVNSettings.DeleteProjectByIndex(ProjectsListView.Selected.Index);
UpdateProjectListView;
end;
end;
initialization
{$I svnsettingsform.lrs}
end.