fpGUI

fpGUI
安定版リリース
v1.4.1 / 2015年9月2日; 10年前 (2015-09-02)
プレビューリリース
- / -
リポジトリ
  • git.code.sf.net/p/fpgui/code
記述言語Object Pascal
オペレーティングシステムUnix / Linux / BSD ( X11 )、WindowsOpenSolaris、ARM-Linux、WinCEデバイス。
タイプウィジェットツールキット
ライセンス静的リンク例外付きLGPL
ウェブサイトfpgui.sourceforge.net

Free Pascal GUIツールキットであるfpGUIは、Graeme Geldenhuysによって開発されたクロスプラットフォームのグラフィカルユーザーインターフェースツールキットです。fpGUIはオープンソースのフリーソフトウェアであり、修正LGPLライセンスの下でライセンスされています。このツールキットはFree Pascalコンパイラを使用して実装されており、 Object Pascal言語で記述されています

fpGUIは、グラフィカルウィジェットまたはコンポーネントと、クロスプラットフォームの2D描画ライブラリのみで構成されています。データベースレイヤー、3Dグラフィックス、XMLパーサーなどは実装していません。また、GTKやQtのような大規模なサードパーティライブラリにも依存していません。すべての追加機能は、Free Pascalコンパイラに標準で付属するFree Pascalコンポーネントライブラリ(FCL)から直接提供されています

歴史

fpGUIの最初のバージョンは、Sebastian Güntherによって2000年に作成されました。このプロジェクトは2002年に中止されました。fpGUIは、以前のOO GTKラッパーであるfpGTKの後継であり、複数の(バックエンド)ウィジェットセット、特にWin32を可能にするための、ほぼ完全なるスタートでした。このツールキットは、いくつかのFPC内部ツール(例:fpdocエディタ)に使用されましたが、ツールキットが真に有用となり、エンドユーザーが実際のアプリケーションで使用できるようになるまでには、まだ多くの未解決の問題が残っていました。これらのツールのほとんどは、2004年から2006年にかけて成熟しつつあったLazarusに移行されました。

グレアム・ゲルデンハイスは2006年半ば、セバスチャンが中断したツールキットを復活させました。彼は翌年もツールキットの開発を続けました。3つのサブプロジェクト(fpGFX、fpIMG、fpGUI)を単一のプロジェクトfpGUIに統合しました。グレアムはコンポーネント数とバックエンドグラフィックレイヤーの量を拡張し、ツールキット全体を改良しました。当時サポートされていたプラットフォームは、X11経由のLinuxFreeBSD、GDI経由のMicrosoft Windowsでした。数か月後、フェリペ・モンテイロ・デ・カルヴァーリョが開発チームに加わり、Windows Mobileデバイスのサポートを追加し、グラフィックサポートとデザインを拡張しました。フェリペはまた、Carbon経由でMac OS Xのサポートにも取り組み始めました

2007年6月初旬、Graemeはソースコードに重大な設計上の問題を発見しました。そのため、fpGUIは実際のアプリケーションで真に役立つものではありませんでした。数々のプロトタイプを経て、fpGUIプロジェクトは完全に書き直されました。過去の経験が大いに役立ち、新しい設計アイデアが実装されました。コードベースは最終的に、よりシンプルでクリーンな設計になりました。大きな変更点の1つは、すべてのウィジェットがマルチハンドル(ウィンドウ)設計に基づくようになったことです。各ウィジェットにはウィンドウハンドルが1つずつあります。同様の設計に従う他のGUIツールキットとしては、GTKXtFLTKなどがあります。反対の設計に従う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 ; 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' ; //ボタン右下隅に配置します。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.

Here is a screenshot of the above program when run under Linux.

Licensing

fpGUI is statically linked into programs and is licensed using a modified version of LGPL specially designed to allow static linking to proprietary programs. The only code you need to make available are any changes you made to the fpGUI toolkit - nothing more.

Software written with fpGUI

  • Master Maths
    Used in a computer-based training system. As well as a basic accounting and administration package for franchisees.
  • A Visual Form Designer which is now included as part of fpGUI. It allows the developer to create user interfaces at a much faster pace.
  • Unimesur and various tools
    Written by Jean-Marc, the Unimesur program allows to convert measurements of flows of liquids and gases, between mass and volume units. All results were verified for the exactness of the conversion factors.
  • fpGUI DocView現在Windows、[2] Linux、FreeBSDで動作するINFヘルプファイル
    ビューアです。INFはfpGUIのデフォルトのヘルプ形式であり、OS/2(およびeComStationArcaOS)でも使用されているヘルプ形式です。
  • Free Pascalテストフレームワーク
    コンソールとGUIテストランナーを備えたクロスプラットフォームのユニットテストフレームワークです。

参照

参考文献

  1. ^ 「Trolltech Labs Blogs » Qt Invaded By Aliens — The End of All Flicker」。2010年3月3日にオリジナルからアーカイブ。 2008年3月8日取得
  2. ^ 古い16ビットIPF .inf/.hlpビューアとは異なり、DocViewは64ビットWindowsで使用できます。
Retrieved from "https://en.wikipedia.org/w/index.php?title=FpGUI&oldid=1305053495"