mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-02 09:43:42 +02:00
209 lines
6.2 KiB
ObjectPascal
209 lines
6.2 KiB
ObjectPascal
{ 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 LazSVNIntf;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
SysUtils, LCLtype, LResources, LCLProc;
|
|
|
|
procedure ProcSVNLog(Sender: TObject);
|
|
procedure ProcSVNCommit(Sender: TObject);
|
|
procedure ProcSVNUpdate(Sender: TObject);
|
|
procedure ProcSVNDiff(Sender: TObject);
|
|
procedure ProcSVNDiffPrev(Sender: TObject);
|
|
procedure ProcSVNDiffHead(Sender: TObject);
|
|
procedure ProcSVNSettings(Sender: TObject);
|
|
procedure Register;
|
|
|
|
implementation
|
|
|
|
{$R lazsvnpkg_images.res}
|
|
|
|
uses
|
|
MenuIntf, IDECommands, Controls, Forms, Dialogs,
|
|
SVNLogForm, SVNUpdateForm, SVNDiffForm, SVNStatusForm, LazIDEIntf, SVNClasses,
|
|
SVNAddProjectForm, SrcEditorIntf;
|
|
|
|
var
|
|
CmdSVNLog : TIDECommand;
|
|
CmdSVNCommit : TIDECommand;
|
|
CmdSVNUpdate : TIDECommand;
|
|
CmdSVNDiff : TIDECommand;
|
|
CmdSVNDiffPrev : TIDECommand;
|
|
CmdSVNDiffHead : TIDECommand;
|
|
CmdSVNSettings : TIDECommand;
|
|
|
|
procedure Register;
|
|
var
|
|
Key: TIDEShortCut;
|
|
Cat: TIDECommandCategory;
|
|
mnuSVNSection : TIDEMenuSection;
|
|
begin
|
|
Key:=IDEShortCut(VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
|
|
|
{$ifndef USECustomCategory}
|
|
Cat:=IDECommandList.CreateCategory(nil, 'SVN', rsSVNTools, IDECmdScopeSrcEditOnly);
|
|
{$else}
|
|
Cat:=nil;
|
|
{$endif}
|
|
|
|
CmdSVNLog:=RegisterIDECommand(Cat, 'SVNLog', rsShowLog, Key, nil, @ProcSVNLog);
|
|
CmdSVNCommit:=RegisterIDECommand(Cat, 'SVNCommit', rsCommit, Key, nil, @ProcSVNCommit);
|
|
CmdSVNUpdate:=RegisterIDECommand(Cat, 'SVNUpdate', rsUpdate, Key, nil, @ProcSVNUpdate);
|
|
CmdSVNDiff:=RegisterIDECommand(Cat, 'SVNDiff', rsShowDiffBase, Key, nil, @ProcSVNDiff);
|
|
CmdSVNDiffPrev:=RegisterIDECommand(Cat, 'SVNDiffPrev', rsShowDiffPrev, Key, nil, @ProcSVNDiffPrev);
|
|
CmdSVNDiffHead:=RegisterIDECommand(Cat, 'SVNDiffHead', rsShowDiffHead, Key, nil, @ProcSVNDiffHead);
|
|
CmdSVNSettings:=RegisterIDECommand(Cat, 'SVNSettings', rsSVNSettings, Key, nil, @ProcSVNSettings);
|
|
|
|
mnuSVNSection:=RegisterIDESubMenu(itmSecondaryTools, 'SVN', 'SVN', nil, nil, 'menu_svn');
|
|
RegisterIDEMenuCommand(mnuSVNSection, 'SVNLog', rsShowLog, nil, nil,
|
|
CmdSVNLog, 'menu_svn_log');
|
|
RegisterIDEMenuCommand(mnuSVNSection, 'SVNCommit', rsCommit, nil, nil,
|
|
CmdSVNCommit, 'menu_svn_commit');
|
|
RegisterIDEMenuCommand(mnuSVNSection, 'SVNUpdate', rsUpdate, nil, nil,
|
|
CmdSVNUpdate, 'menu_svn_update');
|
|
RegisterIDEMenuCommand(mnuSVNSection, 'SVNDiff', rsShowDiffBase, nil, nil,
|
|
CmdSVNDiff, 'menu_svn_diff');
|
|
RegisterIDEMenuCommand(mnuSVNSection, 'SVNDiffPrev', rsShowDiffPrev, nil, nil,
|
|
CmdSVNDiffPrev, 'menu_svn_diff');
|
|
RegisterIDEMenuCommand(mnuSVNSection, 'SVNDiffHead', rsShowDiffHead, nil, nil,
|
|
CmdSVNDiffHead, 'menu_svn_diff');
|
|
RegisterIDEMenuCommand(mnuSVNSection, 'SVNSettings', rsSettings, nil, nil,
|
|
CmdSVNSettings, 'menu_environment_options');
|
|
end;
|
|
|
|
procedure ProcSVNLog(Sender: TObject);
|
|
var
|
|
Repo: string;
|
|
IsActive: boolean;
|
|
sBool: string;
|
|
begin
|
|
If Assigned(LazarusIDE) and Assigned(LazarusIDE.ActiveProject) then
|
|
begin
|
|
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
|
|
ShowSVNLogFrm(Repo)
|
|
else
|
|
ShowMessage(rsProjectIsNotActiveInSVNSettingsPleaseActivateFirst);
|
|
end;
|
|
end;
|
|
|
|
procedure ProcSVNCommit(Sender: TObject);
|
|
var
|
|
Repo: string;
|
|
IsActive: boolean;
|
|
sBool: string;
|
|
begin
|
|
If Assigned(LazarusIDE) and Assigned(LazarusIDE.ActiveProject) then
|
|
begin
|
|
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
|
|
ShowSVNStatusFrm(Repo)
|
|
else
|
|
ShowMessage(rsProjectIsNotActiveInSVNSettingsPleaseActivateFirst);
|
|
end;
|
|
end;
|
|
|
|
procedure ProcSVNUpdate(Sender: TObject);
|
|
var
|
|
Repo: string;
|
|
IsActive: boolean;
|
|
sBool: string;
|
|
begin
|
|
If Assigned(LazarusIDE) and Assigned(LazarusIDE.ActiveProject) then
|
|
begin
|
|
Repo := LazarusIDE.ActiveProject.CustomSessionData.Values[SVN_REPOSITORY];
|
|
sBool := LazarusIDE.ActiveProject.CustomSessionData.Values[SVN_ACTIVE];
|
|
if sBool <> '' then
|
|
IsActive := StrToBool(sBool)
|
|
else
|
|
IsActive := False;
|
|
|
|
debugln('ProcSVNUpdate repo='+Repo+' isactive='+sBool);
|
|
|
|
if IsActive and (Repo <> '') then
|
|
ShowSVNUpdateFrm(Repo)
|
|
else
|
|
ShowMessage(rsProjectIsNotActiveInSVNSettingsPleaseActivateFirst);
|
|
end;
|
|
end;
|
|
|
|
procedure DoSVNDiff(ASwitches: String);
|
|
var
|
|
Repo: string;
|
|
IsActive: boolean;
|
|
SrcFile: string;
|
|
sBool: string;
|
|
begin
|
|
If Assigned(LazarusIDE) and Assigned(LazarusIDE.ActiveProject) then
|
|
begin
|
|
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 := SourceEditorManagerIntf.ActiveEditor.FileName;
|
|
ShowSVNDiffFrm(ASwitches, SrcFile);
|
|
end
|
|
else
|
|
ShowMessage(rsProjectIsNotActiveInSVNSettingsPleaseActivateFirst);
|
|
end;
|
|
end;
|
|
|
|
procedure ProcSvnDiff(Sender: TObject);
|
|
begin
|
|
DoSvnDiff('-r BASE');
|
|
end;
|
|
|
|
procedure ProcSvnDiffHead(Sender: TObject);
|
|
begin
|
|
DoSvnDiff('-r HEAD');
|
|
end;
|
|
|
|
procedure ProcSvnDiffPrev(Sender: TObject);
|
|
begin
|
|
DoSvnDiff('-r PREV');
|
|
end;
|
|
|
|
procedure ProcSVNSettings(Sender: TObject);
|
|
begin
|
|
ShowSVNAddProjectFrm;
|
|
end;
|
|
|
|
end.
|