mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-26 20:43:41 +02:00
170 lines
4.4 KiB
ObjectPascal
170 lines
4.4 KiB
ObjectPascal
{$mode objfpc}
|
|
{$h+}
|
|
|
|
unit frmoptions;
|
|
|
|
interface
|
|
|
|
uses fpgtk,gtk,classes,sysutils;
|
|
|
|
Type
|
|
TOptionsForm = Class (TFPGtkWindow)
|
|
FTable : TFPGtkTable;
|
|
FLCreateBackup,
|
|
FLSkipEmptyNodes,
|
|
FLConfirmDelete,
|
|
FLMaxRecentUsed,
|
|
FLbackupExtension,
|
|
FLDefaultExtension : TFPGtkLabel;
|
|
FCreateBackup,
|
|
FSkipEmptyNodes,
|
|
FConfirmDelete : TFPGtkToggleButton;
|
|
FBackupExtension,
|
|
FDefaultExtension : TFPGtkEntry;
|
|
FMaxRecentUsed : TFPGtkSpinButton;
|
|
FSeparator : TFPGtkHSeparator;
|
|
FVBox : TFPgtkVBox;
|
|
FHBox : TFPgtkHBox;
|
|
FOK,
|
|
FCancel : TFPGtkButton;
|
|
FButtonBox: TFPgtkHBox;
|
|
Constructor Create;
|
|
Procedure CreateWindow;
|
|
Procedure OnShow(Sender : TFpGtkObject;Data : Pointer);
|
|
Procedure SaveResult(Sender : TFpGtkObject;Data : Pointer);
|
|
Procedure OptionsToForm;
|
|
Procedure FormToOptions;
|
|
end;
|
|
|
|
Implementation
|
|
|
|
uses fpdemsg,fpdeopts;
|
|
|
|
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,6);
|
|
FLCreateBackup:=MakeLabel(SOptCreateBackup);
|
|
FLSkipEmptyNodes:=MakeLabel(SOptSkipEmptyNodes);
|
|
FLConfirmDelete:=MakeLabel(SOptConfirmDelete);
|
|
FLbackupExtension:=MakeLabel(SOptBackupExtension);
|
|
FLDefaultExtension:=MakeLabel(SOptDefaultExtension);
|
|
FLMaxRecentUsed:=MakeLabel(SOptMaxRecentUsed);
|
|
FCreateBackup:=MakeCheck;
|
|
FSkipEmptyNodes:=MakeCheck;
|
|
FConfirmDelete:=MakeCheck;
|
|
FBackupExtension:=TFpGtkEntry.Create;
|
|
FDefaultExtension:=TFpGtkEntry.Create;
|
|
FMaxRecentUsed:=TFPGtkSpinButton.Create;
|
|
FMaxRecentUsed.Adjustment.Upper:=32;
|
|
OH:=GTK_EXPAND or GTK_FILL;
|
|
FTable.Attach(FLConfirmDelete ,0,1,0,1,GTK_FILL,0,4,4);
|
|
FTable.Attach(FLSkipEmptyNodes ,0,1,1,2,GTK_FILL,0,4,4);
|
|
FTable.Attach(FLCreatebackup ,0,1,2,3,GTK_FILL,0,4,4);
|
|
FTable.Attach(FLBackupExtension ,0,1,3,4,GTK_FILL,0,4,4);
|
|
FTable.Attach(FLDefaultExtension ,0,1,4,5,GTK_FILL,0,4,4);
|
|
FTable.Attach(FLMaxrecentUSed ,0,1,5,6,GTK_FILL,0,4,4);
|
|
|
|
FTable.Attach(PackBox(FConfirmDelete) ,1,2,0,1,0,GTK_FILL,4,4);
|
|
FTable.Attach(PackBox(FSkipEmptyNodes) ,1,2,1,2,0,GTK_FILL,4,4);
|
|
FTable.Attach(PackBox(FCreatebackup) ,1,2,2,3,0,GTK_FILL,4,4);
|
|
FTable.Attach(FBackupExtension ,1,2,3,4,0,GTK_FILL,4,4);
|
|
FTable.Attach(FDefaultExtension ,1,2,4,5,0,GTK_FILL,4,4);
|
|
FTable.Attach(FMaxRecentUsed ,1,2,5,6,0,GTK_FILL,4,4);
|
|
|
|
// button area
|
|
FOK:=TFpGtkButton.CreateWithLabel(SOK);
|
|
FOK.ConnectClicked(@SaveResult,Nil);
|
|
FCancel:=TFPgtkButton.CreateWithLabel(SCancel);
|
|
FCancel.ConnectCLicked(@CloseWithResult,IntToPointer(drCancel));
|
|
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
|
|
OptionsToForm;
|
|
FocusedWidget(FConfirmDelete);
|
|
end;
|
|
|
|
Procedure TOptionsForm.SaveResult(Sender : TFpgtkObject; Data : Pointer);
|
|
|
|
begin
|
|
FormToOptions;
|
|
CloseWithResult(Sender,IntToPointer(drOK));
|
|
end;
|
|
|
|
Procedure TOptionsForm.OptionsToForm;
|
|
|
|
begin
|
|
FCreateBackup.Active:=CreateBackup;
|
|
FSkipEmptyNodes.Active:=SkipEmptyNodes;
|
|
FConfirmDelete.Active:=ConfirmDelete;
|
|
FBackupExtension.Text:=BackupExtension;
|
|
FDefaultExtension.Text:=DefaultExtension;
|
|
FMaxRecentUsed.AsInteger:=MaxRecentUsed;
|
|
end;
|
|
|
|
Procedure TOptionsForm.FormToOptions;
|
|
|
|
begin
|
|
CreateBackup:=FCreateBackup.Active;
|
|
SkipEmptyNodes:=FSkipEmptyNodes.Active;
|
|
ConfirmDelete:=FConfirmDelete.Active;
|
|
BackupExtension:=FBackupExtension.Text;
|
|
DefaultExtension:=FDefaultExtension.Text;
|
|
MaxRecentUsed:=FMaxRecentUsed.AsInteger;
|
|
SaveOptions;
|
|
end;
|
|
|
|
end.
|