mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-10 06:08:17 +02:00
IDE: drop files: form events instead of application
git-svn-id: trunk@45558 -
This commit is contained in:
parent
e602528f78
commit
3b62c88f2c
@ -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;
|
||||
|
63
ide/main.pp
63
ide/main.pp
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user