fpGUI
fpGUI | |
---|---|
Тип | Библиотека элементов интерфейса (виджетов) |
Разработчики | Себастьян Гюнтер, Граеме Гелденхуис |
Написана на | Object Pascal |
Операционные системы | Unix, Linux, BSD (X11), Windows |
Последняя версия | 1.4.1 (02 сентября 2015 года) |
Репозиторий | git.code.sf.net/p/fpgui/… github.com/graemeg/fpGUI |
Лицензия | модифицированная 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.
- Обзор на иврите.