fpGUI

Графический интерфейс пользователя, набор инструментов в Object Pascal
fpGUI
Стабильный релиз
v1.4.1 / 2 сентября 2015 г. ; 9 лет назад ( 2015-09-02 )
Предварительный релиз
- / -
Репозиторий
  • git.code.sf.net/p/fpgui/код
Написано вОбъектный Паскаль
Операционная системаУстройства 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 — ничего больше.

Программное обеспечение, написанное с помощью fpGUI

  • Мастер математики
    Используется в компьютерной системе обучения. А также как базовый пакет бухгалтерского учета и администрирования для франчайзи.
  • Визуальный конструктор форм, который теперь включен в состав fpGUI. Он позволяет разработчику создавать пользовательские интерфейсы гораздо быстрее.
  • Unimesur и различные инструменты
    Программа Unimesur, написанная Жаном-Марком, позволяет преобразовывать измерения потоков жидкостей и газов между единицами массы и объема. Все результаты были проверены на точность коэффициентов преобразования.
  • fpGUI DocView
    Средство просмотра файлов справки INF , которое в настоящее время работает в Windows, [2] Linux и FreeBSD. INF — это формат справки по умолчанию для fpGUI, а также формат справки, используемый в OS/2 (а также eComStation и ArcaOS ).
  • Бесплатная среда тестирования Pascal
    Кроссплатформенная среда модульного тестирования с консолью и графическим интерфейсом для запуска тестов.

Смотрите также

Ссылки

  1. ^ "Блоги Trolltech Labs » Qt Вторжение пришельцев — конец всему мерцанию". Архивировано из оригинала 2010-03-03 . Получено 2008-03-08 .
  2. ^ В отличие от старых 16-битных IPF .inf/.hlp просмотрщиков DocView можно использовать на 64-битной Windows
  • официальный сайт fpGUI Toolkit
  • Страница проекта SourceForge.net от fpGUI
  • Бесплатный компилятор Pascal Архивировано 25.01.1999 на Wayback Machine
  • Lazarus IDE
Взято с "https://en.wikipedia.org/w/index.php?title=FpGUI&oldid=1268124043"