From 260323080f9aa99ab200a5c25ddd6327c0dcf468 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Tue, 18 Apr 2017 03:54:43 +0200 Subject: [PATCH] fix #136 projects inspector, remove selected source, error if other missing sources --- src/ce_dcd.pas | 2 ++ src/ce_diff.pas | 2 +- src/ce_libmaneditor.pas | 2 +- src/ce_profileviewer.pas | 2 +- src/ce_projinspect.pas | 14 ++++++++++++++ src/ce_projutils.pas | 2 +- 6 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/ce_dcd.pas b/src/ce_dcd.pas index c9586295..161e18da 100644 --- a/src/ce_dcd.pas +++ b/src/ce_dcd.pas @@ -207,6 +207,8 @@ begin folds.Add(fold); for i:= 0 to fProj.sourcesCount-1 do begin + if not (fProj.sourceAbsolute(i).fileExists) then + continue; fold := fProj.sourceAbsolute(i).extractFilePath; if folds.IndexOf(fold) = -1 then folds.Add(fold); diff --git a/src/ce_diff.pas b/src/ce_diff.pas index 7f7bfa6d..13bd72d8 100644 --- a/src/ce_diff.pas +++ b/src/ce_diff.pas @@ -7,7 +7,7 @@ interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, SynEdit, SynHighlighterDiff, process, - ce_common, ComCtrls, StdCtrls, ExtCtrls, Buttons; + ce_common, StdCtrls, ExtCtrls, Buttons; type TCEDiffViewer = class(TForm) diff --git a/src/ce_libmaneditor.pas b/src/ce_libmaneditor.pas index 3941e6f1..7e4c6426 100644 --- a/src/ce_libmaneditor.pas +++ b/src/ce_libmaneditor.pas @@ -6,7 +6,7 @@ interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, - Menus, ComCtrls, Buttons, LazFileUtils, fphttpclient, StdCtrls, math, + Menus, ComCtrls, Buttons, LazFileUtils, fphttpclient, StdCtrls, fpjson, jsonparser, ce_widget, ce_interfaces, ce_ceproject, ce_dmdwrap, ce_common, ce_dialogs, ce_sharedres, process, ce_dubproject, ce_observer, ce_libman, diff --git a/src/ce_profileviewer.pas b/src/ce_profileviewer.pas index 7e0a5ff3..6a80fca9 100644 --- a/src/ce_profileviewer.pas +++ b/src/ce_profileviewer.pas @@ -7,7 +7,7 @@ interface uses Classes, SysUtils, FileUtil, TASources, TAGraph, TATransformations, TASeries, TATools, Forms, Controls, Graphics, Dialogs, ExtCtrls, Menus, ComCtrls, - StdCtrls, TALegend, TADrawUtils, math, + StdCtrls, TALegend, math, ce_widget, ce_common, ce_stringrange, ce_dsgncontrols, ce_ddemangle; type diff --git a/src/ce_projinspect.pas b/src/ce_projinspect.pas index 4ddb17cd..3709fc87 100644 --- a/src/ce_projinspect.pas +++ b/src/ce_projinspect.pas @@ -448,6 +448,20 @@ begin if i <> -1 then proj.Sources.Delete(i); end; + + fname := ''; + for i := 0 to proj.sourcesCount-1 do + if not proj.sourceAbsolute(i).fileExists then + fname += LineEnding + ' "' + proj.sourceAbsolute(i) + '" '; + + if fname.isNotEmpty and (dlgOkCancel('Other source(s) not found: ' + LineEnding + + fname + LineEnding + LineEnding + 'Remove all invalid files ?') = mrOK) then + begin + for j := proj.sourcesCount-1 downto 0 do + if not proj.sourceAbsolute(j).fileExists then + proj.Sources.Delete(j); + end; + proj.endUpdate; end; diff --git a/src/ce_projutils.pas b/src/ce_projutils.pas index e594df71..bdf84afd 100644 --- a/src/ce_projutils.pas +++ b/src/ce_projutils.pas @@ -205,7 +205,7 @@ begin begin sym := true; path := project.sourceAbsolute(i); - if not hasDlangSyntax(path.extractFileExt) then + if not hasDlangSyntax(path.extractFileExt) or not path.fileExists then continue; clbck.fModStart := false; srcc.LoadFromFile(path);