summaryrefslogtreecommitdiff
path: root/extras
diff options
context:
space:
mode:
authorgraemeg <graemeg@ae50a9b5-8222-0410-bf8d-8a13f76226bf>2008-05-30 14:59:30 +0000
committergraemeg <graemeg@ae50a9b5-8222-0410-bf8d-8a13f76226bf>2008-05-30 14:59:30 +0000
commit6628a19f85992b77430f7ed9f5e925e1e6bc109b (patch)
tree8644668017ab7855bb87edd7f4921c58c7428fe8 /extras
parent7f33425aec78550975b32d8ab03d98e99b04cb81 (diff)
downloadfpGUI-6628a19f85992b77430f7ed9f5e925e1e6bc109b.tar.xz
* Created a Lazarus IDE add-on to register a new project type. You can then create a new fpGUI based project by selecting File - New
Diffstat (limited to 'extras')
-rw-r--r--extras/lazarus_ide/fpgui_ide.lpk45
-rwxr-xr-xextras/lazarus_ide/fpgui_ide.pas21
-rw-r--r--extras/lazarus_ide/fpguilazideintf.pas180
-rw-r--r--extras/lazarus_ide/readme.txt9
4 files changed, 255 insertions, 0 deletions
diff --git a/extras/lazarus_ide/fpgui_ide.lpk b/extras/lazarus_ide/fpgui_ide.lpk
new file mode 100644
index 00000000..8343707b
--- /dev/null
+++ b/extras/lazarus_ide/fpgui_ide.lpk
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<CONFIG>
+ <Package Version="3">
+ <Name Value="fpgui_ide"/>
+ <Author Value="Graeme Geldenhuys"/>
+ <CompilerOptions>
+ <Version Value="5"/>
+ <SearchPaths>
+ <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
+ </SearchPaths>
+ <CodeGeneration>
+ <Generate Value="Faster"/>
+ </CodeGeneration>
+ <Other>
+ <CompilerPath Value="$(CompPath)"/>
+ </Other>
+ </CompilerOptions>
+ <Description Value="Adds a new project type in the Lazarus IDE. You can then create fpGUI based applications from the File | New dialog."/>
+ <License Value="GPL v2"/>
+ <Version Minor="1"/>
+ <Files Count="1">
+ <Item1>
+ <Filename Value="fpguilazideintf.pas"/>
+ <HasRegisterProc Value="True"/>
+ <UnitName Value="fpGUILazIDEIntf"/>
+ </Item1>
+ </Files>
+ <Type Value="DesignTime"/>
+ <RequiredPkgs Count="2">
+ <Item1>
+ <PackageName Value="IDEIntf"/>
+ </Item1>
+ <Item2>
+ <PackageName Value="FCL"/>
+ </Item2>
+ </RequiredPkgs>
+ <UsageOptions>
+ <UnitPath Value="$(PkgOutDir)/"/>
+ </UsageOptions>
+ <PublishOptions>
+ <Version Value="2"/>
+ <IgnoreBinaries Value="False"/>
+ </PublishOptions>
+ </Package>
+</CONFIG>
diff --git a/extras/lazarus_ide/fpgui_ide.pas b/extras/lazarus_ide/fpgui_ide.pas
new file mode 100755
index 00000000..2520d304
--- /dev/null
+++ b/extras/lazarus_ide/fpgui_ide.pas
@@ -0,0 +1,21 @@
+{ This file was automatically created by Lazarus. Do not edit!
+This source is only used to compile and install the package.
+ }
+
+unit fpgui_ide;
+
+interface
+
+uses
+ fpGUILazIDEIntf, LazarusPackageIntf;
+
+implementation
+
+procedure Register;
+begin
+ RegisterUnit('fpGUILazIDEIntf',@fpGUILazIDEIntf.Register);
+end;
+
+initialization
+ RegisterPackage('fpgui_ide',@Register);
+end.
diff --git a/extras/lazarus_ide/fpguilazideintf.pas b/extras/lazarus_ide/fpguilazideintf.pas
new file mode 100644
index 00000000..427fce81
--- /dev/null
+++ b/extras/lazarus_ide/fpguilazideintf.pas
@@ -0,0 +1,180 @@
+{
+ Copyright (C) 2008 Graeme Geldenhuys
+
+ This library is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Library General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ This program 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 Library General Public License
+ for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+ Abstract:
+ This unit adds a new project type to the Lazarus IDE.
+
+ New Project Type:
+ fpGUI Application - A Free Pascal program for fpGUI Toolkit.
+
+}
+
+unit fpGUILazIDEIntf;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, LazIDEIntf, ProjectIntf, Controls, Forms;
+
+type
+
+ TfpGUIApplicationDescriptor = class(TProjectDescriptor)
+ public
+ constructor Create; override;
+ function GetLocalizedName: string; override;
+ function GetLocalizedDescription: string; override;
+ function InitProject(AProject: TLazProject): TModalResult; override;
+// function CreateStartFiles(AProject: TLazProject): TModalResult; override;
+ end;
+
+
+var
+ ProjectDescriptorfpGUIApplication: TfpGUIApplicationDescriptor;
+
+procedure Register;
+
+
+implementation
+
+
+procedure Register;
+begin
+ ProjectDescriptorfpGUIApplication := TfpGUIApplicationDescriptor.Create;
+ RegisterProjectDescriptor(ProjectDescriptorfpGUIApplication);
+end;
+
+
+{ TfpGUIApplicationDescriptor }
+
+constructor TfpGUIApplicationDescriptor.Create;
+begin
+ inherited Create;
+ Name := 'fpGUI Application';
+end;
+
+function TfpGUIApplicationDescriptor.GetLocalizedName: string;
+begin
+ Result := 'fpGUI Toolkit Application';
+end;
+
+function TfpGUIApplicationDescriptor.GetLocalizedDescription: string;
+var
+ le: string;
+begin
+ le := System.LineEnding;
+ Result := 'fpGUI Toolkit Application'+le+le
+ +'An application based on the fpGUI Toolkit.'+le
+ +'The program file is automatically maintained by Lazarus.';
+end;
+
+function TfpGUIApplicationDescriptor.InitProject(AProject: TLazProject): TModalResult;
+var
+ le: string;
+ NewSource: String;
+ MainFile: TLazProjectFile;
+begin
+ inherited InitProject(AProject);
+
+ MainFile := AProject.CreateProjectFile('project1.lpr');
+ MainFile.IsPartOfProject := true;
+ AProject.AddFile(MainFile, false);
+ AProject.MainFileID := 0;
+
+ // create program source
+ le := LineEnding;
+ NewSource := 'program fpGUIProject1;'+le
+ +le
+ +'{$mode objfpc}{$H+}'+le
+ +le
+ +'uses'+le
+ +' {$IFDEF UNIX}{$IFDEF UseCThreads}'+le
+ +' cthreads,'+le
+ +' {$ENDIF}{$ENDIF}'+le
+ +' Classes, fpgfx, gui_form;'+le
+ +le
+ +'type'+le
+ +le
+ +' TMainForm = class(TfpgForm)'+le
+ +' public'+le
+ +' {@VFD_HEAD_BEGIN: MainForm}'+le
+ +' {@VFD_HEAD_END: MainForm}'+le
+ +' procedure AfterCreate; override;'+le
+ +' end;'+le
+ +le
+ +'{@VFD_NEWFORM_DECL}'+le
+ +le
+ +le
+ +le
+ +'{@VFD_NEWFORM_IMPL}'+le
+ +le
+ +'procedure TMainForm.AfterCreate;'+le
+ +'begin'+le
+ +' {@VFD_BODY_BEGIN: MainForm}'+le
+ +' Name := ''MainForm'';'+le
+ +' SetPosition(316, 186, 300, 250);'+le
+ +' WindowTitle := ''MainForm'';'+le
+ +le
+ +' {@VFD_BODY_END: MainForm}'+le
+ +'end;'+le
+ +le
+ +le
+ +'procedure MainProc;'+le
+ +'var'+le
+ +' frm: TMainForm;'+le
+ +'begin'+le
+ +' fpgApplication.Initialize;'+le
+ +' frm := TMainForm.Create(nil);'+le
+ +' try'+le
+ +' frm.Show;'+le
+ +' fpgApplication.Run;'+le
+ +' finally'+le
+ +' frm.Free;'+le
+ +' end;'+le
+ +'end;'+le
+ +le
+ +'begin'+le
+ +' MainProc;'+le
+ +'end.'+le
+ +le;
+
+
+ AProject.MainFile.SetSourceText(NewSource);
+
+ // add
+ AProject.AddPackageDependency('fpgui_package');
+
+ // compiler options
+ AProject.LazCompilerOptions.UseLineInfoUnit := True;
+// AProject.LazCompilerOptions.CustomOptions := '-FUunits';
+
+ Result := mrOK;
+end;
+
+{
+function TfpGUIApplicationDescriptor.CreateStartFiles(AProject: TLazProject): TModalResult;
+begin
+ LazarusIDE.DoNewEditorFile(FileDescriptorfpGUIUnit,'','',
+ [nfIsPartOfProject,nfOpenInEditor,nfCreateDefaultSrc]);
+ Result:=mrOK;
+end;
+}
+
+end.
+
diff --git a/extras/lazarus_ide/readme.txt b/extras/lazarus_ide/readme.txt
new file mode 100644
index 00000000..0e7a2385
--- /dev/null
+++ b/extras/lazarus_ide/readme.txt
@@ -0,0 +1,9 @@
+
+ This packages add a new project type in the Lazarus IDE.
+ So you can then create a fpGUI based project by
+ going: 'File | New' and selecting 'fpGUI Application'.
+
+
+ Regards,
+ Graeme.
+