1 {
2 ***************************************************************************
3 * *
4 * This source is free software; you can redistribute it and/or modify *
5 * it under the terms of the GNU General Public License as published by *
6 * the Free Software Foundation; either version 2 of the License, or *
7 * (at your option) any later version. *
8 * *
9 * This code is distributed in the hope that it will be useful, but *
10 * WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
12 * General Public License for more details. *
13 * *
14 * A copy of the GNU General Public License is available on the World *
15 * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
16 * obtain it by writing to the Free Software Foundation, *
17 * Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1335, USA. *
18 * *
19 ***************************************************************************
20
21 Abstract:
22 Dialog to open/start a new project.
23 }
24 unit ProjectWizardDlg;
25
26 {$mode objfpc}{$H+}
27
28 interface
29
30 uses
31 Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Buttons,
32 LazarusIDEStrConsts, IDEImagesIntf, EnvironmentOpts, StdCtrls;
33
34 type
35 TProjectWizardSelectionType = (
36 tpws_new,
37 tpws_open,
38 tpws_openRecent,
39 tpws_examples,
40 tpws_convert,
41 tpws_closeIDE
42 );
43
44 { TProjectWizardDialog }
45
46 TProjectWizardDialog = class(TForm)
47 btnExamples: TBitBtn;
48 btnNewProject: TBitBtn;
49 btnConvertProject: TBitBtn;
50 btnCloseIDE: TBitBtn;
51 btnOpenProject: TBitBtn;
52 cbRecentProjects: TComboBox;
53 gbRecent: TGroupBox;
54 procedure btnCloseIDEClick(Sender: TObject);
55 procedure btnConvertProjectClick(Sender: TObject);
56 procedure btnExamplesClick(Sender: TObject);
57 procedure btnNewProjectClick(Sender: TObject);
58 procedure btnOpenProjectClick(Sender: TObject);
59 procedure cbRecentProjectsSelect(Sender: TObject);
60 private
61 FResult: TProjectWizardSelectionType;
62 public
63 property Result: TProjectWizardSelectionType read FResult;
64 end;
65
ShowProjectWizardDlgnull66 function ShowProjectWizardDlg(out ARecentProject: String): TProjectWizardSelectionType;
67
68 implementation
69
70 {$R *.lfm}
71
ShowProjectWizardDlgnull72 function ShowProjectWizardDlg(out ARecentProject: String): TProjectWizardSelectionType;
73 var
74 ProjectWizardDialog: TProjectWizardDialog;
75 begin
76 Result := tpws_closeIDE;
77 ARecentProject := '';
78 ProjectWizardDialog := TProjectWizardDialog.create(nil);
79 with ProjectWizardDialog do
80 begin
81 Caption:=lisProjectWizard;
82 btnNewProject.caption:=lisPWNewProject;
83 btnOpenProject.caption:=lisPWOpenProject;
84 btnExamples.Caption:=lisPWViewExampleProjects;
85 btnConvertProject.caption:=lisPWConvertProject;
86 gbRecent.Caption:=lisPWOpenRecentProject;
87 btnCloseIDE.caption:=lisQuitLazarus;
88 IDEImages.AssignImage(btnNewProject, 'menu_project_new');
89 IDEImages.AssignImage(btnOpenProject, 'menu_project_open');
90 IDEImages.AssignImage(btnExamples, 'camera');
91 IDEImages.AssignImage(btnConvertProject, 'menu_tool_del_to_laz_project');
92 IDEImages.AssignImage(btnCloseIDE, 'menu_exit');
93 cbRecentProjects.Items.AddStrings(EnvironmentOptions.RecentProjectFiles);
94 end;
95
96 try
97 if ProjectWizardDialog.ShowModal <> mrOk then
98 Exit;
99 Result := ProjectWizardDialog.Result;
100 ARecentProject := ProjectWizardDialog.cbRecentProjects.Text;
101 finally
102 ProjectWizardDialog.free;
103 end;
104 end;
105
106 { TProjectWizardDialog }
107
108 procedure TProjectWizardDialog.btnNewProjectClick(Sender: TObject);
109 begin
110 FResult := tpws_new;
111 end;
112
113 procedure TProjectWizardDialog.btnConvertProjectClick(Sender: TObject);
114 begin
115 FResult := tpws_convert;
116 end;
117
118 procedure TProjectWizardDialog.btnExamplesClick(Sender: TObject);
119 begin
120 FResult := tpws_examples;
121 end;
122
123 procedure TProjectWizardDialog.btnCloseIDEClick(Sender: TObject);
124 begin
125 FResult := tpws_closeIDE;
126 end;
127
128 procedure TProjectWizardDialog.btnOpenProjectClick(Sender: TObject);
129 begin
130 FResult := tpws_open;
131 end;
132
133 procedure TProjectWizardDialog.cbRecentProjectsSelect(Sender: TObject);
134 begin
135 FResult := tpws_openRecent;
136 if (Sender as TComboBox).Text<>'' then
137 ModalResult:=mrOK; // Exit dialog if something is selected.
138 end;
139
140 end.
141
142