summaryrefslogtreecommitdiff
path: root/gfx/gfxbase.pas
diff options
context:
space:
mode:
authorGraeme Geldenhuys <graemeg@users.sourceforge.net>2007-03-07 14:48:56 +0000
committerGraeme Geldenhuys <graemeg@users.sourceforge.net>2007-03-07 14:48:56 +0000
commite6714f4d892945103ef0e0339f101f958b40baf4 (patch)
tree6ddefc7525e6d11a51e5636da9e700cb71091411 /gfx/gfxbase.pas
parent7e5581b378b48ff731f2d3ea078ff8978f25e8aa (diff)
downloadfpGUI-e6714f4d892945103ef0e0339f101f958b40baf4.tar.xz
* Added a new unit to manage command line parameters.
* TFCustomApplication now checks for parameters before entering the event loop. -? will show the help without running the application. * -display parameter is now supported for X11 systems.
Diffstat (limited to 'gfx/gfxbase.pas')
-rw-r--r--gfx/gfxbase.pas235
1 files changed, 128 insertions, 107 deletions
diff --git a/gfx/gfxbase.pas b/gfx/gfxbase.pas
index 3a1994a9..7ca51cb0 100644
--- a/gfx/gfxbase.pas
+++ b/gfx/gfxbase.pas
@@ -424,8 +424,9 @@ type
private
FOnIdle: TNotifyEvent;
FQuitWhenLastWindowCloses: Boolean;
- FDisplayName: String;
protected
+ FDisplayName: String;
+ DoBreakRun: Boolean;
FTitle: String;
procedure SetTitle(const ATitle: String);
public
@@ -436,7 +437,7 @@ type
procedure AddWindow(AWindow: TFCustomWindow); virtual;
procedure RemoveWindow(AWindow: TFCustomWindow); virtual;
procedure Initialize(ADisplayName: String = ''); virtual; abstract;
- procedure Run; virtual; abstract;
+ procedure Run; virtual;
procedure Quit; virtual; abstract;
{ Properties }
property OnIdle: TNotifyEvent read FOnIdle write FOnIdle;
@@ -589,8 +590,9 @@ function KeycodeToText(Key: Word; ShiftState: TShiftState): String;
implementation
-//uses
-// GFXInterface; { Just to get FPC to compile the TGfxCanvas descendants }
+uses
+ CommandLineParams
+ ;
{ Exceptions }
@@ -1220,112 +1222,112 @@ begin
end;
case Key of
- keyNul: s := 'Null';
- keyBackSpace: s := 'Backspace';
- keyTab: s := 'Tab';
- keyLinefeed: s := 'Linefeed';
- keyReturn: s := 'Enter';
- keyEscape: s := 'Esc';
- Ord(' '): s := 'Space';
- keyDelete: s := 'Del';
- keyVoid: s := 'Void';
- keyBreak: s := 'Break';
- keyScrollForw: s := 'ScrollForw';
- keyScrollBack: s := 'ScrollBack';
- keyBoot: s := 'Boot';
- keyCompose: s := 'Compose';
- keySAK: s := 'SAK';
- keyUndo: s := 'Undo';
- keyRedo: s := 'Redo';
- keyMenu: s := 'Menu';
- keyCancel: s := 'Cancel';
- keyPrintScreen: s := 'PrtScr';
- keyExecute: s := 'Exec';
- keyFind: s := 'Find';
- keyBegin: s := 'Begin';
- keyClear: s := 'Clear';
- keyInsert: s := 'Ins';
- keySelect: s := 'Select';
- keyMacro: s := 'Macro';
- keyHelp: s := 'Help';
- keyDo: s := 'Do';
- keyPause: s := 'Pause';
- keySysRq: s := 'SysRq';
- keyModeSwitch: s := 'ModeSw';
- keyUp: s := 'Up';
- keyDown: s := 'Down';
- keyLeft: s := 'Left';
- keyRight: s := 'Right';
- keyPrior: s := 'PgUp';
- keyNext: s := 'PgDown';
- keyHome: s := 'Home';
- keyEnd: s := 'End';
- keyF0..keyF64: s := 'F' + IntToStr(Key - keyF0);
- keyP0..keyP9: s := 'KP' + Chr(Key - keyP0 + Ord('0'));
- keyPA..keyPF: s := 'KP' + Chr(Key - keyPA + Ord('A'));
+ keyNul: s := 'Null';
+ keyBackSpace: s := 'Backspace';
+ keyTab: s := 'Tab';
+ keyLinefeed: s := 'Linefeed';
+ keyReturn: s := 'Enter';
+ keyEscape: s := 'Esc';
+ Ord(' '): s := 'Space';
+ keyDelete: s := 'Del';
+ keyVoid: s := 'Void';
+ keyBreak: s := 'Break';
+ keyScrollForw: s := 'ScrollForw';
+ keyScrollBack: s := 'ScrollBack';
+ keyBoot: s := 'Boot';
+ keyCompose: s := 'Compose';
+ keySAK: s := 'SAK';
+ keyUndo: s := 'Undo';
+ keyRedo: s := 'Redo';
+ keyMenu: s := 'Menu';
+ keyCancel: s := 'Cancel';
+ keyPrintScreen: s := 'PrtScr';
+ keyExecute: s := 'Exec';
+ keyFind: s := 'Find';
+ keyBegin: s := 'Begin';
+ keyClear: s := 'Clear';
+ keyInsert: s := 'Ins';
+ keySelect: s := 'Select';
+ keyMacro: s := 'Macro';
+ keyHelp: s := 'Help';
+ keyDo: s := 'Do';
+ keyPause: s := 'Pause';
+ keySysRq: s := 'SysRq';
+ keyModeSwitch: s := 'ModeSw';
+ keyUp: s := 'Up';
+ keyDown: s := 'Down';
+ keyLeft: s := 'Left';
+ keyRight: s := 'Right';
+ keyPrior: s := 'PgUp';
+ keyNext: s := 'PgDown';
+ keyHome: s := 'Home';
+ keyEnd: s := 'End';
+ keyF0..keyF64: s := 'F' + IntToStr(Key - keyF0);
+ keyP0..keyP9: s := 'KP' + Chr(Key - keyP0 + Ord('0'));
+ keyPA..keyPF: s := 'KP' + Chr(Key - keyPA + Ord('A'));
keyPPlus, keyPMinus, keyPSlash, keyPStar, keyPEqual, keyPSeparator,
keyPDecimal, keyPParenLeft, keyPParenRight, keyPSpace, keyPEnter,
- keyPTab: s := 'KP' + GetASCIIText;
- keyPPlusMinus: s := 'KPPlusMinus';
- keyPBegin: s := 'KPBegin';
- keyPF1..keyPF9: s := 'KPF' + IntToStr(Key - keyPF1);
- keyShiftL: s := 'ShiftL';
- keyShiftR: s := 'ShiftR';
- keyCtrlL: s := 'CtrlL';
- keyCtrlR: s := 'CtrlR';
- keyAltL: s := 'AltL';
- keyAltR: s := 'AltR';
- keyMetaL: s := 'MetaL';
- keyMetaR: s := 'MetaR';
- keySuperL: s := 'SuperL';
- keySuperR: s := 'SuperR';
- keyHyperL: s := 'HyperL';
- keyHyperR: s := 'HyperR';
- keyAltGr: s := 'AltGr';
- keyCaps: s := 'Caps';
- keyNum: s := 'Num';
- keyScroll: s := 'Scroll';
- keyShiftLock: s := 'ShiftLock';
- keyCtrlLock: s := 'CtrlLock';
- keyAltLock: s := 'AltLock';
- keyMetaLock: s := 'MetaLock';
- keySuperLock: s := 'SuperLock';
- keyHyperLock: s := 'HyperLock';
- keyAltGrLock: s := 'AltGrLock';
- keyCapsLock: s := 'CapsLock';
- keyNumLock: s := 'NumLock';
- keyScrollLock: s := 'ScrollLock';
- keyDeadRing: s := 'DeadRing';
- keyDeadCaron: s := 'DeadCaron';
- keyDeadOgonek: s := 'DeadOgonek';
- keyDeadIota: s := 'DeadIota';
- keyDeadDoubleAcute: s := 'DeadDoubleAcute';
- keyDeadBreve: s := 'DeadBreve';
- keyDeadAboveDot: s := 'DeadAboveDot';
- keyDeadBelowDot: s := 'DeadBelowDot';
- keyDeadVoicedSound: s := 'DeadVoicedSound';
+ keyPTab: s := 'KP' + GetASCIIText;
+ keyPPlusMinus: s := 'KPPlusMinus';
+ keyPBegin: s := 'KPBegin';
+ keyPF1..keyPF9: s := 'KPF' + IntToStr(Key - keyPF1);
+ keyShiftL: s := 'ShiftL';
+ keyShiftR: s := 'ShiftR';
+ keyCtrlL: s := 'CtrlL';
+ keyCtrlR: s := 'CtrlR';
+ keyAltL: s := 'AltL';
+ keyAltR: s := 'AltR';
+ keyMetaL: s := 'MetaL';
+ keyMetaR: s := 'MetaR';
+ keySuperL: s := 'SuperL';
+ keySuperR: s := 'SuperR';
+ keyHyperL: s := 'HyperL';
+ keyHyperR: s := 'HyperR';
+ keyAltGr: s := 'AltGr';
+ keyCaps: s := 'Caps';
+ keyNum: s := 'Num';
+ keyScroll: s := 'Scroll';
+ keyShiftLock: s := 'ShiftLock';
+ keyCtrlLock: s := 'CtrlLock';
+ keyAltLock: s := 'AltLock';
+ keyMetaLock: s := 'MetaLock';
+ keySuperLock: s := 'SuperLock';
+ keyHyperLock: s := 'HyperLock';
+ keyAltGrLock: s := 'AltGrLock';
+ keyCapsLock: s := 'CapsLock';
+ keyNumLock: s := 'NumLock';
+ keyScrollLock: s := 'ScrollLock';
+ keyDeadRing: s := 'DeadRing';
+ keyDeadCaron: s := 'DeadCaron';
+ keyDeadOgonek: s := 'DeadOgonek';
+ keyDeadIota: s := 'DeadIota';
+ keyDeadDoubleAcute: s := 'DeadDoubleAcute';
+ keyDeadBreve: s := 'DeadBreve';
+ keyDeadAboveDot: s := 'DeadAboveDot';
+ keyDeadBelowDot: s := 'DeadBelowDot';
+ keyDeadVoicedSound: s := 'DeadVoicedSound';
keyDeadSemiVoicedSound: s := 'DeadSemiVoicedSound';
- keyDeadAcute: s := 'DeadAcute';
- keyDeadCedilla: s := 'DeadCedilla';
- keyDeadCircumflex: s := 'DeadCircumflex';
- keyDeadDiaeresis: s := 'DeadDiaeresis';
- keyDeadGrave: s := 'DeadGrave';
- keyDeadTilde: s := 'DeadTilde';
- keyDeadMacron: s := 'DeadMacron';
-
- keyEcuSign: s := 'Ecu';
- keyColonSign: s := 'Colon';
- keyCruzeiroSign: s := 'Cruzeiro';
- keyFFrancSign: s := 'FFranc';
- keyLiraSign: s := 'Lira';
- keyMillSign: s := 'Mill';
- keyNairaSign: s := 'Naira';
- keyPesetaSign: s := 'Peseta';
- keyRupeeSign: s := 'Rupee';
- keyWonSign: s := 'Won';
+ keyDeadAcute: s := 'DeadAcute';
+ keyDeadCedilla: s := 'DeadCedilla';
+ keyDeadCircumflex: s := 'DeadCircumflex';
+ keyDeadDiaeresis: s := 'DeadDiaeresis';
+ keyDeadGrave: s := 'DeadGrave';
+ keyDeadTilde: s := 'DeadTilde';
+ keyDeadMacron: s := 'DeadMacron';
+
+ keyEcuSign: s := 'Ecu';
+ keyColonSign: s := 'Colon';
+ keyCruzeiroSign: s := 'Cruzeiro';
+ keyFFrancSign: s := 'FFranc';
+ keyLiraSign: s := 'Lira';
+ keyMillSign: s := 'Mill';
+ keyNairaSign: s := 'Naira';
+ keyPesetaSign: s := 'Peseta';
+ keyRupeeSign: s := 'Rupee';
+ keyWonSign: s := 'Won';
keyNewSheqelSign: s := 'NewShequel';
- keyDongSign: s := 'Dong';
- keyEuroSign: s := 'Euro';
+ keyDongSign: s := 'Dong';
+ keyEuroSign: s := 'Euro';
else
s := '#' + IntToHex(Key, 4);
end;
@@ -1342,7 +1344,10 @@ end;
constructor TFCustomApplication.Create;
begin
inherited Create(nil);
- FDisplayName := '';
+ if gCommandLineParams.IsParam('display') then
+ FDisplayName := gCommandLineParams.GetParam('display')
+ else
+ FDisplayName := '';
Forms := TList.Create;
FQuitWhenLastWindowCloses := True;
end;
@@ -1364,6 +1369,22 @@ begin
Forms.Remove(AWindow);
end;
+procedure TFCustomApplication.Run;
+begin
+ DoBreakRun := False;
+
+ if gCommandLineParams.IsParam('?') then
+ begin
+ writeln(' The following parameters are supported by fpGUI applications.');
+ writeln(' ');
+ writeln(' -? Shows this help');
+ writeln(' -display fpGUI/X11 only: sets the display to use');
+ writeln(' -style Overrides the default (autodetected) GUI style');
+ writeln(' ');
+ DoBreakRun := True;
+ end;
+end;
+
{procedure TFCustomApplication.CreateForm(AForm: TCustomForm);
var
form: PForm;