gimp/app/widgets/gimptooloptionseditor.c

525 lines
18 KiB
C
Raw Normal View History

/* GIMP - The GNU Image Manipulation Program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* gimptooloptionseditor.c
* Copyright (C) 2003 Michael Natterer <mitch@gimp.org>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <gtk/gtk.h>
Makefile.am configure.in added the new library below. 2001-01-24 Michael Natterer <mitch@gimp.org> * Makefile.am * configure.in * gimptool.in: added the new library below. * libgimpwidgets/Makefile.am * libgimpwidgets/gimpchainbutton.[ch] * libgimpwidgets/gimpcolorarea.[ch] * libgimpwidgets/gimpcolorbutton.[ch] * libgimpwidgets/gimpdialog.[ch] * libgimpwidgets/gimpfileselection.[ch] * libgimpwidgets/gimphelpui.[ch] * libgimpwidgets/gimppatheditor.[ch] * libgimpwidgets/gimppixmap.[ch] * libgimpwidgets/gimpquerybox.[ch] * libgimpwidgets/gimpsizeentry.[ch] * libgimpwidgets/gimpunitmenu.[ch] * libgimpwidgets/gimpwidgets.[ch] * libgimpwidgets/gimpwidgets.def * libgimpwidgets/gimpwidgetstypes.h: new shared library. Currently there are some ugly dependencies into libgimp. These will be removed and go to a "libgimpglue" library which will be a library for functions which share a common interface between plug-ins and the app but have different implementations. Include "libgimp/gimpunit.h" from "libgimpwidgets/gimpwidgetstypes.h" to simulate this upcoming separation. * libgimp/Makefile.am * libgimp/gimpchainbutton.[ch] * libgimp/gimpcolorarea.[ch] * libgimp/gimpcolorbutton.[ch] * libgimp/gimpdialog.[ch] * libgimp/gimpfileselection.[ch] * libgimp/gimphelpui.[ch] * libgimp/gimppatheditor.[ch] * libgimp/gimppixmap.[ch] * libgimp/gimpquerybox.[ch] * libgimp/gimpsizeentry.[ch] * libgimp/gimpunitmenu.[ch] * libgimp/gimpwidgets.[ch]: removed from here. * libgimp/gimpui.h * libgimp/gimpuitypes.h * libgimp/makefile.mingw.in * libgimp/makefile.msc: changed accordingly. * app/[all ui files] * app/pdb/palette_cmds.c * app/pdb/tools_cmds.c * tools/pdbgen/pdb/palette.pdb * tools/pdbgen/pdb/tools.pdb: #include "libgimpwidgets/gimpwidgets.h" and removed useless includes. * app/apptypes.h: #include "libgimpwidgets/gimpwidgetstypes.h" * app/Makefile.am * plug-ins/[all makefiles which link against libgimpui]: link against libgimpwidgets.la * po-libgimp/POTFILES.in: changed file locations.
2001-01-25 06:36:18 +08:00
#include "libgimpwidgets/gimpwidgets.h"
#include "widgets-types.h"
app/Makefile.am removed. 2001-07-07 Michael Natterer <mitch@gimp.org> * app/Makefile.am * app/context_manager.[ch]: removed. * app/app_procs.c: call tool_mananger instead of context_manager functions, pass "the_gimp" to some more functions. * app/drawable.[ch]: pass a GimpContext to drawable_fill(). * app/errors.c: behave according to "stack_trace_mode" when using the debugging signal handler. * app/gimprc.[ch]: removed the core/ config variables. * app/selection.c: set the selection's state to INVISIBLE in selection_pause(). * app/core/Makefile.am * app/core/gimpcoreconfig.[ch]: new files (the configuration variables used by core/). * app/core/gimpcontext.[ch]: removed the global contexts (user, default, ...) and their functions. It's no longer possible to pass NULL to the context functions to manipulate the current context (gimpcontext.c doesn't know the current context any more). * app/core/gimp.[ch]: added them here. The functions are now called gimp_[set|get]_*_context(). Added gimp_create_context() which is the only function to create contexts now. * app/gui/dialogs.[ch] * app/gui/gui.[ch]: pass "gimp" to all functions. * app/tools/tool_manager.[ch] * app/tools/tools.[ch]: pass "gimp" to lots of functions. Added the "global_tool_context" logic and the global/non-global paint options switching from the context_manager. Pass "gimp" to all tools' "register" functions. * app/tools/*: changed accordingly. * app/devices.c * app/disp_callbacks.c * app/file-open.[ch] * app/file-save.c * app/gdisplay.c * app/gimage.c * app/libgimp_glue.c * app/module_db.c * app/nav_window.c * app/plug_in.c * app/qmask.c * app/undo.c * app/base/base-config.c * app/core/gimpbrushpipe.c * app/core/gimpdrawable-offset.c * app/core/gimpgradient.c * app/core/gimpimage-duplicate.c * app/core/gimpimage-mask.c * app/core/gimpimage-new.c * app/core/gimpimage.c * app/core/gimppalette.c * app/core/gimptoolinfo.[ch] * app/core/gimpundo.c * app/gui/brush-select.c * app/gui/channels-commands.c * app/gui/color-area.c * app/gui/dialogs-constructors.c * app/gui/file-new-dialog.c * app/gui/file-open-dialog.c * app/gui/gradient-editor.c * app/gui/gradient-select.c * app/gui/info-window.c * app/gui/layers-commands.c * app/gui/menus.c * app/gui/palette-editor.c * app/gui/palette-import-dialog.c * app/gui/palette-select.c * app/gui/paths-dialog.c * app/gui/pattern-select.c * app/gui/preferences-dialog.c * app/gui/resize-dialog.c * app/gui/test-commands.c * app/gui/tool-options-dialog.c * app/gui/toolbox.c * app/gui/tools-commands.c * app/xcf/xcf-load.c * app/xcf/xcf-save.c * app/widgets/gimpchannellistview.c * app/widgets/gimpdnd.c * app/widgets/gimpdrawablelistview.[ch] * app/widgets/gimpimagedock.c * app/widgets/gimplayerlistview.c * app/pdb/brushes_cmds.c * app/pdb/drawable_cmds.c * app/pdb/gradient_select_cmds.c * app/pdb/gradients_cmds.c * app/pdb/palette_cmds.c * app/pdb/patterns_cmds.c * app/pdb/procedural_db.c * tools/pdbgen/pdb/brushes.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/gradient_select.pdb * tools/pdbgen/pdb/gradients.pdb * tools/pdbgen/pdb/palette.pdb * tools/pdbgen/pdb/patterns.pdb: changed accordingly: remove usage of gimp_context_[get|set]_*(NULL), create contexts with gimp_create_context(). Get the user/current context with gimp_get_[user|current]_context(). Added/removed access to the global "the_gimp" variable in some places. Get the core's config variables from "core_config".
2001-07-07 20:17:23 +08:00
#include "core/gimp.h"
#include "core/gimpcontext.h"
#include "core/gimplist.h"
#include "core/gimptoolinfo.h"
#include "core/gimptooloptions.h"
#include "core/gimptoolpresets.h"
#include "gimpdnd.h"
#include "gimpdocked.h"
#include "gimphelp-ids.h"
#include "gimpmenufactory.h"
Bill Skaggs <weskaggs@primate.ucdavis.edu> * libgimpwidgets/gimppropwidgets.[ch]: magic-copied from app/widgets and un-movable things then removed. * libgimpwidgets/Makefile.am * libgimpwidgets/gimpwidgets.def * libgimpwidgets/gimpwidgets.h: corresponding changes * app/widgets/gimppropwidgets.[ch]: remove functions that were moved. * app/dialogs/stroke-dialog.c * app/dialogs/tips-dialog.c * app/dialogs/user-install-dialog.c * app/tools/gimpairbrushtool.c * app/tools/gimpblendoptions.c * app/tools/gimpbucketfilloptions.c * app/tools/gimpclonetool.c * app/tools/gimpcoloroptions.c * app/tools/gimpcolorpickeroptions.c * app/tools/gimpconvolvetool.c * app/tools/gimpcropoptions.c * app/tools/gimpcurvestool.c * app/tools/gimpdodgeburntool.c * app/tools/gimperasertool.c * app/tools/gimpflipoptions.c * app/tools/gimphistogramoptions.c * app/tools/gimpimagemaptool.c * app/tools/gimpinkoptions-gui.c * app/tools/gimplevelstool.c * app/tools/gimpmagnifyoptions.c * app/tools/gimpmeasureoptions.c * app/tools/gimpmoveoptions.c * app/tools/gimpselectionoptions.c * app/tools/gimpsmudgetool.c * app/tools/gimpthresholdtool.c * app/tools/gimptransformoptions.c * app/tools/gimpvectoroptions.c * app/widgets/gimpcontainerbox.c * app/widgets/gimpcontrollereditor.c * app/widgets/gimpdevicestatus.c * app/widgets/gimpgrideditor.c * app/widgets/gimphistogrambox.c * app/widgets/gimphistogrameditor.c * app/widgets/gimpsizebox.c * app/widgets/gimpstrokeeditor.c * app/widgets/gimptemplateeditor.c * app/widgets/gimptooloptionseditor.c: fix includes.
2005-02-05 04:47:42 +08:00
#include "gimppropwidgets.h"
#include "gimpview.h"
app/widgets/gimppreview-popup.c renamed these files... * app/widgets/gimppreview-popup.c * app/widgets/gimppreview-popup.h: renamed these files... * app/widgets/gimpview-popup.c * app/widgets/gimpview-popup.h: .. to these files, and changed the GimpPreviewPopup type to GimpViewPopup. * app/widgets/gimppreviewrenderer.c * app/widgets/gimppreviewrenderer.h: renamed these files... * app/widgets/gimpviewrenderer.c * app/widgets/gimpviewrenderer.h: .. to these files, and changed GimpPreviewRenderer to GimpViewRenderer. This is the second step of the great Preview->View renaming process. * app/display/gimpdisplayshell-layer-select.c * app/display/gimpnavigationeditor.c * app/widgets/Makefile.am * app/widgets/gimpbrushfactoryview.c * app/widgets/gimpbufferview.c * app/widgets/gimpcellrendererviewable.c * app/widgets/gimpcellrendererviewable.h * app/widgets/gimpcomponenteditor.c * app/widgets/gimpcontainerbox.c * app/widgets/gimpcontainercombobox.c * app/widgets/gimpcontainereditor.c * app/widgets/gimpcontainerentry.c * app/widgets/gimpcontainergridview.c * app/widgets/gimpcontainerpopup.c * app/widgets/gimpcontainertreeview-dnd.c * app/widgets/gimpcontainertreeview.c * app/widgets/gimpcontainerview.c * app/widgets/gimpdatafactoryview.c * app/widgets/gimpitemtreeview.c * app/widgets/gimplayertreeview.c * app/widgets/gimpnavigationpreview.c * app/widgets/gimppatternfactoryview.c * app/widgets/gimppreviewrenderer-utils.c * app/widgets/gimppreviewrendererbrush.c * app/widgets/gimppreviewrendererbrush.h * app/widgets/gimppreviewrendererdrawable.c * app/widgets/gimppreviewrendererdrawable.h * app/widgets/gimppreviewrenderergradient.c * app/widgets/gimppreviewrenderergradient.h * app/widgets/gimppreviewrendererimage.c * app/widgets/gimppreviewrendererimage.h * app/widgets/gimppreviewrendererimagefile.c * app/widgets/gimppreviewrendererimagefile.h * app/widgets/gimppreviewrendererlayer.c * app/widgets/gimppreviewrenderervectors.c * app/widgets/gimpselectioneditor.c * app/widgets/gimptemplateview.c * app/widgets/gimptooloptionseditor.c * app/widgets/gimptoolview.c * app/widgets/gimpview.c * app/widgets/gimpview.h * app/widgets/gimpviewablebutton.c * app/widgets/widgets-enums.h * app/widgets/widgets-types.h: Modified accordingly.
2004-08-26 06:31:44 +08:00
#include "gimpviewrenderer.h"
#include "gimptooloptionseditor.h"
#include "gimpuimanager.h"
#include "gimpwidgets-utils.h"
#include "gimp-intl.h"
static void gimp_tool_options_editor_docked_iface_init (GimpDockedInterface *iface);
static GObject * gimp_tool_options_editor_constructor (GType type,
guint n_params,
GObjectConstructParam *params);
static void gimp_tool_options_editor_destroy (GtkObject *object);
static GtkWidget *gimp_tool_options_editor_get_preview (GimpDocked *docked,
GimpContext *context,
GtkIconSize size);
static gchar *gimp_tool_options_editor_get_title (GimpDocked *docked);
static void gimp_tool_options_editor_save_clicked (GtkWidget *widget,
GimpToolOptionsEditor *editor);
static void gimp_tool_options_editor_restore_clicked (GtkWidget *widget,
GimpToolOptionsEditor *editor);
static void gimp_tool_options_editor_delete_clicked (GtkWidget *widget,
GimpToolOptionsEditor *editor);
static void gimp_tool_options_editor_drop_tool (GtkWidget *widget,
gint x,
gint y,
GimpViewable *viewable,
gpointer data);
static void gimp_tool_options_editor_tool_changed (GimpContext *context,
GimpToolInfo *tool_info,
GimpToolOptionsEditor *editor);
static void gimp_tool_options_editor_presets_changed (GimpToolPresets *presets,
GimpToolOptionsEditor *editor);
static void gimp_tool_options_editor_presets_update (GimpToolOptionsEditor *editor,
GimpToolPresets *presets);
static void gimp_tool_options_editor_save_presets (GimpToolOptionsEditor *editor);
G_DEFINE_TYPE_WITH_CODE (GimpToolOptionsEditor, gimp_tool_options_editor,
GIMP_TYPE_EDITOR,
G_IMPLEMENT_INTERFACE (GIMP_TYPE_DOCKED,
gimp_tool_options_editor_docked_iface_init))
#define parent_class gimp_tool_options_editor_parent_class
static void
gimp_tool_options_editor_class_init (GimpToolOptionsEditorClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkObjectClass *gtk_object_class = GTK_OBJECT_CLASS (klass);
object_class->constructor = gimp_tool_options_editor_constructor;
gtk_object_class->destroy = gimp_tool_options_editor_destroy;
}
static void
gimp_tool_options_editor_init (GimpToolOptionsEditor *editor)
{
GtkScrolledWindow *scrolled_window;
GtkWidget *viewport;
gtk_widget_set_size_request (GTK_WIDGET (editor), -1, 200);
gimp_dnd_viewable_dest_add (GTK_WIDGET (editor),
GIMP_TYPE_TOOL_INFO,
gimp_tool_options_editor_drop_tool,
editor);
editor->scrolled_window = gtk_scrolled_window_new (NULL, NULL);
scrolled_window = GTK_SCROLLED_WINDOW (editor->scrolled_window);
gtk_scrolled_window_set_policy (scrolled_window,
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_container_add (GTK_CONTAINER (editor), editor->scrolled_window);
gtk_widget_show (editor->scrolled_window);
viewport = gtk_viewport_new (gtk_scrolled_window_get_hadjustment (scrolled_window),
gtk_scrolled_window_get_vadjustment (scrolled_window));
gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport), GTK_SHADOW_NONE);
gtk_container_add (GTK_CONTAINER (scrolled_window), viewport);
gtk_widget_show (viewport);
/* The vbox containing the tool options */
editor->options_vbox = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (viewport), editor->options_vbox);
gtk_widget_show (editor->options_vbox);
editor->save_queue = NULL;
editor->save_idle_id = 0;
}
static void
gimp_tool_options_editor_docked_iface_init (GimpDockedInterface *docked_iface)
{
docked_iface->get_preview = gimp_tool_options_editor_get_preview;
docked_iface->get_title = gimp_tool_options_editor_get_title;
}
static GObject *
gimp_tool_options_editor_constructor (GType type,
guint n_params,
GObjectConstructParam *params)
{
GObject *object;
GimpToolOptionsEditor *editor;
object = G_OBJECT_CLASS (parent_class)->constructor (type, n_params, params);
editor = GIMP_TOOL_OPTIONS_EDITOR (object);
editor->save_button =
gimp_editor_add_button (GIMP_EDITOR (editor), GTK_STOCK_SAVE,
_("Save options to..."),
GIMP_HELP_TOOL_OPTIONS_SAVE,
G_CALLBACK (gimp_tool_options_editor_save_clicked),
NULL,
editor);
editor->restore_button =
gimp_editor_add_button (GIMP_EDITOR (editor), GTK_STOCK_REVERT_TO_SAVED,
_("Restore options from..."),
GIMP_HELP_TOOL_OPTIONS_RESTORE,
G_CALLBACK (gimp_tool_options_editor_restore_clicked),
NULL,
editor);
editor->delete_button =
gimp_editor_add_button (GIMP_EDITOR (editor), GTK_STOCK_DELETE,
_("Delete saved options..."),
GIMP_HELP_TOOL_OPTIONS_DELETE,
G_CALLBACK (gimp_tool_options_editor_delete_clicked),
NULL,
editor);
editor->reset_button =
gimp_editor_add_action_button (GIMP_EDITOR (editor), "tool-options",
"tool-options-reset",
"tool-options-reset-all",
GDK_SHIFT_MASK,
NULL);
return object;
}
static void
gimp_tool_options_editor_destroy (GtkObject *object)
{
GimpToolOptionsEditor *editor = GIMP_TOOL_OPTIONS_EDITOR (object);
if (editor->options_vbox)
{
GList *options;
GList *list;
options =
gtk_container_get_children (GTK_CONTAINER (editor->options_vbox));
for (list = options; list; list = g_list_next (list))
{
g_object_ref (list->data);
gtk_container_remove (GTK_CONTAINER (editor->options_vbox),
GTK_WIDGET (list->data));
}
removed crap from ancient times when tools used to be an enum. 2001-02-23 Michael Natterer <mitch@gimp.org> * app/app_procs.c: removed crap from ancient times when tools used to be an enum. * app/brush_select.[ch]: cleaned up the gui and made global paint mode toggling much simpler by expanding vertically instead of reparenting. * app/context_manager.c: removed hack by using a tool manager accessor function. * app/gimpcontext.c: use the new standard tool info object. Tools also _behave_ like all other data types now (can e.g. be refreshed). * app/tools/tool.[ch] * app/tools/gimptoolinfo.[ch]: added an "identifier" which is an untranslated string with a meaningful prefix and name, e.g. "gimp:color_picker_tool". Renamed "tool_name" and "tool_desc" to "blurb" and "help", changed the constructor accordingly. Added gimp_tool_info_get_standards() to make the context work with tool refresh. * app/tools/tool_manager.[ch] * app/tools/tools.c: removed the global list of tool class structures because the tool info list is in place. Added tool_manager_register_tool_options() which calls tool_options_dialog_add() and registers the options in the global_tool_info_list. * app/tools/Makefile.am * app/tools/paint_options.[ch] * app/tools/selection_options.[ch] * app/tools/tool_options.[ch] * app/tools/tool_options_dialog.[ch]: build them all again. This is mostly the old tool options system with minor modifications to work with the new stuff. The tool options auto-update with the user context now, so there are no update functions any more. * app/gimpdnd.c * app/toolbox.c * app/tools/color_picker.c * app/tools/measure.c * app/tools/move.c: changed accordingly.
2001-02-24 05:32:47 +08:00
g_list_free (options);
editor->options_vbox = NULL;
}
gimp_tool_options_editor_save_presets (editor);
GTK_OBJECT_CLASS (parent_class)->destroy (object);
}
removed crap from ancient times when tools used to be an enum. 2001-02-23 Michael Natterer <mitch@gimp.org> * app/app_procs.c: removed crap from ancient times when tools used to be an enum. * app/brush_select.[ch]: cleaned up the gui and made global paint mode toggling much simpler by expanding vertically instead of reparenting. * app/context_manager.c: removed hack by using a tool manager accessor function. * app/gimpcontext.c: use the new standard tool info object. Tools also _behave_ like all other data types now (can e.g. be refreshed). * app/tools/tool.[ch] * app/tools/gimptoolinfo.[ch]: added an "identifier" which is an untranslated string with a meaningful prefix and name, e.g. "gimp:color_picker_tool". Renamed "tool_name" and "tool_desc" to "blurb" and "help", changed the constructor accordingly. Added gimp_tool_info_get_standards() to make the context work with tool refresh. * app/tools/tool_manager.[ch] * app/tools/tools.c: removed the global list of tool class structures because the tool info list is in place. Added tool_manager_register_tool_options() which calls tool_options_dialog_add() and registers the options in the global_tool_info_list. * app/tools/Makefile.am * app/tools/paint_options.[ch] * app/tools/selection_options.[ch] * app/tools/tool_options.[ch] * app/tools/tool_options_dialog.[ch]: build them all again. This is mostly the old tool options system with minor modifications to work with the new stuff. The tool options auto-update with the user context now, so there are no update functions any more. * app/gimpdnd.c * app/toolbox.c * app/tools/color_picker.c * app/tools/measure.c * app/tools/move.c: changed accordingly.
2001-02-24 05:32:47 +08:00
static GtkWidget *
gimp_tool_options_editor_get_preview (GimpDocked *docked,
GimpContext *context,
GtkIconSize size)
{
GtkSettings *settings = gtk_widget_get_settings (GTK_WIDGET (docked));
GtkWidget *view;
gint width;
gint height;
gtk_icon_size_lookup_for_settings (settings, size, &width, &height);
Changed GimpViewable preview rendering to have a context to get 2006-08-29 Michael Natterer <mitch@gimp.org> Changed GimpViewable preview rendering to have a context to get FG/BG/whatever from. Use the context to enable dynamic FG/BG colors in gradients. Fixes bug #127676 and bug #352214. Addresses bug #128367 (doesn't fix it because there's no loading/saving and no GUI yet). * app/core/core-enums.[ch]: added enum GimpGradientColor to enable specifying gradient colors in terms of foreground and background. * app/core/gimpgradient.[ch]: added color_type members to the GimpGradientSegment struct and honor them in gimp_gradient_get_color_at(). Added GimpContext parameters to all functions which finally call get_color_at(). * app/core/gimp-gradients.c: use the new method to implement the builtin gradients. * app/core/gimpviewable.[ch]: added GimpContext parameters to all get_preview() and get_pixbuf() functions. * app/core/gimpbrush.c * app/core/gimpbuffer.c * app/core/gimpdrawable-preview.[ch] * app/core/gimpgradient.c * app/core/gimpimage-preview.[ch] * app/core/gimpimagefile.c * app/core/gimppalette.c * app/core/gimppattern.c * app/core/gimpundo.[ch] * app/text/gimpfont.c * app/vectors/gimpvectors-preview.[ch]: changed ::get_preview() and ::get_pixbuf() implementations accordingly. * app/core/gimpdrawable-blend.c * app/core/gimppalette-import.[ch] * app/dialogs/dialogs-constructors.c * app/dialogs/palette-import-dialog.c * app/dialogs/resize-dialog.c * app/display/gimpdisplayshell-layer-select.c * app/display/gimpdisplayshell.c * app/display/gimpnavigationeditor.c * app/paint/gimppaintoptions.c * app/tools/gimpeditselectiontool.c * app/tools/gimptexttool.c * app/actions/gradient-editor-commands.c * app/widgets/gimpaction.c * app/widgets/gimpbrusheditor.[ch] * app/widgets/gimpbufferview.c * app/widgets/gimpcellrendererviewable.c * app/widgets/gimpchanneltreeview.c * app/widgets/gimpclipboard.c * app/widgets/gimpcoloreditor.c * app/widgets/gimpcomponenteditor.c * app/widgets/gimpcontainerbox.c * app/widgets/gimpcontainercombobox.c * app/widgets/gimpcontainereditor.c * app/widgets/gimpcontainerentry.c * app/widgets/gimpcontainergridview.c * app/widgets/gimpcontainertreeview.[ch] * app/widgets/gimpdataeditor.[ch] * app/widgets/gimpdevicestatus.c * app/widgets/gimpdnd.[ch] * app/widgets/gimpdrawabletreeview.c * app/widgets/gimpfiledialog.c * app/widgets/gimpgradienteditor.[ch] * app/widgets/gimpgradientselect.c * app/widgets/gimpitemtreeview.c * app/widgets/gimplayertreeview.c * app/widgets/gimppaletteeditor.[ch] * app/widgets/gimppropwidgets.[ch] * app/widgets/gimpselectioneditor.c * app/widgets/gimpthumbbox.[ch] * app/widgets/gimptoolbox-image-area.c * app/widgets/gimptoolbox-indicator-area.c * app/widgets/gimptooloptionseditor.c * app/widgets/gimpundoeditor.c * app/widgets/gimpvectorstreeview.c * app/widgets/gimpview-popup.[ch] * app/widgets/gimpview.[ch] * app/widgets/gimpviewablebutton.c * app/widgets/gimpviewabledialog.c * app/widgets/gimpviewrenderer.[ch] * app/widgets/gimpviewrenderer-frame.c * app/widgets/gimpviewrendererbrush.c * app/widgets/gimpviewrendererbuffer.c * app/widgets/gimpviewrendererdrawable.c * app/widgets/gimpviewrenderergradient.c * app/widgets/gimpviewrendererimage.c * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/gradient.pdb * tools/pdbgen/pdb/gradients.pdb * tools/pdbgen/pdb/image.pdb: added tons of GimpContext members and parameters, implement GimpDocked::set_context() in many widgets. Pass these locally remembered contexts to GimpViewable functions. Did some minor cleanups on the way. There are still some minor FIXMEs around where the code uses a NULL context (which is allowed by the APIs) * app/pdb/drawable_cmds.c * app/pdb/gradient_cmds.c * app/pdb/gradients_cmds.c * app/pdb/image_cmds.c: regenerated.
2006-08-30 05:44:51 +08:00
view = gimp_prop_view_new (G_OBJECT (context), "tool", context, height);
GIMP_VIEW (view)->renderer->size = -1;
app/widgets/gimppreview-popup.c renamed these files... * app/widgets/gimppreview-popup.c * app/widgets/gimppreview-popup.h: renamed these files... * app/widgets/gimpview-popup.c * app/widgets/gimpview-popup.h: .. to these files, and changed the GimpPreviewPopup type to GimpViewPopup. * app/widgets/gimppreviewrenderer.c * app/widgets/gimppreviewrenderer.h: renamed these files... * app/widgets/gimpviewrenderer.c * app/widgets/gimpviewrenderer.h: .. to these files, and changed GimpPreviewRenderer to GimpViewRenderer. This is the second step of the great Preview->View renaming process. * app/display/gimpdisplayshell-layer-select.c * app/display/gimpnavigationeditor.c * app/widgets/Makefile.am * app/widgets/gimpbrushfactoryview.c * app/widgets/gimpbufferview.c * app/widgets/gimpcellrendererviewable.c * app/widgets/gimpcellrendererviewable.h * app/widgets/gimpcomponenteditor.c * app/widgets/gimpcontainerbox.c * app/widgets/gimpcontainercombobox.c * app/widgets/gimpcontainereditor.c * app/widgets/gimpcontainerentry.c * app/widgets/gimpcontainergridview.c * app/widgets/gimpcontainerpopup.c * app/widgets/gimpcontainertreeview-dnd.c * app/widgets/gimpcontainertreeview.c * app/widgets/gimpcontainerview.c * app/widgets/gimpdatafactoryview.c * app/widgets/gimpitemtreeview.c * app/widgets/gimplayertreeview.c * app/widgets/gimpnavigationpreview.c * app/widgets/gimppatternfactoryview.c * app/widgets/gimppreviewrenderer-utils.c * app/widgets/gimppreviewrendererbrush.c * app/widgets/gimppreviewrendererbrush.h * app/widgets/gimppreviewrendererdrawable.c * app/widgets/gimppreviewrendererdrawable.h * app/widgets/gimppreviewrenderergradient.c * app/widgets/gimppreviewrenderergradient.h * app/widgets/gimppreviewrendererimage.c * app/widgets/gimppreviewrendererimage.h * app/widgets/gimppreviewrendererimagefile.c * app/widgets/gimppreviewrendererimagefile.h * app/widgets/gimppreviewrendererlayer.c * app/widgets/gimppreviewrenderervectors.c * app/widgets/gimpselectioneditor.c * app/widgets/gimptemplateview.c * app/widgets/gimptooloptionseditor.c * app/widgets/gimptoolview.c * app/widgets/gimpview.c * app/widgets/gimpview.h * app/widgets/gimpviewablebutton.c * app/widgets/widgets-enums.h * app/widgets/widgets-types.h: Modified accordingly.
2004-08-26 06:31:44 +08:00
gimp_view_renderer_set_size_full (GIMP_VIEW (view)->renderer,
width, height, 0);
return view;
}
static gchar *
gimp_tool_options_editor_get_title (GimpDocked *docked)
{
GimpToolOptionsEditor *editor = GIMP_TOOL_OPTIONS_EDITOR (docked);
GimpContext *context;
GimpToolInfo *tool_info;
context = gimp_get_user_context (editor->gimp);
tool_info = gimp_context_get_tool (context);
return tool_info ? g_strdup (tool_info->blurb) : NULL;
}
/* public functions */
GtkWidget *
gimp_tool_options_editor_new (Gimp *gimp,
GimpMenuFactory *menu_factory)
{
GimpToolOptionsEditor *editor;
GimpContext *user_context;
simplified everything a lot by merging the public GimpContextPropType enum 2003-02-09 Michael Natterer <mitch@gimp.org> * app/core/gimpcontext.[ch]: simplified everything a lot by merging the public GimpContextPropType enum with the internal anonymous object property id enum. Removed the internal copy_prop functions and handle property copying in a big switch() in gimp_context_copy_property(). Removed the separate signal connections for each property of the parent context and do the same using a single "notify" handler. Emit "notify" signals all over the place. Removed internal arrays which are no longer needed due to enum merge and copy_property simplification. Removed the array of signal names and use g_signal_name(). Removed gimp_context_unset_parent() and allow "parent" being NULL in gimp_context_set_parent(). * app/tools/tool_manager.c * app/widgets/gimpdevices.c: changed accordingly. * libgimptool/gimptooltypes.h: changed GimpToolOptionsGUIFunc to return a GtkWidget (the created tool options widget). * libgimptool/gimptoolmodule.c: #include <gtk/gtk.h> * app/tools/tool_options.[ch]: removed the "main_vbox" from the GimpToolOptions struct. Changed gimp_tool_options_gui() to create and return the main_vbox. * app/tools/tool_manager.c: create the "This Tool has no Options" label here if NULL was passed as "options_gui_func". Attach the options widget to the tool_options object using g_object_set_data(). * app/gui/tool-options-dialog.c: changed accordingly. * app/tools/gimpairbrushtool.c * app/tools/gimpblendoptions.[ch] * app/tools/gimpbucketfilloptions.[ch] * app/tools/gimpclonetool.c * app/tools/gimpcolorpickeroptions.[ch] * app/tools/gimpconvolvetool.c * app/tools/gimpcropoptions.[ch] * app/tools/gimpdodgeburntool.c * app/tools/gimperasertool.c * app/tools/gimpflipoptions.[ch] * app/tools/gimpinkoptions.[ch] * app/tools/gimpmagnifyoptions.[ch] * app/tools/gimpmeasureoptions.[ch] * app/tools/gimpmoveoptions.[ch] * app/tools/gimpselectionoptions.[ch] * app/tools/gimpsmudgetool.c * app/tools/gimptextoptions.[ch] * app/tools/gimptransformoptions.[ch] * app/tools/gimpvectoroptions.[ch] * app/tools/paint_options.[ch]: return the options vbox from all tool_options_gui functions.
2003-02-10 01:32:52 +08:00
g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL);
g_return_val_if_fail (GIMP_IS_MENU_FACTORY (menu_factory), NULL);
simplified everything a lot by merging the public GimpContextPropType enum 2003-02-09 Michael Natterer <mitch@gimp.org> * app/core/gimpcontext.[ch]: simplified everything a lot by merging the public GimpContextPropType enum with the internal anonymous object property id enum. Removed the internal copy_prop functions and handle property copying in a big switch() in gimp_context_copy_property(). Removed the separate signal connections for each property of the parent context and do the same using a single "notify" handler. Emit "notify" signals all over the place. Removed internal arrays which are no longer needed due to enum merge and copy_property simplification. Removed the array of signal names and use g_signal_name(). Removed gimp_context_unset_parent() and allow "parent" being NULL in gimp_context_set_parent(). * app/tools/tool_manager.c * app/widgets/gimpdevices.c: changed accordingly. * libgimptool/gimptooltypes.h: changed GimpToolOptionsGUIFunc to return a GtkWidget (the created tool options widget). * libgimptool/gimptoolmodule.c: #include <gtk/gtk.h> * app/tools/tool_options.[ch]: removed the "main_vbox" from the GimpToolOptions struct. Changed gimp_tool_options_gui() to create and return the main_vbox. * app/tools/tool_manager.c: create the "This Tool has no Options" label here if NULL was passed as "options_gui_func". Attach the options widget to the tool_options object using g_object_set_data(). * app/gui/tool-options-dialog.c: changed accordingly. * app/tools/gimpairbrushtool.c * app/tools/gimpblendoptions.[ch] * app/tools/gimpbucketfilloptions.[ch] * app/tools/gimpclonetool.c * app/tools/gimpcolorpickeroptions.[ch] * app/tools/gimpconvolvetool.c * app/tools/gimpcropoptions.[ch] * app/tools/gimpdodgeburntool.c * app/tools/gimperasertool.c * app/tools/gimpflipoptions.[ch] * app/tools/gimpinkoptions.[ch] * app/tools/gimpmagnifyoptions.[ch] * app/tools/gimpmeasureoptions.[ch] * app/tools/gimpmoveoptions.[ch] * app/tools/gimpselectionoptions.[ch] * app/tools/gimpsmudgetool.c * app/tools/gimptextoptions.[ch] * app/tools/gimptransformoptions.[ch] * app/tools/gimpvectoroptions.[ch] * app/tools/paint_options.[ch]: return the options vbox from all tool_options_gui functions.
2003-02-10 01:32:52 +08:00
editor = g_object_new (GIMP_TYPE_TOOL_OPTIONS_EDITOR,
"menu-factory", menu_factory,
"menu-identifier", "<ToolOptions>",
"ui-path", "/tool-options-popup",
NULL);
editor->gimp = gimp;
simplified everything a lot by merging the public GimpContextPropType enum 2003-02-09 Michael Natterer <mitch@gimp.org> * app/core/gimpcontext.[ch]: simplified everything a lot by merging the public GimpContextPropType enum with the internal anonymous object property id enum. Removed the internal copy_prop functions and handle property copying in a big switch() in gimp_context_copy_property(). Removed the separate signal connections for each property of the parent context and do the same using a single "notify" handler. Emit "notify" signals all over the place. Removed internal arrays which are no longer needed due to enum merge and copy_property simplification. Removed the array of signal names and use g_signal_name(). Removed gimp_context_unset_parent() and allow "parent" being NULL in gimp_context_set_parent(). * app/tools/tool_manager.c * app/widgets/gimpdevices.c: changed accordingly. * libgimptool/gimptooltypes.h: changed GimpToolOptionsGUIFunc to return a GtkWidget (the created tool options widget). * libgimptool/gimptoolmodule.c: #include <gtk/gtk.h> * app/tools/tool_options.[ch]: removed the "main_vbox" from the GimpToolOptions struct. Changed gimp_tool_options_gui() to create and return the main_vbox. * app/tools/tool_manager.c: create the "This Tool has no Options" label here if NULL was passed as "options_gui_func". Attach the options widget to the tool_options object using g_object_set_data(). * app/gui/tool-options-dialog.c: changed accordingly. * app/tools/gimpairbrushtool.c * app/tools/gimpblendoptions.[ch] * app/tools/gimpbucketfilloptions.[ch] * app/tools/gimpclonetool.c * app/tools/gimpcolorpickeroptions.[ch] * app/tools/gimpconvolvetool.c * app/tools/gimpcropoptions.[ch] * app/tools/gimpdodgeburntool.c * app/tools/gimperasertool.c * app/tools/gimpflipoptions.[ch] * app/tools/gimpinkoptions.[ch] * app/tools/gimpmagnifyoptions.[ch] * app/tools/gimpmeasureoptions.[ch] * app/tools/gimpmoveoptions.[ch] * app/tools/gimpselectionoptions.[ch] * app/tools/gimpsmudgetool.c * app/tools/gimptextoptions.[ch] * app/tools/gimptransformoptions.[ch] * app/tools/gimpvectoroptions.[ch] * app/tools/paint_options.[ch]: return the options vbox from all tool_options_gui functions.
2003-02-10 01:32:52 +08:00
user_context = gimp_get_user_context (gimp);
g_signal_connect_object (user_context, "tool-changed",
G_CALLBACK (gimp_tool_options_editor_tool_changed),
editor,
0);
gimp_tool_options_editor_tool_changed (user_context,
gimp_context_get_tool (user_context),
editor);
return GTK_WIDGET (editor);
removed crap from ancient times when tools used to be an enum. 2001-02-23 Michael Natterer <mitch@gimp.org> * app/app_procs.c: removed crap from ancient times when tools used to be an enum. * app/brush_select.[ch]: cleaned up the gui and made global paint mode toggling much simpler by expanding vertically instead of reparenting. * app/context_manager.c: removed hack by using a tool manager accessor function. * app/gimpcontext.c: use the new standard tool info object. Tools also _behave_ like all other data types now (can e.g. be refreshed). * app/tools/tool.[ch] * app/tools/gimptoolinfo.[ch]: added an "identifier" which is an untranslated string with a meaningful prefix and name, e.g. "gimp:color_picker_tool". Renamed "tool_name" and "tool_desc" to "blurb" and "help", changed the constructor accordingly. Added gimp_tool_info_get_standards() to make the context work with tool refresh. * app/tools/tool_manager.[ch] * app/tools/tools.c: removed the global list of tool class structures because the tool info list is in place. Added tool_manager_register_tool_options() which calls tool_options_dialog_add() and registers the options in the global_tool_info_list. * app/tools/Makefile.am * app/tools/paint_options.[ch] * app/tools/selection_options.[ch] * app/tools/tool_options.[ch] * app/tools/tool_options_dialog.[ch]: build them all again. This is mostly the old tool options system with minor modifications to work with the new stuff. The tool options auto-update with the user context now, so there are no update functions any more. * app/gimpdnd.c * app/toolbox.c * app/tools/color_picker.c * app/tools/measure.c * app/tools/move.c: changed accordingly.
2001-02-24 05:32:47 +08:00
}
/* private functions */
static void
gimp_tool_options_editor_menu_pos (GtkMenu *menu,
gint *x,
gint *y,
put the image popup menu into a dummy menubar to work around the silly 2004-05-17 Michael Natterer <mitch@gimp.org> * menus/menus.xsl: put the image popup menu into a dummy menubar to work around the silly GtkUIManager restriction that popup menus can't have tearoff items. * app/menus/menus.c * app/menus/image-menu.c * app/display/gimpdisplayshell-callbacks.c * app/gui/gui-vtable.c * app/menus/plug-in-menus.c: changed accordingly. * app/gui/gui.c (gui_restore_after_callback): connect to "notify::tearoff-menus" of GimpGuiConfig and reconfigure the global image UI manager accordingly. * app/config/gimpguiconfig.c: removed GIMP_PARAM_RESTART from the "tearoff-menus" property because GtkUIManager can change this on the fly. * app/display/gimpdisplayshell.[ch]: added the menubar to the GimpDisplayShell struct. Some cleanup in gimp_display_shell_new(). * app/display/gimpdisplayshell-appearance.c (gimp_display_shell_set_show_menubar): use shell->menubar instead of asking the UI manager. * app/widgets/gimpuimanager.[ch]: changed gimp_ui_manager_ui_get() to transparently load the XML files even if a sub-widget was requested. Reordered parameters of gimp_ui_manager_ui_popup(). Lots of internal cleanups. * app/widgets/gimpdockable.c * app/widgets/gimptooloptionseditor.c: simplified accordingly. * app/widgets/gimpeditor.[ch]: added new function gimp_editor_popup_menu() which takes a GimpMenuPositionFunc and updates/shows the editor's menu. * app/widgets/gimpcolormapeditor.c * app/widgets/gimpcomponenteditor.c * app/widgets/gimpcontainereditor.c * app/widgets/gimpcontainergridview.c * app/widgets/gimpcontainertreeview.c * app/widgets/gimperrorconsole.c * app/widgets/gimpgradienteditor.c * app/widgets/gimpitemtreeview.c * app/widgets/gimppaletteeditor.c: use gimp_editor_popup_menu(). * app/widgets/gimptoolbox.c: moved all code from gimp_toolbox_new() to GObject::constructor().
2004-05-17 21:38:03 +08:00
gpointer data)
{
put the image popup menu into a dummy menubar to work around the silly 2004-05-17 Michael Natterer <mitch@gimp.org> * menus/menus.xsl: put the image popup menu into a dummy menubar to work around the silly GtkUIManager restriction that popup menus can't have tearoff items. * app/menus/menus.c * app/menus/image-menu.c * app/display/gimpdisplayshell-callbacks.c * app/gui/gui-vtable.c * app/menus/plug-in-menus.c: changed accordingly. * app/gui/gui.c (gui_restore_after_callback): connect to "notify::tearoff-menus" of GimpGuiConfig and reconfigure the global image UI manager accordingly. * app/config/gimpguiconfig.c: removed GIMP_PARAM_RESTART from the "tearoff-menus" property because GtkUIManager can change this on the fly. * app/display/gimpdisplayshell.[ch]: added the menubar to the GimpDisplayShell struct. Some cleanup in gimp_display_shell_new(). * app/display/gimpdisplayshell-appearance.c (gimp_display_shell_set_show_menubar): use shell->menubar instead of asking the UI manager. * app/widgets/gimpuimanager.[ch]: changed gimp_ui_manager_ui_get() to transparently load the XML files even if a sub-widget was requested. Reordered parameters of gimp_ui_manager_ui_popup(). Lots of internal cleanups. * app/widgets/gimpdockable.c * app/widgets/gimptooloptionseditor.c: simplified accordingly. * app/widgets/gimpeditor.[ch]: added new function gimp_editor_popup_menu() which takes a GimpMenuPositionFunc and updates/shows the editor's menu. * app/widgets/gimpcolormapeditor.c * app/widgets/gimpcomponenteditor.c * app/widgets/gimpcontainereditor.c * app/widgets/gimpcontainergridview.c * app/widgets/gimpcontainertreeview.c * app/widgets/gimperrorconsole.c * app/widgets/gimpgradienteditor.c * app/widgets/gimpitemtreeview.c * app/widgets/gimppaletteeditor.c: use gimp_editor_popup_menu(). * app/widgets/gimptoolbox.c: moved all code from gimp_toolbox_new() to GObject::constructor().
2004-05-17 21:38:03 +08:00
gimp_button_menu_position (GTK_WIDGET (data), menu, GTK_POS_RIGHT, x, y);
}
Cleanup weekend... 2001-10-29 Michael Natterer <mitch@gimp.org> Cleanup weekend... * app/app_procs.c: pass "no_interface" to gimp_new(). * app/core/gimp.[ch]: added "gboolean no_interface" and the load_procs and save_procs GSLists. * app/core/gimptoolinfo.[ch]: added a "Gimp" pointer to the GimpToolInfo object so more functions find their context without accessing the global "the_gimp" variable. * app/display/display-types.h: removed the GDisplay -> GimpDisplay typedef. * app/display/gimpdisplay.c: look at gimp->no_interface, don't include "appenv.h". * app/file/file-open.[ch] * app/file/file-save.[ch]: don't use "the_gimp" any more. Instead, pass around lots of "Gimp" pointers. Removed the global load_procs and save_procs variables here. Use access() to find out whether a file is readable/writable, removed the manual voodoo and it's Win32 wrappers. Added an optional (can be NULL) "PlunInProcDef" parameter to file_save(), removed file_save_with_proc(). * app/gui/menus.c: Use the unused "gpointer data" parameter of the GtkItemFactory callbacks to pass a "Gimp" pointer to all of them. This reduces the usage of the global "the_gimp" hack to zero in app/gui/... yeah. * app/gui/channels-commands.c * app/gui/edit-commands.c * app/gui/file-commands.c * app/gui/image-commands.c * app/gui/layers-commands.c * app/gui/palettes-commands.c * app/gui/select-commands.c * app/gui/test-commands.c * app/gui/tools-commands.c * app/gui/view-commands.c: use the passed "Gimp" pointer. * app/gui/color-area.[ch] * app/gui/convert-dialog.c * app/gui/dialogs-constructors.c * app/gui/file-new-dialog.[ch] * app/gui/file-open-dialog.[ch] * app/gui/file-save-dialog.[ch] * app/gui/gui.c * app/gui/info-window.[ch] * app/gui/module-browser.[ch] * app/gui/palette-editor.c * app/gui/palette-import-dialog.[ch] * app/gui/paths-dialog.c * app/gui/preferences-dialog.[ch] * app/gui/resize-dialog.[ch] * app/gui/tool-options-dialog.[ch] * app/gui/toolbox.c: pass around lots more "Gimp" and "GimpContext" pointers and don't use "the_gimp" any more. * app/tools/gimptool.h: added a pointer to the corresponding GimpToolInfo object (which in turn has a pointer to a Gimp). * app/tools/tool_manager.[ch]: set the pointer after creating the tool object. Removed tool_manager_get_info_by_tool() as there is a tool->tool_info pointer now. * app/tools/gimpbezierselecttool.c * app/tools/gimpblendtool.c * app/tools/gimpbrightnesscontrasttool.c * app/tools/gimpclonetool.c * app/tools/gimpcolorbalancetool.c * app/tools/gimpcolorpickertool.c * app/tools/gimpconvolvetool.c * app/tools/gimpcroptool.c * app/tools/gimpcurvestool.c * app/tools/gimpdodgeburntool.c * app/tools/gimpdrawtool.c * app/tools/gimpeditselectiontool.c * app/tools/gimpellipseselecttool.c * app/tools/gimperasertool.c * app/tools/gimpfliptool.c * app/tools/gimphistogramtool.c * app/tools/gimphuesaturationtool.c * app/tools/gimpinktool.c * app/tools/gimplevelstool.c * app/tools/gimpmagnifytool.c * app/tools/gimpmeasuretool.c * app/tools/gimpmovetool.c * app/tools/gimppainttool.c * app/tools/gimppathtool.c * app/tools/gimpperspectivetool.c * app/tools/gimpposterizetool.c * app/tools/gimprectselecttool.c * app/tools/gimprotatetool.c * app/tools/gimpscaletool.c * app/tools/gimpsheartool.c * app/tools/gimptexttool.c * app/tools/gimpthresholdtool.c * app/tools/path_tool.c * app/tools/xinput_airbrush.c: s/GDisplay/GimpDisplay/g. Use tool->tool_info and tool_info->gimp in some places to get rid of using "the_gimp". Removing the remaining ones involves changing the tool options system and is scheduled next... * app/widgets/gimpdnd.c * app/widgets/gimpdocumentview.c: pass a "Gimp" pointer to all file_open_*() functions. * app/gdisplay_color.[ch] * app/gdisplay_color_ui.[ch] * app/image_map.[ch] * app/nav_window.[ch] * app/path.c * app/path_bezier.c * app/path_transform.h * app/qmask.[ch]: s/GDisplay/GimpDisplay/g * tools/pdbgen/pdb/fileops.pdb: load_procs and save_procs are members of the "Gimp" object now. * tools/pdbgen/pdb/plug_in.pdb: use gimp->no_interface, don't include "appenv.h". * app/pdb/fileops_cmds.c * app/pdb/plug_in_cmds.c: regenerated.
2001-10-29 19:47:11 +08:00
static void
gimp_tool_options_editor_menu_popup (GimpToolOptionsEditor *editor,
GtkWidget *button,
const gchar *path)
{
GimpEditor *gimp_editor = GIMP_EDITOR (editor);
gtk_ui_manager_get_widget (GTK_UI_MANAGER (gimp_editor->ui_manager),
gimp_editor->ui_path);
gimp_ui_manager_update (gimp_editor->ui_manager, gimp_editor->popup_data);
Switch from GtkItemFactory to GtkUIManager. The migration is almost 2004-04-29 Michael Natterer <mitch@gimp.org> Switch from GtkItemFactory to GtkUIManager. The migration is almost complete, still stuff missing/incomplete, definitely added a bunch of new bugs... * app/actions/*-commands.[ch]: converted all callback from GtkItemFactory callbacks to GtkAction callbacks. * app/actions/debug-actions.c * app/actions/gradient-editor-actions.c * app/actions/help-actions.c * app/actions/plug-in-actions.c * app/actions/qmask-actions.c * app/actions/tool-options-actions.c: various fixes. * app/display/gimpdisplay.[ch] * app/display/gimpdisplayshell-appearance.[ch] * app/display/gimpdisplayshell-callbacks.c * app/display/gimpdisplayshell.[ch]: move everything from GtkItemFactory to GtkUIManager. * app/gui/dialogs.[ch]: added new function dialogs_get_toolbox(). Needed because the action callbacks don't have a widget parameter and sometimes we need a parent window for showing dialogs. * app/gui/Makefile.am * app/gui/brushes-menu.[ch] * app/gui/buffers-menu.[ch] * app/gui/channels-menu.[ch] * app/gui/colormap-editor-menu.[ch] * app/gui/dialogs-menu.[ch] * app/gui/documents-menu.[ch] * app/gui/error-console-menu.[ch] * app/gui/fonts-menu.[ch] * app/gui/gradient-editor-menu.[ch] * app/gui/gradients-menu.[ch] * app/gui/images-menu.[ch] * app/gui/layers-menu.[ch] * app/gui/palette-editor-menu.[ch] * app/gui/palettes-menu.[ch] * app/gui/patterns-menu.[ch] * app/gui/qmask-menu.[ch] * app/gui/templates-menu.[ch] * app/gui/vectors-menu.[ch]: removed these files. * app/gui/gui.c: create a global UI manager for the image popup menu and the toolbox menubar. * app/gui/menus.[ch]: removed all GtkItemFactory code. * app/gui/image-menu.[ch] * app/gui/toolbox-menu.[ch]: removed everything except the trivial setup_funcs. * app/gui/file-open-menu.c * app/gui/file-save-menu.c * app/gui/tool-options-menu.c: don't use the macros from menus.h any more, they are gone. * app/gui/gui-vtable.c * app/gui/plug-in-menus.[ch]: create/destroy the dynamic plug-in menu entries. * app/tools/gimpimagemaptool.c: s/gimp_item_factory_update/ gimp_ui_manager_update/g * app/widgets/gimpuimanager.[ch]: added API to get an action group by name. * app/widgets/gimpmenufactory.c: don't choke on the item_factory entries being NULL. * app/widgets/gimpactiongroup.c: make sure booleans set using g_object_set() only have TRUE or FALSE values. * app/widgets/gimpcolormapeditor.c * app/widgets/gimpcomponenteditor.c * app/widgets/gimpcontainereditor.[ch] * app/widgets/gimpcontainergridview.c * app/widgets/gimpcontainertreeview.c * app/widgets/gimpdockable.[ch] * app/widgets/gimpdocked.[ch] * app/widgets/gimpeditor.[ch] * app/widgets/gimperrorconsole.c * app/widgets/gimpgradienteditor.c * app/widgets/gimpitemtreeview.c * app/widgets/gimppaletteeditor.c * app/widgets/gimptoolbox.c * app/widgets/gimptooloptionseditor.c: removed all GtkItemFactory code and enable the #if 0'ed UI manager stuff. * menus/gradient-editor-menu.xml: fixed typos. * menus/image-menu.xml: duplicate everything so we have both an image menubar and an image popup menu. Badly cries for an XSL processor. * menus/toolbox-menu.xml: added an "Extensions" placeholder.
2004-04-29 20:52:29 +08:00
put the image popup menu into a dummy menubar to work around the silly 2004-05-17 Michael Natterer <mitch@gimp.org> * menus/menus.xsl: put the image popup menu into a dummy menubar to work around the silly GtkUIManager restriction that popup menus can't have tearoff items. * app/menus/menus.c * app/menus/image-menu.c * app/display/gimpdisplayshell-callbacks.c * app/gui/gui-vtable.c * app/menus/plug-in-menus.c: changed accordingly. * app/gui/gui.c (gui_restore_after_callback): connect to "notify::tearoff-menus" of GimpGuiConfig and reconfigure the global image UI manager accordingly. * app/config/gimpguiconfig.c: removed GIMP_PARAM_RESTART from the "tearoff-menus" property because GtkUIManager can change this on the fly. * app/display/gimpdisplayshell.[ch]: added the menubar to the GimpDisplayShell struct. Some cleanup in gimp_display_shell_new(). * app/display/gimpdisplayshell-appearance.c (gimp_display_shell_set_show_menubar): use shell->menubar instead of asking the UI manager. * app/widgets/gimpuimanager.[ch]: changed gimp_ui_manager_ui_get() to transparently load the XML files even if a sub-widget was requested. Reordered parameters of gimp_ui_manager_ui_popup(). Lots of internal cleanups. * app/widgets/gimpdockable.c * app/widgets/gimptooloptionseditor.c: simplified accordingly. * app/widgets/gimpeditor.[ch]: added new function gimp_editor_popup_menu() which takes a GimpMenuPositionFunc and updates/shows the editor's menu. * app/widgets/gimpcolormapeditor.c * app/widgets/gimpcomponenteditor.c * app/widgets/gimpcontainereditor.c * app/widgets/gimpcontainergridview.c * app/widgets/gimpcontainertreeview.c * app/widgets/gimperrorconsole.c * app/widgets/gimpgradienteditor.c * app/widgets/gimpitemtreeview.c * app/widgets/gimppaletteeditor.c: use gimp_editor_popup_menu(). * app/widgets/gimptoolbox.c: moved all code from gimp_toolbox_new() to GObject::constructor().
2004-05-17 21:38:03 +08:00
gimp_ui_manager_ui_popup (gimp_editor->ui_manager, path,
button,
gimp_tool_options_editor_menu_pos, button,
NULL, NULL);
}
static void
gimp_tool_options_editor_save_clicked (GtkWidget *widget,
GimpToolOptionsEditor *editor)
{
if (GTK_WIDGET_SENSITIVE (editor->restore_button) /* evil but correct */)
{
gimp_tool_options_editor_menu_popup (editor, widget,
"/tool-options-popup/Save");
}
else
{
gimp_ui_manager_activate_action (GIMP_EDITOR (editor)->ui_manager,
"tool-options",
"tool-options-save-new");
}
}
static void
gimp_tool_options_editor_restore_clicked (GtkWidget *widget,
GimpToolOptionsEditor *editor)
{
gimp_tool_options_editor_menu_popup (editor, widget,
"/tool-options-popup/Restore");
}
static void
gimp_tool_options_editor_delete_clicked (GtkWidget *widget,
GimpToolOptionsEditor *editor)
{
gimp_tool_options_editor_menu_popup (editor, widget,
"/tool-options-popup/Delete");
}
static void
gimp_tool_options_editor_drop_tool (GtkWidget *widget,
gint x,
gint y,
GimpViewable *viewable,
gpointer data)
{
GimpToolOptionsEditor *editor = GIMP_TOOL_OPTIONS_EDITOR (data);
GimpContext *context;
context = gimp_get_user_context (editor->gimp);
gimp_context_set_tool (context, GIMP_TOOL_INFO (viewable));
}
static void
gimp_tool_options_editor_tool_changed (GimpContext *context,
GimpToolInfo *tool_info,
GimpToolOptionsEditor *editor)
{
GimpToolPresets *presets;
GtkWidget *options_gui;
if (tool_info && tool_info->tool_options == editor->visible_tool_options)
return;
if (editor->visible_tool_options)
{
presets = editor->visible_tool_options->tool_info->presets;
if (presets)
g_signal_handlers_disconnect_by_func (presets,
gimp_tool_options_editor_presets_changed,
editor);
options_gui = g_object_get_data (G_OBJECT (editor->visible_tool_options),
"gimp-tool-options-gui");
if (options_gui)
gtk_widget_hide (options_gui);
editor->visible_tool_options = NULL;
}
if (tool_info && tool_info->tool_options)
{
presets = tool_info->presets;
if (presets)
g_signal_connect_object (presets, "changed",
G_CALLBACK (gimp_tool_options_editor_presets_changed),
G_OBJECT (editor), 0);
options_gui = g_object_get_data (G_OBJECT (tool_info->tool_options),
"gimp-tool-options-gui");
app/widgets/gimpactionview.c app/widgets/gimpblobeditor.c 2008-06-28 Michael Natterer <mitch@gimp.org> * app/widgets/gimpactionview.c * app/widgets/gimpblobeditor.c * app/widgets/gimpbrushfactoryview.c * app/widgets/gimpbrushselect.c * app/widgets/gimpcellrendererdashes.c * app/widgets/gimpcellrendererviewable.c * app/widgets/gimpcolorbar.c * app/widgets/gimpcoloreditor.c * app/widgets/gimpcolorframe.c * app/widgets/gimpcomponenteditor.c * app/widgets/gimpcontainerbox.c * app/widgets/gimpcontainergridview.c * app/widgets/gimpcontainerpopup.c * app/widgets/gimpcontainertreeview.c * app/widgets/gimpcurveview.c * app/widgets/gimpdasheditor.c * app/widgets/gimpdatafactoryview.c * app/widgets/gimpdock.c * app/widgets/gimpdockable.c * app/widgets/gimpdockseparator.c * app/widgets/gimpfgbgeditor.c * app/widgets/gimpfgbgview.c * app/widgets/gimpgradienteditor.c * app/widgets/gimphandlebar.c * app/widgets/gimphistogrambox.c * app/widgets/gimphistogramview.c * app/widgets/gimpitemtreeview.c * app/widgets/gimpmenudock.c * app/widgets/gimpmessagebox.c * app/widgets/gimppaletteview.c * app/widgets/gimpscalebutton.c * app/widgets/gimpsessioninfo-book.c * app/widgets/gimpsessioninfo-dock.c * app/widgets/gimpsettingseditor.c * app/widgets/gimpstrokeeditor.c * app/widgets/gimptemplateeditor.c * app/widgets/gimptemplateview.c * app/widgets/gimpthumbbox.c * app/widgets/gimptoolbox.c * app/widgets/gimptooloptionseditor.c * app/widgets/gimptoolview.c * app/widgets/gimpuimanager.c * app/widgets/gimpviewabledialog.c * app/widgets/gimpviewrenderervectors.c * app/widgets/gimpwidgets-utils.c: use accessors instead of accessing members of GTK+ widgets directly. svn path=/trunk/; revision=26008
2008-06-28 23:50:27 +08:00
if (! gtk_widget_get_parent (options_gui))
gtk_box_pack_start (GTK_BOX (editor->options_vbox), options_gui,
FALSE, FALSE, 0);
gtk_widget_show (options_gui);
editor->visible_tool_options = tool_info->tool_options;
gimp_help_set_help_data (editor->scrolled_window, NULL,
tool_info->help_id);
}
else
{
presets = NULL;
}
removed crap from ancient times when tools used to be an enum. 2001-02-23 Michael Natterer <mitch@gimp.org> * app/app_procs.c: removed crap from ancient times when tools used to be an enum. * app/brush_select.[ch]: cleaned up the gui and made global paint mode toggling much simpler by expanding vertically instead of reparenting. * app/context_manager.c: removed hack by using a tool manager accessor function. * app/gimpcontext.c: use the new standard tool info object. Tools also _behave_ like all other data types now (can e.g. be refreshed). * app/tools/tool.[ch] * app/tools/gimptoolinfo.[ch]: added an "identifier" which is an untranslated string with a meaningful prefix and name, e.g. "gimp:color_picker_tool". Renamed "tool_name" and "tool_desc" to "blurb" and "help", changed the constructor accordingly. Added gimp_tool_info_get_standards() to make the context work with tool refresh. * app/tools/tool_manager.[ch] * app/tools/tools.c: removed the global list of tool class structures because the tool info list is in place. Added tool_manager_register_tool_options() which calls tool_options_dialog_add() and registers the options in the global_tool_info_list. * app/tools/Makefile.am * app/tools/paint_options.[ch] * app/tools/selection_options.[ch] * app/tools/tool_options.[ch] * app/tools/tool_options_dialog.[ch]: build them all again. This is mostly the old tool options system with minor modifications to work with the new stuff. The tool options auto-update with the user context now, so there are no update functions any more. * app/gimpdnd.c * app/toolbox.c * app/tools/color_picker.c * app/tools/measure.c * app/tools/move.c: changed accordingly.
2001-02-24 05:32:47 +08:00
gimp_tool_options_editor_presets_update (editor, presets);
gimp_docked_title_changed (GIMP_DOCKED (editor));
}
static gboolean
gimp_tool_options_editor_save_presets_idle (GimpToolOptionsEditor *editor)
{
editor->save_idle_id = 0;
gimp_tool_options_editor_save_presets (editor);
return FALSE;
}
static void
gimp_tool_options_editor_queue_save_presets (GimpToolOptionsEditor *editor,
GimpToolPresets *presets)
{
if (g_list_find (editor->save_queue, presets))
return;
editor->save_queue = g_list_append (editor->save_queue, presets);
if (! editor->save_idle_id)
{
editor->save_idle_id =
g_idle_add ((GSourceFunc) gimp_tool_options_editor_save_presets_idle,
editor);
}
}
static void
gimp_tool_options_editor_save_presets (GimpToolOptionsEditor *editor)
{
GList *list;
if (editor->save_idle_id)
{
g_source_remove (editor->save_idle_id);
editor->save_idle_id = 0;
}
for (list = editor->save_queue; list; list = list->next)
{
GimpToolPresets *presets = list->data;
GError *error = NULL;
if (! gimp_tool_presets_save (presets, &error))
{
gimp_message (editor->gimp, G_OBJECT (editor), GIMP_MESSAGE_ERROR,
_("Error saving tool options presets: %s"),
error->message);
g_error_free (error);
}
}
g_list_free (editor->save_queue);
editor->save_queue = NULL;
}
static void
gimp_tool_options_editor_presets_changed (GimpToolPresets *presets,
GimpToolOptionsEditor *editor)
{
gimp_tool_options_editor_queue_save_presets (editor, presets);
gimp_tool_options_editor_presets_update (editor, presets);
}
static void
gimp_tool_options_editor_presets_update (GimpToolOptionsEditor *editor,
GimpToolPresets *presets)
{
gboolean save_sensitive = FALSE;
gboolean restore_sensitive = FALSE;
gboolean delete_sensitive = FALSE;
gboolean reset_sensitive = FALSE;
if (presets)
{
save_sensitive = TRUE;
reset_sensitive = TRUE;
if (! gimp_container_is_empty (GIMP_CONTAINER (presets)))
{
restore_sensitive = TRUE;
delete_sensitive = TRUE;
}
}
removed crap from ancient times when tools used to be an enum. 2001-02-23 Michael Natterer <mitch@gimp.org> * app/app_procs.c: removed crap from ancient times when tools used to be an enum. * app/brush_select.[ch]: cleaned up the gui and made global paint mode toggling much simpler by expanding vertically instead of reparenting. * app/context_manager.c: removed hack by using a tool manager accessor function. * app/gimpcontext.c: use the new standard tool info object. Tools also _behave_ like all other data types now (can e.g. be refreshed). * app/tools/tool.[ch] * app/tools/gimptoolinfo.[ch]: added an "identifier" which is an untranslated string with a meaningful prefix and name, e.g. "gimp:color_picker_tool". Renamed "tool_name" and "tool_desc" to "blurb" and "help", changed the constructor accordingly. Added gimp_tool_info_get_standards() to make the context work with tool refresh. * app/tools/tool_manager.[ch] * app/tools/tools.c: removed the global list of tool class structures because the tool info list is in place. Added tool_manager_register_tool_options() which calls tool_options_dialog_add() and registers the options in the global_tool_info_list. * app/tools/Makefile.am * app/tools/paint_options.[ch] * app/tools/selection_options.[ch] * app/tools/tool_options.[ch] * app/tools/tool_options_dialog.[ch]: build them all again. This is mostly the old tool options system with minor modifications to work with the new stuff. The tool options auto-update with the user context now, so there are no update functions any more. * app/gimpdnd.c * app/toolbox.c * app/tools/color_picker.c * app/tools/measure.c * app/tools/move.c: changed accordingly.
2001-02-24 05:32:47 +08:00
gtk_widget_set_sensitive (editor->save_button, save_sensitive);
gtk_widget_set_sensitive (editor->restore_button, restore_sensitive);
gtk_widget_set_sensitive (editor->delete_button, delete_sensitive);
gtk_widget_set_sensitive (editor->reset_button, reset_sensitive);
}