int clip_GTK_BUTTONGETUSESTOCK(ClipMachine * ClipMachineMemory) { C_widget *cbtn = _fetch_cw_arg(ClipMachineMemory); gboolean use_stock; CHECKCWID(cbtn, GTK_IS_BUTTON); use_stock = gtk_button_get_use_stock(GTK_BUTTON(cbtn->widget)); _clip_retl(ClipMachineMemory, use_stock); return 0; err: return 1; }
/** \brief Speical function to obtain the text assigned to the button widget. **/ Tcl_Obj *gnoclCgetButtonText ( Tcl_Interp *interp, GtkButton *button ) { Tcl_Obj *obj = NULL; if ( gtk_button_get_use_stock ( button ) ) { const char *st = gtk_button_get_label ( button ); if ( st == NULL ) { obj = Tcl_NewStringObj ( "", 0 ); } else { obj = Tcl_NewStringObj ( "%#", 2 ); Tcl_AppendObjToObj ( obj, gnoclGtkToStockName ( st ) ); } } else { GtkLabel *label = GTK_LABEL ( gnoclFindChild ( GTK_WIDGET ( button ), GTK_TYPE_LABEL ) ); Tcl_Obj *old = Tcl_NewStringObj ( gtk_label_get_label ( label ), -1 ); assert ( label ); if ( gtk_label_get_use_markup ( label ) ) { obj = Tcl_NewStringObj ( "%<", 2 ); Tcl_AppendObjToObj ( obj, old ); } else if ( gtk_label_get_use_underline ( label ) ) { obj = Tcl_NewStringObj ( "%_", 2 ); Tcl_AppendObjToObj ( obj, old ); } else { obj = old; } } return obj; }
/* Try to adjust some buttons to close the window on click */ void adjust_destroy (GtkWidget *widget, GtkWindow *win) { if (GTK_IS_BUTTON(widget) && \ gtk_button_get_use_stock (GTK_BUTTON(widget)) && \ (strncmp (gtk_button_get_label (GTK_BUTTON(widget)), "gtk-apply", 9) == 0 || \ strncmp (gtk_button_get_label (GTK_BUTTON(widget)), "gtk-cancel", 10) == 0 || \ strncmp (gtk_button_get_label (GTK_BUTTON(widget)), "gtk-close", 9) == 0)) { g_signal_connect_object (G_OBJECT(widget), "clicked", G_CALLBACK(gtk_widget_destroy), G_OBJECT(win), G_CONNECT_AFTER | G_CONNECT_SWAPPED); } else if (GTK_IS_CONTAINER(widget)) { gtk_container_foreach (widget, adjust_destroy, win); } }