improved project file/folde add

initial dialog dir based on last selected
This commit is contained in:
Basile Burg 2015-06-03 10:52:13 +02:00
parent 8aa4ae52e2
commit f014576835
1 changed files with 20 additions and 3 deletions

View File

@ -38,6 +38,7 @@ type
fFileNode, fConfNode: TTreeNode; fFileNode, fConfNode: TTreeNode;
fImpsNode, fInclNode: TTreeNode; fImpsNode, fInclNode: TTreeNode;
fXtraNode: TTreeNode; fXtraNode: TTreeNode;
fLastFileOrFolder: string;
procedure actUpdate(sender: TObject); procedure actUpdate(sender: TObject);
procedure TreeDblClick(sender: TObject); procedure TreeDblClick(sender: TObject);
procedure actOpenFileExecute(sender: TObject); procedure actOpenFileExecute(sender: TObject);
@ -148,6 +149,7 @@ end;
procedure TCEProjectInspectWidget.projNew(aProject: TCEProject); procedure TCEProjectInspectWidget.projNew(aProject: TCEProject);
begin begin
fProject := aProject; fProject := aProject;
fLastFileOrFolder := '';
if Visible then updateImperative; if Visible then updateImperative;
end; end;
@ -156,6 +158,7 @@ begin
if fProject <> aProject then if fProject <> aProject then
exit; exit;
fProject := nil; fProject := nil;
fLastFileOrFolder := '';
updateImperative; updateImperative;
end; end;
@ -186,6 +189,12 @@ end;
procedure TCEProjectInspectWidget.TreeSelectionChanged(Sender: TObject); procedure TCEProjectInspectWidget.TreeSelectionChanged(Sender: TObject);
begin begin
actUpdate(sender); actUpdate(sender);
if fProject = nil then
exit;
if (Tree.Selected.Parent = fFileNode) then
fLastFileOrFolder := fProject.getAbsoluteFilename(tree.Selected.Text)
else
fLastFileOrFolder := tree.Selected.Text;
end; end;
procedure TCEProjectInspectWidget.TreeDblClick(sender: TObject); procedure TCEProjectInspectWidget.TreeDblClick(sender: TObject);
@ -229,6 +238,10 @@ begin
// //
with TOpenDialog.Create(nil) do with TOpenDialog.Create(nil) do
try try
if FileExists(fLastFileOrFolder) then
InitialDir := ExtractFilePath(fLastFileOrFolder)
else if DirectoryExists(fLastFileOrFolder) then
InitialDir := fLastFileOrFolder;
filter := DdiagFilter; filter := DdiagFilter;
if execute then begin if execute then begin
fProject.beginUpdate; fProject.beginUpdate;
@ -248,9 +261,13 @@ var
begin begin
if fProject = nil then exit; if fProject = nil then exit;
// //
if fileExists(fProject.fileName) then dir := '';
dir := extractFilePath(fProject.fileName) if FileExists(fLastFileOrFolder) then
else dir := ''; dir := extractFilePath(fLastFileOrFolder)
else if DirectoryExists(fLastFileOrFolder) then
dir := fLastFileOrFolder
else if fileExists(fProject.fileName) then
dir := extractFilePath(fProject.fileName);
if selectDirectory('sources', dir, dir, true, 0) then if selectDirectory('sources', dir, dir, true, 0) then
begin begin
fProject.beginUpdate; fProject.beginUpdate;