fpGUI | это... Что такое fpGUI? (original) (raw)

fpGUI

Тип Библиотека элементов интерфейса (виджетов)
Разработчик Себастьян Гюнтер, Граеме Гелденхуис
Написана на Object Pascal
Операционная система Unix, Linux, BSD (X11), Windows
Последняя версия 0.8 (2 декабря 2011 года)
Лицензия модифицированная GNU LGPL
Сайт fpgui.sourceforge.net

fpGUI (сокр. от англ. Free Pascal GUI) — кроссплатформенный набор элементов управления графического интерфейса пользователя, разработанный Граеме Гелденхуисом. fpGUI является открытым и свободным программным обеспечением, выпущенным под модифицированной лицензией LGPL. fpGUI создан при помощи компилятора Free Pascal и написан на языке Object Pascal.

fpGUI состоит только из графических виджетов или компонентов и кроссплатформенной библиотеки двумерной отрисовки. В нём не реализованы уровни баз данных, трёхмерная графика, парсеры XML и т. д. Он так же не зависит от сторонних больших библиотек типа GTK или Qt. Все дополнительные возможности напрямую реализуют то, что доступно в библиотеке компонентов Free Pascal Component Library (FCL), которая является стандартной для компилятора Free Pascal.

История

Первая версия fpGUI была написана Себастьяном Гюнтером в 2000 году, но к 2002 году проект забросили. fpGUI был преемником более ранней объектно-ориентированной обёртки для GTK, fpGTK, и был начат почти с нуля чтобы позволить множество наборов виджетов, наиболее известный win32. Набор элементов управления использовался для внутренних нужд, но было ещё много нерешённых проблем до того как тулкит смог бы быть полезным и использоваться в реальной жизни для разработки приложений конечными пользователями.

Текущее состояние

Пример использования

Приведённая ниже программа отображает одно окно с кнопкой «Quit» в правом нижнем углу. В окне изображены все стандартные встроенные рисунки, используемые в 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 stdimglist.png

Лицензия

Ссылки