mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-14 13:59:28 +02:00
229 lines
6.2 KiB
ObjectPascal
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.
|