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