UPD: Show "Open with" submenu also for multiply files

This commit is contained in:
Alexander Koblov 2009-12-17 11:52:39 +00:00
commit 5db85e7201
2 changed files with 41 additions and 39 deletions

View file

@ -581,51 +581,53 @@ begin
CM.Items.Add(miActions);
end;
{ /Actions submenu }
{$IFDEF LINUX}
// Open with ... (for now only for 1 selected file)
FileNames := TStringList.Create;
try
for i := 0 to Files.Count - 1 do
FileNames.Add(Files[i].Path + Files[i].Name);
DesktopEntries := GetDesktopEntries(FileNames);
if Assigned(DesktopEntries) and (DesktopEntries.Count > 0) then
begin
miOpenWith := TMenuItem.Create(CM);
miOpenWith.Caption := rsMnuOpenWith;
CM.Items.Add(miOpenWith);
AddOpenWithMenu := True;
for i := 0 to DesktopEntries.Count - 1 do
begin
mi := TMenuItem.Create(miOpenWith);
mi.Caption := PDesktopFileEntry(DesktopEntries[i])^.DisplayName;
mi.Hint := PDesktopFileEntry(DesktopEntries[i])^.Exec;
mi.OnClick := TContextMenu.OpenWithMenuItemSelect;
miOpenWith.Add(mi);
end;
end;
finally
FreeAndNil(FileNames);
if Assigned(DesktopEntries) then
begin
for i := 0 to DesktopEntries.Count - 1 do
Dispose(PDesktopFileEntry(DesktopEntries[i]));
FreeAndNil(DesktopEntries);
end;
end;
{$ENDIF}
// Add separator after actions and openwith menu.
if AddActionsMenu or AddOpenWithMenu then
begin
mi:=TMenuItem.Create(CM);
mi.Caption:='-';
CM.Items.Add(mi);
end;
end; // if count = 1
{$IFDEF LINUX}
// Open with ...
FileNames := TStringList.Create;
try
for i := 0 to Files.Count - 1 do
FileNames.Add(Files[i].Path + Files[i].Name);
DesktopEntries := GetDesktopEntries(FileNames);
if Assigned(DesktopEntries) and (DesktopEntries.Count > 0) then
begin
miOpenWith := TMenuItem.Create(CM);
miOpenWith.Caption := rsMnuOpenWith;
CM.Items.Add(miOpenWith);
AddOpenWithMenu := True;
for i := 0 to DesktopEntries.Count - 1 do
begin
mi := TMenuItem.Create(miOpenWith);
mi.Caption := PDesktopFileEntry(DesktopEntries[i])^.DisplayName;
mi.Hint := PDesktopFileEntry(DesktopEntries[i])^.Exec;
mi.OnClick := TContextMenu.OpenWithMenuItemSelect;
miOpenWith.Add(mi);
end;
end;
finally
FreeAndNil(FileNames);
if Assigned(DesktopEntries) then
begin
for i := 0 to DesktopEntries.Count - 1 do
Dispose(PDesktopFileEntry(DesktopEntries[i]));
FreeAndNil(DesktopEntries);
end;
end;
{$ENDIF}
// Add separator after actions and openwith menu.
if AddActionsMenu or AddOpenWithMenu then
begin
mi:=TMenuItem.Create(CM);
mi.Caption:='-';
CM.Items.Add(mi);
end;
mi:=TMenuItem.Create(CM);
mi.Action := frmMain.actRename;
CM.Items.Add(mi);

View file

@ -5,7 +5,7 @@ unit uMimeActions;
interface
uses
Classes,
Classes, SysUtils, // for AnsiString version of StrPas function
glib2;
type