From e2b4acb980615e58496b81c458611ff79cf8596b Mon Sep 17 00:00:00 2001 From: mattias Date: Fri, 20 Nov 2015 22:15:07 +0000 Subject: [PATCH] project groups: reload button as workaround for missing sync git-svn-id: trunk@50452 - --- components/projectgroups/projectgroup.pp | 13 +++-- .../projectgroups/projectgroupeditor.lfm | 53 +++++++++++++++++-- .../projectgroups/projectgroupeditor.pas | 24 ++++++++- 3 files changed, 80 insertions(+), 10 deletions(-) diff --git a/components/projectgroups/projectgroup.pp b/components/projectgroups/projectgroup.pp index 9d8a7e36c3..f2342157ff 100644 --- a/components/projectgroups/projectgroup.pp +++ b/components/projectgroups/projectgroup.pp @@ -1,7 +1,5 @@ { ToDo: - - save/restore Active target - - run external tool - update files when project/package changes in IDE - update dependencies when changed in IDE - re-add removed targets @@ -111,6 +109,7 @@ type public constructor Create(aCompileTarget: TIDECompileTarget); destructor Destroy; override; + procedure Clear; function IndexOfTarget(const Target: TPGCompileTarget): Integer; override; function IndexOfRemovedTarget(const Target: TPGCompileTarget): Integer; override; function AddTarget(Const AFileName: String): TPGCompileTarget; override; @@ -658,11 +657,15 @@ destructor TIDEProjectGroup.Destroy; begin FreeAndNil(FTargets); FreeAndNil(FRemovedTargets); - if FParent=nil then - FreeAndNil(FCompileTarget); inherited Destroy; end; +procedure TIDEProjectGroup.Clear; +begin + FTargets.Clear; + FRemovedTargets.Clear; +end; + function TIDEProjectGroup.IndexOfTarget(const Target: TPGCompileTarget): Integer; begin Result:=FTargets.IndexOf(Target); @@ -740,6 +743,8 @@ begin if not FilenameIsAbsolute(FileName) then exit; if not FileExistsCached(Filename) then exit; + Clear; + aGroup:=Parent; while aGroup<>nil do begin if CompareFilenames(aGroup.FileName,Filename)=0 then diff --git a/components/projectgroups/projectgroupeditor.lfm b/components/projectgroups/projectgroupeditor.lfm index d641096a1f..c416c7df37 100644 --- a/components/projectgroups/projectgroupeditor.lfm +++ b/components/projectgroups/projectgroupeditor.lfm @@ -1,7 +1,7 @@ object ProjectGroupEditorForm: TProjectGroupEditorForm - Left = 655 + Left = 383 Height = 358 - Top = 177 + Top = 187 Width = 646 Caption = 'ProjectGroupEditorForm' ClientHeight = 358 @@ -70,7 +70,7 @@ object ProjectGroupEditorForm: TProjectGroupEditorForm Action = ATargetLater end object TBMore: TToolButton - Left = 523 + Left = 574 Top = 2 Caption = 'More...' DropdownMenu = PopupMenuMore @@ -82,6 +82,11 @@ object ProjectGroupEditorForm: TProjectGroupEditorForm Action = ATargetActivate Visible = False end + object TBReload: TToolButton + Left = 523 + Top = 2 + Action = AProjectGroupReload + end end object TVPG: TTreeView Left = 0 @@ -122,7 +127,7 @@ object ProjectGroupEditorForm: TProjectGroupEditorForm left = 128 top = 184 Bitmap = { - 4C69190000001000000010000000FFFFFF009E6E4D2B9D6D4CD69D6D4BC59D6C + 4C691A0000001000000010000000FFFFFF009E6E4D2B9D6D4CD69D6D4BC59D6C 4BFF9C6C4AFF9C6B49FF9B6A49FF9B6A48FF9A6947FF996846FF986745FF9364 43FF845D3EDEFFFFFF00FFFFFF00FFFFFF009D6D4C919D6D4BFEBB9778FFAC82 62FFAC8161FFAB8060FFAB7F5FFFAA7F5EFFA87E5DFFA87C5CFF9D6D4CFF9766 @@ -922,7 +927,39 @@ object ProjectGroupEditorForm: TProjectGroupEditorForm ED66FEFEFE00848484FFBDBDBDFFB2B2B2FF656565FFFEFEFE00ECECEC88CCCC CCFFCCCCCCFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 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 object PopupMenuMore: TPopupMenu @@ -1084,6 +1121,12 @@ object ProjectGroupEditorForm: TProjectGroupEditorForm OnExecute = ATargetCopyFilenameExecute OnUpdate = ATargetCopyFilenameUpdate end + object AProjectGroupReload: TAction + Category = 'ProjectGroupActions' + Caption = 'Reload' + ImageIndex = 25 + OnExecute = AProjectGroupReloadExecute + end end object PopupMenuTree: TPopupMenu Images = ImageListMain diff --git a/components/projectgroups/projectgroupeditor.pas b/components/projectgroups/projectgroupeditor.pas index ce2995362d..19af18162c 100644 --- a/components/projectgroups/projectgroupeditor.pas +++ b/components/projectgroups/projectgroupeditor.pas @@ -14,7 +14,7 @@ uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, Menus, ActnList, LCLProc, Clipbrd, LazIDEIntf, PackageIntf, ProjectIntf, ProjectGroupIntf, MenuIntf, IDEDialogs, IDEWindowIntf, LazFileUtils, - LazLogger, ProjectGroupStrConst, ProjectGroup; + LazLogger, LazFileCache, ProjectGroupStrConst, ProjectGroup; type TNodeType = ( @@ -46,6 +46,7 @@ type { TProjectGroupEditorForm } TProjectGroupEditorForm = class(TForm) + AProjectGroupReload: TAction; ATargetCompileFromHere: TAction; ATargetCopyFilename: TAction; AProjectGroupAddExisting: TAction; @@ -93,7 +94,9 @@ type TBTargetLater: TToolButton; TBMore: TToolButton; TBActivate: TToolButton; + TBReload: TToolButton; TVPG: TTreeView; + procedure AProjectGroupReloadExecute(Sender: TObject); procedure ATargetActivateExecute(Sender: TObject); procedure ATargetActivateUpdate(Sender: TObject); procedure AProjectGroupAddExistingExecute(Sender: TObject); @@ -755,6 +758,25 @@ begin ND.Target.Activate; 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); begin Perform(taCompileClean);