Pređi na sadržaj

fpGUI

S Vikipedije, slobodne enciklopedije

fpGUI, Free Pascal grafički alat, je multiplatforma alatke grafičkog korisničkog interfejsa dizajnirana od strane Graeme Geldenhuys.. fpGUI je otvorenog koda (open source) i besplatna je, licenciran od strane Modified LGPL license. Alat je realizovan uz pomoć kompajlera Free Pascala , a to znači da je napisano u Objektnom Pasaklu.

fpGUI se sastoji samo od grafičkih dodataka ili komponenti, i multiplatforme biblioteke za 2D crtanje. Ne implementira bazu podataka, 3D grafiku, XML analizatore itd. Takođe, ne oslanja se na ogromne nezavisne datoteke kao što su GTK ili  Qt. Svi dodaci dolaze direktno iz onoga što je dostupno u Free Pasccal Comoponent biblioteci (FCL) koja je standardna biblioteka u Free Pascalu.

Istorija[uredi | uredi izvor]

Prva verzija fpGUI napisana je od strane Sebastijan Ginter još u 2000. godini. Projekat je tada bio napušten u 2002. godini. fpGUI je naslednik ranijeg OO GTK wrapper-a, fpGTK, i bio je to nov početak da se dozvole višestruki (bekhend)  je prilično mnogo da dozvoli više (pozadina) widgetsets, posebno za Win32. Alat je korišćen za neke unutrašnje FPC radnje sa alatom (na primer, fpdoc editor), ali tu je bilo još mnogo toga što je stvarno koristilo krajnjim korisnicima aplikacija. Većina ovih alata, su doseljeni u  Lazarus u roku 2004-2006. god

Graeme Geldenhuys oživeo je alat sredinom 2006. godine, kada je Sebastijan završio. On je nastavio razvoj alata za narednu godinu. Spajanje tri podprojekta (fpGFX, fpIMG i fpGUI) u jedinstveni projekat fpGUI. Graeme je proširio broj komponenti i broj bekhend grafičkih slojeva i poboljšao alat uopšteno. Podržane platforme u ovoj fazi su bile Linuks i FreeBSD kroz H11 i Majkrosoft Vindous kroz GDI. Kroz nekoliko meseci Felipe Monteiro de Carvalho se pridružio timu programera da dodaju podršku za Vindous mobilni uređaj i prošire grafičku podršku i dizajn. Felipe je takođe počeo da radi na Mac OS X podršci kroz Carbon.

Početkom juna 2007. godine Graham je našao neka velike probleme projektovanja u kodnoj bazi. To je sprečilo fpGUI biti istinski korisna u realnim aplikacijama. Nakon brojnih prototipova fpGUI projekat je u potpunosti prepisan. Dosadašnja iskustva su pomogla puno i nove dizajnerske ideje su  realizovane. Kod baze je bio mnogo jednostavniji sa čistijim dizajnom. Jedna od velikih promena jeste da su sada svi dodaci zasnovani na dizajnu multi-handle. Svaki dodataka sada ima svoj posebni prozor u kome se nalazi. Drugi GUI alati  koji imaju sličan dizajn su GTK, Ht i FLTK . GUI alati koji imaju drugačiji i suprotan dizajn su QT[1] i MSEgui.

Primer Programa[uredi | uredi izvor]

Sledeća program prikazuje jedan prozor sa dugmetom "izlaz" u donjem desnom uglu. Na platnu (pozadina) prozora boji sve standardne ugrađene slike koji se koriste sa 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';
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);
  // 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.

Ovo je slika programa iznad, kada se pokrene u Linux-u.

Licenciranje[uredi | uredi izvor]

fpGUI je statično povezan u programere i licenciran je koristeći modifikovanu verziju LGPL specijalno dizajniranu da dozvoli statičko povezivanje sa vlasničkim programima. Jedina kod koje treba učiniti dostupnim bilo kakve promene koje napravite u alatu  fpGUI - ništa više.

Vidi još[uredi | uredi izvor]

Reference[uredi | uredi izvor]

  1. ^ „Trolltech Labs Blogs » Qt Invaded By Aliens — The End of All Flicker”. Arhivirano iz originala 03. 03. 2010. g. Pristupljeno 30. 06. 2016. 

Spoljašnje veze[uredi | uredi izvor]

Programi napisani u fpGUI[uredi | uredi izvor]

  • Master Maths - Koristi se u računarskom sistemu učenja. Kao i u osnovama računovodstva i administracije.
  • Vizuelni dizajner oblika, koji sada ulazi u sastav fpGUI. On omogućava programerima da prave korisničke interfejse mnogo bržim tempom.
  • Unimesur i različite alate
    Napisao Žan-Mark, program Unimesur vam omogućava da konvertujete merenje protoka tečnosti i gasova, mase i jedinice zapremine. Svi rezultati su verifikovani na tačnost faktora konverzije.
  • fpGUI DocView - U INF help file pregledač koji trenutno radi na Vindous. Za razliku od starih 16-bitnim IPF .рсмд/.гву pregledača DocView može da se koristi 64-bitnu verziju Windows</ref> Linux i FreeBSD. Inf je podrazumevani pomoćni format fpGUI-a, a takođe koristi pomoćni format koji se koristi u OS/2.
  • Free Pascal testing Framework - Multiplatformska jedinica za testiranje frejmvorka u konzoli.