📄 tcommitfrmunit.pas
字号:
(* $Id: TCommitFrmunit.pas,v 1.7 2002/12/30 22:31:02 turbo Exp $
*
* Form for commiting changes (cvs commit)
*
* Copyright 2001 by Thomas Bleier
* For license details see LICENSE.txt
*)
unit TCommitFrmunit;
{$I BORCVS.inc}
interface
//---------------------------------------------------------------------------
uses
Classes,
Controls,
StdCtrls,
Forms,
TCvsBaseFrmunit,
TRunCvsFrmunit,
TFilesFrameunit,
ComCtrls;
//---------------------------------------------------------------------------
type
TCommitFrm = class(TCvsBaseFrm)
PPageControl: TPageControl;
PMessageTab: TTabSheet;
PFilesTab: TTabSheet;
PFilesFrame: TFilesFrame;
Label1: TLabel;
PMessage: TMemo;
Label2: TLabel;
PPrevMsg: TComboBox;
POptionsTab: TTabSheet;
PForceCheck: TCheckBox;
PRevisionCheck: TCheckBox;
PRevisionEdit: TEdit;
PFilesCheck: TCheckBox;
procedure PRevisionCheckClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure POkBtnClick(Sender: TObject);
procedure PPrevMsgChange(Sender: TObject);
procedure PFilesCheckClick(Sender: TObject);
private // Anwender-Deklarationen
FWhichFiles: TWhichFilesMode;
FTempFileName: string;
protected
procedure GetDirectories(Dirs: TStrings); override;
procedure ApplyParameters(runcvs: TRunCvsFrm; InDirectory: string = ''); override;
procedure ProcessResult(output: TStrings; runcvs: TRunCvsFrm); override;
procedure CleanUp; override;
public // Anwender-Deklarationen
constructor create(Owner: TComponent); override;
property WhichFiles: TWhichFilesMode read FWhichFiles write FWhichFiles;
end;
//---------------------------------------------------------------------------
var
CommitFrm: TCommitFrm;
//---------------------------------------------------------------------------
implementation
uses
windows,
Dialogs,
SysUtils,
SettingsStorage,
Utilityunit,
TToolsApiHelperunit;
//---------------------------------------------------------------------------
{$R *.dfm}
//---------------------------------------------------------------------------
constructor TCommitFrm.create(Owner: TComponent);
begin
inherited create(owner);
FWhichFiles := wfmCustom;
PFilesFrame.SetCommandsEnabled(true, false);
PFilesFrame.OnlyFileNameasParameter := true;
end;
//---------------------------------------------------------------------------
procedure TCommitFrm.PRevisionCheckClick(Sender: TObject);
begin
PRevisionEdit.Enabled := PRevisionCheck.Checked;
end;
//---------------------------------------------------------------------------
procedure TCommitFrm.FormShow(Sender: TObject);
begin
PPageControl.ActivePage := PMessageTab;
ActiveControl := PMessage;
PMessage.Lines.Clear;
PFilesFrame.LoadSettings;
case (FWhichFiles) of
wfmCustom:
begin
PFilesCheck.Visible := false;
PFilesCheck.Checked := false;
PFilesTab.TabVisible := true;
end;
wfmModule:
begin
PFilesFrame.SetFilesFromCurrentModule(true);
PFilesCheck.Visible := false;
PFilesCheck.Checked := false;
PFilesTab.TabVisible := true;
end;
wfmProject:
begin
PFilesFrame.SetFilesFromProject(false);
PFilesCheck.Visible := true;
PFilesCheck.Checked := false;
PFilesTab.TabVisible := true;
end;
wfmProjectGroup:
begin
PFilesFrame.SetFilesFromProjectGroup(false);
PFilesCheck.Visible := true;
PFilesCheck.Checked := false;
PFilesTab.TabVisible := true;
end;
else
assert(false);
end;
PForceCheck.Checked := false;
PRevisionCheck.Checked := false;
PRevisionCheckClick(self);
end;
//---------------------------------------------------------------------------
procedure TCommitFrm.POkBtnClick(Sender: TObject);
begin
if PFilesTab.TabVisible and (not PFilesFrame.IsValid(1)) then
begin
ShowMessage('You have to select at least one file!');
PPageControl.ActivePage := PFilesTab;
ActiveControl := PFilesFrame;
exit;
end;
if (PRevisionCheck.Checked and (Trim(PRevisionEdit.Text) = '')) then
begin
ShowMessage('You have to enter a revision number!');
PPageControl.ActivePage := POptionsTab;
ActiveControl := PRevisionEdit;
exit;
end;
if (Trim(PMessage.Text) = '') and
(MessageDlg('Are you sure that you don''t want to enter a log message?',
mtConfirmation, [mbYes, mbNo], 0) = mrNo) then
begin
PPageControl.ActivePage := PMessageTab;
ActiveControl := PMessage;
exit;
end;
PFilesFrame.SaveSettings;
// save message in recently used list
ADD_COMBO_TEXT_ENTRY(PPrevMsg, PMessage.Text);
ModalResult := mrOk;
end;
//---------------------------------------------------------------------------
procedure TCommitFrm.ApplyParameters(runcvs: TRunCvsFrm; InDirectory: string = '');
var
buf: string;
begin
DebugInfo('ApplyParameters');
setlength(buf, max_path);
if GetTempFileName(pchar(GetTempDir), 'CVS', 0, pchar(buf)) = 0 then
begin
raise Exception.Create('BorCVS: Error creating temporary file!');
end;
FTempFileName := strpas(pchar(buf)); //remove any trailing nulls
PMessage.Lines.SaveToFile(FTempFileName);
runcvs.Command := CVSCMD_COMMIT;
runcvs.CommandOptions.Add('-F ' + GetOptQuotedString(FTempFileName));
if (PFilesTab.TabVisible) then
PFilesFrame.ApplyParameters(runcvs, InDirectory);
if (PRevisionCheck.Checked) then
runcvs.CommandOptions.Add('-r ' + GetOptQuotedString(PRevisionEdit.Text));
if (PForceCheck.Checked) then
runcvs.CommandOptions.Add('-f');
end;
procedure TCommitFrm.GetDirectories(Dirs: TStrings);
begin
if (PFilesTab.TabVisible) then
PFilesFrame.GetDirectories(dirs);
end;
//---------------------------------------------------------------------------
procedure TCommitFrm.CleanUp;
begin
DebugInfo('CleanUp');
if (FTempFileName <> '') then
begin
DeleteFile(FTempFileName);
end;
end;
//---------------------------------------------------------------------------
procedure TCommitFrm.PPrevMsgChange(Sender: TObject);
begin
if (PPrevMsg.ItemIndex >= 0) then
PMessage.Text := PPrevMsg.Items.Strings[PPrevMsg.ItemIndex];
end;
//---------------------------------------------------------------------------
procedure TCommitFrm.ProcessResult(output: TStrings; runcvs: TRunCvsFrm);
var
workdir, line,fname: string;
i: integer;
begin
workdir := IncludeTrailingBackslash(runcvs.WorkingDirectory);
for i := 0 to output.Count - 1 do
begin
line := Trim(output.Strings[i]);
if copy(line, 1, 12) = 'Checking in ' then
begin
fname:=GetCorrectFilename(Copy(line, 13, Length(line) - 13), workdir);
DebugInfo(format('ToolsApiHelper.ReloadFile(%s)',[fname]));
ToolsApiHelper.ReloadFile(fname);
end;
end;
end;
//---------------------------------------------------------------------------
procedure TCommitFrm.PFilesCheckClick(Sender: TObject);
begin
PFilesTab.TabVisible := not PFilesCheck.Checked;
end;
//---------------------------------------------------------------------------
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -