瀏覽代碼

#87 generate noname with number

circular17 3 年之前
父節點
當前提交
617be63bf8
共有 2 個文件被更改,包括 24 次插入1 次删除
  1. 5 1
      lazpaint/lazpaintmainform.pas
  2. 19 0
      lazpaint/ufilesystem.pas

+ 5 - 1
lazpaint/lazpaintmainform.pas

@@ -1506,7 +1506,6 @@ begin
     {$WARNINGS ON}
     {$WARNINGS ON}
     filename := ExtractFileName(filename);
     filename := ExtractFileName(filename);
   end else initialDir:= '';
   end else initialDir:= '';
-  if filename = '' then filename := rsNoName;
   if initialDir = '' then
   if initialDir = '' then
   begin
   begin
     if AVars.Booleans['Export'] then
     if AVars.Booleans['Export'] then
@@ -1514,6 +1513,11 @@ begin
     else
     else
       initialDir:= FSaveInitialDir;
       initialDir:= FSaveInitialDir;
   end;
   end;
+  if filename = '' then
+  begin
+    if initialDir = '' then initialDir := DefaultPicturesDirectory;
+    filename := FileManager.GetDefaultFilename(initialDir);
+  end;
   if saveDlg.FilterIndex > 1 then
   if saveDlg.FilterIndex > 1 then
     filename := ApplySelectedFilterExtension(filename,saveDlg.Filter,saveDlg.FilterIndex);
     filename := ApplySelectedFilterExtension(filename,saveDlg.Filter,saveDlg.FilterIndex);
   if not Image.AbleToSaveAsUTF8(filename) then
   if not Image.AbleToSaveAsUTF8(filename) then

+ 19 - 0
lazpaint/ufilesystem.pas

@@ -94,6 +94,7 @@ type
     function FileExists(AFilenameUTF8: string): boolean;
     function FileExists(AFilenameUTF8: string): boolean;
     procedure DeleteFile(AFilenameUTF8: string);
     procedure DeleteFile(AFilenameUTF8: string);
     function GetValidFilename(ASuggested: string): string;
     function GetValidFilename(ASuggested: string): string;
+    function GetDefaultFilename(ADirectory: string): string;
   end;
   end;
 
 
 var
 var
@@ -1215,6 +1216,24 @@ begin
     end;
     end;
 end;
 end;
 
 
+function TFileManager.GetDefaultFilename(ADirectory: string): string;
+var
+  nonameCounter: Integer;
+  foundFiles: TFileInfoList;
+begin
+  result := rsNoName;
+  nonameCounter := 1;
+  foundFiles := TFileInfoList.Create;
+  repeat
+    foundFiles.Clear;
+    GetDirectoryElements(ADirectory, result+'.*', [otNonFolders], foundFiles);
+    if foundFiles.Count = 0 then exit;
+    inc(nonameCounter);
+    result := rsNoName+IntToStr(nonameCounter);
+  until nonameCounter > 999;
+  result := '?';
+end;
+
 initialization
 initialization
 
 
   FileManager := TFileManager.Create;
   FileManager := TFileManager.Create;