stringtranslate.com

fpGUI

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

fpGUI состоит только из графических виджетов или компонентов и кроссплатформенной библиотеки 2D-рисования. Он не реализует уровни базы данных, 3D-графику, анализаторы XML и т. д. Он также не использует какие-либо огромные сторонние библиотеки, такие как GTK или Qt. Все дополнительные возможности взяты непосредственно из библиотеки компонентов Free Pascal (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 был полностью переписан. Прошлый опыт очень помог и были реализованы новые дизайнерские идеи. База кода оказалась намного проще и с более чистым дизайном. Одним из основных изменений было то, что все виджеты теперь имели многоканальный (оконный) дизайн. Каждый виджет теперь имеет дескриптор окна. Другими наборами инструментов графического пользовательского интерфейса, имеющими аналогичный дизайн, являются GTK , Xt и FLTK , и это лишь некоторые из них. Наборы инструментов для графического пользовательского интерфейса, имеющие противоположный дизайн, представляют собой такие наборы инструментов, как последние версии Qt [1] и MSEgui.

Пример программы

Следующая программа показывает одно окно с кнопкой «Выход» в правом нижнем углу. На холсте (фоне) окна рисуются все стандартные встроенные изображения, используемые с fpGUI.

программа stdimglist ; {$mode objfpc}{$H+}использует классы , SysUtils , fpg_base , fpg_main , fpg_form , fpg_imgfmt_bmp , fpg_button ;       тип TMainForm = класс ( TfpgForm ) частный btnClose : TfpgButton ; процедура btnCloseClick ( Отправитель : TObject ) ; защищенная процедура HandlePaint ; переопределить ; открытый конструктор Create ( владелец : TComponent ) ; переопределить ; процедура AfterCreate ; переопределить ; конец ;                     { TMainForm }процедура TMainForm . ПослеСоздать ; начать SetPosition ( 100 , 100 , 700 , 500 ) ; WindowTitle := 'Список стандартных изображений fpGUI' ; // Размещаем кнопку в правом нижнем углу. btnClose := CreateButton ( self , Width - 90 , Height - 35 , 75 , ' Quit' , @btnCloseClick ) ; btnЗакрыть . Имя_изображения := 'stdimg.quit' ; btnЗакрыть . Якоря := [ anRight , anBottom ] ; конец ;                     процедура TMainForm . btnCloseClick ( Отправитель : TObject ) ; начать Закрыть ; конец ;   процедура TMainForm . РучкаPaint ; вар n : целое число ; х : ТфпгКоорд ; у : ТфпгКоорд ; сл : TStringList ; img : TfpgImage ; начать Холст . Начать рисовать ; // начинаем двойную буферизацию, унаследованную HandlePaint ;                сл := TStringList . Создавать ; х := 8 ; у := 8 ; fpgImages . СписокИзображений ( сл ) ; для n := 0 до sl . Сосчитайте 1 , начните Canvas . DrawString ( x , y , sl [ n ] + ':' ) ; img := TfpgImage ( sl . Objects [ n ]) ; если img <> nil , то Canvas . DrawImage ( x + 130 , y , img ) ;                                  inc ( y , img . Высота + 8 ) ; if y > Height - 32 then // самые большие изображения имеют высоту 32 Begin Inc ( x , 200 ) ; у := 8 ; конец ; конец ;                Холст . КонецDraw ; сл . Бесплатно ; конец ; конструктор TMainForm . Создать ( владелец : TComponent ) ; начать унаследованное Create ( aowner ) ; (* ДО версии 1.4:  // Размещаем кнопку в правом нижнем углу.  btnClose := CreateButton(self, Width-90, Height-35, 75, 'Quit', @btnCloseClick);  btnClose.ImageName := 'stdimg. quit';  btnClose.Anchors := [anRight, anBottom]; *) end ;    процедура MainProc ; вар frm : TMainForm ; начать fpgApplication . Инициализировать ; frm := TMainForm . Создать ( ноль ) ; попробуйте от . Показывать ; fpgApplication . Бегать ; наконец от . Бесплатно ; конец ; конец ;              начать MainProc ; конец . 

Вот скриншот вышеуказанной программы при запуске под Linux.

Лицензирование

fpGUI статически связывается с программами и лицензируется с использованием модифицированной версии LGPL, специально разработанной для обеспечения статического связывания с проприетарными программами. Единственный код, который вам нужно сделать доступным, — это любые изменения, внесенные вами в набор инструментов fpGUI, и не более того.

Программное обеспечение, написанное с использованием fpGUI

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

Рекомендации

  1. ^ «Блоги Trolltech Labs» Qt, захваченный инопланетянами — конец мерцанию» . Архивировано из оригинала 3 марта 2010 г. Проверено 8 марта 2008 г.
  2. ^ В отличие от старых 16-битных IPF .inf/.hlp программ просмотра DocView можно использовать в 64-битной Windows.

Внешние ссылки