Стабильный релиз | v1.4.1 / 2 сентября 2015 г. ( 2015-09-02 ) |
---|---|
Предварительный релиз | - / - |
Репозиторий |
|
Написано в | Объектный Паскаль |
Операционная система | Устройства Unix / Linux / BSD ( X11 ), Windows , OpenSolaris , ARM-Linux и WinCE. |
Тип | Набор инструментов для виджетов |
Лицензия | LGPL с исключением статического связывания |
Веб-сайт | fpgui.sourceforge.net |
fpGUI , Free Pascal GUI toolkit, — кроссплатформенный графический пользовательский интерфейс, разработанный Грэмом Гельденхейсом. fpGUI — это программное обеспечение с открытым исходным кодом и бесплатное программное обеспечение , лицензированное по модифицированной лицензии LGPL. Инструментарий был реализован с использованием компилятора Free Pascal , то есть он написан на языке Object Pascal .
fpGUI состоит только из графических виджетов или компонентов и кроссплатформенной библиотеки 2D-чертежей. Он не реализует слои базы данных, 3D-графику, XML-парсеры и т. д. Он также не полагается на какие-либо огромные сторонние библиотеки, такие как GTK или Qt. Все дополнения напрямую из того, что доступно в Free Pascal Component Library (FCL), которая входит в стандартную комплектацию компилятора Free Pascal .
Первая версия fpGUI была написана Себастьяном Гюнтером еще в 2000 году. Затем проект был заброшен в 2002 году. fpGUI был преемником более ранней OO GTK-оболочки, fpGTK, и был в значительной степени новым стартом для поддержки нескольких (бэкенд) виджетсетов, в первую очередь win32. Инструментарий использовался для некоторых внутренних инструментов FPC (например, редактора fpdoc), но оставалось еще много открытых проблем, прежде чем инструментарий мог стать по-настоящему полезным и использоваться в реальных приложениях конечными пользователями. Большинство этих инструментов были перенесены в развивающийся Lazarus в период 2004-2006 годов.
Грэм Гельденхейс возродил набор инструментов в середине 2006 года там, где остановился Себастьян. Он продолжил разработку набора инструментов в течение следующего года. Объединив три подпроекта (fpGFX, fpIMG и fpGUI) в один проект fpGUI. Грэм увеличил количество компонентов и объем графического слоя бэкэнда, а также улучшил общий набор инструментов. Поддерживаемыми платформами на этом этапе были Linux и FreeBSD через X11 и Microsoft Windows через GDI. Через несколько месяцев к команде разработчиков присоединился Фелипе Монтейру де Карвалью, добавив поддержку устройств Windows Mobile и расширив графическую поддержку и дизайн. Фелипе также начал работать над поддержкой Mac OS X через Carbon.
В начале июня 2007 года Грэм обнаружил несколько серьезных проблем с дизайном в исходной базе. Это не позволило fpGUI стать по-настоящему полезным в реальных приложениях. После многочисленных прототипов проект fpGUI был полностью переписан. Прошлый опыт очень помог, и были реализованы новые идеи дизайна. База кода в конечном итоге стала намного проще с более чистым дизайном. Одним из основных изменений стало то, что все виджеты теперь были основаны на многорукавном (оконном) дизайне. Теперь у каждого виджета есть дескриптор окна. Другие наборы инструментов GUI, которые следуют похожему дизайну, — это GTK , Xt и FLTK, и это лишь некоторые из них. Наборы инструментов GUI, которые следуют противоположному дизайну, — это такие наборы инструментов, как последний Qt [1] и MSEgui.
Следующая программа показывает одно окно с кнопкой «Выход» в правом нижнем углу. На холсте (фоне) окна она рисует все стандартные встроенные изображения, используемые с fpGUI.
программа stdimglist ; {$mode objfpc}{$H+}использует Classes , SysUtils , fpg_base , fpg_main , fpg_form , fpg_imgfmt_bmp , fpg_button ; тип 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' ; // Размещаем кнопку в правом нижнем углу. btnClose := CreateButton ( self , Width - 90 , Height - 35 , 75 , ' Quit' , @btnCloseClick ) ; btnClose.ImageName : = ' stdimg.quit ' ; btnClose.Anchors : = [ anRight , anBottom ] ; end ; procedure TMainForm.btnCloseClick ( Отправитель : TObject ) ; begin Close ; end ; procedure TMainForm.HandlePaint ; var n : integer ; x : TfpgCoord ; y : TfpgCoord ; sl : TStringList ; img : TfpgImage ; begin Canvas.BeginDraw ; // начать двойную буферизацию 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 ) ; если y > Height - 32 , то // самые большие изображения имеют высоту 32 begin inc ( x , 200 ) ; y := 8 ; end ; end ; Холст . EndDraw ; sl . Свободный ; конец ; конструктор TMainForm.Create ( aowner : TComponent ) ; begin inherited Create ( aowner ) ; (* ДО версии 1.4: // Разместить кнопку в правом нижнем углу. 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 ; начало MainProc ; конец .
Вот скриншот вышеуказанной программы, запущенной под Linux.
fpGUI статически связан с программами и лицензирован с использованием модифицированной версии LGPL, специально разработанной для обеспечения статической связи с проприетарными программами. Единственный код, который вам нужно сделать доступным, это любые изменения, которые вы внесли в набор инструментов fpGUI — ничего больше.
.inf
/.hlp
просмотрщиков DocView можно использовать на 64-битной Windows