static void gtk_volume_button_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtkScaleButton *button = GTK_SCALE_BUTTON (object); switch (prop_id) { case PROP_SYMBOLIC: if (get_symbolic (button) != g_value_get_boolean (value)) { if (g_value_get_boolean (value)) gtk_scale_button_set_icons (button, (const char **) icons_symbolic); else gtk_scale_button_set_icons (button, (const char **) icons); g_object_notify_by_pspec (object, pspec); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static VALUE scalebutton_initialize(int argc, VALUE *argv, VALUE self) { VALUE arg1, arg2, arg3, arg4, arg5; GtkWidget *widget; gdouble min = 0; gdouble max = 100; gdouble step = 2; rb_scan_args(argc, argv, "14", &arg1, &arg2, &arg3, &arg4, &arg5); if (!NIL_P(arg2)) min = NUM2DBL(arg2); if (!NIL_P(arg3)) max = NUM2DBL(arg3); if (!NIL_P(arg4)) step = NUM2DBL(arg4); widget = gtk_scale_button_new(RVAL2GENUM(arg1, GTK_TYPE_ICON_SIZE), min, max, step, NULL); RBGTK_INITIALIZE(self, widget); if (!NIL_P(arg5)) { const gchar **icons = RVAL2STRV(arg5); gtk_scale_button_set_icons(_SELF(self), icons); g_free(icons); } return Qnil; }
static void gtk_scale_button_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtkScaleButton *button = GTK_SCALE_BUTTON (object); switch (prop_id) { case PROP_ORIENTATION: gtk_scale_button_set_orientation (button, g_value_get_enum (value)); break; case PROP_VALUE: gtk_scale_button_set_value (button, g_value_get_double (value)); break; case PROP_SIZE: { GtkIconSize size; size = g_value_get_enum (value); if (button->priv->size != size) { button->priv->size = size; gtk_scale_button_update_icon (button); } } break; case PROP_ADJUSTMENT: gtk_scale_button_set_adjustment (button, g_value_get_object (value)); break; case PROP_ICONS: gtk_scale_button_set_icons (button, (const gchar **)g_value_get_boxed (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static GtkWidget* create_tool_item( GtkAction* action ) { GtkWidget* item = 0; if ( IS_EGE_ADJUSTMENT_ACTION(action) ) { EgeAdjustmentAction* act = EGE_ADJUSTMENT_ACTION( action ); GtkWidget* spinbutton = 0; GtkWidget* hb = gtk_hbox_new( FALSE, 5 ); GValue value; memset( &value, 0, sizeof(value) ); g_value_init( &value, G_TYPE_STRING ); g_object_get_property( G_OBJECT(action), "short_label", &value ); const gchar* sss = g_value_get_string( &value ); if ( act->private_data->appearanceMode == APPEARANCE_FULL ) { spinbutton = gtk_hscale_new( act->private_data->adj); gtk_widget_set_size_request(spinbutton, 100, -1); gtk_scale_set_digits (GTK_SCALE(spinbutton), 0); gtk_signal_connect(GTK_OBJECT(spinbutton), "format-value", GTK_SIGNAL_FUNC(slider_format_falue), (void *) sss); #if GTK_CHECK_VERSION(2,12,0) } else if ( act->private_data->appearanceMode == APPEARANCE_MINIMAL ) { spinbutton = gtk_scale_button_new( GTK_ICON_SIZE_MENU, 0, 100, 2, 0 ); gtk_scale_button_set_adjustment( GTK_SCALE_BUTTON(spinbutton), act->private_data->adj ); gtk_scale_button_set_icons( GTK_SCALE_BUTTON(spinbutton), floogles ); #endif /* GTK_CHECK_VERSION(2,12,0) */ } else { spinbutton = gtk_spin_button_new( act->private_data->adj, act->private_data->climbRate, act->private_data->digits ); } item = GTK_WIDGET( gtk_tool_item_new() ); { GValue tooltip; memset( &tooltip, 0, sizeof(tooltip) ); g_value_init( &tooltip, G_TYPE_STRING ); g_object_get_property( G_OBJECT(action), "tooltip", &tooltip ); const gchar* tipstr = g_value_get_string( &tooltip ); if ( tipstr && *tipstr ) { if ( !act->private_data->toolTips ) { act->private_data->toolTips = gtk_tooltips_new(); } gtk_tooltips_set_tip( act->private_data->toolTips, spinbutton, tipstr, 0 ); } } if ( act->private_data->appearanceMode != APPEARANCE_FULL ) { GtkWidget* lbl = gtk_label_new( sss ? sss : "wwww" ); GtkWidget* filler1 = gtk_label_new(" "); gtk_misc_set_alignment( GTK_MISC(lbl), 1.0, 0.5 ); gtk_box_pack_start( GTK_BOX(hb), filler1, FALSE, FALSE, 0 ); gtk_box_pack_start( GTK_BOX(hb), lbl, FALSE, FALSE, 0 ); } if ( act->private_data->appearanceMode == APPEARANCE_FULL ) { gtk_box_pack_start( GTK_BOX(hb), spinbutton, TRUE, TRUE, 0 ); } else { gtk_box_pack_start( GTK_BOX(hb), spinbutton, FALSE, FALSE, 0 ); } gtk_container_add( GTK_CONTAINER(item), hb ); if ( act->private_data->selfId ) { g_object_set_data( G_OBJECT(spinbutton), act->private_data->selfId, spinbutton ); } g_signal_connect( G_OBJECT(spinbutton), "focus-in-event", G_CALLBACK(focus_in_cb), action ); g_signal_connect( G_OBJECT(spinbutton), "focus-out-event", G_CALLBACK(focus_out_cb), action ); g_signal_connect( G_OBJECT(spinbutton), "key-press-event", G_CALLBACK(keypress_cb), action ); g_signal_connect( G_OBJECT(spinbutton), "value-changed", G_CALLBACK(value_changed_cb), action ); g_signal_connect_swapped( G_OBJECT(spinbutton), "event", G_CALLBACK(event_cb), action ); if ( act->private_data->appearanceMode == APPEARANCE_FULL ) { /* */ #if GTK_CHECK_VERSION(2,12,0) } else if ( act->private_data->appearanceMode == APPEARANCE_MINIMAL ) { /* */ #endif /* GTK_CHECK_VERSION(2,12,0) */ } else { gtk_entry_set_width_chars( GTK_ENTRY(spinbutton), act->private_data->digits + 3 ); } gtk_widget_show_all( item ); /* Shrink or whatnot after shown */ if ( act->private_data->toolPost ) { act->private_data->toolPost( item ); } } else { item = gParentClass->create_tool_item( action ); } return item; }