fpGUI - fpGUI
![]() | |
| Stabil frigivelse | v1.4.1 / 2. september 2015
|
|---|---|
| Eksempel på frigivelse | - / - |
| Datalager |
|
| Skrevet i | Objekt Pascal |
| Operativ system | Unix / Linux / BSD ( X11 ), Windows , OpenSolaris , ARM-Linux og WinCE-enheder. |
| Type | Widget-værktøjssæt |
| Licens | LGPL med statisk sammenkædningsundtagelse |
| Internet side | fpgui |
fpGUI , Free Pascal GUI- værktøjssættet, er et grafisk brugergrænsefladesværktøjssæt på tværs af platforme udviklet af Graeme Geldenhuys. fpGUI er open source og gratis software , licenseret under en modificeret LGPL-licens. Værktøjssættet er implementeret ved hjælp af Free Pascal- kompilatoren, hvilket betyder at det er skrevet på Object Pascal- sproget.
fpGUI består kun af grafiske widgets eller komponenter og et 2D-tegningsbibliotek på tværs af platforme. Den implementerer ikke databaselag, 3D-grafik, XML-parsere osv. Den er heller ikke afhængig af nogen enorme tredjepartsbiblioteker som GTK eller Qt. Alle ekstraudstyr kommer direkte fra, hvad der er tilgængeligt med Free Pascal Component Library (FCL), der leveres som standard med Free Pascal- kompilatoren.
Historie
Den første version af fpGUI blev skrevet af Sebastian Günther tilbage i 2000. Projektet blev derefter opgivet i 2002. fpGUI var en efterfølger til en tidligere OO GTK-indpakning, fpGTK, og var stort set en ny start for at tillade flere (backend) widgetsets, især win32. Værktøjssættet blev brugt til nogle interne FPC-værktøjer (f.eks. Fpdoc-editoren), men der var stadig mange ting udestående, før værktøjssættet kunne være virkelig nyttigt og brugt i slutbrugers applikationer i det virkelige liv. De fleste af disse værktøjer blev migreret til den modne Lazarus i tidsrammen 2004-2006.
Graeme Geldenhuys genoplivede værktøjssættet i midten af 2006, hvor Sebastian slap. Han fortsatte med at udvikle værktøjssættet det næste år. Fletning af tre delprojekter (fpGFX, fpIMG og fpGUI) til et enkelt projekt fpGUI. Graeme udvidede antallet af komponenter og mængden af backend-grafiklag og forbedrede det samlede værktøjssæt. De understøttede platforme på det tidspunkt var Linux og FreeBSD via X11 og Microsoft Windows via GDI. Efter et par måneder sluttede Felipe Monteiro de Carvalho sig til udviklingsteamet ved at tilføje support til Windows Mobile-enheder og udvide grafisk support og design. Felipe begyndte også at arbejde på Mac OS X support via Carbon.
I begyndelsen af juni 2007 fandt Graeme nogle store designproblemer i kildebasen. Dette forhindrede fpGUI i at være virkelig nyttig i rigtige applikationer. Efter adskillige prototyper blev fpGUI-projektet fuldstændig omskrevet. Tidligere erfaring hjalp meget, og nye designideer blev implementeret. Kodebasen endte med at blive meget enklere med et renere design. En af de store ændringer var, at alle widgets nu var baseret på et design med flere håndtag (vinduer). Hver widget har nu et vinduesgreb. Andre GUI-værktøjssæt, der følger et lignende design, er GTK , Xt og FLTK for at nævne nogle få. GUI-værktøjssæt, der følger det modsatte design, er værktøjssæt som den nyeste Qt og MSEgui.
Eksempel på program
Det følgende program viser et enkelt vindue med en "Quit" -knap nederst til højre. På lærredet (baggrunden) i vinduet maler det alle de standardindbyggede billeder, der bruges med fpGUI.
program stdimglist;
{$mode objfpc}{$H+}
uses
Classes, SysUtils,
fpg_base, fpg_main, fpg_form, fpg_imgfmt_bmp, fpg_button;
type
TMainForm = class(TfpgForm)
private
btnClose: TfpgButton;
procedure btnCloseClick(Sender: TObject);
protected
procedure HandlePaint; override;
public
constructor Create(aowner: TComponent); override;
procedure AfterCreate; override;
end;
{ TMainForm }
procedure TMainForm.AfterCreate;
begin
SetPosition(100,100,700,500);
WindowTitle := 'fpGUI Standard Image Listing';
// Place button in bottom right corner.
btnClose := CreateButton(self, Width-90, Height-35, 75, 'Quit', @btnCloseClick);
btnClose.ImageName := 'stdimg.quit';
btnClose.Anchors := [anRight, anBottom];
end;
procedure TMainForm.btnCloseClick(Sender: TObject);
begin
Close;
end;
procedure TMainForm.HandlePaint;
var
n: integer;
x: TfpgCoord;
y: TfpgCoord;
sl: TStringList;
img: TfpgImage;
begin
Canvas.BeginDraw; // begin double buffering
inherited HandlePaint;
sl := TStringList.Create;
x := 8;
y := 8;
fpgImages.ListImages(sl);
for n := 0 to sl.Count-1 do
begin
Canvas.DrawString(x, y, sl[n]+':');
img := TfpgImage(sl.Objects[n]);
if img <> nil then
Canvas.DrawImage(x+130, y, img);
inc(y, img.Height+8);
if y > Height-32 then // largest images are 32 in height
begin
inc(x, 200);
y := 8;
end;
end;
Canvas.EndDraw;
sl.Free;
end;
constructor TMainForm.Create(aowner: TComponent);
begin
inherited Create(aowner);
(* PRIOR TO v1.4:
// Place button in bottom right corner.
btnClose := CreateButton(self, Width-90, Height-35, 75, 'Quit', @btnCloseClick);
btnClose.ImageName := 'stdimg.quit';
btnClose.Anchors := [anRight, anBottom];
*)
end;
procedure MainProc;
var
frm : TMainForm;
begin
fpgApplication.Initialize;
frm := TMainForm.Create(nil);
try
frm.Show;
fpgApplication.Run;
finally
frm.Free;
end;
end;
begin
MainProc;
end.
Her er et screenshot af ovenstående program, når det køres under Linux.
Licensering
fpGUI er statisk knyttet til programmer og er licenseret ved hjælp af en modificeret version af LGPL specielt designet til at tillade statisk link til proprietære programmer. Den eneste kode, du har brug for at gøre tilgængelig, er de ændringer, du har foretaget i fpGUI-værktøjssættet - intet mere.
Software skrevet med fpGUI
-
Master Maths
Brugt i et computerbaseret træningssystem. Samt en grundlæggende regnskabs- og administrationspakke for franchisetagere. - En Visual Form Designer, der nu er inkluderet som en del af fpGUI. Det giver udvikleren mulighed for at oprette brugergrænseflader i et meget hurtigere tempo.
-
Unimesur og forskellige værktøjer
Unimesur-programmet er skrevet af Jean-Marc og giver mulighed for at konvertere målinger af strømme af væsker og gasser mellem masse- og volumenheder. Alle resultater blev verificeret for nøjagtigheden af konverteringsfaktorerne. - fpGUI DocView
En INF-hjælpefilfremviser, der i øjeblikket fungerer på Windows, Linux og FreeBSD. INF er standardhjælpeformatet for fpGUI og er også det hjælpeformat, der bruges i OS / 2 (og også eComStation og ArcaOS ). -
Gratis Pascal Testing Framework
En platformstest-testramme med en konsol- og GUI-testløber.
