mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 05:11:34 +01: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.
 | 
