app/actions/tools-actions.c app/actions/tools-commands.[ch] applied a

2004-12-31  Michael Natterer  <mitch@gimp.org>

	* app/actions/tools-actions.c
	* app/actions/tools-commands.[ch]
	* app/widgets/gimptoolview.[ch]: applied a (modified) patch from
	Joao S. O. Bueno which adds "raise" and "lower" actions and
	their buttons in the tool dialog. Fixes bug #158666.
	Cleaned up the tool action callbacks.
This commit is contained in:
Michael Natterer 2004-12-31 13:29:39 +00:00 committed by Michael Natterer
parent 4df339c091
commit 8439ecb6da
6 changed files with 191 additions and 21 deletions

View file

@ -1,3 +1,12 @@
2004-12-31 Michael Natterer <mitch@gimp.org>
* app/actions/tools-actions.c
* app/actions/tools-commands.[ch]
* app/widgets/gimptoolview.[ch]: applied a (modified) patch from
Joao S. O. Bueno which adds "raise" and "lower" actions and
their buttons in the tool dialog. Fixes bug #158666.
Cleaned up the tool action callbacks.
2004-12-31 Sven Neumann <sven@gimp.org>
* plug-ins/imagemap/imap_preview.c (render_rgb_image): use the proper

View file

@ -53,6 +53,30 @@ static GimpActionEntry tools_actions[] =
{ "tools-transform-menu", NULL, N_("_Transform Tools") },
{ "tools-color-menu", NULL, N_("_Color Tools") },
{ "tools-raise", GTK_STOCK_GO_UP,
N_("R_aise Tool"), NULL,
N_("Raise tool"),
G_CALLBACK (tools_raise_cmd_callback),
NULL },
{ "tools-raise-to-top", GTK_STOCK_GOTO_TOP,
N_("Ra_ise to Top"), NULL,
N_("Raise tool to top"),
G_CALLBACK (tools_raise_to_top_cmd_callback),
NULL },
{ "tools-lower", GTK_STOCK_GO_DOWN,
N_("L_ower Tool"), NULL,
N_("Lower tool"),
G_CALLBACK (tools_lower_cmd_callback),
NULL },
{ "tools-lower-to-bottom", GTK_STOCK_GOTO_BOTTOM,
N_("Lo_wer to Bottom"), NULL,
N_("Lower tool to bottom"),
G_CALLBACK (tools_lower_to_bottom_cmd_callback),
NULL },
{ "tools-reset", GIMP_STOCK_RESET,
N_("_Reset Order & Visibility"), NULL,
N_("Reset tool order and visibility"),
@ -165,8 +189,11 @@ void
tools_actions_update (GimpActionGroup *group,
gpointer data)
{
GimpContext *context = gimp_get_user_context (group->gimp);
GimpToolInfo *tool_info = gimp_context_get_tool (context);
GimpContext *context = gimp_get_user_context (group->gimp);
GimpToolInfo *tool_info = gimp_context_get_tool (context);
GimpContainer *container = context->gimp->tool_info_list;
gboolean raise = FALSE;
gboolean lower = FALSE;
#define SET_SENSITIVE(action,condition) \
gimp_action_group_set_action_sensitive (group, action, (condition) != 0)
@ -176,7 +203,24 @@ tools_actions_update (GimpActionGroup *group,
SET_SENSITIVE ("tools-visibility", tool_info);
if (tool_info)
SET_ACTIVE ("tools-visibility", tool_info->visible);
{
gint last_index;
gint index;
SET_ACTIVE ("tools-visibility", tool_info->visible);
last_index = gimp_container_num_children (container) -1;
index = gimp_container_get_child_index (container,
GIMP_OBJECT (tool_info));
raise = index != 0;
lower = index != last_index;
}
SET_SENSITIVE ("tools-raise", raise);
SET_SENSITIVE ("tools-raise-to-top", raise);
SET_SENSITIVE ("tools-lower", lower);
SET_SENSITIVE ("tools-lower-to-bottom", lower);
#undef SET_SENSITIVE
#undef SET_ACTIVE

View file

@ -25,15 +25,8 @@
#include "core/gimp.h"
#include "core/gimpcontainer.h"
#include "core/gimpcontext.h"
#include "core/gimpimage.h"
#include "core/gimptoolinfo.h"
#include "widgets/gimpcontainereditor.h"
#include "widgets/gimpcontainerview.h"
#include "widgets/gimptoolview.h"
#include "display/gimpdisplay.h"
#include "tools/gimp-tools.h"
#include "tools/gimpimagemaptool.h"
#include "tools/tool_manager.h"
@ -81,29 +74,127 @@ tools_toggle_visibility_cmd_callback (GtkAction *action,
{
GimpContext *context;
GimpToolInfo *tool_info;
gboolean active;
return_if_no_context (context, data);
tool_info = gimp_context_get_tool (context);
active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
if (tool_info)
{
gboolean active =
gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
if (active != tool_info->visible)
g_object_set (tool_info, "visible", active, NULL);
if (active != tool_info->visible)
g_object_set (tool_info, "visible", active, NULL);
}
}
void
tools_raise_cmd_callback (GtkAction *action,
gpointer data)
{
GimpContext *context;
GimpToolInfo *tool_info;
return_if_no_context (context, data);
tool_info = gimp_context_get_tool (context);
if (tool_info)
{
GimpContainer *container;
gint index;
container = context->gimp->tool_info_list;
index = gimp_container_get_child_index (container,
GIMP_OBJECT (tool_info));
if (index > 0)
gimp_container_reorder (container, GIMP_OBJECT (tool_info), index - 1);
}
}
void
tools_raise_to_top_cmd_callback (GtkAction *action,
gpointer data)
{
GimpContext *context;
GimpToolInfo *tool_info;
return_if_no_context (context, data);
tool_info = gimp_context_get_tool (context);
if (tool_info)
{
GimpContainer *container;
gint index;
container = context->gimp->tool_info_list;
index = gimp_container_get_child_index (container,
GIMP_OBJECT (tool_info));
if (index > 0)
gimp_container_reorder (container, GIMP_OBJECT (tool_info), 0);
}
}
void
tools_lower_cmd_callback (GtkAction *action,
gpointer data)
{
GimpContext *context;
GimpToolInfo *tool_info;
return_if_no_context (context, data);
tool_info = gimp_context_get_tool (context);
if (tool_info)
{
GimpContainer *container;
gint index;
container = context->gimp->tool_info_list;
index = gimp_container_get_child_index (container,
GIMP_OBJECT (tool_info));
if (index + 1 < gimp_container_num_children (container))
gimp_container_reorder (container, GIMP_OBJECT (tool_info), index + 1);
}
}
void
tools_lower_to_bottom_cmd_callback (GtkAction *action,
gpointer data)
{
GimpContext *context;
GimpToolInfo *tool_info;
return_if_no_context (context, data);
tool_info = gimp_context_get_tool (context);
if (tool_info)
{
GimpContainer *container;
gint index;
container = context->gimp->tool_info_list;
index = gimp_container_num_children (container) - 1;
index = index >= 0 ? index : 0;
gimp_container_reorder (container, GIMP_OBJECT (tool_info), index);
}
}
void
tools_reset_cmd_callback (GtkAction *action,
gpointer data)
{
GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (data);
GimpContainer *container;
GimpContext *context;
GList *list;
gint i = 0;
GimpContext *context;
GimpContainer *container;
GList *list;
gint i = 0;
return_if_no_context (context, data);
container = gimp_container_view_get_container (editor->view);
context = gimp_container_view_get_context (editor->view);
container = context->gimp->tool_info_list;
for (list = gimp_tools_get_default_order (context->gimp);
list;

View file

@ -25,6 +25,16 @@ void tools_select_cmd_callback (GtkAction *action,
gpointer data);
void tools_toggle_visibility_cmd_callback (GtkAction *action,
gpointer data);
void tools_raise_cmd_callback (GtkAction *action,
gpointer data);
void tools_raise_to_top_cmd_callback (GtkAction *action,
gpointer data);
void tools_lower_cmd_callback (GtkAction *action,
gpointer data);
void tools_lower_to_bottom_cmd_callback (GtkAction *action,
gpointer data);
void tools_reset_cmd_callback (GtkAction *action,
gpointer data);

View file

@ -116,6 +116,8 @@ static void
gimp_tool_view_init (GimpToolView *view)
{
view->visible_handler_id = 0;
view->raise_button = NULL;
view->lower_button = NULL;
view->reset_button = NULL;
}
@ -163,6 +165,18 @@ gimp_tool_view_new (GimpViewType view_type,
editor = GIMP_CONTAINER_EDITOR (tool_view);
tool_view->raise_button =
gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "tools",
"tools-raise",
"tools-raise-to-top", GDK_SHIFT_MASK,
NULL);
tool_view->lower_button =
gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "tools",
"tools-lower",
"tools-lower-to-bottom", GDK_SHIFT_MASK,
NULL);
tool_view->reset_button =
gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "tools",
"tools-reset", NULL);

View file

@ -42,6 +42,8 @@ struct _GimpToolView
GQuark visible_handler_id;
GtkWidget *raise_button;
GtkWidget *lower_button;
GtkWidget *reset_button;
};