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 на SourceForge
- Сайт компилятора Free Pascal
- Сайт среды разработки Lazarus IDE
- Обзор fpGUI в немецком журнале о программировании Toolbox 3-4/2008.
- Обзор на еврейском языке http://idkn.wordpress.com/2008/05/20/fpgui/. You can view an English version of the review, using Google Translate. Simply enter the original URL and select Hebrew to English.