mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-06 08:37:56 +02:00
174 lines
4.9 KiB
ObjectPascal
174 lines
4.9 KiB
ObjectPascal
{
|
|
Author: Mattias Gaertner
|
|
|
|
***************************************************************************
|
|
* *
|
|
* This source is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
* This code is distributed in the hope that it will be useful, but *
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
|
* General Public License for more details. *
|
|
* *
|
|
* A copy of the GNU General Public License is available on the World *
|
|
* Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
|
|
* obtain it by writing to the Free Software Foundation, *
|
|
* Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1335, USA. *
|
|
* *
|
|
***************************************************************************
|
|
|
|
Abstract:
|
|
The new project dialog for lazarus.
|
|
|
|
}
|
|
unit NewProjectDlg;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils,
|
|
// LCL
|
|
Forms, Graphics, Controls, Buttons, ButtonPanel, StdCtrls, ExtCtrls, ComCtrls,
|
|
// BuildIntf
|
|
ProjectIntf,
|
|
// IdeIntf
|
|
IDEHelpIntf, IDEImagesIntf,
|
|
// IDE
|
|
LazarusIDEStrConsts, Project;
|
|
|
|
type
|
|
|
|
{ TNewProjectDialog }
|
|
|
|
TNewProjectDialog = class(TForm)
|
|
ButtonPanel: TButtonPanel;
|
|
DescriptionGroupBox: TGroupBox;
|
|
HelpLabel: TLabel;
|
|
Tree: TTreeView;
|
|
Panel1: TPanel;
|
|
Splitter1: TSplitter;
|
|
procedure HelpButtonClick(Sender: TObject);
|
|
procedure OkClick(Sender: TObject);
|
|
procedure TreeSelectionChange(Sender: TObject);
|
|
private
|
|
FProjectDescriptor: TProjectDescriptor;
|
|
procedure FillHelpLabel;
|
|
procedure SetupComponents;
|
|
public
|
|
constructor Create(AOwner: TComponent); override;
|
|
property ProjectDescriptor: TProjectDescriptor read FProjectDescriptor;
|
|
end;
|
|
|
|
function ChooseNewProject(var ProjectDesc: TProjectDescriptor): TModalResult;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
function ChooseNewProject(var ProjectDesc: TProjectDescriptor):TModalResult;
|
|
var
|
|
NewProjectDialog: TNewProjectDialog;
|
|
begin
|
|
ProjectDesc:=nil;
|
|
NewProjectDialog:=TNewProjectDialog.Create(nil);
|
|
try
|
|
Result:=NewProjectDialog.ShowModal;
|
|
if Result=mrOk then
|
|
ProjectDesc:=NewProjectDialog.ProjectDescriptor;
|
|
finally
|
|
NewProjectDialog.Free;
|
|
end;
|
|
end;
|
|
|
|
{ NewProjectDialog }
|
|
|
|
constructor TNewProjectDialog.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create(AOwner);
|
|
Caption:=lisNPCreateANewProject;
|
|
SetupComponents;
|
|
FillHelpLabel;
|
|
end;
|
|
|
|
procedure TNewProjectDialog.FillHelpLabel;
|
|
var
|
|
ANode: TTreeNode;
|
|
begin
|
|
ANode := Tree.Selected;
|
|
if Assigned(ANode) and Assigned(ANode.Data) then
|
|
begin
|
|
FProjectDescriptor:=TProjectDescriptor(ANode.Data);
|
|
HelpLabel.Caption:=FProjectDescriptor.GetLocalizedName + LineEnding+LineEnding
|
|
+FProjectDescriptor.GetLocalizedDescription;
|
|
ButtonPanel.OKButton.Enabled:=true;
|
|
end
|
|
else
|
|
begin
|
|
FProjectDescriptor:=nil;
|
|
HelpLabel.Caption:=lisChooseOneOfTheseItemsToCreateANewProject;
|
|
ButtonPanel.OKButton.Enabled:=false;
|
|
end;
|
|
end;
|
|
|
|
procedure TNewProjectDialog.SetupComponents;
|
|
var
|
|
NIndexTemplate, NIndexFolder: integer;
|
|
RootNode, ItemNode: TTreeNode;
|
|
i: integer;
|
|
begin
|
|
Tree.Images:=IDEImages.Images_16;
|
|
NIndexFolder:=IDEImages.LoadImage('folder');
|
|
NIndexTemplate:=IDEImages.LoadImage('template');
|
|
|
|
Tree.Items.BeginUpdate;
|
|
RootNode:=Tree.Items.Add(nil, dlgProject);
|
|
RootNode.ImageIndex:=NIndexFolder;
|
|
RootNode.SelectedIndex:=NIndexFolder;
|
|
for i:=0 to ProjectDescriptors.Count-1 do
|
|
if ProjectDescriptors[i].VisibleInNewDialog then
|
|
begin
|
|
ItemNode:=Tree.Items.AddChildObject(RootNode, ProjectDescriptors[i].GetLocalizedName,
|
|
ProjectDescriptors[i]);
|
|
ItemNode.ImageIndex:=NIndexTemplate;
|
|
ItemNode.SelectedIndex:=NIndexTemplate;
|
|
end;
|
|
Tree.FullExpand;
|
|
Tree.Items.EndUpdate;
|
|
|
|
//select first child node
|
|
with Tree do
|
|
if Items.Count>0 then
|
|
Selected:=Items[1];
|
|
|
|
DescriptionGroupBox.Caption:=lisCodeHelpDescrTag;
|
|
end;
|
|
|
|
procedure TNewProjectDialog.HelpButtonClick(Sender: TObject);
|
|
begin
|
|
LazarusHelp.ShowHelpForIDEControl(Self);
|
|
end;
|
|
|
|
procedure TNewProjectDialog.OkClick(Sender: TObject);
|
|
var
|
|
ANode: TTreeNode;
|
|
begin
|
|
ANode := Tree.Selected;
|
|
if Assigned(ANode) and Assigned(ANode.Data) then
|
|
ModalResult:=mrOk
|
|
else
|
|
ModalResult:=mrNone;
|
|
end;
|
|
|
|
procedure TNewProjectDialog.TreeSelectionChange(Sender: TObject);
|
|
begin
|
|
FillHelpLabel;
|
|
end;
|
|
|
|
end.
|
|
|