fpc/utils/fpmc/frmoptions.pp
2005-02-14 17:13:06 +00:00

229 lines
6.2 KiB
ObjectPascal

{$mode objfpc}
{$h+}
unit frmoptions;
interface
uses fpgtk,gtk,classes,sysutils;
Type
TOptionsForm = Class (TFPGtkWindow)
Private
FTable : TFPGtkTable;
FLVerbose,
FLCreateMsgFile,
FLCreateRCFile,
FLCreatePasFile,
FLEscapePath,
FLLocale,
FLSubLocale,
FLUnitName : TFPGtkLabel;
FVerbose,
FCreateMsgFile,
FCreatePasFile,
FCreateRCFile,
FEscapePath : TFPGtkToggleButton;
FUnitName,
FLocale,
FSubLocale : TFPGtkEntry;
FMaxRecentUsed : TFPGtkSpinButton;
FSeparator : TFPGtkHSeparator;
FVBox : TFPgtkVBox;
FHBox : TFPgtkHBox;
FOK,
FCancel : TFPGtkButton;
FButtonBox: TFPgtkHBox;
Public
Constructor Create;
Procedure CreateWindow;
Procedure OnShow(Sender : TFpGtkObject;Data : Pointer);
Procedure SaveResult(Sender : TFpGtkObject;Data : Pointer);
Function GetBoolProp (Index : Integer) : Boolean;
Procedure SetBoolProp (Index : Integer; Value : Boolean);
Function GetStringProp (Index : Integer) : String;
Procedure SetStringProp (Index : Integer; Value : String);
Property CreateMsgFile : Boolean Index 1 Read GetBoolProp Write SetBoolProp;
Property CreatePasFile : Boolean Index 2 Read GetBoolProp Write SetBoolProp;
Property CreateRCFile : Boolean Index 3 Read GetBoolProp Write SetBoolProp;
Property EscapePath : Boolean Index 4 Read GetBoolProp Write SetBoolProp;
Property Verbose : Boolean Index 5 Read GetBoolProp Write SetBoolProp;
Property Locale : String Index 1 Read GetStringProp Write SetStringProp;
Property SubLocale : String Index 2 Read GetStringProp Write SetStringProp;
Property UnitName : String Index 3 Read GetStringProp Write SetStringProp;
end;
Implementation
ResourceString
SOptCreateMsgFile = 'Create message file';
SOptCreateRCFile = 'Create RC file';
SOptCreatePasFile = 'Create pascal file';
SOptEscapePath = 'Escape path delimiters';
SOptLocale = 'Locale ID';
SOptSubLocale = 'Sublocale ID';
SOptUnitName = 'Unit name';
SOK = 'OK';
SCancel = 'Cancel';
SOptVerbose = 'Be verbose';
Function MakeLabel(Caption : String) : TFPgtkLabel;
begin
Result:=TFPGtkLabel.Create(Caption);
Result.Justify:=GTK_JUSTIFY_RIGHT;
end;
Function MakeCheck : TFPgtkToggleButton;
begin
Result:=TFPgtkToggleButton.create;
Result.SetUsize(14,14);
end;
Constructor TOptionsForm.Create;
begin
Inherited Create(GTK_WINDOW_DIALOG);
CreateWindow;
end;
Function PackBox(W : TFpGtkWidget) : TFpGtkHbox;
begin
Result:=TFPGtkHBox.Create;
Result.PackStart(W,True,False,0);
end;
Procedure ToptionsForm.CreateWindow;
Var
OH,OV : TgtkAttachOPtions;
B : TfpgtkHbox;
begin
FVBox:=TFPGtkVBox.Create;
FVBox.Spacing:=4;
FVBox.Border:=8;
Add(FVBox);
// Table area
FTable:=TFPGtkTable.Create(2,8);
FLVerbose:=MakeLabel(SOptVerbose);
FLCreateMsgFile:=MakeLabel(SOptCreateMsgFile);
FLCreateRCFile:=MakeLabel(SOptCreateRCFile);
FLCreatePasFile:=MakeLabel(SOptCreatePasFile);
FLEscapePath:=MakeLabel(SOptEscapePath);
FLLocale:=MakeLabel(SOptLocale);
FLSubLocale:=MakeLabel(SOptSubLocale);
FLUnitName:=MakeLabel(SOptUnitName);
FVerbose:=MakeCheck;
FEscapePath:=MakeCheck;
FCreateMsgFile:=MakeCheck;
FCreateRCFile:=MakeCheck;
FCreatePasFile:=MakeCheck;
FUnitName:=TFpGtkEntry.Create;
FLocale:=TFpGtkEntry.Create;
FSubLocale:=TFpGtkEntry.Create;
OH:=GTK_EXPAND or GTK_FILL;
FTable.Attach(FLVerbose ,0,1,0,1,GTK_FILL,0,4,4);
FTable.Attach(FLCreateMsgFile ,0,1,1,2,GTK_FILL,0,4,4);
FTable.Attach(FLCreatePasFile ,0,1,2,3,GTK_FILL,0,4,4);
FTable.Attach(FLCreateRCFile ,0,1,3,4,GTK_FILL,0,4,4);
FTable.Attach(FLEscapePath ,0,1,4,5,GTK_FILL,0,4,4);
FTable.Attach(FLUnitName ,0,1,5,6,GTK_FILL,0,4,4);
FTable.Attach(FLLocale ,0,1,6,7,GTK_FILL,0,4,4);
FTable.Attach(FLSubLocale ,0,1,7,8,GTK_FILL,0,4,4);
FTable.Attach(PackBox(FVerbose) ,1,2,0,1,0,GTK_FILL,4,4);
FTable.Attach(PackBox(FCreateMsgFile) ,1,2,1,2,0,GTK_FILL,4,4);
FTable.Attach(PackBox(FCreatePasFile) ,1,2,2,3,0,GTK_FILL,4,4);
FTable.Attach(PackBox(FCreateRCFile) ,1,2,3,4,0,GTK_FILL,4,4);
FTable.Attach(PackBox(FEscapePath) ,1,2,4,5,0,GTK_FILL,4,4);
FTable.Attach(FUnitName ,1,2,5,6,0,GTK_FILL,4,4);
FTable.Attach(FLocale ,1,2,6,7,0,GTK_FILL,4,4);
FTable.Attach(FSubLocale ,1,2,7,8,0,GTK_FILL,4,4);
// button area
FOK:=TFpGtkButton.CreateWithLabel(SOK);
FOK.ConnectClicked(@SaveResult,Nil);
FCancel:=TFPgtkButton.CreateWithLabel(SCancel);
FCancel.ConnectCLicked(@CloseWindow,Nil);
FSeparator:=TFPgtkHSeparator.Create;
FButtonBox:=TfpGtkHBox.Create;
FButtonBox.Spacing:=4;
FButtonBox.PackEnd(FOK,false,false,4);
FButtonBox.PackEnd(FCancel,false,false,4);
// Add to window
FVBox.PackStart(FTable,False,False,0);
FVBox.PackStart(FSeparator,False,False,4);
FVBox.PackStart(FButtonBox,false,false,0);
// Some events;
ConnectShow(@OnShow,Nil);
end;
Procedure TOptionsForm.OnShow(Sender : TFpgtkObject; Data : Pointer);
begin
FocusedWidget(FCreateMsgFile);
end;
Procedure TOptionsForm.SaveResult(Sender : TFpgtkObject; Data : Pointer);
begin
CloseWithResult(Sender,IntToPointer(drOK));
end;
Function TOptionsForm.GetBoolProp (Index : Integer) : Boolean;
begin
Result:=False;
Case Index of
1 : Result:=FCreateMsgFile.Active;
2 : Result:=FCreatePasFile.Active;
3 : Result:=FCreateRCFile.Active;
4 : Result:=FEscapePath.Active;
5 : Result:=FVerbose.Active;
end;
end;
Procedure TOptionsForm.SetBoolProp (Index : Integer; Value : Boolean);
begin
Case Index of
1 : FCreateMsgFile.Active:=Value;
2 : FCreatePasFile.Active:=Value;
3 : FCreateRCFile.Active:=Value;
4 : FEscapePath.Active:=Value;
5 : FVerbose.Active:=Value;
end;
end;
Function TOptionsForm.GetStringProp (Index : Integer) : String;
begin
Result:='';
Case Index of
1 : Result:=Flocale.Text;
2 : Result:=FSublocale.Text;
3 : Result:=FUnitName.Text;
end;
end;
Procedure TOptionsForm.SetStringProp (Index : Integer; Value : String);
begin
Case Index of
1 : Flocale.Text:=Value;
2 : FSublocale.Text:=Value;
3 : FUnitName.Text:=Value;
end;
end;
end.