⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 confirmer.c

📁 Gcomm is a serial communications program similar to seyon, but more modern, and easier to use. Works
💻 C
字号:
#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <string.h>#include <gdk/gdkkeysyms.h>#include <gtk/gtk.h>#include "support.h"	/* Language support */extern	GtkTooltips	*tooltips ;#ifndef	_#define	_(s)	(s)#endifstatic	void	answer(GtkWidget *w, gpointer rval) ;	/* Create an OK/Cancel confirmer.  "Message" is the initial	 * value for the confirmer's text message.  "Parent" is the	 * window for which this confirmer is transient -- may be	 * specified as NULL.	 *	 * The returned widget will have the following properties set:	 *	label		label widget containing message	 *	okButton	"OK" button widget	 *	cancelButton	"Cancel" button widget	 *	result		True or False, depending on button pressed.	 */GtkWidget*create_confirmer (char *message, GtkWidget *parent){  GtkWidget *confirmer;  GtkWidget *okBut;  GtkWidget *cancelBut;  GtkAccelGroup *accel_group;  GtkWidget *lbl ;  GtkBox *vbox, *actionArea ;  accel_group = gtk_accel_group_new ();  confirmer = gtk_dialog_new() ;  gtk_signal_connect( GTK_OBJECT(confirmer), "delete_event",    GTK_SIGNAL_FUNC(gtk_widget_hide_on_delete), NULL) ;  if( parent != NULL )    gtk_window_set_transient_for(GTK_WINDOW(confirmer), GTK_WINDOW(parent)) ;  gtk_container_set_border_width( GTK_CONTAINER(confirmer), 4) ;  GTK_WINDOW (confirmer)->type = GTK_WINDOW_DIALOG;  gtk_window_set_position (GTK_WINDOW (confirmer), GTK_WIN_POS_MOUSE);#ifdef	COMMENT  gtk_window_set_modal (GTK_WINDOW (confirmer), TRUE);#endif	/* COMMENT */  gtk_window_set_policy (GTK_WINDOW (confirmer), FALSE, FALSE, TRUE);  vbox = GTK_BOX(GTK_DIALOG(confirmer)->vbox) ;  actionArea = GTK_BOX(GTK_DIALOG(confirmer)->action_area) ;  lbl = gtk_label_new(_(message)) ;  gtk_box_pack_start(vbox, lbl, FALSE, FALSE, 0) ;  gtk_widget_show( lbl ) ;  /* Cache the label so we can find it later */  gtk_object_set_data (GTK_OBJECT (confirmer), "label", lbl);  okBut = gtk_button_new_with_label(_("OK")) ;  gtk_box_pack_start(actionArea, okBut, FALSE, FALSE, 2) ;  gtk_tooltips_set_tip(tooltips, okBut,  	_("Really quit, connection may be broken"), NULL) ;  GTK_WIDGET_SET_FLAGS (okBut, GTK_CAN_DEFAULT | GTK_HAS_DEFAULT);  gtk_widget_add_accelerator (okBut, "clicked", accel_group,                              GDK_Return, 0, GTK_ACCEL_VISIBLE);  gtk_widget_show( okBut ) ;  gtk_object_set_data (GTK_OBJECT (confirmer), "okButton", okBut);  gtk_object_set_data (GTK_OBJECT (okBut), "confirmer", confirmer);  cancelBut = gtk_button_new_with_label(_("Cancel")) ;  gtk_box_pack_start(actionArea, cancelBut, FALSE, FALSE, 2) ;  gtk_tooltips_set_tip(tooltips, cancelBut, _("Don't quit"), NULL) ;  GTK_WIDGET_SET_FLAGS (cancelBut, GTK_CAN_DEFAULT);  gtk_widget_add_accelerator (cancelBut, "clicked", accel_group,                              GDK_Escape, 0, GTK_ACCEL_VISIBLE);  gtk_widget_show( cancelBut ) ;  gtk_object_set_data (GTK_OBJECT (confirmer), "cancelButton", cancelBut);  gtk_object_set_data (GTK_OBJECT (cancelBut), "confirmer", confirmer);  gtk_signal_connect( GTK_OBJECT(okBut), "clicked", answer, (gpointer) TRUE) ;  gtk_signal_connect( GTK_OBJECT(cancelBut), "clicked",  	answer, (gpointer) FALSE) ;#ifdef	COMMENT  gtk_widget_grab_default (okBut);#endif	/* COMMENT */  gtk_window_add_accel_group (GTK_WINDOW (confirmer), accel_group);  return confirmer;}	/* Display confirmer widget, wait for user to accept, cancel,	 * or dismiss the confirmer from the window manager.	 */gbooleanget_confirmation(GtkWidget *confirmer, gboolean dflt){	gint	id ;	GtkObject *co = GTK_OBJECT(confirmer) ;	gtk_object_set_data(co, "result", (gpointer)dflt) ;	gtk_object_set_data(co, "wantQuit", (gpointer)TRUE) ;	id = gtk_signal_connect( co, "delete_event",	  GTK_SIGNAL_FUNC(gtk_main_quit), NULL) ;	gtk_widget_show(confirmer) ;	gtk_main() ;	gtk_signal_disconnect( co, id ) ;	gtk_object_set_data(co, "wantQuit", (gpointer)FALSE) ;	return (gboolean) gtk_object_get_data(co, "result");}	/* Internal; find the confirmer that owns this widget, set	 * its "result" property.  Hide the confirmer window.	 */static	voidanswer(GtkWidget *w, gpointer rval){	GtkWidget	*confirmer ;	confirmer = gtk_object_get_data( GTK_OBJECT(w), "confirmer") ;	gtk_object_set_data(GTK_OBJECT(confirmer), "result", rval) ;	gtk_widget_hide(confirmer) ;	if( (gboolean)gtk_object_get_data( GTK_OBJECT(confirmer), "wantQuit") )	  gtk_main_quit() ;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -