Explorar o código

Adding "Calculate Directory Sizes" command (Bug 41) to toolbar and column context menu

Source commit: 533bb4a2222fd02abbbc8d0dbe049993efc0d837
Martin Prikryl %!s(int64=2) %!d(string=hai) anos
pai
achega
e2eb6dacee

+ 11 - 11
source/forms/CustomScpExplorer.cpp

@@ -5633,18 +5633,18 @@ void __fastcall TCustomScpExplorerForm::DirViewColumnRightClick(
   if (Sender == DirView(osOther))
   {
     DirViewColumnMenu = NonVisualDataModule->RemoteDirViewColumnPopup;
-    NonVisualDataModule->RemoteSortByExtColumnPopupItem->Visible =
-      (Column->Index == uvName);
-    NonVisualDataModule->RemoteFormatSizeBytesPopupItem->Visible =
-      (Column->Index == uvSize);
+    NonVisualDataModule->RemoteSortByExtColumnPopupItem->Visible = (Column->Index == uvName);
+    bool SizeColumn = (Column->Index == uvSize);
+    NonVisualDataModule->RemoteFormatSizeBytesPopupItem->Visible = SizeColumn;
+    NonVisualDataModule->RemoteCalculateDirectorySizesPopupItem->Visible = SizeColumn;
   }
   else
   {
     DirViewColumnMenu = NonVisualDataModule->LocalDirViewColumnPopup;
-    NonVisualDataModule->LocalSortByExtColumnPopupItem->Visible =
-      (Column->Index == dvName);
-    NonVisualDataModule->LocalFormatSizeBytesPopupItem->Visible =
-      (Column->Index == dvSize);
+    NonVisualDataModule->LocalSortByExtColumnPopupItem->Visible = (Column->Index == dvName);
+    bool SizeColumn = (Column->Index == dvSize);
+    NonVisualDataModule->LocalFormatSizeBytesPopupItem->Visible = SizeColumn;
+    NonVisualDataModule->LocalCalculateDirectorySizesPopupItem->Visible = SizeColumn;
   }
 
   TCustomListView * ListView = DebugNotNull(dynamic_cast<TCustomListView *>(Sender));
@@ -11676,10 +11676,10 @@ struct TCalculateSizeOperation
   size_t Index;
 };
 //---------------------------------------------------------------------------
-void TCustomScpExplorerForm::CalculateDirectorySizes()
+void TCustomScpExplorerForm::CalculateDirectorySizes(TOperationSide Side)
 {
   TCalculateSizeOperation CalculateSizeOperation;
-  TOperationSide Side = GetSide(osCurrent);
+  Side = GetSide(Side);
   TCustomDirView * ADirView = DirView(Side);
   bool LocalSide = IsSideLocalBrowser(Side);
   std::unique_ptr<TStrings> AllFileList(ADirView->CreateFileList(false, LocalSide, NULL, true));
@@ -11711,7 +11711,7 @@ void TCustomScpExplorerForm::CalculateDirectorySizes()
   if (LocalSide)
   {
     TValueRestorer<TOperationSide> ProgressSideRestorer(FProgressSide);
-    FProgressSide = FCurrentSide;
+    FProgressSide = Side;
     ManagedSession->CalculateLocalFilesSize(FileList.get(), Size, NULL, true, NULL, &CalculatedSizes);
   }
   else

+ 1 - 1
source/forms/CustomScpExplorer.h

@@ -897,7 +897,7 @@ public:
   virtual UnicodeString GetLocalBrowserSessionTitle(TManagedTerminal * Session);
   virtual int GetNewTabActionImageIndex();
   virtual int GetNewTabTabImageIndex(TOperationSide Side);
-  void CalculateDirectorySizes();
+  void CalculateDirectorySizes(TOperationSide Side);
 
   __property bool ComponentVisible[Byte Component] = { read = GetComponentVisible, write = SetComponentVisible };
   __property bool EnableFocusedOperation[TOperationSide Side] = { read = GetEnableFocusedOperation, index = 0 };

+ 5 - 1
source/forms/NonVisual.cpp

@@ -210,6 +210,7 @@ void __fastcall TNonVisualDataModule::ExplorerActionsUpdate(
   UPD(LocalLocalMoveAction, ScpExplorer->IsLocalBrowserMode() && EnabledLocalSelectedOperation)
   UPD(LocalOtherCopyAction, EnabledOtherSelectedOperation)
   UPD(LocalOtherMoveAction, EnabledOtherSelectedOperation)
+  UPD(LocalCalculateDirectorySizesAction, EnabledLocalSelectedOperation)
   // local focused operation
   UPDEX1(LocalCopyFocusedAction, HasTerminal && EnabledLocalFocusedOperation, Action->Visible = !ScpExplorer->IsLocalBrowserMode())
   UPD(LocalCopyFocusedQueueAction, HasTerminal && EnabledLocalFocusedOperation && ScpExplorer->Terminal->IsCapable[fcBackgroundTransfers])
@@ -231,6 +232,7 @@ void __fastcall TNonVisualDataModule::ExplorerActionsUpdate(
   UPD(RemoteDeleteAction2, EnabledRemoteSelectedOperation || EnabledOtherSelectedOperation)
   UPD(RemotePropertiesAction2, EnabledRemoteSelectedOperation || EnabledOtherSelectedOperation)
   UPD(RemoteAddEditLinkAction3, ScpExplorer->CanAddEditLink(osRemote))
+  UPD(RemoteCalculateDirectorySizesAction, EnabledRemoteSelectedOperation || EnabledOtherSelectedOperation)
   // remote focused operation
   UPD(RemoteCopyFocusedAction, EnabledRemoteFocusedOperation)
   UPD(RemoteCopyFocusedQueueAction, EnabledRemoteFocusedOperation && ScpExplorer->Terminal->IsCapable[fcBackgroundTransfers])
@@ -549,7 +551,7 @@ void __fastcall TNonVisualDataModule::ExplorerActionsExecute(
     EXE(FileListFromClipboardAction, ScpExplorer->FileListFromClipboard())
     EXE(LockAction, ScpExplorer->ExecuteFileOperationCommand(foLock, osCurrent, false))
     EXE(UnlockAction, ScpExplorer->ExecuteFileOperationCommand(foUnlock, osCurrent, false))
-    EXE(CalculateDirectorySizesAction, ScpExplorer->CalculateDirectorySizes())
+    EXE(CalculateDirectorySizesAction, ScpExplorer->CalculateDirectorySizes(osCurrent))
     // local selected operation
     EXE(LocalCopyAction, ScpExplorer->ExecuteCopyOperationCommand(osLocal, false, ShortCutFlag))
     EXE(LocalCopyQueueAction, ScpExplorer->ExecuteCopyOperationCommand(osLocal, false, cocQueue))
@@ -566,6 +568,7 @@ void __fastcall TNonVisualDataModule::ExplorerActionsExecute(
     EXE(LocalLocalMoveAction, ScpExplorer->LocalLocalCopyCommand(foMove, osLocal, false, ShortCutFlag))
     EXE(LocalOtherCopyAction, ScpExplorer->LocalLocalCopyCommand(foCopy, osOther, false, ShortCutFlag))
     EXE(LocalOtherMoveAction, ScpExplorer->LocalLocalCopyCommand(foMove, osOther, false, ShortCutFlag))
+    EXE(LocalCalculateDirectorySizesAction, ScpExplorer->CalculateDirectorySizes(osLocal))
     // local focused operation
     EXE(LocalCopyFocusedAction, ScpExplorer->ExecuteCopyOperationCommand(osLocal, true, ShortCutFlag))
     EXE(LocalCopyFocusedQueueAction, ScpExplorer->ExecuteCopyOperationCommand(osLocal, true, cocQueue))
@@ -587,6 +590,7 @@ void __fastcall TNonVisualDataModule::ExplorerActionsExecute(
     EXE(RemoteMoveToAction, ScpExplorer->ExecuteFileOperationCommand(foRemoteMove, osCurrent, false))
     EXE(RemoteCopyToAction, ScpExplorer->ExecuteFileOperationCommand(foRemoteCopy, osCurrent, false))
     EXE(RemoteAddEditLinkAction3, ScpExplorer->AddEditLink(osRemote, false))
+    EXE(RemoteCalculateDirectorySizesAction, ScpExplorer->CalculateDirectorySizes(osRemote))
     // remote focused operation
     EXE(RemoteCopyFocusedAction, ScpExplorer->ExecuteCopyOperationCommand(osRemote, true, ShortCutFlag))
     EXE(RemoteCopyFocusedQueueAction, ScpExplorer->ExecuteCopyOperationCommand(osRemote, true, cocQueue))

+ 29 - 0
source/forms/NonVisual.dfm

@@ -2247,6 +2247,16 @@ object NonVisualDataModule: TNonVisualDataModule
       Hint = 'Create file|Create new file and open it in editor'
       ImageIndex = 77
     end
+    object RemoteCalculateDirectorySizesAction: TAction
+      Tag = 12
+      Category = 'Remote Selected Operation'
+      Caption = '&Calculate Directory Sizes'
+      HelpKeyword = 'ui_file_panel#directory_sizes'
+      Hint = 
+        'Calculate sizes of the selected directories and display them in ' +
+        'the file panel'
+      ShortCut = 40973
+    end
     object LocalNewFileAction: TAction
       Tag = 15
       Category = 'Local Selected Operation'
@@ -2344,6 +2354,16 @@ object NonVisualDataModule: TNonVisualDataModule
       Hint = 'Move the selected file(s) to another directory or rename them'
       ImageIndex = 113
     end
+    object LocalCalculateDirectorySizesAction: TAction
+      Tag = 12
+      Category = 'Local Selected Operation'
+      Caption = '&Calculate Directory Sizes'
+      HelpKeyword = 'ui_file_panel#directory_sizes'
+      Hint = 
+        'Calculate sizes of the selected directories and display them in ' +
+        'the file panel'
+      ShortCut = 40973
+    end
     object LocalLocalCopyFocusedAction: TAction
       Tag = 8
       Category = 'Local Focused Operation'
@@ -2822,6 +2842,9 @@ object NonVisualDataModule: TNonVisualDataModule
         Action = FormatSizeBytesShortAction
       end
     end
+    object LocalCalculateDirectorySizesPopupItem: TTBXItem
+      Action = LocalCalculateDirectorySizesAction
+    end
     object TBXSeparatorItem8: TTBXSeparatorItem
     end
     object Showcolumns3: TTBXSubmenuItem
@@ -2844,6 +2867,9 @@ object NonVisualDataModule: TNonVisualDataModule
         Action = ShowHideLocalAttrColumnAction2
       end
     end
+    object TBXItem112: TTBXItem
+      Action = RemoteCalculateDirectorySizesAction
+    end
   end
   object RemoteDirViewColumnPopup: TTBXPopupMenu
     Images = GlyphsModule.ExplorerImages
@@ -2880,6 +2906,9 @@ object NonVisualDataModule: TNonVisualDataModule
         Action = FormatSizeBytesShortAction
       end
     end
+    object RemoteCalculateDirectorySizesPopupItem: TTBXItem
+      Action = RemoteCalculateDirectorySizesAction
+    end
     object TBXSeparatorItem7: TTBXSeparatorItem
     end
     object Showcolumns4: TTBXSubmenuItem

+ 5 - 0
source/forms/NonVisual.h

@@ -691,6 +691,11 @@ __published:    // IDE-managed Components
   TTBXSeparatorItem *TBXSeparatorItem19;
   TTBXItem *TBXItem111;
   TAction *CalculateDirectorySizesAction;
+  TAction *LocalCalculateDirectorySizesAction;
+  TAction *RemoteCalculateDirectorySizesAction;
+  TTBXItem *RemoteCalculateDirectorySizesPopupItem;
+  TTBXItem *LocalCalculateDirectorySizesPopupItem;
+  TTBXItem *TBXItem112;
   void __fastcall ExplorerActionsUpdate(TBasicAction *Action, bool &Handled);
   void __fastcall ExplorerActionsExecute(TBasicAction *Action, bool &Handled);
   void __fastcall SessionIdleTimerTimer(TObject *Sender);

+ 30 - 10
source/forms/ScpCommander.dfm

@@ -1384,9 +1384,19 @@ inherited ScpCommanderForm: TScpCommanderForm
         object TBXItem240: TTBXItem
           Action = NonVisualDataModule.RemoteRenameAction2
         end
-        object TBXItem243: TTBXItem
+        object TBXItem243: TTBXSubmenuItem
           Action = NonVisualDataModule.RemotePropertiesAction2
           DisplayMode = nbdmImageAndText
+          DropdownCombo = True
+          object TBXItem259: TTBXItem
+            Action = NonVisualDataModule.RemotePropertiesAction2
+            Options = [tboDefault]
+          end
+          object TBXSeparatorItem71: TTBXSeparatorItem
+          end
+          object TBXItem260: TTBXItem
+            Action = NonVisualDataModule.RemoteCalculateDirectorySizesAction
+          end
         end
         object TBXSeparatorItem56: TTBXSeparatorItem
         end
@@ -1408,11 +1418,11 @@ inherited ScpCommanderForm: TScpCommanderForm
         end
       end
       object RemoteSelectionToolbar: TTBXToolbar
-        Left = 370
-        Top = 53
+        Left = 295
+        Top = 27
         Caption = 'Remote Selection'
-        DockPos = 347
-        DockRow = 2
+        DockPos = 282
+        DockRow = 1
         Images = GlyphsModule.ExplorerImages
         Options = [tboShowHint]
         ParentShowHint = False
@@ -1733,9 +1743,19 @@ inherited ScpCommanderForm: TScpCommanderForm
         object TBXItem233: TTBXItem
           Action = NonVisualDataModule.LocalRenameAction2
         end
-        object TBXItem236: TTBXItem
+        object TBXItem236: TTBXSubmenuItem
           Action = NonVisualDataModule.LocalPropertiesAction2
           DisplayMode = nbdmImageAndText
+          DropdownCombo = True
+          object TBXItem258: TTBXItem
+            Action = NonVisualDataModule.LocalPropertiesAction2
+            Options = [tboDefault]
+          end
+          object TBXSeparatorItem70: TTBXSeparatorItem
+          end
+          object TBXItem113: TTBXItem
+            Action = NonVisualDataModule.LocalCalculateDirectorySizesAction
+          end
         end
         object TBXSeparatorItem35: TTBXSeparatorItem
         end
@@ -1757,11 +1777,11 @@ inherited ScpCommanderForm: TScpCommanderForm
         end
       end
       object LocalSelectionToolbar: TTBXToolbar
-        Left = 353
-        Top = 53
+        Left = 217
+        Top = 27
         Caption = 'Local Selection'
-        DockPos = 329
-        DockRow = 2
+        DockPos = 217
+        DockRow = 1
         Images = GlyphsModule.ExplorerImages
         Options = [tboShowHint]
         ParentShowHint = False

+ 8 - 2
source/forms/ScpCommander.h

@@ -356,7 +356,7 @@ __published:
   TTBXItem *TBXItem234;
   TTBXSubmenuItem *TBXItem235;
   TTBXSeparatorItem *TBXSeparatorItem35;
-  TTBXItem *TBXItem236;
+  TTBXSubmenuItem *TBXItem236;
   TTBXSeparatorItem *TBXSeparatorItem54;
   TTBXToolbar *RemoteFileToolbar;
   TTBXSubmenuItem *RemoteCopyItem;
@@ -365,7 +365,7 @@ __published:
   TTBXItem *TBXItem240;
   TTBXItem *TBXItem241;
   TTBXSubmenuItem *TBXItem242;
-  TTBXItem *TBXItem243;
+  TTBXSubmenuItem *TBXItem243;
   TTBXSeparatorItem *TBXSeparatorItem56;
   TTBXItem *TBXItem59;
   TTBXItem *TBXItem136;
@@ -452,6 +452,12 @@ __published:
   TTBXItem *TBXItem238;
   TTBXItem *TBXItem239;
   TTBXSeparatorItem *TBXSeparatorItem69;
+  TTBXItem *TBXItem113;
+  TTBXItem *TBXItem258;
+  TTBXSeparatorItem *TBXSeparatorItem70;
+  TTBXItem *TBXItem259;
+  TTBXSeparatorItem *TBXSeparatorItem71;
+  TTBXItem *TBXItem260;
   void __fastcall SplitterMoved(TObject *Sender);
   void __fastcall SplitterCanResize(TObject *Sender, int &NewSize,
     bool &Accept);

+ 11 - 1
source/forms/ScpExplorer.dfm

@@ -690,9 +690,19 @@ inherited ScpExplorerForm: TScpExplorerForm
       object TBXItem58: TTBXItem
         Action = NonVisualDataModule.RemoteDeleteAction2
       end
-      object TBXItem59: TTBXItem
+      object TBXItem59: TTBXSubmenuItem
         Action = NonVisualDataModule.RemotePropertiesAction2
         DisplayMode = nbdmImageAndText
+        DropdownCombo = True
+        object TBXItem90: TTBXItem
+          Action = NonVisualDataModule.RemotePropertiesAction2
+          Options = [tboDefault]
+        end
+        object TBXSeparatorItem29: TTBXSeparatorItem
+        end
+        object TBXItem22: TTBXItem
+          Action = NonVisualDataModule.RemoteCalculateDirectorySizesAction
+        end
       end
       object TBXItem60: TTBXItem
         Action = NonVisualDataModule.RemoteRenameAction2

+ 4 - 1
source/forms/ScpExplorer.h

@@ -173,7 +173,7 @@ __published:
   TTBXSubmenuItem *TBXItem42;
   TTBXItem *TBXItem45;
   TTBXItem *TBXItem58;
-  TTBXItem *TBXItem59;
+  TTBXSubmenuItem *TBXItem59;
   TTBXItem *TBXItem60;
   TTBXSeparatorItem *TBXSeparatorItem16;
   TTBXItem *TBXItem63;
@@ -328,6 +328,9 @@ __published:
   TTBXItem *TBXItem168;
   TTBXSeparatorItem *TBXSeparatorItem23;
   TTBXItem *TBXItem61;
+  TTBXItem *TBXItem22;
+  TTBXSeparatorItem *TBXSeparatorItem29;
+  TTBXItem *TBXItem90;
   void __fastcall RemoteDirViewUpdateStatusBar(TObject *Sender,
           const TStatusFileInfo &FileInfo);
   void __fastcall UnixPathComboBoxBeginEdit(TTBEditItem *Sender,