fpGUI - fpGUI

fpGUI
Fpgui.png
Stabile Version
v1.4.1 / 2. September 2015 ; vor 5 Jahren  ( 02.09.2015 )
Vorschau Release
- / -
Repository Bearbeiten Sie dies bei Wikidata
Geschrieben in Objekt Pascal
Betriebssystem Unix / Linux / BSD ( X11 ) -, Windows- , OpenSolaris- , ARM-Linux- und WinCE-Geräte.
Art Widget-Toolkit
Lizenz LGPL mit statischer Verknüpfungsausnahme
Webseite fpgui .sourceforge .net

fpGUI , das Free Pascal GUI Toolkit, ist ein plattformübergreifendes Toolkit für grafische Benutzeroberflächen, das von Graeme Geldenhuys entwickelt wurde. fpGUI ist Open Source und freie Software , die unter einer modifizierten LGPL-Lizenz lizenziert ist. Das Toolkit wurde mit dem Free Pascal- Compiler implementiert , dh es ist in der Object Pascal- Sprache geschrieben.

fpGUI besteht nur aus grafischen Widgets oder Komponenten und einer plattformübergreifenden 2D-Zeichnungsbibliothek. Es werden keine Datenbankebenen, 3D-Grafiken, XML-Parser usw. implementiert. Es sind auch keine großen Bibliotheken von Drittanbietern wie GTK oder Qt erforderlich. Alle Extras stammen direkt aus dem Angebot der Free Pascal Component Library (FCL), die standardmäßig im Free Pascal- Compiler enthalten ist.

Geschichte

Die erste Version von fpGUI wurde bereits im Jahr 2000 von Sebastian Günther geschrieben. Das Projekt wurde dann im Jahr 2002 eingestellt. FpGUI war ein Nachfolger eines früheren OO GTK-Wrappers, fpGTK, und war so ziemlich ein Neuanfang, um mehrere (Backend-) Widgetsets zuzulassen. vor allem win32. Das Toolkit wurde für einige interne FPC-Tools (z. B. den fpdoc-Editor) verwendet, aber es waren noch viele Dinge offen, bevor das Toolkit wirklich nützlich sein und von Endbenutzern in realen Anwendungen verwendet werden konnte. Die meisten dieser Tools wurden im Zeitraum 2004-2006 auf den ausgereiften Lazarus migriert .

Graeme Geldenhuys hat das Toolkit Mitte 2006 wiederbelebt, als Sebastian aufgehört hat. Er entwickelte das Toolkit für das nächste Jahr weiter. Zusammenführen von drei Unterprojekten (fpGFX, fpIMG und fpGUI) zu einem einzigen Projekt fpGUI. Graeme erweiterte die Anzahl der Komponenten und die Anzahl der Backend-Grafikebenen und verbesserte das gesamte Toolkit. Die zu diesem Zeitpunkt unterstützten Plattformen waren Linux und FreeBSD über X11 und Microsoft Windows über GDI. Nach einigen Monaten trat Felipe Monteiro de Carvalho dem Entwicklungsteam bei und fügte Unterstützung für Windows Mobile-Geräte hinzu und erweiterte die Grafikunterstützung und das Grafikdesign. Felipe begann auch mit der Arbeit an der Mac OS X-Unterstützung über Carbon.

Anfang Juni 2007 fand Graeme einige wichtige Designprobleme in der Quellbasis. Dies verhinderte, dass fpGUI in realen Anwendungen wirklich nützlich war. Nach zahlreichen Prototypen wurde das fpGUI-Projekt komplett neu geschrieben. Erfahrungen aus der Vergangenheit haben viel geholfen und neue Designideen wurden umgesetzt. Die Codebasis wurde mit einem saubereren Design viel einfacher. Eine der wichtigsten Änderungen war, dass alle Widgets jetzt auf einem Design mit mehreren Handles (Fenstern) basierten. Jedes Widget hat jetzt ein Fensterhandle. Andere GUI-Toolkits, die einem ähnlichen Design folgen, sind GTK , Xt und FLTK, um nur einige zu nennen. GUI-Toolkits, die dem entgegengesetzten Design folgen, sind Toolkits wie das neueste Qt und MSEgui.

Beispielprogramm

Das folgende Programm zeigt ein einzelnes Fenster mit einer Schaltfläche "Beenden" unten rechts. Auf der Leinwand (Hintergrund) des Fensters werden alle mit fpGUI verwendeten Standardbilder gemalt.

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.

Hier ist ein Screenshot des obigen Programms, wenn es unter Linux ausgeführt wird.
Fpgui stdimglist.png

Lizenzierung

fpGUI ist statisch mit Programmen verknüpft und wird mit einer modifizierten Version von LGPL lizenziert, die speziell für die statische Verknüpfung mit proprietären Programmen entwickelt wurde. Der einzige Code, den Sie zur Verfügung stellen müssen, sind alle Änderungen, die Sie am fpGUI-Toolkit vorgenommen haben - mehr nicht.

Mit fpGUI geschriebene Software

  • Master Maths
    Wird in einem computergestützten Trainingssystem verwendet. Sowie ein grundlegendes Buchhaltungs- und Verwaltungspaket für Franchisenehmer.
  • Ein Visual Form Designer, der jetzt als Teil von fpGUI enthalten ist. Dadurch kann der Entwickler Benutzeroberflächen viel schneller erstellen.
  • Unimesur und verschiedene Werkzeuge Das
    von Jean-Marc geschriebene Unimesur-Programm ermöglicht die Umrechnung von Messungen von Flüssigkeits- und Gasströmen zwischen Massen- und Volumeneinheiten. Alle Ergebnisse wurden auf die Genauigkeit der Umrechnungsfaktoren überprüft.
  • fpGUI DocView
    Ein INF-Hilfedatei- Viewer, der derzeit unter Windows, Linux und FreeBSD funktioniert. INF ist das Standard-Hilfeformat von fpGUI und das in OS / 2 (und auch in eComStation und ArcaOS ) verwendete Hilfeformat .
  • Free Pascal Testing Framework
    Ein plattformübergreifendes Unit-Test-Framework mit einem Konsolen- und GUI-Testläufer.

Siehe auch

Verweise

Externe Links