app: add signal GimpToolWidget::status() and API to emit it

for subclasses to set status messages.
This commit is contained in:
Michael Natterer
2017-06-11 23:18:47 +02:00
parent 7841d04ee8
commit e05ba83453
2 changed files with 30 additions and 2 deletions

View File

@ -42,6 +42,7 @@ enum
enum
{
CHANGED,
STATUS,
LAST_SIGNAL
};
@ -97,6 +98,16 @@ gimp_tool_widget_class_init (GimpToolWidgetClass *klass)
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
widget_signals[STATUS] =
g_signal_new ("status",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (GimpToolWidgetClass, status),
NULL, NULL,
g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE, 1,
G_TYPE_STRING);
g_object_class_install_property (object_class, PROP_SHELL,
g_param_spec_object ("shell",
NULL, NULL,
@ -222,6 +233,16 @@ gimp_tool_widget_get_item (GimpToolWidget *widget)
return widget->private->item;
}
void
gimp_tool_widget_status (GimpToolWidget *widget,
const gchar *status)
{
g_return_if_fail (GIMP_IS_TOOL_WIDGET (widget));
g_signal_emit (widget, widget_signals[STATUS], 0,
status);
}
void
gimp_tool_widget_add_item (GimpToolWidget *widget,
GimpCanvasItem *item)

View File

@ -49,6 +49,8 @@ struct _GimpToolWidgetClass
/* signals */
void (* changed) (GimpToolWidget *widget);
void (* status) (GimpToolWidget *widget,
const gchar *status);
/* virtual functions */
gboolean (* button_press) (GimpToolWidget *widget,
@ -94,6 +96,11 @@ GType gimp_tool_widget_get_type (void) G_GNUC_CONST;
GimpDisplayShell * gimp_tool_widget_get_shell (GimpToolWidget *widget);
GimpCanvasItem * gimp_tool_widget_get_item (GimpToolWidget *widget);
/* for subclasses, to add emit status messages
*/
void gimp_tool_widget_status (GimpToolWidget *widget,
const gchar *status);
/* for subclasses, to add and manage their items
*/
void gimp_tool_widget_add_item (GimpToolWidget *widget,
@ -108,7 +115,7 @@ void gimp_tool_widget_push_group (GimpToolWidget *widget,
GimpCanvasGroup *group);
void gimp_tool_widget_pop_group (GimpToolWidget *widget);
/* convenience functions to add specific items
/* for subclasses, convenience functions to add specific items
*/
GimpCanvasItem * gimp_tool_widget_add_line (GimpToolWidget *widget,
gdouble x1,