fpGUI
![]() | |
Стабильная версия | v1.4.1
/ 2 сентября 2015 г |
---|---|
Предварительный выпуск | -
/ - |
Репозиторий | |
Написано в | Объектный Паскаль |
Операционная система | Unix / Linux / BSD ( X11 ), Windows , OpenSolaris , ARM-Linux и WinCE. Устройства |
Тип | Набор инструментов для виджетов |
Лицензия | LGPL с исключением статической привязки |
Веб-сайт | 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, и это лишь некоторые из них. Наборы инструментов GUI, которые имеют противоположный дизайн, представляют собой наборы инструментов, подобные последнему Qt. [1] и MSEgui.
Пример программы
[ редактировать ]Следующая программа показывает одно окно с кнопкой «Выход» в правом нижнем углу. На холсте (фоне) окна рисуются все стандартные встроенные изображения, используемые с 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';
// 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 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);
(* PRIOR TO v1.4:
// 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 статически связывается с программами и лицензируется с использованием модифицированной версии LGPL, специально разработанной для обеспечения статического связывания с проприетарными программами. Единственный код, который вам нужно сделать доступным, — это любые изменения, внесенные вами в набор инструментов fpGUI, и не более того.
Программное обеспечение, написанное с использованием fpGUI
[ редактировать ]- Магистр математики
Используется в компьютерной системе обучения. А также базовый пакет бухгалтерского учета и администрирования для франчайзи. - Визуальный дизайнер форм, который теперь включен в состав fpGUI. Это позволяет разработчику создавать пользовательские интерфейсы гораздо быстрее.
- Unimesur и различные инструменты
Программа Unimesur, написанная Жан-Марком, позволяет преобразовывать измерения потоков жидкостей и газов между единицами массы и объема. Все результаты были проверены на точность коэффициентов пересчета. - fpGUI DocView
Средство просмотра файлов справки INF , которое в настоящее время работает в Windows, [2] Линукс и ФриБСД. INF — это формат справки по умолчанию для fpGUI, а также формат справки, используемый в OS/2 (а также в eComStation и ArcaOS ). - Бесплатная среда тестирования Pascal
Кроссплатформенная среда модульного тестирования с консолью и средством запуска тестов с графическим интерфейсом.
См. также
[ редактировать ]- Лазарь (программное обеспечение)
- Набор инструментов для виджетов
- Qt
- wxWidgets
- ГТК+
- Инструментарий FOX
- ФЛТК
Ссылки
[ редактировать ]- ^ «Блоги Trolltech Labs » Qt, захваченный инопланетянами — конец мерцанию» . Архивировано из оригинала 3 марта 2010 г. Проверено 8 марта 2008 г.
- ^ В отличие от старого 16-битного IPF
.inf
/.hlp
средства просмотра DocView можно использовать в 64-битной Windows.
Внешние ссылки
[ редактировать ]- Бесплатные компьютерные библиотеки
- Бесплатный Паскаль
- Бесплатное программное обеспечение, написанное на языке Паскаль.
- Библиотеки Паскаля (языка программирования)
- Инструменты программирования для Windows
- Программное обеспечение, использующее лицензию LGPL
- Наборы инструментов для виджетов
- Библиотеки на основе X
- Программное обеспечение Паскаль (язык программирования)