IDE: package editor: draw red line when file is missing

git-svn-id: trunk@45556 -
This commit is contained in:
mattias 2014-06-16 20:19:42 +00:00
parent 669a093a53
commit e648faaa3c
2 changed files with 31 additions and 1 deletions

View File

@ -326,6 +326,7 @@ object PackageEditorForm: TPackageEditorForm
ReadOnly = True
RightClickSelect = True
TabOrder = 2
OnAdvancedCustomDrawItem = ItemsTreeViewAdvancedCustomDrawItem
OnDblClick = ItemsTreeViewDblClick
OnDragDrop = ItemsTreeViewDragDrop
OnDragOver = ItemsTreeViewDragOver

View File

@ -142,6 +142,7 @@ type
Typ: TPENodeType;
Name: string; // file or package name
Removed: boolean;
FileType: TPkgFileType;
Next: TPENodeData;
constructor Create(aTyp: TPENodeType; aName: string; aRemoved: boolean);
end;
@ -222,6 +223,9 @@ type
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ItemsPopupMenuPopup(Sender: TObject);
procedure ItemsTreeViewAdvancedCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
var PaintImages, DefaultDraw: Boolean);
procedure ItemsTreeViewDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure ItemsTreeViewDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
@ -771,6 +775,30 @@ begin
//debugln(['TPackageEditorForm.FilesPopupMenuPopup END ',ItemsPopupMenu.Items.Count]); PackageEditorMenuRoot.WriteDebugReport(' ',true);
end;
procedure TPackageEditorForm.ItemsTreeViewAdvancedCustomDrawItem(
Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState;
Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean);
var
NodeData: TPENodeData;
r: TRect;
y: Integer;
begin
if Stage=cdPostPaint then begin
NodeData:=GetNodeData(Node);
if (NodeData<>nil) then begin
if (NodeData.Typ=penFile) and (not NodeData.Removed)
and (NodeData.FileType<>pftVirtualUnit) and FilenameIsAbsolute(NodeData.Name)
and (not FileExistsCached(NodeData.Name))
then begin
r:=Node.DisplayRect(true);
ItemsTreeView.Canvas.Pen.Color:=clRed;
y:=(r.Top+r.Bottom) div 2;
ItemsTreeView.Canvas.Line(r.Left,y,r.Right,y);
end;
end;
end;
end;
procedure TPackageEditorForm.ItemsTreeViewDragDrop(Sender, Source: TObject; X,
Y: Integer);
var
@ -2234,6 +2262,7 @@ begin
for i:=0 to LazPackage.FileCount-1 do begin
CurFile:=LazPackage.Files[i];
NodeData:=CreateNodeData(penFile,CurFile.Filename,false);
NodeData.FileType:=CurFile.FileType;
Filename:=CurFile.GetShortFilename(true);
if Filename='' then continue;
if (FNextSelectedPart<>nil) and (FNextSelectedPart.Typ=penFile)
@ -2247,7 +2276,7 @@ begin
// removed files
if LazPackage.RemovedFilesCount>0 then begin
// Create root node for removed dependencies if not done yet.
// Create root node for removed files if not done yet.
if FRemovedFilesNode=nil then begin
FRemovedFilesNode:=ItemsTreeView.Items.Add(FRequiredPackagesNode,
lisPckEditRemovedFiles);