mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 02:39:40 +01: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.
 |