Browse Source

ADD: New supported "setup" parameter for internal command "cm_LoadFavoriteTabs". (#82)

* FIX: Bad format messages in Dutch language file.

* Completion of French language file.

* ADD: New supported "setup" parameter for internal command "cm_LoadFavoriteTabs"

ADD: Modifiy the command "cm_LoadFavoriteTabs" so it would accept a parameter "setup=name" to intruct DC to load Favorite Tabs setup with name "name".
ADD: When the command "cm_LoadFavoriteTabs" has the parameter "setup=" with no value, it will invalidate the current Favorite Tabs selection so it won't save over it.
CHG: One new string in the language files.
ADD: Add the "actAddPlugin" declaration in the main form unit file that was missing for any reason.
Denis Bisson 4 years ago
parent
commit
2c7be5a5e2

+ 4 - 0
language/doublecmd.be.po

@@ -13597,3 +13597,7 @@ msgstr "Колькасць замен: %d"
 msgid "No replacement took place."
 msgstr "Замен не адбылося."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.bg.po

@@ -14065,3 +14065,7 @@ msgstr ""
 msgid "No replacement took place."
 msgstr ""
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.ca.po

@@ -14603,3 +14603,7 @@ msgstr ""
 msgid "No replacement took place."
 msgstr ""
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.cs.po

@@ -13593,3 +13593,7 @@ msgstr "Počet nahrazených: %d"
 msgid "No replacement took place."
 msgstr "Žádné nahrazení se nekonalo."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.da.po

@@ -14810,3 +14810,7 @@ msgstr "Antal erstattede: %d"
 msgid "No replacement took place."
 msgstr "Ingen erstatning fandt sted."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.de.po

@@ -13810,3 +13810,7 @@ msgstr "Anzahl der Ersetzungen: %d"
 msgid "No replacement took place."
 msgstr "Eine Ersetzung hat nicht stattgefunden."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.el.po

@@ -13853,3 +13853,7 @@ msgstr "Αριθμός αντικατάστασης: %d"
 msgid "No replacement took place."
 msgstr "Δεν πραγματοποιήθηκε καμία αντικατάσταση."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.es.po

@@ -13711,3 +13711,7 @@ msgstr "Número de sustituciones: %d"
 msgid "No replacement took place."
 msgstr "No se ha sustituido nada."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 1
language/doublecmd.fr.po

@@ -25,7 +25,7 @@ msgstr ""
 "Project-Id-Version: Double Commander 1.0.0 alpha\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2008-01-17 23:08+0300\n"
-"PO-Revision-Date: 2021-04-29 21:27-0400\n"
+"PO-Revision-Date: 2021-05-01 11:18-0400\n"
 "Last-Translator: Denis Bisson <[email protected]>\n"
 "Language-Team: Zebulon Tourneboulle <[email protected]>\n"
 "MIME-Version: 1.0\n"
@@ -13892,3 +13892,6 @@ msgstr "Nombre de remplacements : %d"
 msgid "No replacement took place."
 msgstr "Aucun remplacement n'a eu lieu."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr "Aucune configuration nommée \"%s\""

+ 4 - 0
language/doublecmd.hr.po

@@ -14319,3 +14319,7 @@ msgstr "Broj zamjene"
 msgid "No replacement took place."
 msgstr "Nije bilo zamjene"
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.hu.po

@@ -13891,3 +13891,7 @@ msgctxt "ulng.rsmsgfavoritetabsendofmenuulng.rsmsgfavoritetabssimpleseparator"
 msgid "No replacement took place."
 msgstr "Nem történt csere."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.it.po

@@ -14078,3 +14078,7 @@ msgstr ""
 msgid "No replacement took place."
 msgstr ""
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.ja.po

@@ -13864,3 +13864,7 @@ msgstr "置換の回数:%d"
 msgid "No replacement took place."
 msgstr "置換は起こりませんでした."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 10 - 5
language/doublecmd.ko.po

@@ -31,13 +31,13 @@ msgid "Files found: %d  (Identical: %d, Different: %d, Unique left: %d, Unique r
 msgstr "파일 찾음; %d (동일: %d, 다름: %d, 왼쪽 유일함: %d, 오른쪽 유일함: %d)"
 
 #: fsyncdirsdlg.rslefttorightcopy
-#, fuzzy
+#, fuzzy,badformat
 #| msgid "Left to Right: Copy %d files, total size: %d bytes"
 msgid "Left to Right: Copy %d files, total size: %s (%s)"
 msgstr "왼쪽에서 오른쪽: %d개 파일 복사, 총 용량: %d 바이트"
 
 #: fsyncdirsdlg.rsrighttoleftcopy
-#, fuzzy
+#, fuzzy,badformat
 #| msgid "Right to Left: Copy %d files, total size: %d bytes"
 msgid "Right to Left: Copy %d files, total size: %s (%s)"
 msgstr "오른쪽에서 왼쪽: %d 개 파일 복사, 총 용량: %d 바이트"
@@ -11060,7 +11060,7 @@ msgid "Cannot copy special file %s"
 msgstr ""
 
 #: ulng.rsmsgcannotdeletedirectory
-#, fuzzy
+#, fuzzy,badformat
 msgid "Cannot delete directory %s"
 msgstr "폴더(디렉토리)삭제 할 수 없음"
 
@@ -11225,7 +11225,7 @@ msgid "Error writing to file"
 msgstr "파일에 쓰기 오류"
 
 #: ulng.rsmsgerrforcedir
-#, fuzzy
+#, fuzzy,badformat
 msgid "Can not create directory %s!"
 msgstr "폴더(디렉토리)를 생성할 수 없음!"
 
@@ -11671,7 +11671,7 @@ msgid "This is not a valid plugin!"
 msgstr "유효한 플러그인 아님!"
 
 #: ulng.rsmsginvalidpluginarchitecture
-#, fuzzy
+#, fuzzy,badformat
 msgid "This plugin is built for Double Commander for %s.%sIt can not work with Double Commander for %s!"
 msgstr "이것은 더블커맨더 %를 위한 플러그인입니다!"
 
@@ -13989,3 +13989,8 @@ msgstr "바꾸기한 갯수: %d 개"
 #: ulng.rszeroreplacement
 msgid "No replacement took place."
 msgstr "바꾸기 없음."
+
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.nb.po

@@ -14157,3 +14157,7 @@ msgstr "Antall skiftet ut: %d"
 msgid "No replacement took place."
 msgstr "Ingen utskifting er utført."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.nl.po

@@ -13602,3 +13602,7 @@ msgstr "Aantal vervangingen: %d"
 msgid "No replacement took place."
 msgstr "Er vond geen vervanging plaats."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.nn.po

@@ -14155,3 +14155,7 @@ msgstr "Antal bytta ut: %d"
 msgid "No replacement took place."
 msgstr "Ingen utbytting er utført."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.pl.po

@@ -13544,3 +13544,7 @@ msgstr "Liczba zamian: %d"
 msgid "No replacement took place."
 msgstr "Nie było zamian."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.po

@@ -13527,3 +13527,7 @@ msgstr ""
 msgid "No replacement took place."
 msgstr ""
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.pt.po

@@ -13937,3 +13937,7 @@ msgstr "Nº de substituição: %d"
 msgid "No replacement took place."
 msgstr "Não houve substituição."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.pt_BR.po

@@ -14069,3 +14069,7 @@ msgstr "Número de substituições: %d"
 msgid "No replacement took place."
 msgstr "Não houve substituição."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.ro.po

@@ -13883,3 +13883,7 @@ msgstr ""
 msgid "No replacement took place."
 msgstr ""
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.ru.po

@@ -13877,3 +13877,7 @@ msgstr "Число замен: %d"
 msgid "No replacement took place."
 msgstr "Замена не состоялась."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.sk.po

@@ -13539,3 +13539,7 @@ msgstr "Počet nahradení: %d"
 msgid "No replacement took place."
 msgstr "Žiadne nahradenie nebolo vykonané."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.sl.po

@@ -13690,3 +13690,7 @@ msgstr "Število zamenjav: %d"
 msgid "No replacement took place."
 msgstr "Zamenjava ni bila izvršena."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.sr.po

@@ -14157,3 +14157,7 @@ msgstr ""
 msgid "No replacement took place."
 msgstr ""
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/[email protected]

@@ -14158,3 +14158,7 @@ msgstr ""
 msgid "No replacement took place."
 msgstr ""
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.tr.po

@@ -14294,3 +14294,7 @@ msgstr ""
 msgid "No replacement took place."
 msgstr ""
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.uk.po

@@ -13960,3 +13960,7 @@ msgstr "Кількість замін: %d"
 msgid "No replacement took place."
 msgstr "Заміна не відбулася."
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.zh_CN.po

@@ -13644,3 +13644,7 @@ msgstr "替换次数:%d"
 msgid "No replacement took place."
 msgstr "没有发生替换。"
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 4 - 0
language/doublecmd.zh_TW.po

@@ -14621,3 +14621,7 @@ msgstr ""
 msgid "No replacement took place."
 msgstr ""
 
+#: umaincommands.rsfavoritetabs_setupnotexist
+msgid "No setup named \"%s\""
+msgstr ""
+

+ 1 - 0
src/fmain.pas

@@ -63,6 +63,7 @@ type
   { TfrmMain }
 
   TfrmMain = class(TAloneForm, IFormCommands)
+    actAddPlugin: TAction;
     actExtractFiles: TAction;
     actAddPathToCmdLine: TAction;
     actFileAssoc: TAction;

+ 1 - 1
src/ufavoritetabs.pas

@@ -96,7 +96,6 @@ type
     FAssociatedMainMenuItem: TMenuItem;
     function GetFavoriteTabs(Index: integer): TFavoriteTabs;
     function GetBestIndexForAlphabeticalNewFavoriteTabs(sFavoriteTabsNameToFindAPlaceFor: string): integer;
-    function GetIndexForSuchFavoriteTabsName(sSearchedFavoriteTabsName: string): integer;
     procedure AddToListAndToXmlFileHeader(paramFavoriteTabs: TFavoriteTabs; AConfig: TXmlConfig; SpecifiedIndex: integer = -1);
     function ActualDumpFavoriteTabsListInXml(AConfig: TXmlConfig): boolean;
   public
@@ -124,6 +123,7 @@ type
     procedure RefreshFromTTreeView(ParamTreeView: TTreeView);
     function ImportFromLegacyTabsFile(paramFilename: string; SpecifiedIndex: integer = -1): boolean;
     function ExportToLegacyTabsFile(index: integer; OutputDirectory: string): boolean;
+    function GetIndexForSuchFavoriteTabsName(sSearchedFavoriteTabsName: string): integer;
     property FavoriteTabs[Index: integer]: TFavoriteTabs read GetFavoriteTabs;
     property LastFavoriteTabsLoadedUniqueId: TGUID read FLastFavoriteTabsLoadedUniqueId write FLastFavoriteTabsLoadedUniqueId;
     property AssociatedMainMenuItem: TMenuItem read FAssociatedMainMenuItem write FAssociatedMainMenuItem;

+ 53 - 17
src/umaincommands.pas

@@ -4,7 +4,7 @@
    This unit contains DC actions of the main form
 
    Copyright (C) 2008  Dmitry Kolomiets ([email protected])
-   Copyright (C) 2008-2020 Alexander Koblov ([email protected])
+   Copyright (C) 2008-2021 Alexander Koblov ([email protected])
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -401,6 +401,9 @@ uses fOptionsPluginsBase, fOptionsPluginsDSX, fOptionsPluginsWCX,
      {$ENDIF}
      ;
 
+resourcestring
+  rsFavoriteTabs_SetupNotExist = 'No setup named "%s"';
+
 procedure ReadCopyRenameParams(
   const Params: array of string;
   var Confirmation: Boolean;
@@ -4888,6 +4891,8 @@ end;
 
 { TMainCommands.cm_LoadFavoriteTabs }
 procedure TMainCommands.cm_LoadFavoriteTabs(const Params: array of string);
+const
+  sNOSETUPPARAMLEGACY = 'd93525d5-e711-4b9d-ad2c-54d815354819';
 var
   bUseTreeViewMenu: boolean = false;
   bUsePanel: boolean = true;
@@ -4895,31 +4900,62 @@ var
   iWantedWidth: integer = 0;
   iWantedHeight: integer = 0;
   sMaybeMenuItem: TMenuItem = nil;
+  sParam, sMaybeValue, sSearchedFavoriteTabsName: string;
+  iMaybeIndex: integer;
 begin
-  // 1. Let's parse our parameters.
-  DoParseParametersForPossibleTreeViewMenu(Params, gUseTreeViewMenuWithFavoriteTabsFromMenuCommand, gUseTreeViewMenuWithFavoriteTabsFromDoubleClick, bUseTreeViewMenu, bUsePanel, p);
+  // 1. Check if we have the parameter "setup".
+  sSearchedFavoriteTabsName := sNOSETUPPARAMLEGACY;
+  for sParam in Params do
+    if GetParamValue(sParam, 'setup', sMaybeValue) then
+      sSearchedFavoriteTabsName := Trim(sMaybeValue);
 
-  // 2. No matter what, we need to fill in the popup menu structure.
-  gFavoriteTabsList.PopulateMenuWithFavoriteTabs(frmMain.pmFavoriteTabs, @DoOnClickMenuJobFavoriteTabs, ftmp_FAVTABSWITHCONFIG);
-  Application.ProcessMessages;
-
-  // 3. Show the appropriate menu.
-  if bUseTreeViewMenu then
+  // 2. Check if we've seen the 'setup' parameter.
+  if sSearchedFavoriteTabsName = sNOSETUPPARAMLEGACY then
   begin
-    if not bUsePanel then
-      iWantedHeight := 0
+    // If we not see the 'setup' parameter, we do thing as legacy, which means showing the menu to select the favorite tabs so user select it.
+    DoParseParametersForPossibleTreeViewMenu(Params, gUseTreeViewMenuWithFavoriteTabsFromMenuCommand, gUseTreeViewMenuWithFavoriteTabsFromDoubleClick, bUseTreeViewMenu, bUsePanel, p);
+
+    // We fill in the popup menu structure.
+    gFavoriteTabsList.PopulateMenuWithFavoriteTabs(frmMain.pmFavoriteTabs, @DoOnClickMenuJobFavoriteTabs, ftmp_FAVTABSWITHCONFIG);
+    Application.ProcessMessages;
+
+    // Show the appropriate menu.
+    if bUseTreeViewMenu then
+    begin
+      if not bUsePanel then
+        iWantedHeight := 0
+      else
+      begin
+        iWantedWidth := frmMain.ActiveFrame.Width;
+        iWantedHeight := frmMain.ActiveFrame.Height;
+      end;
+
+      sMaybeMenuItem := GetUserChoiceFromTreeViewMenuLoadedFromPopupMenu(frmMain.pmFavoriteTabs, tvmcFavoriteTabs, p.X, p.Y, iWantedWidth, iWantedHeight);
+      if sMaybeMenuItem <> nil then sMaybeMenuItem.Click;
+    end
     else
     begin
-      iWantedWidth := frmMain.ActiveFrame.Width;
-      iWantedHeight := frmMain.ActiveFrame.Height;
+      frmMain.pmFavoriteTabs.Popup(p.X, p.Y);
     end;
-
-    sMaybeMenuItem := GetUserChoiceFromTreeViewMenuLoadedFromPopupMenu(frmMain.pmFavoriteTabs, tvmcFavoriteTabs, p.X, p.Y, iWantedWidth, iWantedHeight);
-    if sMaybeMenuItem <> nil then sMaybeMenuItem.Click;
   end
   else
   begin
-    frmMain.pmFavoriteTabs.Popup(p.X, p.Y);
+    // If we've seen the 'setup' parameter, let's see if user provided a name or not.
+    if sSearchedFavoriteTabsName<>'' then
+    begin
+      // If we got a name, let's attempt to load a setup with that name.
+      iMaybeIndex := gFavoriteTabsList.GetIndexForSuchFavoriteTabsName(sSearchedFavoriteTabsName);
+      if iMaybeIndex <> -1 then
+        gFavoriteTabsList.LoadTabsFromXmlEntry(iMaybeIndex)
+      else
+        if gToolbarReportErrorWithCommands then
+          msgError(Format(rsFavoriteTabs_SetupNotExist,[sSearchedFavoriteTabsName]));
+    end
+    else
+    begin
+      // If no name provided, it means user want to unselect current setup.
+      gFavoriteTabsList.LastFavoriteTabsLoadedUniqueId := DCGetNewGUID;
+    end;
   end;
 end;