diff options
author | graemeg <graemeg@ae50a9b5-8222-0410-bf8d-8a13f76226bf> | 2008-05-30 14:59:30 +0000 |
---|---|---|
committer | graemeg <graemeg@ae50a9b5-8222-0410-bf8d-8a13f76226bf> | 2008-05-30 14:59:30 +0000 |
commit | 6628a19f85992b77430f7ed9f5e925e1e6bc109b (patch) | |
tree | 8644668017ab7855bb87edd7f4921c58c7428fe8 /extras | |
parent | 7f33425aec78550975b32d8ab03d98e99b04cb81 (diff) | |
download | fpGUI-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.lpk | 45 | ||||
-rwxr-xr-x | extras/lazarus_ide/fpgui_ide.pas | 21 | ||||
-rw-r--r-- | extras/lazarus_ide/fpguilazideintf.pas | 180 | ||||
-rw-r--r-- | extras/lazarus_ide/readme.txt | 9 |
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. + |