IDE: drop files: form events instead of application

git-svn-id: trunk@45558 -
This commit is contained in:
mattias 2014-06-16 22:17:26 +00:00
parent e602528f78
commit 3b62c88f2c
7 changed files with 89 additions and 72 deletions

View File

@ -248,6 +248,8 @@ type
function DoOpenComponent(const UnitFilename: string; OpenFlags: TOpenFlags;
CloseFlags: TCloseFlags;
out Component: TComponent): TModalResult; virtual; abstract;
procedure DoDropFiles(Sender: TObject; const FileNames: array of String;
WindowIndex: integer = -1); virtual; abstract;
// project
property ActiveProject: TLazProject read GetActiveProject;

View File

@ -185,7 +185,6 @@ type
procedure OnApplicationActivate(Sender: TObject);
procedure OnApplicationDeActivate(Sender: TObject);
procedure OnApplicationKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure OnApplicationDropFiles(Sender: TObject; const FileNames: array of String);
procedure OnApplicationQueryEndSession(var Cancel: Boolean);
procedure OnApplicationEndSession(Sender: TObject);
procedure OnScreenChangedForm(Sender: TObject; Form: TCustomForm);
@ -768,6 +767,8 @@ type
function DoOpenEditorFile(AFileName:string; PageIndex, WindowIndex: integer;
AEditorInfo: TUnitEditorInfo;
Flags: TOpenFlags): TModalResult;
procedure DoDropFiles(Sender: TObject; const FileNames: array of String;
WindowIndex: integer=-1); override;
function DoOpenFileAndJumpToIdentifier(const AFilename, AnIdentifier: string;
PageIndex: integer; Flags: TOpenFlags): TModalResult; override;
@ -1607,7 +1608,6 @@ begin
Application.AddOnActivateHandler(@OnApplicationActivate);
Application.AddOnDeActivateHandler(@OnApplicationDeActivate);
Application.AddOnKeyDownHandler(@OnApplicationKeyDown);
Application.AddOnDropFilesHandler(@OnApplicationDropFiles);
Application.AddOnQueryEndSessionHandler(@OnApplicationQueryEndSession);
Application.AddOnEndSessionHandler(@OnApplicationEndSession);
Screen.AddHandlerRemoveForm(@OnScreenRemoveForm);
@ -5708,6 +5708,32 @@ begin
Result:=SourceFileMgr.OpenEditorFile(AFileName, PageIndex, WindowIndex, AEditorInfo, Flags);
end;
procedure TMainIDE.DoDropFiles(Sender: TObject;
const FileNames: array of String; WindowIndex: integer);
var
OpenFlags: TOpenFlags;
I: Integer;
AFilename: String;
begin
//debugln(['TMainIDE.DoDropFiles ',length(Filenames)]);
if Length(FileNames) = 0 then exit;
OpenFlags := [ofAddToRecent];
if Length(FileNames) > 1 then
OpenFlags := OpenFlags + [ofRegularFile,ofMultiOpen];
SourceEditorManager.IncUpdateLock;
try
for I := 0 to High(FileNames) do
begin
AFilename := CleanAndExpandFilename(FileNames[I]);
if LazarusIDE.DoOpenEditorFile(AFilename, -1, WindowIndex, OpenFlags) = mrAbort then
Break;
end;
finally
SourceEditorManager.DecUpdateLock;
end;
SetRecentFilesMenu;
end;
function TMainIDE.DoSelectFrame: TComponentClass;
var
UnitList: TStringList;
@ -11824,39 +11850,6 @@ begin
end;
end;
procedure TMainIDE.OnApplicationDropFiles(Sender: TObject; const FileNames: array of String);
var
OpenFlags: TOpenFlags;
I: Integer;
AFilename: String;
begin
//debugln('TMainIDE.OnApplicationDropFiles FileNames=', dbgs(Length(FileNames)));
if Length(FileNames) > 0 then
begin
OpenFlags := [ofAddToRecent];
if Length(FileNames) > 1 then
Include(OpenFlags, ofRegularFile);
try
SourceEditorManager.IncUpdateLock;
for I := 0 to High(FileNames) do
begin
AFilename := CleanAndExpandFilename(FileNames[I]);
if I < High(FileNames) then
Include(OpenFlags, ofMultiOpen)
else
Exclude(OpenFlags, ofMultiOpen);
if DoOpenEditorFile(AFilename, -1, -1, OpenFlags) = mrAbort then Break;
end;
finally
SourceEditorManager.DecUpdateLock;
end;
SetRecentFilesMenu;
SaveEnvironment;
end;
end;
procedure TMainIDE.OnApplicationQueryEndSession(var Cancel: Boolean);
begin
Cancel := False;

View File

@ -41,7 +41,7 @@ uses
Classes, SysUtils, LCLProc, Forms, Controls, Buttons, Menus,
ComCtrls, ExtCtrls, Dialogs, LMessages,
// IDEIntf
ProjectIntf, NewItemIntf, MenuIntf, LazIDEIntf,
ProjectIntf, NewItemIntf, MenuIntf, LazIDEIntf, SrcEditorIntf,
EnvironmentOpts, LazarusIDEStrConsts;
type
@ -373,6 +373,8 @@ type
// component palette
ComponentPageControl: TPageControl;
GlobalMouseSpeedButton: TSpeedButton;
procedure MainIDEBarDropFiles(Sender: TObject;
const FileNames: array of String);
private
FOldWindowState: TWindowState;
FOnActive: TNotifyEvent;
@ -397,6 +399,12 @@ implementation
{ TMainIDEBar }
procedure TMainIDEBar.MainIDEBarDropFiles(Sender: TObject;
const FileNames: array of String);
begin
LazarusIDE.DoDropFiles(Sender,FileNames);
end;
procedure TMainIDEBar.NewUFDefaultClick(Sender: TObject);
var
Category: TNewIDEItemCategory;
@ -485,6 +493,8 @@ constructor TMainIDEBar.Create(TheOwner: TComponent);
begin
// This form has no resource => must be constructed using CreateNew
inherited CreateNew(TheOwner, 1);
AllowDropFiles:=true;
OnDropFiles:=@MainIDEBarDropFiles;
end;
procedure TMainIDEBar.HideIDE;

View File

@ -610,12 +610,40 @@ type
TSourceNotebook = class(TSourceEditorWindowInterface)
StatusBar: TStatusBar;
procedure CompleteCodeMenuItemClick(Sender: TObject);
procedure DbgPopUpMenuPopup(Sender: TObject);
procedure EditorLockClicked(Sender: TObject);
procedure EncodingClicked(Sender: TObject);
procedure ExtractProcMenuItemClick(Sender: TObject);
procedure FindOverloadsMenuItemClick(Sender: TObject);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure HighlighterClicked(Sender: TObject);
procedure InsertCharacter(const C: TUTF8Char);
procedure InvertAssignmentMenuItemClick(Sender: TObject);
procedure LineEndingClicked(Sender: TObject);
procedure MakeResourceStringMenuItemClick(Sender: TObject);
procedure NotebookPageChanged(Sender: TObject);
procedure NotebookShowTabHint(Sender: TObject; HintInfo: PHintInfo);
procedure OnPopupMenuOpenFile(Sender: TObject);
procedure OnPopupOpenPackageFile(Sender: TObject);
procedure OnPopupOpenProjectInsp(Sender: TObject);
procedure OpenAtCursorClicked(Sender: TObject);
procedure RenameIdentifierMenuItemClick(Sender: TObject);
procedure ShowAbstractMethodsMenuItemClick(Sender: TObject);
procedure ShowEmptyMethodsMenuItemClick(Sender: TObject);
procedure ShowUnusedUnitsMenuItemClick(Sender: TObject);
procedure SourceNotebookDropFiles(Sender: TObject;
const FileNames: array of String);
procedure SrcEditMenuCopyToExistingWindowClicked(Sender: TObject);
procedure SrcEditMenuFindInWindowClicked(Sender: TObject);
procedure SrcEditMenuMoveToExistingWindowClicked(Sender: TObject);
procedure SrcPopUpMenuPopup(Sender: TObject);
procedure StatusBarClick(Sender: TObject);
procedure StatusBarDblClick(Sender: TObject);
procedure StatusBarDrawPanel(AStatusBar: TStatusBar; APanel: TStatusPanel;
const ARect: TRect);
procedure TabPopUpMenuPopup(Sender: TObject);
private
FNotebook: TExtendedNotebook;
FBaseCaption: String;
@ -624,33 +652,6 @@ type
TabPopUpMenu, SrcPopUpMenu, DbgPopUpMenu: TPopupMenu;
procedure ApplyPageIndex;
procedure ExecuteEditorItemClick(Sender: TObject);
protected
procedure CompleteCodeMenuItemClick(Sender: TObject);
procedure ExtractProcMenuItemClick(Sender: TObject);
procedure InvertAssignmentMenuItemClick(Sender: TObject);
procedure RenameIdentifierMenuItemClick(Sender: TObject);
procedure ShowAbstractMethodsMenuItemClick(Sender: TObject);
procedure ShowEmptyMethodsMenuItemClick(Sender: TObject);
procedure ShowUnusedUnitsMenuItemClick(Sender: TObject);
procedure FindOverloadsMenuItemClick(Sender: TObject);
procedure MakeResourceStringMenuItemClick(Sender: TObject);
procedure LineEndingClicked(Sender: TObject);
procedure EncodingClicked(Sender: TObject);
procedure HighlighterClicked(Sender: TObject);
procedure NotebookPageChanged(Sender: TObject);
procedure NotebookShowTabHint(Sender: TObject; HintInfo: PHintInfo);
procedure OpenAtCursorClicked(Sender: TObject);
procedure OnPopupMenuOpenFile(Sender: TObject);
procedure OnPopupOpenPackageFile(Sender: TObject);
procedure OnPopupOpenProjectInsp(Sender: TObject);
procedure TabPopUpMenuPopup(Sender: TObject);
procedure SrcPopUpMenuPopup(Sender: TObject);
procedure DbgPopUpMenuPopup(Sender: TObject);
procedure InsertCharacter(const C: TUTF8Char);
procedure SrcEditMenuCopyToExistingWindowClicked(Sender: TObject);
procedure SrcEditMenuMoveToExistingWindowClicked(Sender: TObject);
procedure SrcEditMenuFindInWindowClicked(Sender: TObject);
procedure EditorLockClicked(Sender: TObject);
public
procedure DeleteBreakpointClicked(Sender: TObject);
procedure ToggleBreakpointClicked(Sender: TObject);
@ -1130,7 +1131,6 @@ type
private
FCodeTemplateModul: TSynEditAutoComplete;
FGotoDialog: TfrmGoto;
procedure OnFilesDroping(Sender: TObject; const FileNames: Array of String);
procedure OnCodeTemplateTokenNotFound(Sender: TObject; AToken: string;
AnEditor: TCustomSynEdit; var Index:integer);
procedure OnCodeTemplateExecuteCompletion(
@ -5814,6 +5814,9 @@ begin
FHistoryList := TFPList.Create;
FSrcEditsSortedForFilenames := TAvgLvlTree.Create(@CompareSrcEditIntfWithFilename);
OnDropFiles:=@SourceNotebookDropFiles;
AllowDropFiles:=true;
// popup menu
BuildPopupMenu;
@ -7659,6 +7662,13 @@ begin
MainIDEInterface.DoCommand(ecRemoveUnusedUnits);
end;
procedure TSourceNotebook.SourceNotebookDropFiles(Sender: TObject;
const FileNames: array of String);
begin
FManager.ActiveSourceWindow := Self;
LazarusIDE.DoDropFiles(Sender,Filenames,WindowID);
end;
procedure TSourceNotebook.FindOverloadsMenuItemClick(Sender: TObject);
begin
MainIDEInterface.DoCommand(ecFindOverloads);
@ -10260,13 +10270,6 @@ begin
end;
end;
procedure TSourceEditorManager.OnFilesDroping(Sender: TObject;
const FileNames: array of String);
begin
if Sender is TSourceNotebook then
ActiveSourceWindow := TSourceNotebook(Sender);
end;
procedure TSourceEditorManager.OnCodeTemplateTokenNotFound(Sender: TObject;
AToken: string; AnEditor: TCustomSynEdit; var Index: integer);
begin
@ -10553,7 +10556,6 @@ begin
Result.Create(Self, AnID)
else
Result.Create(Self);
Result.OnDropFiles := @OnFilesDroping;
for i := 1 to FUpdateLock do
Result.IncUpdateLockInternal;

View File

@ -2535,6 +2535,7 @@ end;
------------------------------------------------------------------------------}
procedure TCustomForm.IntfDropFiles(const FileNames: array of String);
begin
//debugln(['TCustomForm.IntfDropFiles ',DbgSName(Self)]);
if Assigned(FOnDropFiles) then FOnDropFiles(Self, FileNames);
end;

View File

@ -3,6 +3,7 @@ object PackageEditorForm: TPackageEditorForm
Height = 455
Top = 248
Width = 464
AllowDropFiles = True
Caption = 'PackageEditorForm'
ClientHeight = 455
ClientWidth = 464
@ -13,6 +14,7 @@ object PackageEditorForm: TPackageEditorForm
OnCloseQuery = PackageEditorFormCloseQuery
OnCreate = FormCreate
OnDestroy = FormDestroy
OnDropFiles = FormDropFiles
Position = poScreenCenter
LCLVersion = '1.3'
object ToolBar: TToolBar

View File

@ -222,6 +222,7 @@ type
procedure ExpandDirectoryMenuItemClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormDropFiles(Sender: TObject; const FileNames: array of String);
procedure ItemsPopupMenuPopup(Sender: TObject);
procedure ItemsTreeViewAdvancedCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
@ -1355,6 +1356,12 @@ begin
FreeAndNil(FPlugins);
end;
procedure TPackageEditorForm.FormDropFiles(Sender: TObject;
const FileNames: array of String);
begin
debugln(['TPackageEditorForm.FormDropFiles ',length(FileNames)]);
end;
procedure TPackageEditorForm.RevertClick(Sender: TObject);
begin
DoRevert;