project groups: reload button as workaround for missing sync

git-svn-id: trunk@50452 -
This commit is contained in:
mattias 2015-11-20 22:15:07 +00:00
parent 0c78058cbb
commit e2b4acb980
3 changed files with 80 additions and 10 deletions

View File

@ -1,7 +1,5 @@
{ {
ToDo: ToDo:
- save/restore Active target
- run external tool
- update files when project/package changes in IDE - update files when project/package changes in IDE
- update dependencies when changed in IDE - update dependencies when changed in IDE
- re-add removed targets - re-add removed targets
@ -111,6 +109,7 @@ type
public public
constructor Create(aCompileTarget: TIDECompileTarget); constructor Create(aCompileTarget: TIDECompileTarget);
destructor Destroy; override; destructor Destroy; override;
procedure Clear;
function IndexOfTarget(const Target: TPGCompileTarget): Integer; override; function IndexOfTarget(const Target: TPGCompileTarget): Integer; override;
function IndexOfRemovedTarget(const Target: TPGCompileTarget): Integer; override; function IndexOfRemovedTarget(const Target: TPGCompileTarget): Integer; override;
function AddTarget(Const AFileName: String): TPGCompileTarget; override; function AddTarget(Const AFileName: String): TPGCompileTarget; override;
@ -658,11 +657,15 @@ destructor TIDEProjectGroup.Destroy;
begin begin
FreeAndNil(FTargets); FreeAndNil(FTargets);
FreeAndNil(FRemovedTargets); FreeAndNil(FRemovedTargets);
if FParent=nil then
FreeAndNil(FCompileTarget);
inherited Destroy; inherited Destroy;
end; end;
procedure TIDEProjectGroup.Clear;
begin
FTargets.Clear;
FRemovedTargets.Clear;
end;
function TIDEProjectGroup.IndexOfTarget(const Target: TPGCompileTarget): Integer; function TIDEProjectGroup.IndexOfTarget(const Target: TPGCompileTarget): Integer;
begin begin
Result:=FTargets.IndexOf(Target); Result:=FTargets.IndexOf(Target);
@ -740,6 +743,8 @@ begin
if not FilenameIsAbsolute(FileName) then exit; if not FilenameIsAbsolute(FileName) then exit;
if not FileExistsCached(Filename) then exit; if not FileExistsCached(Filename) then exit;
Clear;
aGroup:=Parent; aGroup:=Parent;
while aGroup<>nil do begin while aGroup<>nil do begin
if CompareFilenames(aGroup.FileName,Filename)=0 then if CompareFilenames(aGroup.FileName,Filename)=0 then

View File

@ -1,7 +1,7 @@
object ProjectGroupEditorForm: TProjectGroupEditorForm object ProjectGroupEditorForm: TProjectGroupEditorForm
Left = 655 Left = 383
Height = 358 Height = 358
Top = 177 Top = 187
Width = 646 Width = 646
Caption = 'ProjectGroupEditorForm' Caption = 'ProjectGroupEditorForm'
ClientHeight = 358 ClientHeight = 358
@ -70,7 +70,7 @@ object ProjectGroupEditorForm: TProjectGroupEditorForm
Action = ATargetLater Action = ATargetLater
end end
object TBMore: TToolButton object TBMore: TToolButton
Left = 523 Left = 574
Top = 2 Top = 2
Caption = 'More...' Caption = 'More...'
DropdownMenu = PopupMenuMore DropdownMenu = PopupMenuMore
@ -82,6 +82,11 @@ object ProjectGroupEditorForm: TProjectGroupEditorForm
Action = ATargetActivate Action = ATargetActivate
Visible = False Visible = False
end end
object TBReload: TToolButton
Left = 523
Top = 2
Action = AProjectGroupReload
end
end end
object TVPG: TTreeView object TVPG: TTreeView
Left = 0 Left = 0
@ -122,7 +127,7 @@ object ProjectGroupEditorForm: TProjectGroupEditorForm
left = 128 left = 128
top = 184 top = 184
Bitmap = { Bitmap = {
4C69190000001000000010000000FFFFFF009E6E4D2B9D6D4CD69D6D4BC59D6C 4C691A0000001000000010000000FFFFFF009E6E4D2B9D6D4CD69D6D4BC59D6C
4BFF9C6C4AFF9C6B49FF9B6A49FF9B6A48FF9A6947FF996846FF986745FF9364 4BFF9C6C4AFF9C6B49FF9B6A49FF9B6A48FF9A6947FF996846FF986745FF9364
43FF845D3EDEFFFFFF00FFFFFF00FFFFFF009D6D4C919D6D4BFEBB9778FFAC82 43FF845D3EDEFFFFFF00FFFFFF00FFFFFF009D6D4C919D6D4BFEBB9778FFAC82
62FFAC8161FFAB8060FFAB7F5FFFAA7F5EFFA87E5DFFA87C5CFF9D6D4CFF9766 62FFAC8161FFAB8060FFAB7F5FFFAA7F5EFFA87E5DFFA87C5CFF9D6D4CFF9766
@ -922,7 +927,39 @@ object ProjectGroupEditorForm: TProjectGroupEditorForm
ED66FEFEFE00848484FFBDBDBDFFB2B2B2FF656565FFFEFEFE00ECECEC88CCCC ED66FEFEFE00848484FFBDBDBDFFB2B2B2FF656565FFFEFEFE00ECECEC88CCCC
CCFFCCCCCCFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF CCFFCCCCCCFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00A4A4A4FF747474FF707070FF9C9C9CFFFFFFFF00FFFFFF00FFFF FF00FFFFFF00A4A4A4FF747474FF707070FF9C9C9CFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A465341DA769
3A9FA76A3ADEA56736F6A76939E5A76A3ABCA4653453A4653405FFFFFF00FFFF
FF00FFFFFF00A4653479A4653410FFFFFF00FFFFFF00A4653550A66838F6C090
68FAD3B08FFFDFC2A8FFDEC1A8FFD4B193FFB9875FF4A56737F0A4653458FFFF
FF00A4663566A46534FFA465340FFFFFFF00A4653429A66939F5D3AD8CFFDCBD
9DFFDDBEA1FFE5CBB4FFE9D3BFFFEEDDCCFFF0E2D5FFE7D2BFFFAF774BF5A567
36C0AB7143F7A46635FCA465340EFFFFFF00A769399BC09069FDC59872FFA86B
3CFFA46635FFA76A3AFCB7855DF3D9BBA1FEF1E4D8FFF2E6DBFFF3E8DDFFCEA7
88FDEAD8C8FFA76A3AF9A465340DFFFFFF00A66838F3AB7041FFA96C3CFEA76A
3AF5A4653475A4653419A4653445A66938CDB98861F5EBDBCDFFF5EBE2FFF6EE
E6FFF6EEE6FFA76A3AFAA465340BFFFFFF00A46535FEA76A3AFBC791689DA567
37E6A4653423FFFFFF00FFFFFF00FFFFFF00A4653460A46635FFE9D7C7FFEBD8
C6FFF5ECE3FFA66A3AFAA465340AFFFFFF00A46534FCB3794C7ECF9D762BBB83
5713A4653402FFFFFF00FFFFFF00A4653404A66838C4D0AC8FFAF6EEE7FFF2E6
DBFFF6EEE6FFA66A3AFBA4653409FFFFFF00A465340DFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00A46534A0A46534FFAD7447F8AF774CF7AF77
4CF7AF784CF7A46534FFA4653408FFFFFF00A46534F9A46534FEA46534FEA465
34FDA46534FCA46534FBA46534B9A465341DA4653418A4653418A4653418A465
3418A4653418A465341CFFFFFF00FFFFFF00A46534FCF5EDE5FFF6EDE5FFF5EC
E4FFD7B79CFDA66837E0A4653410FFFFFF00FFFFFF00FFFFFF00FFFFFF00D5A4
7E1ACD997239A46534FCA465340CFFFFFF00A46635FCF6EEE6FFEBD7C4FFEAD9
C9FFA46534FEA465346AFFFFFF00FFFFFF00FFFFFF00A465340BA56635E9C995
6C8DB77F53C2A46534FFA4653405FFFFFF00A56737FDF6EEE6FFF5ECE3FFF5ED
E4FFE6D2C1FFB0794DF5A66938CAA4653436FFFFFF00A465346AA96B3CEDB67C
4FFFA76A3AFEA56837FAFFFFFF00FFFFFF00A66838FDF1E4D8FFD4B295FEF4E9
E0FFF3E8DDFFEDDCCCFFD2AD8FFEB0784CF5A56635FBA66939FFA66939FEA96D
3DFFB0784CFFA76A3AA8FFFFFF00FFFFFF00A56737FEB7845BF7A56736D4B17A
4EF4E3CAB4FFECDAC9FFE7D1BCFFE3C9B0FFDEBEA0FFD2AB88FFCEA582FFD3AE
8EFFA66838F5A465342AFFFFFF00FFFFFF00A46534FFA5673693FFFFFF00A465
3454A66737EEB58055F3CEA684FFD8B697FFDBB999FFD3AC8AFFC2946DFCA668
38F6A466355BFFFFFF00FFFFFF00FFFFFF00A46534A2A4653401FFFFFF00FFFF
FF00A4653405A4653453A76A3ABEA66938E9A46635FAA76A3AE4A76B3BAAA465
3424FFFFFF00FFFFFF00FFFFFF00
} }
end end
object PopupMenuMore: TPopupMenu object PopupMenuMore: TPopupMenu
@ -1084,6 +1121,12 @@ object ProjectGroupEditorForm: TProjectGroupEditorForm
OnExecute = ATargetCopyFilenameExecute OnExecute = ATargetCopyFilenameExecute
OnUpdate = ATargetCopyFilenameUpdate OnUpdate = ATargetCopyFilenameUpdate
end end
object AProjectGroupReload: TAction
Category = 'ProjectGroupActions'
Caption = 'Reload'
ImageIndex = 25
OnExecute = AProjectGroupReloadExecute
end
end end
object PopupMenuTree: TPopupMenu object PopupMenuTree: TPopupMenu
Images = ImageListMain Images = ImageListMain

View File

@ -14,7 +14,7 @@ uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, Menus, Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, Menus,
ActnList, LCLProc, Clipbrd, LazIDEIntf, PackageIntf, ProjectIntf, ActnList, LCLProc, Clipbrd, LazIDEIntf, PackageIntf, ProjectIntf,
ProjectGroupIntf, MenuIntf, IDEDialogs, IDEWindowIntf, LazFileUtils, ProjectGroupIntf, MenuIntf, IDEDialogs, IDEWindowIntf, LazFileUtils,
LazLogger, ProjectGroupStrConst, ProjectGroup; LazLogger, LazFileCache, ProjectGroupStrConst, ProjectGroup;
type type
TNodeType = ( TNodeType = (
@ -46,6 +46,7 @@ type
{ TProjectGroupEditorForm } { TProjectGroupEditorForm }
TProjectGroupEditorForm = class(TForm) TProjectGroupEditorForm = class(TForm)
AProjectGroupReload: TAction;
ATargetCompileFromHere: TAction; ATargetCompileFromHere: TAction;
ATargetCopyFilename: TAction; ATargetCopyFilename: TAction;
AProjectGroupAddExisting: TAction; AProjectGroupAddExisting: TAction;
@ -93,7 +94,9 @@ type
TBTargetLater: TToolButton; TBTargetLater: TToolButton;
TBMore: TToolButton; TBMore: TToolButton;
TBActivate: TToolButton; TBActivate: TToolButton;
TBReload: TToolButton;
TVPG: TTreeView; TVPG: TTreeView;
procedure AProjectGroupReloadExecute(Sender: TObject);
procedure ATargetActivateExecute(Sender: TObject); procedure ATargetActivateExecute(Sender: TObject);
procedure ATargetActivateUpdate(Sender: TObject); procedure ATargetActivateUpdate(Sender: TObject);
procedure AProjectGroupAddExistingExecute(Sender: TObject); procedure AProjectGroupAddExistingExecute(Sender: TObject);
@ -755,6 +758,25 @@ begin
ND.Target.Activate; ND.Target.Activate;
end; end;
procedure TProjectGroupEditorForm.AProjectGroupReloadExecute(Sender: TObject);
var
PG: TIDEProjectGroup;
begin
if ProjectGroup=nil then exit;
if FileExistsCached(ProjectGroup.FileName) then
begin
PG:=TIDEProjectGroup(ProjectGroup);
if PG.Modified then begin
IDEMessageDialog('Need save','Please save your changes before reloading the project group.',
mtError,[mbOK]);
exit;
end;
ProjectGroup:=nil;
PG.LoadFromFile([pgloLoadRecursively]);
ProjectGroup:=PG;
end;
end;
procedure TProjectGroupEditorForm.ATargetCompileCleanExecute(Sender: TObject); procedure TProjectGroupEditorForm.ATargetCompileCleanExecute(Sender: TObject);
begin begin
Perform(taCompileClean); Perform(taCompileClean);