app: add a ton of parameters to GimpImageMapTool::get_settings_ui()

so they can be passed in instead of being looked up in the class
struct, which enables freely configuring the settings stuff from
subclasses, such as soon GimpOperationTool.
This commit is contained in:
Michael Natterer 2012-03-31 22:33:43 +02:00
parent 77f7b31fa3
commit 9031cdc645
4 changed files with 52 additions and 30 deletions

View File

@ -60,21 +60,19 @@ static gboolean gimp_image_map_tool_settings_export (GimpSettingsBox *box,
GtkWidget *
gimp_image_map_tool_real_get_settings_ui (GimpImageMapTool *image_map_tool,
GimpContainer *settings,
const gchar *settings_filename,
const gchar *import_dialog_title,
const gchar *export_dialog_title,
const gchar *file_dialog_help_id,
const gchar *default_folder,
GtkWidget **settings_box)
{
GimpImageMapToolClass *klass;
GimpToolInfo *tool_info;
GtkSizeGroup *label_group;
GtkWidget *hbox;
GtkWidget *label;
GtkWidget *settings_combo;
gchar *filename;
gchar *folder;
klass = GIMP_IMAGE_MAP_TOOL_GET_CLASS (image_map_tool);
if (! klass->settings_name)
return NULL;
GimpToolInfo *tool_info;
GtkSizeGroup *label_group;
GtkWidget *hbox;
GtkWidget *label;
GtkWidget *settings_combo;
tool_info = GIMP_TOOL (image_map_tool)->tool_info;
@ -87,24 +85,18 @@ gimp_image_map_tool_real_get_settings_ui (GimpImageMapTool *image_map_tool,
gtk_size_group_add_widget (label_group, label);
gtk_widget_show (label);
filename = gimp_tool_info_build_options_filename (tool_info, ".settings");
folder = g_build_filename (gimp_directory (), klass->settings_name, NULL);
*settings_box = gimp_settings_box_new (tool_info->gimp,
image_map_tool->config,
klass->recent_settings,
filename,
klass->import_dialog_title,
klass->export_dialog_title,
tool_info->help_id,
folder,
settings,
settings_filename,
import_dialog_title,
export_dialog_title,
file_dialog_help_id,
default_folder,
NULL);
gtk_box_pack_start (GTK_BOX (hbox), *settings_box, TRUE, TRUE, 0);
gtk_widget_show (*settings_box);
g_free (filename);
g_free (folder);
settings_combo = gimp_settings_box_get_combo (GIMP_SETTINGS_BOX (*settings_box));
gtk_label_set_mnemonic_widget (GTK_LABEL (label), settings_combo);

View File

@ -22,6 +22,12 @@
GtkWidget * gimp_image_map_tool_real_get_settings_ui (GimpImageMapTool *tool,
GimpContainer *settings,
const gchar *settings_filename,
const gchar *import_dialog_title,
const gchar *export_dialog_title,
const gchar *file_dialog_help_id,
const gchar *default_folder,
GtkWidget **settings_box);
gboolean gimp_image_map_tool_real_settings_import (GimpImageMapTool *tool,
const gchar *filename,

View File

@ -297,7 +297,6 @@ gimp_image_map_tool_initialize (GimpTool *tool,
GtkWidget *dialog;
GtkWidget *vbox;
GtkWidget *toggle;
GtkWidget *settings_ui;
klass = GIMP_IMAGE_MAP_TOOL_GET_CLASS (image_map_tool);
@ -355,11 +354,30 @@ gimp_image_map_tool_initialize (GimpTool *tool,
G_CALLBACK (gimp_image_map_tool_response),
G_OBJECT (image_map_tool), 0);
settings_ui = klass->get_settings_ui (image_map_tool,
&image_map_tool->settings_box);
if (settings_ui)
if (klass->settings_name)
{
GtkWidget *settings_ui;
gchar *settings_filename;
gchar *default_folder;
settings_filename =
gimp_tool_info_build_options_filename (tool_info, ".settings");
default_folder =
g_build_filename (gimp_directory (), klass->settings_name, NULL);
settings_ui = klass->get_settings_ui (image_map_tool,
klass->recent_settings,
settings_filename,
klass->import_dialog_title,
klass->export_dialog_title,
tool_info->help_id,
default_folder,
&image_map_tool->settings_box);
g_free (settings_filename);
g_free (default_folder);
gtk_box_pack_start (GTK_BOX (image_map_tool->main_vbox), settings_ui,
FALSE, FALSE, 0);
gtk_widget_show (settings_ui);

View File

@ -73,6 +73,12 @@ struct _GimpImageMapToolClass
void (* reset) (GimpImageMapTool *image_map_tool);
GtkWidget * (* get_settings_ui) (GimpImageMapTool *image_map_tool,
GimpContainer *settings,
const gchar *settings_filename,
const gchar *import_dialog_title,
const gchar *export_dialog_title,
const gchar *file_dialog_help_id,
const gchar *default_folder,
GtkWidget **settings_box);
gboolean (* settings_import) (GimpImageMapTool *image_map_tool,