⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcommitfrmunit.pas

📁 CVS IDE plugin for Borland Delphi this is a good program,i like this kind of practise
💻 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 + -