ADD: Quick view mode

This commit is contained in:
Alexander Koblov 2009-12-23 13:15:40 +00:00
commit 6547ef33db
10 changed files with 8693 additions and 8469 deletions

View file

@ -60,7 +60,7 @@
<PackageName Value="viewerpackage"/>
</Item5>
</RequiredPackages>
<Units Count="96">
<Units Count="97">
<Unit0>
<Filename Value="doublecmd.lpr"/>
<IsPartOfProject Value="True"/>
@ -642,6 +642,11 @@
<IsPartOfProject Value="True"/>
<UnitName Value="uPixMapGtk"/>
</Unit95>
<Unit96>
<Filename Value="uquickviewpanel.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="uQuickViewPanel"/>
</Unit96>
</Units>
</ProjectOptions>
<CompilerOptions>

View file

@ -1108,6 +1108,13 @@ object frmMain: TfrmMain
end
object mnuShow: TMenuItem
Caption = '&Show'
object mnuQuickView: TMenuItem
Action = actQuickView
OnClick = actExecute
end
object miLine32: TMenuItem
Caption = '-'
end
object mnuShowName: TMenuItem
Action = actSortByName
OnClick = actExecute
@ -1723,6 +1730,11 @@ object frmMain: TfrmMain
Caption = 'Open bar file'
OnExecute = actExecute
end
object actQuickView: TAction
Category = 'Show'
Caption = 'Quick View Panel'
OnExecute = actExecute
end
end
object pmHotList: TPopupMenu
left = 152

View file

@ -35,6 +35,7 @@ TFRMMAIN.MILINE16.CAPTION=-
TFRMMAIN.MNUTABOPTIONS.CAPTION=Options
TFRMMAIN.MILINE17.CAPTION=-
TFRMMAIN.MNUSHOW.CAPTION=&Show
TFRMMAIN.MILINE32.CAPTION=-
TFRMMAIN.MILINE7.CAPTION=-
TFRMMAIN.MILINE3.CAPTION=-
TFRMMAIN.MILINE13.CAPTION=-
@ -140,6 +141,7 @@ TFRMMAIN.ACTSETTABOPTIONDIRSINNEWTAB.CAPTION=Directories are opened in new tabs
TFRMMAIN.ACTNEXTTAB.CAPTION=Switch to next tab
TFRMMAIN.ACTPREVTAB.CAPTION=Switch to previous tab
TFRMMAIN.ACTOPENBAR.CAPTION=Open bar file
TFRMMAIN.ACTQUICKVIEW.CAPTION=Quick View Panel
TFRMMAIN.TBEDIT.CAPTION=Edit
TFRMMAIN.TBDELETE.CAPTION=Delete
TFRMMAIN.MENUITEM2.CAPTION=-

File diff suppressed because it is too large Load diff

View file

@ -116,7 +116,8 @@ type
FileList: TStringList;
iActiveFile:Integer;
bImage,
bPlugin: Boolean;
bPlugin,
bQuickView: Boolean;
FFindDialog:TfrmFindView;
FFileSource: IFileSource;
FLastSearchPos: PtrInt;
@ -138,7 +139,9 @@ type
constructor Create(TheOwner: TComponent; aFileSource: IFileSource); reintroduce;
destructor Destroy; override;
procedure LoadFile(const aFileName: UTF8String);
procedure LoadNextFile(const aFileName: UTF8String);
procedure LoadFile(iIndex:Integer);
property QuickView: Boolean read bQuickView write bQuickView;
end;
@ -165,14 +168,15 @@ const
procedure ShowViewer(const FilesToView:TStringList; const aFileSource: IFileSource);
var
viewer: TfrmViewer;
Viewer: TfrmViewer;
begin
//DebugLn('ShowViewer - Using Internal');
viewer := TfrmViewer.Create(Application, aFileSource);
gViewerPos.Restore(viewer);
viewer.FileList.Assign(FilesToView); // Make a copy of the list
viewer.LoadFile(0);
viewer.Show;
Viewer := TfrmViewer.Create(Application, aFileSource);
Viewer.QuickView:= False;
gViewerPos.Restore(Viewer);
Viewer.FileList.Assign(FilesToView); // Make a copy of the list
Viewer.LoadFile(0);
Viewer.Show;
end;
constructor TfrmViewer.Create(TheOwner: TComponent; aFileSource: IFileSource);
@ -227,6 +231,17 @@ begin
end;
end;
procedure TfrmViewer.LoadNextFile(const aFileName: UTF8String);
begin
if bPlugin then
begin
if WlxPlugins.GetWlxModule(ActivePlugin).CallListLoadNext(pnlLister.Handle, aFileName, 0) <> LISTPLUGIN_ERROR then
Exit;
end;
LoadFile(aFileName);
end;
procedure TfrmViewer.LoadFile(iIndex: Integer);
begin
iActiveFile := iIndex;
@ -811,7 +826,7 @@ begin
end
else if Panel = pnlText then
begin
if CanFocus and pnlText.CanFocus and ViewerControl.CanFocus then
if (not bQuickView) and CanFocus and pnlText.CanFocus and ViewerControl.CanFocus then
ViewerControl.SetFocus;
case ViewerControl.ViewerMode of

File diff suppressed because it is too large Load diff

View file

@ -14,7 +14,7 @@ type
TOnBeforeChangeDirectory = function (FileView: TFileView; const NewDir : String): Boolean of object;
TOnAfterChangeDirectory = procedure (FileView: TFileView; const NewDir : String) of object;
TOnChangeActiveFile = procedure (FileView: TFileView; const NewFile : String) of object;
TOnChangeActiveFile = procedure (FileView: TFileView; const aFile : TFile) of object;
TOnChangeFileSource = procedure (FileView: TFileView) of object;
TOnActivate = procedure (aFileView: TFileView) of object;
TOnReload = procedure (aFileView: TFileView) of object;

View file

@ -185,6 +185,7 @@ const cf_Null=0;
procedure cm_Rename(param: string='');
procedure cm_RenameNoAsk(param: string='');
procedure cm_View(param: string='');
procedure cm_QuickView(param: string='');
procedure cm_CopyNamesToClip(param: string='');
procedure cm_FocusCmdLine(param: string='');
procedure cm_FileAssoc(param: string='');
@ -255,7 +256,7 @@ uses Forms, Controls, Clipbrd, strutils, LCLProc, HelpIntfs, dmHelpManager,
fLinker, fSplitter, fDescrEdit, fCheckSumVerify, fCheckSumCalc, fSetFileProperties,
uGlobs, uLng, uLog, uShowMsg, uOSForms, uOSUtils, uDCUtils, uGlobsPaths,
uClassesEx, uShowForm, uShellExecute, uClipboard, uHash,
uFilePanelSelect, uFile, uFileSystemFileSource,
uFilePanelSelect, uFile, uFileSystemFileSource, uQuickViewPanel,
uOperationsManager, uFileSourceOperationTypes,
uFileSystemDeleteOperation, uFileSourceExecuteOperation,
uFileSourceOperationMessageBoxesUI, uFileSourceCalcChecksumOperation,
@ -1262,6 +1263,24 @@ begin
end;
end;
procedure TActs.cm_QuickView(param: string);
begin
with frmMain do
begin
if Assigned(QuickViewPanel) then
begin
ActiveFrame.OnChangeActiveFile:= nil;
QuickViewClose;
end
else if (param <> 'Close') then
begin
QuickViewShow(NotActiveNotebook.ActivePage, ActiveFrame.FileSource);
FileViewChangeActiveFile(ActiveFrame, ActiveFrame.ActiveFile);
ActiveFrame.OnChangeActiveFile:= @FileViewChangeActiveFile;
end;
end;
end;
procedure TActs.cm_Edit(param:string);
var
i: Integer;

File diff suppressed because it is too large Load diff

109
src/uquickviewpanel.pas Normal file
View file

@ -0,0 +1,109 @@
unit uQuickViewPanel;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, ExtCtrls, fViewer,
uFileViewNotebook, uFileSource;
type
{ TQuickViewPanel }
TQuickViewPanel = class(TPanel)
private
FFirstFile: Boolean;
FFileViewPage: TFileViewPage;
FFileSource: IFileSource;
FViewer: TfrmViewer;
public
constructor Create(TheOwner: TComponent; aParent: TFileViewPage); reintroduce;
destructor Destroy; override;
procedure CreateViewer(aFileSource: IFileSource);
procedure LoadFile(const aFileName: UTF8String);
end;
procedure QuickViewShow(aFileViewPage: TFileViewPage; const aFileSource: IFileSource);
procedure QuickViewLoadFile(const aFileName: UTF8String; const aFileSource: IFileSource);
procedure QuickViewClose;
var
QuickViewPanel: TQuickViewPanel;
implementation
uses
LCLProc, Forms, Controls;
procedure QuickViewShow(aFileViewPage: TFileViewPage; const aFileSource: IFileSource);
begin
QuickViewPanel:= TQuickViewPanel.Create(Application, aFileViewPage);
QuickViewPanel.CreateViewer(aFileSource);
end;
procedure QuickViewLoadFile(const aFileName: UTF8String; const aFileSource: IFileSource);
begin
{
if (not QuickViewPanel.FFileSource.IsInterface(aFileSource)) then
begin
QuickViewPanel.FViewer.Close;
QuickViewPanel.CreateViewer(aFileSource);
end;
}
QuickViewPanel.LoadFile(aFileName);
end;
procedure QuickViewClose;
begin
FreeThenNil(QuickViewPanel);
end;
{ TQuickViewPanel }
constructor TQuickViewPanel.Create(TheOwner: TComponent; aParent: TFileViewPage);
begin
inherited Create(TheOwner);
Parent:= aParent;
Align:= alClient;
FFileViewPage:= aParent;
FFileSource:= nil;
FViewer:= nil;
end;
destructor TQuickViewPanel.Destroy;
begin
FFileViewPage.FileView.Visible:= True;
FreeThenNil(FViewer);
inherited Destroy;
end;
procedure TQuickViewPanel.CreateViewer(aFileSource: IFileSource);
begin
FViewer:= TfrmViewer.Create(Self, aFileSource);
FViewer.Parent:= Self;
FViewer.BorderStyle:= bsNone;
FViewer.Menu:= nil;
FViewer.Align:= alClient;
FViewer.QuickView:= True;
FFirstFile:= True;
FFileViewPage.FileView.Visible:= False;
end;
procedure TQuickViewPanel.LoadFile(const aFileName: UTF8String);
begin
if FFirstFile then
begin
FFirstFile:= False;
FViewer.LoadFile(aFileName);
FViewer.Show;
end
else
begin
FViewer.LoadNextFile(aFileName);
end;
end;
end.