瀏覽代碼

ADD: PackHere and ExtractHere in context menu

Alexander Koblov 9 年之前
父節點
當前提交
5438f98b93
共有 2 個文件被更改,包括 36 次插入2 次删除
  1. 34 2
      src/platform/unix/ushellcontextmenu.pas
  2. 2 0
      src/ulng.pas

+ 34 - 2
src/platform/unix/ushellcontextmenu.pas

@@ -43,6 +43,8 @@ type
     FFiles: TFiles;
     FDrive: TDrive;
     FUserWishForContextMenu: TUserWishForContextMenu;
+    procedure PackHereSelect(Sender: TObject);
+    procedure ExtractHereSelect(Sender: TObject);
     procedure ContextMenuSelect(Sender: TObject);
     procedure TemplateContextMenuSelect(Sender: TObject);
     procedure DriveMountSelect(Sender: TObject);
@@ -63,7 +65,7 @@ implementation
 uses
   LCLProc, Dialogs, Graphics, uFindEx, uDCUtils,
   uOSUtils, uFileProcs, uShellExecute, uLng, uPixMapManager, uMyUnix,
-  fMain, fFileProperties, DCOSUtils, DCStrUtils, uExts
+  fMain, fFileProperties, DCOSUtils, DCStrUtils, uExts, uArchiveFileSourceUtil
   {$IF DEFINED(DARWIN)}
   , MacOSAll
   {$ELSE}
@@ -198,6 +200,16 @@ begin
 {$ENDIF}
 end;
 
+procedure TShellContextMenu.PackHereSelect(Sender: TObject);
+begin
+  frmMain.Commands.cm_PackFiles(['PackHere']);
+end;
+
+procedure TShellContextMenu.ExtractHereSelect(Sender: TObject);
+begin
+  frmMain.Commands.cm_ExtractFiles(['ExtractHere']);
+end;
+
 (* handling user commands from context menu *)
 procedure TShellContextMenu.ContextMenuSelect(Sender: TObject);
 var
@@ -677,7 +689,27 @@ begin
         // Add "Open with" submenu if needed
         AddOpenWithMenu := FillOpenWithSubMenu;
 
-        // Add "Open with" menu
+        // Add delimiter menu
+        mi:=TMenuItem.Create(Self);
+        mi.Caption:='-';
+        Self.Items.Add(mi);
+
+        // Add "Pack here..."
+        mi:=TMenuItem.Create(Self);
+        mi.Caption:= rsMnuPackHere;
+        mi.OnClick:= Self.PackHereSelect;
+        Self.Items.Add(mi);
+
+        // Add "Extract here..."
+        if FileIsArchive(aFile.FullPath) then
+        begin
+          mi:=TMenuItem.Create(Self);
+          mi.Caption:= rsMnuExtractHere;
+          mi.OnClick:= Self.ExtractHereSelect;
+          Self.Items.Add(mi);
+        end;
+
+        // Add delimiter menu
         mi:=TMenuItem.Create(Self);
         mi.Caption:='-';
         Self.Items.Add(mi);

+ 2 - 0
src/ulng.pas

@@ -242,6 +242,8 @@ resourcestring
   rsMnuEject = 'Eject';
   rsMnuSortBy = 'Sort by';
   rsMnuNew = 'New';
+  rsMnuPackHere = 'Pack here...';
+  rsMnuExtractHere = 'Extract here...';
   // for main menu
   rsMnuMapNetworkDrive = 'Map Network Drive...';
   rsMnuDisconnectNetworkDrive = 'Disconnect Network Drive...';