File: templateidedockablewindow.pas

package info (click to toggle)
lazarus 2.0.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 214,460 kB
  • sloc: pascal: 1,862,622; xml: 265,709; cpp: 56,595; sh: 3,008; java: 609; makefile: 535; perl: 297; sql: 222; ansic: 137
file content (98 lines) | stat: -rw-r--r-- 2,877 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
{
 *****************************************************************************
  See the file COPYING.modifiedLGPL.txt, included in this distribution,
  for details about the license.
 *****************************************************************************

  Author: Your name

  Abstract:
    This unit installs the TemplateName window in the Lazarus IDE.
}
unit TemplateIDEDockableWindow;

{$mode objfpc}{$H+}

interface

uses
// UsesStart
  Classes, SysUtils, LazLoggerBase, FileUtil, Forms, Controls, Graphics, Dialogs,
  LCLType, IDECommands, IDEWindowIntf, LazIDEIntf, MenuIntf
// UsesEnd
  ;

// InterfaceStart
type
  TTemplateName = class(TForm)
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  TemplateName: TTemplateName;
  TemplateNameCreator: TIDEWindowCreator; // set by Register procedure

procedure ShowTemplateName(Sender: TObject);
procedure Register; // Check the "Register Unit" of this unit in the package editor.

// InterfaceEnd
// ImplementationStart
implementation

{$R *.lfm}

procedure ShowTemplateName(Sender: TObject);
begin
  IDEWindowCreators.ShowForm(TemplateNameCreator.FormName,true);
end;

procedure CreateTemplateName(Sender: TObject; aFormName: string;
  var AForm: TCustomForm; DoDisableAutoSizing: boolean);
begin
  // sanity check to avoid clashing with another package that has registered a window with the same name
  if CompareText(aFormName,'TemplateName')<>0 then begin
    DebugLn(['ERROR: CreateTemplateName: there is already a form with this name']);
    exit;
  end;
  IDEWindowCreators.CreateForm(AForm,TTemplateName,DoDisableAutoSizing,
    LazarusIDE.OwningComponent);
  AForm.Name:=aFormName;
  TemplateName:=AForm as TTemplateName;
end;

procedure Register;
var
  CmdCatViewMenu: TIDECommandCategory;
  ViewTemplateNameCommand: TIDECommand;
  MenuItemCaption: String;
begin
  // register shortcut and menu item
  MenuItemCaption:='Caption of TemplateName'; // <- this caption should be replaced by a resourcestring
  // search shortcut category
  CmdCatViewMenu:=IDECommandList.FindCategoryByName(CommandCategoryViewName);
  // register shortcut
  ViewTemplateNameCommand:=RegisterIDECommand(CmdCatViewMenu,
    'ViewTemplateName',
    MenuItemCaption,
    IDEShortCut(VK_UNKNOWN,[]), // <- set here your default shortcut
    CleanIDEShortCut,nil,@ShowTemplateName);
  // register menu item in View menu
  RegisterIDEMenuCommand(itmViewMainWindows,
    'ViewTemplateName',
    MenuItemCaption, nil, nil, ViewTemplateNameCommand);

  // register dockable Window
  TemplateNameCreator:=IDEWindowCreators.Add(
    'TemplateName',
    @CreateTemplateName,nil,
    '100','100','300','300'  // default place at left=100, top=100, right=300, bottom=300
     // you can also define percentage values of screen or relative positions, see wiki
    );
end;
// ImplementationEnd

end.