fpGUI, Free Pascal графички алат, је мултиплатформа алатке графичког корисничког интерфејса дизајнирана од стране Graeme Geldenhuys.. fpGUI је отвореног кода (open source) и бесплатна је, лиценциран од стране Modified LGPL license. Алат је реализован уз помоћ компајлера Free Pascala , а то значи да је написано у Објектном Пасаклу.

fpGUI се састоји само од графичких додатака или компоненти, и мултиплатформе библиотеке за 2Д цртање. Не имплементира базу података, 3D графику, XML анализаторе итд. Такође, не ослања се на огромне независне датотеке као што су GTK или  Qt. Сви додаци долазе директно из онога што је доступно у Free Pasccal Comoponent библиотеци (ФЦЛ) која је стандардна библиотека у Free Pascalu.

Историја уреди

Прва верзија fpGUI написана је од стране Себастијан Гинтер још у 2000. години. Пројекат је тада био напуштен у 2002. години. fpGUI је наследник ранијег OO GTK wrapper-а, fpGTK, и био је то нов почетак да се дозволе вишеструки (бекхенд)  је прилично много да дозволи више (позадина) widgetsets, посебно за Win32. Алат је коришћен за неке унутрашње FPC радње са алатом (на пример, fpdoc едитор), али ту је било још много тога што је стварно користило крајњим корисницима апликација. Већина ових алата, су досељени у  Lazarus у року 2004-2006. год

Graeme Geldenhuys оживео је алат средином 2006. године, када је Себастијан завршио. Он је наставио развој алата за наредну годину. Спајање три подпројекта (fpGFX, fpIMG и fpGUI) у јединствени пројекат fpGUI. Graeme је проширио број компоненти и број бекхенд графичких слојева и побољшао алат уопштено. Подржане платформе у овој фази су биле Линукс и FreeBSD кроз Х11 и Мајкрософт Виндоус кроз GDI. Кроз неколико месеци Felipe Monteiro de Carvalho се придружио тиму програмера да додају подршку за Виндоус мобилни уређај и прошире графичку подршку и дизајн. Фелипе је такође почео да ради на Mac OS X подршци кроз Carbon.

Почетком јуна 2007. године Грахам је нашао нека велике проблеме пројектовања у кодној бази. То је спречило fpGUI бити истински корисна у реалним апликацијама. Након бројних прототипова fpGUI пројекат је у потпуности преписан. Досадашња искуства су помогла пуно и нове дизајнерске идеје су  реализоване. Код базе је био много једноставнији са чистијим дизајном. Једна од великих промена јесте да су сада сви додаци засновани на дизајну multi-handle. Сваки додатака сада има свој посебни прозор у коме се налази. Други ГУИ алати  који имају сличан дизајн су GTK, Хt и FLTK . ГУИ алати који имају другачији и супротан дизајн су QT[1] и MSEgui.

Пример Програма уреди

Следећа програм приказује један прозор са дугметом "излаз" у доњем десном углу. На платну (позадина) прозора боји све стандардне уграђене слике који се користе са 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.

Ово је слика програма изнад, када се покрене у Linux-у.

 

Лиценцирање уреди

fpGUI је статично повезан у програмере и лиценциран је користећи модификовану верзију LGPL специјално дизајнирану да дозволи статичко повезивање са власничким програмима. Једина код које треба учинити доступним било какве промене које направите у алату  fpGUI - ништа више.

Види још уреди

Референце уреди

  1. ^ „Тrolltech Labs Blogs » Qt Invaded By Aliens — The End of All Flicker”. Архивирано из оригинала 03. 03. 2010. г. Приступљено 30. 06. 2016. 

Спољашње везе уреди

Програми написани у fpGUI уреди

  • Master Maths - Користи се у рачунарском систему учења. Као и у основама рачуноводства и администрације.
  • Визуелни дизајнер облика, који сада улази у састав fpGUI. Он омогућава програмерима да праве корисничке интерфејсе много бржим темпом.
  • Unimesur и различите алате
    Написао Жан-Марк, програм Unimesur вам омогућава да конвертујете мерење протока течности и гасова, масе и јединице запремине. Сви резултати су верификовани на тачност фактора конверзије.
  • fpGUI DocView - У INF help file прегледач који тренутно ради на Виндоус. За разлику од старих 16-битним ИПФ .рсмд/.гву прегледача DocView може да се користи 64-битну верзију Windows</ref> Linux и FreeBSD. Inf је подразумевани помоћни формат fpGUI-а, а такође користи помоћни формат који се користи у ОС/2.
  • Free Pascal testing Framework - Мултиплатформска јединица за тестирање фрејмворка у конзоли.