소스 검색

ADD: Multi Rename - save last settings in special preset

Alexander Koblov 6 년 전
부모
커밋
d8c89c355c
2개의 변경된 파일23개의 추가작업 그리고 14개의 파일을 삭제
  1. 22 14
      src/fmultirename.pas
  2. 1 0
      src/ulng.pas

+ 22 - 14
src/fmultirename.pas

@@ -272,6 +272,7 @@ uses
 
 const
   sPresetsSection = 'MultiRenamePresets';
+  sLastPreset = '{BC322BF1-2185-47F6-9F99-D27ED1E23E53}';
 
 function ShowMultiRenameForm(aFileSource: IFileSource; var aFiles: TFiles):Boolean;
 begin
@@ -342,7 +343,6 @@ begin
   // Initialize presets.
   LoadPresets;
   FillPresetsList;
-  cbPresets.Text := FLastPreset;
   LoadPreset(FLastPreset);
 end;
 
@@ -358,7 +358,7 @@ end;
 
 procedure TfrmMultiRename.FormClose(Sender: TObject; var CloseAction: TCloseAction);
 begin
-  SavePresets;
+  SavePreset(sLastPreset);
 
   CloseAction:= caFree;
   with StringGrid.Columns do
@@ -691,7 +691,10 @@ end;
 
 procedure TfrmMultiRename.btnLoadPresetClick(Sender: TObject);
 begin
-  LoadPreset(cbPresets.Text);
+  if cbPresets.ItemIndex = 0 then
+    LoadPreset(sLastPreset)
+  else
+    LoadPreset(cbPresets.Text);
 end;
 
 procedure TfrmMultiRename.btnEditClick(Sender: TObject);
@@ -702,7 +705,9 @@ end;
 
 procedure TfrmMultiRename.btnSavePresetClick(Sender: TObject);
 begin
-  if cbPresets.Text <> '' then
+  if cbPresets.ItemIndex = 0 then
+    SavePreset(sLastPreset)
+  else if cbPresets.Text <> '' then
   begin
     if FPresets.Find(cbPresets.Text) <> -1 then
     begin
@@ -721,7 +726,7 @@ procedure TfrmMultiRename.btnDeletePresetClick(Sender: TObject);
 var
   Index: Integer;
 begin
-  if cbPresets.Text <> '' then
+  if (cbPresets.ItemIndex > 0) and (cbPresets.Text <> '') then
   begin
     DeletePreset(cbPresets.Text);
 
@@ -810,7 +815,6 @@ begin
     edFile.Text:= 'default.log';
   edFile.SelStart:= UTF8Length(edFile.Text);
   cbPresets.Text:='';
-  FLastPreset:='';
   FNames.Clear;
   gbMaska.Enabled:= True;
   gbPresets.Enabled:= True;
@@ -1271,7 +1275,7 @@ begin
   ClearPresetsList;
 
   ANode := AConfig.FindNode(AConfig.RootNode, sPresetsSection);
-  FLastPreset := AConfig.GetValue(ANode, 'LastPreset', '');
+  FLastPreset := AConfig.GetValue(ANode, 'LastPreset', sLastPreset);
 
   ANode := AConfig.FindNode(ANode, 'Presets');
   if Assigned(ANode) then
@@ -1323,7 +1327,6 @@ var
 begin
   ANode := AConfig.FindNode(AConfig.RootNode, sPresetsSection, True);
   AConfig.ClearNode(ANode);
-  AConfig.SetValue(ANode, 'LastPreset', FLastPreset);
 
   ANode := AConfig.FindNode(ANode, 'Presets', True);
   for i := 0 to FPresets.Count - 1 do
@@ -1376,8 +1379,6 @@ begin
       edFile.Text := LogFile;
     end;
 
-    FLastPreset := PresetName;
-
     edFindChange(edFind);
     edReplaceChange(edReplace);
   end;
@@ -1410,7 +1411,6 @@ begin
       LogFile := edFile.Text;
     end;
 
-    FLastPreset := PresetName;
     SavePresets;
   end;
 end;
@@ -1426,7 +1426,6 @@ begin
     begin
       Dispose(PMultiRenamePreset(FPresets.List[PresetIndex]^.Data));
       FPresets.Remove(PresetName);
-      FLastPreset := '';
       SavePresets;
     end;
   end;
@@ -1438,13 +1437,22 @@ var
   PresetName: String;
 begin
   cbPresets.Clear;
+  cbPresets.Items.Insert(0, rsMulRenLastPreset);
 
   for i := 0 to FPresets.Count - 1 do
   begin
     PresetName := FPresets.List[i]^.Key;
-    if cbPresets.Items.IndexOf(PresetName) = -1 then
-      cbPresets.Items.Add(PresetName);
+    if (PresetName <> sLastPreset) then
+    begin
+      if cbPresets.Items.IndexOf(PresetName) = -1 then
+        cbPresets.Items.Add(PresetName);
+    end;
   end;
+
+  if (FLastPreset = sLastPreset) then
+    cbPresets.ItemIndex := 0
+  else
+    cbPresets.ItemIndex := cbPresets.Items.IndexOf(FLastPreset);
 end;
 
 procedure TfrmMultiRename.ClearPresetsList;

+ 1 - 0
src/ulng.pas

@@ -634,6 +634,7 @@ resourcestring
   rsSplitMsgManyParts = 'The number of parts is more than 100! Continue?';
   rsSplitPreDefinedSizes = 'Automatic;1457664B - 3.5" High Density 1.44M;1213952B - 5.25" High Density 1.2M;730112B - 3.5" Double Density 720K;362496B - 5.25" Double Density 360K;98078KB - ZIP 100MB;650MB - CD 650MB;700MB - CD 700MB;4482MB - DVD+R';
   // MultiRename dialog
+  rsMulRenLastPreset = '[The last used]';
   rsMulRenWarningDuplicate = 'Warning, duplicate names!';
   rsMulRenAutoRename = 'Do auto-rename to "name (1).ext", "name (2).ext" etc.?';
   rsMulRenWrongLinesNumber = 'File contains wrong number of lines: %d, should be %d!';