Стабильный выпуск | v1.4.1 / 2 сентября 2015 г . |
---|---|
Предварительный выпуск | - / - |
Репозиторий | |
Написано в | Object Pascal |
Операционная система | Устройства Unix / Linux / BSD ( X11 ), Windows , OpenSolaris , ARM-Linux и WinCE. |
Тип | Набор инструментов для виджетов |
Лицензия | LGPL с исключением статического связывания |
Интернет сайт | fpgui |
fpGUI , набор инструментов графического интерфейса Free Pascal , представляет собой кроссплатформенный набор инструментов с графическим пользовательским интерфейсом, разработанный Грэмом Гелденхейсом. fpGUI является открытым исходным кодом и бесплатное программное обеспечение , лицензированное под модифицированной лицензией LGPL. Инструментарий был реализован с использованием компилятора Free Pascal , что означает, что он написан на языке Object Pascal .
fpGUI состоит только из графических виджетов или компонентов и кроссплатформенной библиотеки 2D-чертежей. Он не реализует слои базы данных, трехмерную графику, парсеры 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 был полностью переписан. Прошлый опыт очень помог, были реализованы новые дизайнерские идеи. В итоге кодовая база стала намного проще с более чистым дизайном. Одним из основных изменений было то, что все виджеты теперь были основаны на мульти-дескрипторном (оконном) дизайне. У каждого виджета теперь есть дескриптор окна. Другие наборы инструментов GUI, которые следуют аналогичному дизайну, - это GTK , Xt и FLTK, и это лишь некоторые из них. Наборы инструментов GUI, которые следуют противоположному дизайну, представляют собой такие инструменты, как последняя версия Qt [1] и MSEgui.
Пример программы [ править ]
Следующая программа показывает одно окно с кнопкой «Выход» в правом нижнем углу. На холсте (фоне) окна он рисует все стандартные встроенные изображения, используемые с fpGUI.
программа stdimglist ;{$ mode objfpc} {$ H +}использует классы , SysUtils , fpg_base , fpg_main , fpg_form , fpg_imgfmt_bmp , fpg_button ;тип TMainForm = class ( TfpgForm ) private btnClose : TfpgButton ; процедура btnCloseClick ( Отправитель : TObject ) ; защищенная процедура HandlePaint ; переопределить ; открытый конструктор Create ( владелец : TComponent ) ; переопределить ; процедура AfterCreate ; переопределить ; конец ;{TMainForm}процедура TMainForm . AfterCreate ; begin SetPosition ( 100 , 100 , 700 , 500 ) ; WindowTitle : = 'Список стандартных изображений fpGUI' ; // Поместите кнопку в нижний правый угол. btnClose : = CreateButton ( self , Ширина - 90 , Высота - 35 , 75 , «Выйти» , @ btnCloseClick ) ; btnClose . ImageName : = 'stdimg.quit' ; btnClose . Якоря : = [ anRight , anBottom ] ; конец ;процедура TMainForm . btnCloseClick ( Отправитель : TObject ) ; begin Close ; конец ;процедура TMainForm . HandlePaint ; var n : целое число ; x : TfpgCoord ; y : TfpgCoord ; sl : TStringList ; img : TfpgImage ; начать Canvas . BeginDraw ; // начинаем двойную буферизацию унаследованного HandlePaint ; sl : = TStringList . Создать ; х : = 8 ; у : = 8 ; fpgImages . ListImages ( сл ) ; для n : = от 0 до сл . Count - 1 делать начать Canvas . DrawString ( x , y , sl [ n ] + ':' ) ; img : = TfpgImage ( сл . Объекты [ n ]) ; если img <> nil, то Canvas . DrawImage ( x + 130 , y , img ) ; inc ( y , img . Height + 8 ) ; если y > Height - 32, то // самые большие изображения имеют высоту 32 begin inc ( x , 200 ) ; у : = 8 ; конец ; конец ; Холст . EndDraw ; сл . Бесплатно ; конец ;конструктор TMainForm . Создать ( владелец : TComponent ) ; begin унаследовано Create ( aowner ) ; (* ДО v1.4: // Поместите кнопку в нижний правый угол. BtnClose: = CreateButton (self, Width-90, Height-35, 75, 'Quit', @btnCloseClick); btnClose.ImageName: = 'stdimg. quit '; btnClose.Anchors: = [anRight, anBottom]; *) end ;процедура MainProc ; var frm : TMainForm ; начать fpgApplication . Инициализировать ; frm : = TMainForm . Создать ( ноль ) ; попробуйте frm . Показать ; fpgApplication . Беги ; наконец фрм . Бесплатно ; конец ; конец ;begin MainProc ; конец .
Вот скриншот вышеупомянутой программы, запущенной под Linux.
Лицензирование [ править ]
fpGUI статически связан с программами и лицензируется с использованием модифицированной версии LGPL, специально разработанной для статического связывания с проприетарными программами. Единственный код, который вам нужно сделать доступным, - это любые изменения, которые вы внесли в инструментарий fpGUI - не более того.
Программное обеспечение, написанное с помощью fpGUI [ править ]
- Магистр математики
Используется в компьютерной обучающей системе. А также базовый пакет бухгалтерского учета и администрирования для франчайзи. - Визуальный конструктор форм, который теперь включен как часть fpGUI. Это позволяет разработчику создавать пользовательские интерфейсы в гораздо более быстром темпе.
- Unimesur и различные инструменты Программа Unimesur,
написанная Жан-Марком, позволяет преобразовывать измерения потоков жидкостей и газов между единицами измерения массы и объема. Все результаты были проверены на точность коэффициентов пересчета. - fpGUI DocView INF файл справки Зритель , который в настоящее время работает на Windows, [2] Linux и FreeBSD. INF - это формат справки по умолчанию для fpGUI, а также формат справки, используемый в OS / 2 (а также eComStation и ArcaOS ).
- Free Pascal Testing Framework
Кросс-платформенная среда модульного тестирования с консолью и средством запуска тестов с графическим интерфейсом.
См. Также [ править ]
- Lazarus (программное обеспечение)
- Набор инструментов для виджетов
- Qt
- wxWidgets
- GTK +
- Набор инструментов FOX
- ФЛТК
Ссылки [ править ]
- ^ «Блоги Trolltech Labs» Qt, захваченный пришельцами - конец всякому мерцанию » . Архивировано из оригинала на 2010-03-03 . Проверено 8 марта 2008 .
- ^ В отличие от старых 16-битных IPF .inf/.hlp просмотрщиков, DocView можно использовать в 64-битной Windows
Внешние ссылки [ править ]
- официальный сайт fpGUI Toolkit
- Страница проекта SourceForge.net от fpGUI
- Бесплатный компилятор Паскаля
- Lazarus IDE