summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: b87ac1b)
raw | patch | inline | side by side (parent: b87ac1b)
author | joncruz <joncruz@users.sourceforge.net> | |
Mon, 9 Apr 2007 21:32:41 +0000 (21:32 +0000) | ||
committer | joncruz <joncruz@users.sourceforge.net> | |
Mon, 9 Apr 2007 21:32:41 +0000 (21:32 +0000) |
src/ink-action.cpp | patch | blob | history | |
src/ink-action.h | patch | blob | history |
diff --git a/src/ink-action.cpp b/src/ink-action.cpp
index 7764acc318de73679f4234b1a2c5955f1dd94f98..ecdc8e63cc933ae7a30c39779bb60b222864da97 100644 (file)
--- a/src/ink-action.cpp
+++ b/src/ink-action.cpp
static void ink_action_class_init( InkActionClass* klass );
static void ink_action_init( InkAction* action );
+static void ink_action_finalize( GObject* obj );
static void ink_action_get_property( GObject* obj, guint propId, GValue* value, GParamSpec * pspec );
static void ink_action_set_property( GObject* obj, guint propId, const GValue *value, GParamSpec* pspec );
static GtkActionClass* gInkActionParentClass = 0;
+struct _InkActionPrivate
+{
+ gchar* iconId;
+ Inkscape::IconSize iconSize;
+};
+
+#define INK_ACTION_GET_PRIVATE( o ) ( G_TYPE_INSTANCE_GET_PRIVATE( (o), INK_ACTION_TYPE, InkActionPrivate ) )
+
GType ink_action_get_type( void )
{
static GType myType = 0;
gInkActionParentClass = GTK_ACTION_CLASS( g_type_class_peek_parent( klass ) );
GObjectClass * objClass = G_OBJECT_CLASS( klass );
+ objClass->finalize = ink_action_finalize;
objClass->get_property = ink_action_get_property;
objClass->set_property = ink_action_set_property;
(int)Inkscape::ICON_SIZE_DECORATION,
(int)Inkscape::ICON_SIZE_SMALL_TOOLBAR,
(GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT) ) );
+
+ g_type_class_add_private( klass, sizeof(InkActionClass) );
}
}
static void ink_action_init( InkAction* action )
{
+ action->private_data = INK_ACTION_GET_PRIVATE( action );
+ action->private_data->iconId = 0;
+ action->private_data->iconSize = Inkscape::ICON_SIZE_SMALL_TOOLBAR;
+}
+
+static void ink_action_finalize( GObject* obj )
+{
+ InkAction* action = INK_ACTION( obj );
+
+ g_free( action->private_data->iconId );
+ g_free( action->private_data );
+
}
InkAction* ink_action_new( const gchar *name,
@@ -117,13 +141,13 @@ static void ink_action_get_property( GObject* obj, guint propId, GValue* value,
switch ( propId ) {
case PROP_INK_ID:
{
- //g_value_set_pointer( value, action->private_data->adj );
+ g_value_set_string( value, action->private_data->iconId );
}
break;
case PROP_INK_SIZE:
{
- //g_value_set_pointer( value, action->private_data->adj );
+ g_value_set_int( value, action->private_data->iconSize );
}
break;
@@ -139,50 +163,51 @@ void ink_action_set_property( GObject* obj, guint propId, const GValue *value, G
switch ( propId ) {
case PROP_INK_ID:
{
-// gchar* tmp = action->private_data->iconId;
-// action->private_data->iconId = g_value_dup_string( value );
-// g_free( tmp );
+ gchar* tmp = action->private_data->iconId;
+ action->private_data->iconId = g_value_dup_string( value );
+ g_free( tmp );
}
break;
case PROP_INK_SIZE:
{
-// action->private_data->iconSize = g_value_get_( value );
+ action->private_data->iconSize = (Inkscape::IconSize)g_value_get_int( value );
}
break;
default:
+ {
G_OBJECT_WARN_INVALID_PROPERTY_ID( obj, propId, pspec );
+ }
}
}
static GtkWidget* ink_action_create_menu_item( GtkAction* action )
{
- GtkWidget* item = 0;
- g_message("INK ACTION CREATE MENU ITEM");
- item = gInkActionParentClass->create_menu_item( action );
+ GtkWidget* item = gInkActionParentClass->create_menu_item( action );
+
return item;
}
static GtkWidget* ink_action_create_tool_item( GtkAction* action )
{
- GtkWidget* item = 0;
- g_message("INK ACTION CREATE TOOL ITEM");
-
-
- //item = gInkActionParentClass->create_tool_item( action );
- GtkTooltips *tt = gtk_tooltips_new();
- GtkWidget *button = sp_button_new_from_data( Inkscape::ICON_SIZE_DECORATION,
- SP_BUTTON_TYPE_NORMAL,
- NULL,
- "use_pressure",
- _("Use the pressure of the input device to alter the width of the pen"),
- tt);
- //g_signal_connect_after (G_OBJECT (button), "clicked", G_CALLBACK (sp_ddc_pressure_state_changed), NULL);
- //gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), prefs_get_int_attribute ("tools.calligraphic", "usepressure", 1));
- item = GTK_WIDGET(gtk_tool_item_new());
- gtk_container_add( GTK_CONTAINER(item), button );
+ InkAction* act = INK_ACTION( action );
+ GtkWidget* item = gInkActionParentClass->create_tool_item(action);
+
+ if ( act->private_data->iconId ) {
+ if ( GTK_IS_TOOL_BUTTON(item) ) {
+ GtkToolButton* button = GTK_TOOL_BUTTON(item);
+ GtkWidget* child = sp_icon_new( act->private_data->iconSize, act->private_data->iconId );
+ gtk_tool_button_set_icon_widget( button, child );
+ } else {
+ // For now trigger a warning but don't do anything else
+ GtkToolButton* button = GTK_TOOL_BUTTON(item);
+ (void)button;
+ }
+ }
+
+ // TODO investigate if needed
gtk_widget_show_all( item );
return item;
diff --git a/src/ink-action.h b/src/ink-action.h
index 8e82efeda9c4ab60fc6c9664fdd9cb102cb75a39..7ff7ab7d8f8652dbd385aeb2e1c83d0b749a02a9 100644 (file)
--- a/src/ink-action.h
+++ b/src/ink-action.h
G_END_DECLS
#endif /* SEEN_INK_ACTION */
-
-