mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 17:51:38 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			88 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
| unit frmmask;
 | |
| 
 | |
| {$mode objfpc}
 | |
| 
 | |
| Interface
 | |
| 
 | |
| uses glib,gdk,gtk;
 | |
| 
 | |
| Type
 | |
|   TMaskCallBack = Procedure (Mask : String; Data : Pointer);
 | |
|   TMaskForm = Record
 | |
|     Window : PGtkDialog;
 | |
|     EMask : PGtkEntry;
 | |
|     LEMAsk : PGtkLabel;
 | |
|     HBox : PGtkBox;
 | |
|     OKButton,
 | |
|     CancelButton : PGtkButton;
 | |
|     Mask : ShortString;
 | |
|     CallBack : TMaskCallBack;
 | |
|     CallBackData : Pointer;
 | |
|   end;
 | |
|   PMaskForm = ^TMaskForm;
 | |
| 
 | |
| Function NewMaskForm : PMaskForm;
 | |
| 
 | |
| Implementation
 | |
| 
 | |
| Const
 | |
|   SEnterMask : PChar = 'Enter new file mask';
 | |
|   SNewMask : PChar = 'New mask';
 | |
|   SOK : PChar = ' OK ';
 | |
|   SCancel : PChar = ' Cancel ';
 | |
|   
 | |
| Procedure ApplyMask(Widget : PGtkWidget; Window : PMaskForm);cdecl;
 | |
| 
 | |
| begin
 | |
|   With Window^ do
 | |
|     begin
 | |
|     Mask:=StrPas(gtk_entry_get_text(EMask));
 | |
|     If (CallBack<>Nil) then
 | |
|       CallBack(Mask,CallBackData);
 | |
|     end;  
 | |
| end;
 | |
| 
 | |
| Procedure DestroyMaskForm(Widget : PGtkWidget; Window : PMaskForm);cdecl;
 | |
| 
 | |
| begin
 | |
|   Dispose(Window);
 | |
| end;
 | |
| 
 | |
| Function NewMaskForm : PMaskForm;
 | |
| 
 | |
| begin
 | |
|   Result:=New(PMaskForm);
 | |
|   With Result^ do
 | |
|     begin
 | |
|     Window:=PGtkDialog(gtk_dialog_new);
 | |
|     gtk_window_set_title(PgtkWindow(Window),SEnterMask);
 | |
|     gtk_widget_set_usize(PGtkWidget(Window),350,150);
 | |
|     gtk_window_set_policy(PgtkWindow(Window),0,0,0);
 | |
|     gtk_window_set_position(PGtkWindow(Window),GTK_WIN_POS_CENTER);
 | |
|     OKButton:=PGtkButton(gtk_button_new_with_label(SOK));
 | |
|     CancelButton:=PGtkButton(gtk_button_new_with_label(SCancel));
 | |
|     gtk_box_pack_end(PgtkBox(Window^.action_area),PGtkWidget(Okbutton),False,False,5);
 | |
|     gtk_box_pack_end(PgtkBox(Window^.action_area),PGtkWidget(Cancelbutton),False,False,5);
 | |
|     Emask:=PGtkEntry(gtk_entry_new_with_max_length(255));
 | |
|     LEMask:=PGtkLabel(gtk_label_new(SNewMask));
 | |
|     HBox:=PGtkBox(gtk_hbox_new(False,8));
 | |
|     gtk_box_pack_start(PgtkBox(HBox),PGtkWidget(LEMask),True,False,0);
 | |
|     gtk_box_pack_start(PgtkBox(HBox),PGtkWidget(EMask),True,False,0);
 | |
|     gtk_box_pack_start(PGtkBox(Window^.vbox),PGtkWidget(HBox),True,True,10);
 | |
|     gtk_window_set_modal(PGtkWindow(Window),TRUE);
 | |
|     gtk_signal_connect(PgtkObject(OKButton),'clicked',
 | |
|                       TGtkSignalFunc(@ApplyMask),Result);
 | |
|     gtk_signal_connect_object(PgtkObject(OKButton),'clicked',
 | |
|                       GTK_SIGNAL_FUNC(@gtk_widget_destroy),
 | |
|                       PGTKOBJECT(Window));
 | |
|     gtk_signal_connect_object(PgtkObject(CancelButton),'clicked',
 | |
|                       GTK_SIGNAL_FUNC(@gtk_widget_destroy),
 | |
|                       PGTKOBJECT(Window));
 | |
|     gtk_signal_connect(PgtkObject(Window),'destroy',
 | |
|                       TGtkSignalFunc(@DestroyMaskForm),Result);
 | |
|     CallBack:=Nil;
 | |
|     CallBackdata:=Nil;                  
 | |
|     end;
 | |
| end;
 | |
| 
 | |
| end. | 
