| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 | {$mode objfpc}{$h+}unit frmoptions;interfaceuses 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;ImplementationResourceString  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.
 |