app: add gimp_tool_gui_set_description() and use it

This commit is contained in:
Michael Natterer
2013-06-07 17:01:39 +02:00
parent 9a811d276e
commit 0afa7d30f0
3 changed files with 53 additions and 23 deletions

View File

@ -44,7 +44,7 @@ typedef struct _GimpToolGuiPrivate GimpToolGuiPrivate;
struct _GimpToolGuiPrivate
{
GimpToolInfo *tool_info;
gchar *desc;
gchar *description;
gboolean overlay;
@ -124,10 +124,10 @@ gimp_tool_gui_finalize (GObject *object)
{
GimpToolGuiPrivate *private = GET_PRIVATE (object);
if (private->desc)
if (private->description)
{
g_free (private->desc);
private->desc = NULL;
g_free (private->description);
private->description = NULL;
}
G_OBJECT_CLASS (gimp_tool_gui_parent_class)->finalize (object);
@ -136,11 +136,11 @@ gimp_tool_gui_finalize (GObject *object)
/**
* gimp_tool_gui_new:
* @tool_info: a #GimpToolInfo
* @desc: a string to use in the gui header or %NULL to use the help
* field from #GimpToolInfo
* @...: a %NULL-terminated valist of button parameters as described in
* gtk_gui_new_with_buttons().
* @tool_info: a #GimpToolInfo
* @description: a string to use in the gui header or %NULL to use the help
* field from #GimpToolInfo
* @...: a %NULL-terminated valist of button parameters as described in
* gtk_gui_new_with_buttons().
*
* This function creates a #GimpToolGui using the information stored
* in @tool_info.
@ -149,7 +149,7 @@ gimp_tool_gui_finalize (GObject *object)
**/
GimpToolGui *
gimp_tool_gui_new (GimpToolInfo *tool_info,
const gchar *desc,
const gchar *description,
gboolean overlay,
...)
{
@ -163,14 +163,13 @@ gimp_tool_gui_new (GimpToolInfo *tool_info,
private = GET_PRIVATE (gui);
private->tool_info = g_object_ref (tool_info);
private->desc = g_strdup (desc);
private->overlay = overlay;
private->tool_info = g_object_ref (tool_info);
private->description = g_strdup (description);
private->overlay = overlay;
if (overlay)
{
private->dialog = gimp_overlay_dialog_new (tool_info, desc, NULL);
private->dialog = gimp_overlay_dialog_new (tool_info, description, NULL);
g_object_ref_sink (private->dialog);
va_start (args, overlay);
@ -186,7 +185,7 @@ gimp_tool_gui_new (GimpToolInfo *tool_info,
}
else
{
private->dialog = gimp_tool_dialog_new (tool_info, desc, NULL);
private->dialog = gimp_tool_dialog_new (tool_info, description, NULL);
va_start (args, overlay);
gimp_dialog_add_buttons_valist (GIMP_DIALOG (private->dialog), args);
@ -201,6 +200,35 @@ gimp_tool_gui_new (GimpToolInfo *tool_info,
return gui;
}
void
gimp_tool_gui_set_description (GimpToolGui *gui,
const gchar *description)
{
GimpToolGuiPrivate *private;
g_return_if_fail (GIMP_IS_TOOL_GUI (gui));
private = GET_PRIVATE (gui);
if (description == private->description)
return;
g_free (private->description);
private->description = g_strdup (description);
if (! description)
description = private->tool_info->help;
if (private->overlay)
{
/* TODO */
}
else
{
g_object_set (private->dialog, "description", description, NULL);
}
}
void
gimp_tool_gui_set_shell (GimpToolGui *gui,
GimpDisplayShell *shell)

View File

@ -49,10 +49,13 @@ struct _GimpToolGuiClass
GType gimp_tool_gui_get_type (void) G_GNUC_CONST;
GimpToolGui * gimp_tool_gui_new (GimpToolInfo *tool_info,
const gchar *desc,
const gchar *description,
gboolean overlay,
...) G_GNUC_NULL_TERMINATED;
void gimp_tool_gui_set_description (GimpToolGui *gui,
const gchar *description);
void gimp_tool_gui_set_shell (GimpToolGui *gui,
GimpDisplayShell *shell);
void gimp_tool_gui_set_viewable (GimpToolGui *gui,

View File

@ -44,6 +44,7 @@
#include "widgets/gimpproptable.h"
#include "display/gimpdisplay.h"
#include "display/gimptoolgui.h"
#include "gimpcoloroptions.h"
#include "gimpoperationtool.h"
@ -202,9 +203,8 @@ gimp_operation_tool_dialog (GimpImageMapTool *image_map_tool)
}
if (tool->undo_desc)
g_object_set (GIMP_IMAGE_MAP_TOOL (tool)->gui,
"description", tool->undo_desc,
NULL);
gimp_tool_gui_set_description (GIMP_IMAGE_MAP_TOOL (tool)->gui,
tool->undo_desc);
}
static void
@ -448,9 +448,8 @@ gimp_operation_tool_set_operation (GimpOperationTool *tool,
}
if (undo_desc && GIMP_IMAGE_MAP_TOOL (tool)->gui)
g_object_set (GIMP_IMAGE_MAP_TOOL (tool)->gui,
"description", undo_desc,
NULL);
gimp_tool_gui_set_description (GIMP_IMAGE_MAP_TOOL (tool)->gui,
undo_desc);
if (GIMP_TOOL (tool)->drawable)
gimp_image_map_tool_preview (GIMP_IMAGE_MAP_TOOL (tool));