diff options
author | Graeme Geldenhuys <graemeg@gmail.com> | 2015-09-02 23:25:41 +0100 |
---|---|---|
committer | Graeme Geldenhuys <graemeg@gmail.com> | 2015-09-02 23:25:41 +0100 |
commit | b0a9f3d90d7a8127ba41ab77a7054d797e816c83 (patch) | |
tree | b11cdae78c316a7b728522e9a4bfb43880fad8f5 /extras | |
parent | db31f06d5e7adf28fad60e36fd9e5d2cf0519e84 (diff) | |
parent | f52bde1cd49d0d01002e8b684909268b723a3edb (diff) | |
download | fpGUI-master.tar.xz |
Diffstat (limited to 'extras')
-rw-r--r-- | extras/lazarus_ide/fpgui_ide.lpk | 24 | ||||
-rw-r--r-- | extras/lazarus_ide/fpguilazideintf.pas | 191 | ||||
-rw-r--r-- | extras/lazarus_ide/regfpguitestrunner.pas | 2 |
3 files changed, 180 insertions, 37 deletions
diff --git a/extras/lazarus_ide/fpgui_ide.lpk b/extras/lazarus_ide/fpgui_ide.lpk index 8343707b..22efe8db 100644 --- a/extras/lazarus_ide/fpgui_ide.lpk +++ b/extras/lazarus_ide/fpgui_ide.lpk @@ -1,23 +1,24 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> - <Package Version="3"> + <Package Version="4"> <Name Value="fpgui_ide"/> + <Type Value="DesignTime"/> + <AddToProjectUsesSection Value="True"/> <Author Value="Graeme Geldenhuys"/> <CompilerOptions> - <Version Value="5"/> + <Version Value="11"/> <SearchPaths> <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> </SearchPaths> - <CodeGeneration> - <Generate Value="Faster"/> - </CodeGeneration> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Parsing> + <SyntaxOptions> + <UseAnsiStrings Value="False"/> + </SyntaxOptions> + </Parsing> </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"/> + <Version Minor="2"/> <Files Count="1"> <Item1> <Filename Value="fpguilazideintf.pas"/> @@ -25,7 +26,6 @@ <UnitName Value="fpGUILazIDEIntf"/> </Item1> </Files> - <Type Value="DesignTime"/> <RequiredPkgs Count="2"> <Item1> <PackageName Value="IDEIntf"/> @@ -35,7 +35,7 @@ </Item2> </RequiredPkgs> <UsageOptions> - <UnitPath Value="$(PkgOutDir)/"/> + <UnitPath Value="$(PkgOutDir)"/> </UsageOptions> <PublishOptions> <Version Value="2"/> diff --git a/extras/lazarus_ide/fpguilazideintf.pas b/extras/lazarus_ide/fpguilazideintf.pas index 306d3d44..9c797ec2 100644 --- a/extras/lazarus_ide/fpguilazideintf.pas +++ b/extras/lazarus_ide/fpguilazideintf.pas @@ -1,5 +1,5 @@ { - Copyright (C) 2009 by Graeme Geldenhuys + Copyright (C) 2009-2015 by 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 @@ -20,8 +20,9 @@ This unit adds a new project type to the Lazarus IDE. New Project Type: - fpGUI Application - A Free Pascal program for fpGUI Toolkit. - + fpGUI Application - A pure fpGUI Toolkit based application. + fpGUI+Agg2D Application - An fpGUI application with a TAgg2D instance. + } unit fpGUILazIDEIntf; @@ -41,25 +42,38 @@ type function GetLocalizedName: string; override; function GetLocalizedDescription: string; override; function InitProject(AProject: TLazProject): TModalResult; override; -// function CreateStartFiles(AProject: TLazProject): TModalResult; override; end; + TfpGUIAgg2dApplicationDescriptor = class(TProjectDescriptor) + public + constructor Create; override; + function GetLocalizedName: string; override; + function GetLocalizedDescription: string; override; + function InitProject(AProject: TLazProject): TModalResult; override; + end; var ProjectDescriptorfpGUIApplication: TfpGUIApplicationDescriptor; + ProjectDescriptorfpGUIAgg2dApplication: TfpGUIAgg2dApplicationDescriptor; + procedure Register; implementation +const + le: string = LineEnding; + procedure Register; begin ProjectDescriptorfpGUIApplication := TfpGUIApplicationDescriptor.Create; RegisterProjectDescriptor(ProjectDescriptorfpGUIApplication); -end; + ProjectDescriptorfpGUIAgg2dApplication := TfpGUIAgg2dApplicationDescriptor.Create; + RegisterProjectDescriptor(ProjectDescriptorfpGUIAgg2dApplication); +end; { TfpGUIApplicationDescriptor } @@ -75,18 +89,13 @@ begin 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.'; + +'An application based purely on the fpGUI Toolkit.'; end; function TfpGUIApplicationDescriptor.InitProject(AProject: TLazProject): TModalResult; var - le: string; NewSource: String; MainFile: TLazProjectFile; begin @@ -98,7 +107,6 @@ begin AProject.MainFileID := 0; // create program source - le := LineEnding; NewSource := 'program Project1;'+le +le +'{$mode objfpc}{$H+}'+le @@ -143,7 +151,7 @@ begin +' frm: TMainForm;'+le +'begin'+le +' fpgApplication.Initialize;'+le - +' frm := TMainForm.Create(nil);'+le + +' fpgApplication.CreateForm(TMainForm, frm);'+le +' try'+le +' frm.Show;'+le +' fpgApplication.Run;'+le @@ -157,27 +165,162 @@ begin +'end.'+le +le; - AProject.MainFile.SetSourceText(NewSource); - - // add AProject.AddPackageDependency('fpgui_toolkit'); - // compiler options AProject.LazCompilerOptions.UseLineInfoUnit := True; -// AProject.LazCompilerOptions.CustomOptions := '-FUunits'; Result := mrOK; end; -{ -function TfpGUIApplicationDescriptor.CreateStartFiles(AProject: TLazProject): TModalResult; +{ TfpGUIAgg2dApplicationDescriptor } + +constructor TfpGUIAgg2dApplicationDescriptor.Create; begin - LazarusIDE.DoNewEditorFile(FileDescriptorfpGUIUnit,'','', - [nfIsPartOfProject,nfOpenInEditor,nfCreateDefaultSrc]); - Result:=mrOK; + inherited Create; + Name := 'fpGUI+Agg2D Application'; +end; + +function TfpGUIAgg2dApplicationDescriptor.GetLocalizedName: string; +begin + Result := 'fpGUI+Agg2D Application'; +end; + +function TfpGUIAgg2dApplicationDescriptor.GetLocalizedDescription: string; +begin + Result := 'fpGUI+Agg2D Application'+le+le + +'An application based on the fpGUI Toolkit'+le + +'and uses Agg2D to render to an image buffer. Great ' + +'for quick demos.'; +end; + +function TfpGUIAgg2dApplicationDescriptor.InitProject(AProject: TLazProject): TModalResult; +var + 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 + NewSource := 'program Project1;'+le + +le + +'uses'+le + +' {$IFDEF UNIX}{$IFDEF UseCThreads}'+le + +' cthreads,'+le + +' {$ENDIF}{$ENDIF}'+le + +' Classes, SysUtils,'+le + +' fpg_base, fpg_main, fpg_form, Agg2D;'+le + +le + +'type'+le + +''+le + +' TMainForm = class(TfpgForm)'+le + +' private'+le + +' {@VFD_HEAD_BEGIN: MainForm}'+le + +' {@VFD_HEAD_END: MainForm}'+le + +' FImg: TfpgImage;'+le + +' FAgg2D: TAgg2D;'+le + +' procedure InitComposedImage;'+le + +' procedure FormCreate(Sender: TObject);'+le + +' procedure DoAggPainting;'+le + +' procedure FormPaint(Sender: TObject);'+le + +' public'+le + +' destructor Destroy; override;'+le + +' procedure AfterCreate; override;'+le + +' end;'+le + +le + +'{@VFD_NEWFORM_DECL}'+le + +le + +le + +le + +'{@VFD_NEWFORM_IMPL}'+le + +''+le + +'procedure TMainForm.DoAggPainting;'+le + +'begin'+le + +' // **** DO YOUR AGG2D PAINTING HERE ****'+le + +le + +' // Paint composedimage white'+le + +' FAgg2D.ClearAll(255, 255, 255);'+le + +' // So some advanced painting to the ComposedImage'+le + +' FAgg2D.LineWidth(10);'+le + +' FAgg2D.LineColor($32, $cd, $32);'+le + +' FAgg2D.FillColor($ff, $d7, $00);'+le + +' FAgg2D.Star(100, 100, 30, 70, 55, 5);'+le + +'end;'+le + +le + +'procedure TMainForm.InitComposedImage;'+le + +'begin'+le + +' FImg := TfpgImage.Create;'+le + +' FImg.AllocateImage(32, Width, Height);'+le + +' FAgg2D.Attach(FImg);'+le + +'end;'+le + +le + +'procedure TMainForm.FormCreate(Sender: TObject);'+le + +'begin'+le + +' FAgg2D := TAgg2D.Create(self);'+le + +' InitComposedImage;'+le + +' DoAggPainting;'+le + +'end;'+le + +le + +'procedure TMainForm.FormPaint(Sender: TObject);'+le + +'begin'+le + +' // Finalise image internals, then paint it to the Window'+le + +' FImg.UpdateImage;'+le + +' Canvas.DrawImage(0, 0, FImg);'+le + +'end;'+le + +le + +'destructor TMainForm.Destroy;'+le + +'begin'+le + +' FAgg2D.Free;'+le + +' FImg.Free;'+le + +' inherited Destroy;'+le + +'end;'+le + +le + +'procedure TMainForm.AfterCreate;'+le + +'begin'+le + +' {%region ''Auto-generated GUI code''}'+le + +' {@VFD_BODY_BEGIN: MainForm}'+le + +' Name := ''MainForm'';'+le + +' SetPosition(316, 186, 501, 450);'+le + +' WindowTitle := ''TAgg2D.Attach() demo'';'+le + +' Hint := '''';'+le + +' WindowPosition := wpOneThirdDown;'+le + +' OnPaint := @FormPaint;'+le + +' OnCreate := @FormCreate;'+le + +' {@VFD_BODY_END: MainForm}'+le + +' {%endregion}'+le + +'end;'+le + +le + +le + +'procedure MainProc;'+le + +'var'+le + +' frm: TMainForm;'+le + +'begin'+le + +' fpgApplication.Initialize;'+le + +' fpgApplication.CreateForm(TMainForm, frm);'+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; + + AProject.MainFile.SetSourceText(NewSource); + AProject.AddPackageDependency('fpgui_toolkit'); + // compiler options + AProject.LazCompilerOptions.UseLineInfoUnit := True; + + Result := mrOK; end; -} end. diff --git a/extras/lazarus_ide/regfpguitestrunner.pas b/extras/lazarus_ide/regfpguitestrunner.pas index 6c5806f2..7e978207 100644 --- a/extras/lazarus_ide/regfpguitestrunner.pas +++ b/extras/lazarus_ide/regfpguitestrunner.pas @@ -93,7 +93,7 @@ begin Add(''); Add('begin'); Add(' fpgApplication.Initialize;'); - Add(' frm := TGUITestRunnerForm.Create(nil);'); + Add(' fpgApplication.CreateForm(TGUITestRunnerForm, frm);'); Add(' try'); Add(' frm.Show;'); Add(' fpgApplication.Run;'); |