fpGUI - fpGUI

fpGUI
Fpgui.png
Stabil frigivelse
v1.4.1 / 2. september 2015 ; for 5 år siden  ( 2015-09-02 )
Eksempel på frigivelse
- / -
Datalager Rediger dette på Wikidata
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 .sourceforge .net

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.
Fpgui stdimglist.png

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.

Se også

Referencer

eksterne links