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

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.