fpGUI , el kit de herramientas de interfaz gráfica de usuario de Free Pascal , es un kit de herramientas de interfaz gráfica de usuario multiplataforma desarrollado por Graeme Geldenhuys. fpGUI es un software libre y de código abierto , con licencia LGPL modificada. El kit de herramientas se ha implementado utilizando el compilador de Free Pascal , lo que significa que está escrito en el lenguaje Object Pascal .
fpGUI consta únicamente de componentes o widgets gráficos y una biblioteca de dibujo 2D multiplataforma. No implementa capas de base de datos, gráficos 3D, analizadores XML, etc. Tampoco depende de ninguna biblioteca de terceros como GTK o Qt. Todos los extras provienen directamente de lo que está disponible con la biblioteca de componentes Free Pascal (FCL), que viene de serie con el compilador Free Pascal .
Historia
La primera versión de fpGUI fue escrita por Sebastian Günther en el año 2000. El proyecto fue abandonado en el año 2002. fpGUI fue el sucesor de un contenedor GTK orientado a objetos anterior, fpGTK, y fue prácticamente un nuevo comienzo para permitir múltiples conjuntos de widgets (de backend), en particular win32. El kit de herramientas se utilizó para algunas herramientas internas de FPC (por ejemplo, el editor fpdoc), pero todavía había muchos problemas pendientes antes de que el kit de herramientas pudiera ser realmente útil y pudiera ser utilizado en aplicaciones de la vida real por los usuarios finales. La mayoría de estas herramientas se migraron al maduro Lazarus en el período 2004-2006.
Graeme Geldenhuys revivió el kit de herramientas a mediados de 2006, donde Sebastian lo había dejado. Continuó desarrollando el kit de herramientas durante el año siguiente. Fusionó tres subproyectos (fpGFX, fpIMG y fpGUI) en un solo proyecto, fpGUI. Graeme amplió el número de componentes y la cantidad de capas gráficas de backend, y mejoró el kit de herramientas en general. Las plataformas compatibles en esa etapa eran Linux y FreeBSD a través de X11 y Microsoft Windows a través de GDI. Después de unos meses, Felipe Monteiro de Carvalho se unió al equipo de desarrollo agregando soporte para dispositivos Windows Mobile y ampliando el soporte y diseño de gráficos. Felipe también comenzó a trabajar en el soporte para Mac OS X a través de Carbon.
A principios de junio de 2007, Graeme encontró algunos problemas de diseño importantes en la base de código fuente. Esto impidió que fpGUI fuera realmente útil en aplicaciones reales. Después de numerosos prototipos, el proyecto fpGUI se reescribió por completo. La experiencia previa ayudó mucho y se implementaron nuevas ideas de diseño. La base de código terminó siendo mucho más simple con un diseño más limpio. Uno de los cambios principales fue que todos los widgets ahora se basaban en un diseño de múltiples controladores (ventanas). Cada widget ahora tiene un controlador de ventana. Otros kits de herramientas GUI que siguen un diseño similar son GTK , Xt y FLTK, por nombrar algunos. Los kits de herramientas GUI que siguen el diseño opuesto son kits de herramientas como el último Qt [1] y MSEgui.
Programa de ejemplo
El siguiente programa muestra una única ventana con un botón "Salir" en la parte inferior derecha. En el lienzo (fondo) de la ventana se pintan todas las imágenes estándar integradas que se utilizan con fpGUI.
programa stdimglist ;
{$modo objfpc}{$H+}
utiliza
Clases , SysUtils , fpg_base , fpg_main , fpg_form , fpg_imgfmt_bmp , fpg_button ;
tipo
TMainForm = clase ( TfpgForm ) privada btnClose : TfpgButton ; procedimiento btnCloseClick ( Sender : TObject ) ; procedimiento protegido HandlePaint ; anular ; constructor público Create ( aowner : TComponent ) ; anular ; procedimiento AfterCreate ; anular ; fin ;
{ Formulario principal T }
procedimiento TMainForm . AfterCreate ; begin SetPosition ( 100 , 100 , 700 , 500 ) ; WindowTitle := 'Listado de imágenes estándar de fpGUI' ; // Colocar el botón en la esquina inferior derecha. btnClose := CreateButton ( self , Width - 90 , Height - 35 , 75 , 'Quit' , @ btnCloseClick ) ; btnClose . ImageName := 'stdimg.quit' ; btnClose . Anchors := [ anRight , anBottom ] ; end ;
procedimiento TMainForm .btnCloseClick ( Sender : TObject ) ; comenzar Cerrar ; fin ;
procedimiento TMainForm . HandlePaint ; var n : entero ; x : TfpgCoord ; y : TfpgCoord ; sl : TStringList ; img : TfpgImage ; comenzar Canvas . BeginDraw ; // comenzar el doble almacenamiento en búfer heredado HandlePaint ;
sl := TStringList . Create ; x := 8 ; y := 8 ; fpgImages . ListImages ( sl ) ; para n := 0 a sl . Count - 1 hacer begin Canvas . DrawString ( x , y , sl [ n ] + ':' ) ; img := TfpgImage ( sl . Objects [ n ] ) ; si img <> nil entonces Canvas . DrawImage ( x + 130 , y , img ) ;
inc ( y , img . Altura + 8 ) ; si y > Altura - 32 entonces // las imágenes más grandes tienen una altura de 32 begin inc ( x , 200 ) ; y := 8 ; end ; end ;
Lienzo . FinDraw ;
sl . Libre ; fin ;
constructor TMainForm . Create ( aowner : TComponent ) ; begin heredado Create ( aowner ) ; (* ANTES DE v1.4: // Colocar el botón en la esquina inferior derecha. btnClose := CreateButton(self, Width-90, Height-35, 75, 'Quit', @btnCloseClick); btnClose.ImageName := 'stdimg.quit'; btnClose.Anchors := [anRight, anBottom]; *) end ;
procedimiento MainProc ; var frm : TMainForm ; inicio fpgApplication . Inicializar ; frm := TMainForm . Crear ( nil ) ; intentar frm . Mostrar ; fpgApplication . Ejecutar ; finalmente frm . Libre ; fin ; fin ;
comienza
MainProc ; termina .
Aquí hay una captura de pantalla del programa anterior cuando se ejecuta en Linux.
Licencias
fpGUI está enlazado estáticamente a los programas y tiene licencia con una versión modificada de LGPL especialmente diseñada para permitir enlaces estáticos a programas propietarios. El único código que debe poner a disposición son los cambios que haya realizado en el kit de herramientas fpGUI, nada más.
Software escrito con fpGUI
- Master Maths
Se utiliza en un sistema de formación basado en ordenador. Además de un paquete básico de contabilidad y administración para franquiciados. - Un diseñador de formularios visuales que ahora se incluye como parte de fpGUI. Permite al desarrollador crear interfaces de usuario a un ritmo mucho más rápido.
- Unimesur y diversas herramientas
Escrito por Jean-Marc, el programa Unimesur permite convertir medidas de caudales de líquidos y gases, entre unidades de masa y de volumen. Todos los resultados fueron verificados para comprobar la exactitud de los factores de conversión. - fpGUI DocView
Un visor de archivos de ayuda INF que actualmente funciona en Windows, [2] Linux y FreeBSD. INF es el formato de ayuda predeterminado de fpGUI y también es el formato de ayuda utilizado en OS/2 (y también en eComStation y ArcaOS ). - Marco de pruebas Free Pascal
Un marco de pruebas unitarias multiplataforma con un ejecutor de pruebas de consola y GUI.
Véase también
Referencias
- ^ "Blogs de Trolltech Labs » Qt invadido por extraterrestres: el fin de todo Flicker". Archivado desde el original el 2010-03-03 . Consultado el 2008-03-08 .
- ^ A diferencia de los antiguos visualizadores IPF de 16 bits, DocView se puede utilizar en Windows de 64 bits
.inf.hlp
Enlaces externos
- Sitio web oficial del kit de herramientas fpGUI
- Página del proyecto SourceForge.net de fpGUI
- Compilador de Free Pascal Archivado el 25 de enero de 1999 en Wayback Machine
- IDE de Lázaro