static void gimp_controller_info_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { GimpControllerInfo *info = GIMP_CONTROLLER_INFO (object); switch (property_id) { case PROP_ENABLED: info->enabled = g_value_get_boolean (value); break; case PROP_DEBUG_EVENTS: info->debug_events = g_value_get_boolean (value); break; case PROP_CONTROLLER: if (info->controller) { g_signal_handlers_disconnect_by_func (info->controller, gimp_controller_info_event, info); g_object_unref (info->controller); } info->controller = g_value_dup_object (value); if (info->controller) { GimpControllerClass *controller_class; g_signal_connect_object (info->controller, "event", G_CALLBACK (gimp_controller_info_event), G_OBJECT (info), 0); controller_class = GIMP_CONTROLLER_GET_CLASS (info->controller); gimp_viewable_set_icon_name (GIMP_VIEWABLE (info), controller_class->icon_name); } break; case PROP_MAPPING: if (info->mapping) g_hash_table_unref (info->mapping); info->mapping = g_value_dup_boxed (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } }
static void gimp_device_info_guess_icon (GimpDeviceInfo *info) { GimpViewable *viewable = GIMP_VIEWABLE (info); if (gimp_object_get_name (viewable) && ! strcmp (gimp_viewable_get_icon_name (viewable), GIMP_VIEWABLE_GET_CLASS (viewable)->default_icon_name)) { const gchar *icon_name = NULL; gchar *down = g_ascii_strdown (gimp_object_get_name (viewable), -1); if (strstr (down, "eraser")) { icon_name = GIMP_STOCK_TOOL_ERASER; } else if (strstr (down, "pen")) { icon_name = GIMP_STOCK_TOOL_PAINTBRUSH; } else if (strstr (down, "airbrush")) { icon_name = GIMP_STOCK_TOOL_AIRBRUSH; } else if (strstr (down, "cursor") || strstr (down, "mouse") || strstr (down, "pointer") || strstr (down, "touchpad") || strstr (down, "trackpoint")) { icon_name = GIMP_STOCK_CURSOR; } g_free (down); if (icon_name) gimp_viewable_set_icon_name (viewable, icon_name); } }