summaryrefslogtreecommitdiff
path: root/extras
diff options
context:
space:
mode:
authorGraeme Geldenhuys <graemeg@gmail.com>2015-09-02 23:25:41 +0100
committerGraeme Geldenhuys <graemeg@gmail.com>2015-09-02 23:25:41 +0100
commitb0a9f3d90d7a8127ba41ab77a7054d797e816c83 (patch)
treeb11cdae78c316a7b728522e9a4bfb43880fad8f5 /extras
parentdb31f06d5e7adf28fad60e36fd9e5d2cf0519e84 (diff)
parentf52bde1cd49d0d01002e8b684909268b723a3edb (diff)
downloadfpGUI-master.tar.xz
Merge branch 'fixes_1.4'HEADmaster
Diffstat (limited to 'extras')
-rw-r--r--extras/lazarus_ide/fpgui_ide.lpk24
-rw-r--r--extras/lazarus_ide/fpguilazideintf.pas191
-rw-r--r--extras/lazarus_ide/regfpguitestrunner.pas2
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;');