removed "enabled" property. Removed GIMP_CONTROLLER_PARAM_RERIALIZE from

2004-06-17  Michael Natterer  <mitch@gimp.org>

	* libgimpwidgets/gimpcontroller.[ch]: removed "enabled"
	property. Removed GIMP_CONTROLLER_PARAM_RERIALIZE from the "name"
	property because it's the hardware-determined name of this
	controller instance.

	* app/widgets/gimpcontrollerwheel.c
	* modules/controller_linux_input.c: set the name.

	* libgimpwidgets/gimpwidgets.h: #include gimpcontroller.h.

	* app/widgets/gimpcontrollerinfo.[ch]: added "enabled" here
	instead.  Don't dispatch events if the controller is
	disabled. Made everything work (not crash) with info->mapping
	being NULL.

	* etc/controllerrc: updated again with the changed format.

	* app/widgets/gimpcontrollers.[ch]: added
	gimp_controllers_get_list() which returns the container of
	controllers.

	* app/widgets/gimphelp-ids.h
	* app/gui/preferences-dialog.c: added controller configuration
	(can't change anything yet, just view the current settings).
	Resurrected the "Input Devices" page and removed the "Session"
	page by moving its widgets to other pages. Pack the various
	"Save now"/"Clear now" buttons vertically, not horizontally.
	Fixes bug #139069.

	* themes/Default/images/preferences/Makefile.am
	* themes/Default/images/preferences/controllers.png
	* themes/Default/images/preferences/theme.png: new icons for new
	prefs pages. Someone needs to make them nice...
This commit is contained in:
Michael Natterer 2004-06-17 14:07:05 +00:00 committed by Michael Natterer
parent c3a0a277e7
commit 5f4eabdbcb
17 changed files with 677 additions and 357 deletions

View File

@ -1,3 +1,39 @@
2004-06-17 Michael Natterer <mitch@gimp.org>
* libgimpwidgets/gimpcontroller.[ch]: removed "enabled"
property. Removed GIMP_CONTROLLER_PARAM_RERIALIZE from the "name"
property because it's the hardware-determined name of this
controller instance.
* app/widgets/gimpcontrollerwheel.c
* modules/controller_linux_input.c: set the name.
* libgimpwidgets/gimpwidgets.h: #include gimpcontroller.h.
* app/widgets/gimpcontrollerinfo.[ch]: added "enabled" here
instead. Don't dispatch events if the controller is
disabled. Made everything work (not crash) with info->mapping
being NULL.
* etc/controllerrc: updated again with the changed format.
* app/widgets/gimpcontrollers.[ch]: added
gimp_controllers_get_list() which returns the container of
controllers.
* app/widgets/gimphelp-ids.h
* app/gui/preferences-dialog.c: added controller configuration
(can't change anything yet, just view the current settings).
Resurrected the "Input Devices" page and removed the "Session"
page by moving its widgets to other pages. Pack the various
"Save now"/"Clear now" buttons vertically, not horizontally.
Fixes bug #139069.
* themes/Default/images/preferences/Makefile.am
* themes/Default/images/preferences/controllers.png
* themes/Default/images/preferences/theme.png: new icons for new
prefs pages. Someone needs to make them nice...
2004-06-17 Michael Natterer <mitch@gimp.org> 2004-06-17 Michael Natterer <mitch@gimp.org>
* app/display/gimpdisplayshell.c: GtkUIManager makes the menu bar * app/display/gimpdisplayshell.c: GtkUIManager makes the menu bar

View File

@ -25,6 +25,7 @@
#include "libgimpmath/gimpmath.h" #include "libgimpmath/gimpmath.h"
#include "libgimpbase/gimpbase.h" #include "libgimpbase/gimpbase.h"
#include "libgimpwidgets/gimpwidgets.h" #include "libgimpwidgets/gimpwidgets.h"
#include "libgimpwidgets/gimpcontroller.h"
#include "gui-types.h" #include "gui-types.h"
@ -34,11 +35,14 @@
#include "config/gimprc.h" #include "config/gimprc.h"
#include "core/gimp.h" #include "core/gimp.h"
#include "core/gimplist.h"
#include "core/gimptemplate.h" #include "core/gimptemplate.h"
#include "widgets/gimpcolorpanel.h" #include "widgets/gimpcolorpanel.h"
#include "widgets/gimpcontainercombobox.h" #include "widgets/gimpcontainercombobox.h"
#include "widgets/gimpcontainerview.h" #include "widgets/gimpcontainerview.h"
#include "widgets/gimpcontrollers.h"
#include "widgets/gimpcontrollerinfo.h"
#include "widgets/gimpdeviceinfo.h" #include "widgets/gimpdeviceinfo.h"
#include "widgets/gimpdevices.h" #include "widgets/gimpdevices.h"
#include "widgets/gimpdialogfactory.h" #include "widgets/gimpdialogfactory.h"
@ -642,6 +646,37 @@ prefs_table_new (gint rows,
return table; return table;
} }
static GtkWidget *
prefs_button_add (const gchar *stock_id,
const gchar *label,
GtkBox *box)
{
GtkWidget *button;
GtkWidget *hbox;
GtkWidget *image;
GtkWidget *lab;
button = gtk_button_new ();
hbox = gtk_hbox_new (FALSE, 4);
gtk_container_add (GTK_CONTAINER (button), hbox);
gtk_widget_show (hbox);
image = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_BUTTON);
gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
gtk_widget_show (image);
lab = gtk_label_new_with_mnemonic (label);
gtk_label_set_mnemonic_widget (GTK_LABEL (lab), button);
gtk_box_pack_start (GTK_BOX (hbox), lab, TRUE, TRUE, 0);
gtk_widget_show (lab);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
gtk_widget_show (button);
return button;
}
static GtkWidget * static GtkWidget *
prefs_check_button_add (GObject *config, prefs_check_button_add (GObject *config,
const gchar *property_name, const gchar *property_name,
@ -1147,37 +1182,38 @@ prefs_dialog_new (Gimp *gimp,
prefs_check_button_add (object, "can-change-accels", prefs_check_button_add (object, "can-change-accels",
_("Use Dynamic _Keyboard Shortcuts"), _("Use Dynamic _Keyboard Shortcuts"),
GTK_BOX (vbox2)); GTK_BOX (vbox2));
prefs_check_button_add (object, "save-accels",
_("Save Keyboard Shortcuts on Exit"),
GTK_BOX (vbox2));
/* Input Device Settings */ button = prefs_button_add (GTK_STOCK_SAVE,
vbox2 = prefs_frame_new (_("Extended Input Devices"), _("Save Keyboard Shortcuts Now"),
GTK_CONTAINER (vbox), FALSE); GTK_BOX (vbox2));
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (menus_save),
gimp);
hbox = gtk_hbox_new (FALSE, 6); button = prefs_button_add (GTK_STOCK_CLEAR,
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0); _("Clear Saved Keyboard Shortcuts Now"),
gtk_widget_show (hbox); GTK_BOX (vbox2));
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (menus_clear),
gimp);
button = gtk_button_new_with_label (_("Configure Extended Input Devices"));
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0);
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
gtk_widget_show (button);
g_signal_connect (button, "clicked",
G_CALLBACK (prefs_input_devices_dialog),
gimp);
/***********/ /***********/
/* Theme */ /* Theme */
/***********/ /***********/
vbox = prefs_notebook_append_page (gimp, vbox = prefs_notebook_append_page (gimp,
GTK_NOTEBOOK (notebook), GTK_NOTEBOOK (notebook),
_("Theme"), _("Theme"),
"theme.png", "theme.png",
GTK_TREE_STORE (tree), GTK_TREE_STORE (tree),
_("Theme"), _("Theme"),
GIMP_HELP_PREFS_THEME, GIMP_HELP_PREFS_THEME,
NULL, NULL,
&top_iter, &top_iter,
page_index++); page_index++);
vbox2 = prefs_frame_new (_("Select Theme"), GTK_CONTAINER (vbox), TRUE); vbox2 = prefs_frame_new (_("Select Theme"), GTK_CONTAINER (vbox), TRUE);
@ -1252,11 +1288,9 @@ prefs_dialog_new (Gimp *gimp,
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox); gtk_widget_show (hbox);
button = gtk_button_new_with_mnemonic (_("Reload C_urrent Theme")); button = prefs_button_add (GTK_STOCK_REFRESH,
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 4, 0); _("Reload C_urrent Theme"),
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); GTK_BOX (hbox));
gtk_widget_show (button);
g_signal_connect (button, "clicked", g_signal_connect (button, "clicked",
G_CALLBACK (prefs_theme_reload_callback), G_CALLBACK (prefs_theme_reload_callback),
gimp); gimp);
@ -1748,6 +1782,165 @@ prefs_dialog_new (Gimp *gimp,
sizeentry); sizeentry);
/*******************/
/* Input Devices */
/*******************/
vbox = prefs_notebook_append_page (gimp,
GTK_NOTEBOOK (notebook),
_("Input Devices"),
"input-devices.png",
GTK_TREE_STORE (tree),
_("Input Devices"),
GIMP_HELP_PREFS_INPUT_DEVICES,
NULL,
&top_iter,
page_index++);
/* Extended Input Devices */
vbox2 = prefs_frame_new (_("Extended Input Devices"),
GTK_CONTAINER (vbox), FALSE);
button = prefs_button_add (GTK_STOCK_PREFERENCES,
_("Configure Extended Input Devices..."),
GTK_BOX (vbox2));
g_signal_connect (button, "clicked",
G_CALLBACK (prefs_input_devices_dialog),
gimp);
prefs_check_button_add (object, "save-device-status",
_("Save Input Device Settings on Exit"),
GTK_BOX (vbox2));
button = prefs_button_add (GTK_STOCK_SAVE,
_("Save Input Device Settings Now"),
GTK_BOX (vbox2));
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (gimp_devices_save),
gimp);
button = prefs_button_add (GTK_STOCK_CLEAR,
_("Clear Saved Input Device Settings Now"),
GTK_BOX (vbox2));
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (gimp_devices_clear),
gimp);
/****************************/
/* Additional Controllers */
/****************************/
vbox = prefs_notebook_append_page (gimp,
GTK_NOTEBOOK (notebook),
_("Additional Input Controllers"),
"controllers.png",
GTK_TREE_STORE (tree),
_("Input Controllers"),
GIMP_HELP_PREFS_INPUT_CONTROLLERS,
&top_iter,
&child_iter,
page_index++);
/* Controllers */
vbox2 = prefs_frame_new (_("Additional Controllers"),
GTK_CONTAINER (vbox), TRUE);
enum
{
COLUMN_EVENT,
COLUMN_ACTION,
NUM_COLUMNS
};
{
GimpContainer *controllers;
GtkWidget *notebook;
GList *list;
controllers = gimp_controllers_get_list (gimp);
notebook = gtk_notebook_new ();
gtk_box_pack_start (GTK_BOX (vbox2), notebook, TRUE, TRUE, 0);
gtk_widget_show (notebook);
for (list = GIMP_LIST (controllers)->list;
list;
list = g_list_next (list))
{
GimpControllerInfo *info = list->data;
GtkListStore *store;
GtkWidget *vbox3;
GtkWidget *tv;
GtkWidget *sw;
gint n_events;
gint i;
vbox3 = gtk_vbox_new (FALSE, 4);
gtk_container_set_border_width (GTK_CONTAINER (vbox3), 4);
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox3,
gtk_label_new (GIMP_OBJECT (info)->name));
gtk_widget_show (vbox3);
table = prefs_table_new (2, GTK_CONTAINER (vbox3));
gimp_table_attach_aligned (GTK_TABLE (table), 0, 0,
_("Controller Class:"), 0.0, 0.5,
gtk_label_new (GIMP_CONTROLLER_GET_CLASS (info->controller)->name),
1, TRUE);
gimp_table_attach_aligned (GTK_TABLE (table), 0, 1,
_("Controller Instance:"), 0.0, 0.5,
gtk_label_new (info->controller->name),
1, TRUE);
store = gtk_list_store_new (NUM_COLUMNS,
G_TYPE_STRING, G_TYPE_STRING);
tv = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
g_object_unref (store);
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
GTK_SHADOW_IN);
gtk_container_add (GTK_CONTAINER (sw), tv);
gtk_widget_show (tv);
gtk_container_add (GTK_CONTAINER (vbox3), sw);
gtk_widget_show (sw);
n_events = gimp_controller_get_n_events (info->controller);
for (i = 0; i < n_events; i++)
{
GtkTreeIter iter;
const gchar *event_name;
const gchar *event_blurb;
const gchar *event_action;
gtk_list_store_append (store, &iter);
event_name = gimp_controller_get_event_name (info->controller, i);
event_blurb = gimp_controller_get_event_blurb (info->controller, i);
event_action = g_hash_table_lookup (info->mapping, event_name);
gtk_list_store_set (store, &iter,
COLUMN_EVENT, event_blurb,
COLUMN_ACTION, event_action,
-1);
}
gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tv), 0,
_("Event"),
gtk_cell_renderer_text_new (),
"text", COLUMN_EVENT,
NULL);
gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tv), 2,
_("Action"),
gtk_cell_renderer_text_new (),
"text", COLUMN_ACTION,
NULL);
}
}
/***********************/ /***********************/
/* Window Management */ /* Window Management */
/***********************/ /***********************/
@ -1782,6 +1975,27 @@ prefs_dialog_new (Gimp *gimp,
_("Activate the _Focused Image"), _("Activate the _Focused Image"),
GTK_BOX (vbox2)); GTK_BOX (vbox2));
/* Window Positions */
vbox2 = prefs_frame_new (_("Window Positions"), GTK_CONTAINER (vbox), FALSE);
prefs_check_button_add (object, "save-session-info",
_("_Save Window Positions on Exit"),
GTK_BOX (vbox2));
button = prefs_button_add (GTK_STOCK_SAVE,
_("Save Window Positions Now"),
GTK_BOX (vbox2));
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (session_save),
gimp);
button = prefs_button_add (GTK_STOCK_CLEAR,
_("Clear Saved Window Positions Now"),
GTK_BOX (vbox2));
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (session_clear),
gimp);
/*****************/ /*****************/
/* Environment */ /* Environment */
@ -1844,108 +2058,6 @@ prefs_dialog_new (Gimp *gimp,
size_group = NULL; size_group = NULL;
/************************/
/* Session Management */
/************************/
vbox = prefs_notebook_append_page (gimp,
GTK_NOTEBOOK (notebook),
_("Session Management"),
"session.png",
GTK_TREE_STORE (tree),
_("Session"),
GIMP_HELP_PREFS_SESSION,
NULL,
&top_iter,
page_index++);
/* Window Positions */
vbox2 = prefs_frame_new (_("Window Positions"), GTK_CONTAINER (vbox), FALSE);
prefs_check_button_add (object, "save-session-info",
_("_Save Window Positions on Exit"),
GTK_BOX (vbox2));
hbox = gtk_hbox_new (FALSE, 6);
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
button = gtk_button_new_with_label (_("Save Window Positions Now"));
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
gtk_widget_show (button);
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (session_save),
gimp);
button = gtk_button_new_with_label (_("Clear Saved Window Positions Now"));
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
gtk_widget_show (button);
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (session_clear),
gimp);
/* Keyboard Shortcuts */
vbox2 = prefs_frame_new (_("Keyboard Shortcuts"), GTK_CONTAINER (vbox), FALSE);
prefs_check_button_add (object, "save-accels",
_("Save Keyboard Shortcuts on Exit"),
GTK_BOX (vbox2));
hbox = gtk_hbox_new (FALSE, 6);
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
button = gtk_button_new_with_label (_("Save Keyboard Shortcuts Now"));
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
gtk_widget_show (button);
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (menus_save),
gimp);
button = gtk_button_new_with_label (_("Clear Saved Keyboard Shortcuts Now"));
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
gtk_widget_show (button);
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (menus_clear),
gimp);
/* Input Devices */
vbox2 = prefs_frame_new (_("Input Devices"), GTK_CONTAINER (vbox), FALSE);
prefs_check_button_add (object, "save-device-status",
_("Save Input Device Settings on Exit"),
GTK_BOX (vbox2));
hbox = gtk_hbox_new (FALSE, 6);
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
button = gtk_button_new_with_label (_("Save Input Device Settings Now"));
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
gtk_widget_show (button);
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (gimp_devices_save),
gimp);
button = gtk_button_new_with_label (_("Clear Saved Input Device Settings Now"));
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
gtk_widget_show (button);
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (gimp_devices_clear),
gimp);
/*************/ /*************/
/* Folders */ /* Folders */
/*************/ /*************/

View File

@ -25,6 +25,7 @@
#include "libgimpmath/gimpmath.h" #include "libgimpmath/gimpmath.h"
#include "libgimpbase/gimpbase.h" #include "libgimpbase/gimpbase.h"
#include "libgimpwidgets/gimpwidgets.h" #include "libgimpwidgets/gimpwidgets.h"
#include "libgimpwidgets/gimpcontroller.h"
#include "gui-types.h" #include "gui-types.h"
@ -34,11 +35,14 @@
#include "config/gimprc.h" #include "config/gimprc.h"
#include "core/gimp.h" #include "core/gimp.h"
#include "core/gimplist.h"
#include "core/gimptemplate.h" #include "core/gimptemplate.h"
#include "widgets/gimpcolorpanel.h" #include "widgets/gimpcolorpanel.h"
#include "widgets/gimpcontainercombobox.h" #include "widgets/gimpcontainercombobox.h"
#include "widgets/gimpcontainerview.h" #include "widgets/gimpcontainerview.h"
#include "widgets/gimpcontrollers.h"
#include "widgets/gimpcontrollerinfo.h"
#include "widgets/gimpdeviceinfo.h" #include "widgets/gimpdeviceinfo.h"
#include "widgets/gimpdevices.h" #include "widgets/gimpdevices.h"
#include "widgets/gimpdialogfactory.h" #include "widgets/gimpdialogfactory.h"
@ -642,6 +646,37 @@ prefs_table_new (gint rows,
return table; return table;
} }
static GtkWidget *
prefs_button_add (const gchar *stock_id,
const gchar *label,
GtkBox *box)
{
GtkWidget *button;
GtkWidget *hbox;
GtkWidget *image;
GtkWidget *lab;
button = gtk_button_new ();
hbox = gtk_hbox_new (FALSE, 4);
gtk_container_add (GTK_CONTAINER (button), hbox);
gtk_widget_show (hbox);
image = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_BUTTON);
gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
gtk_widget_show (image);
lab = gtk_label_new_with_mnemonic (label);
gtk_label_set_mnemonic_widget (GTK_LABEL (lab), button);
gtk_box_pack_start (GTK_BOX (hbox), lab, TRUE, TRUE, 0);
gtk_widget_show (lab);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
gtk_widget_show (button);
return button;
}
static GtkWidget * static GtkWidget *
prefs_check_button_add (GObject *config, prefs_check_button_add (GObject *config,
const gchar *property_name, const gchar *property_name,
@ -1147,37 +1182,38 @@ prefs_dialog_new (Gimp *gimp,
prefs_check_button_add (object, "can-change-accels", prefs_check_button_add (object, "can-change-accels",
_("Use Dynamic _Keyboard Shortcuts"), _("Use Dynamic _Keyboard Shortcuts"),
GTK_BOX (vbox2)); GTK_BOX (vbox2));
prefs_check_button_add (object, "save-accels",
_("Save Keyboard Shortcuts on Exit"),
GTK_BOX (vbox2));
/* Input Device Settings */ button = prefs_button_add (GTK_STOCK_SAVE,
vbox2 = prefs_frame_new (_("Extended Input Devices"), _("Save Keyboard Shortcuts Now"),
GTK_CONTAINER (vbox), FALSE); GTK_BOX (vbox2));
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (menus_save),
gimp);
hbox = gtk_hbox_new (FALSE, 6); button = prefs_button_add (GTK_STOCK_CLEAR,
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0); _("Clear Saved Keyboard Shortcuts Now"),
gtk_widget_show (hbox); GTK_BOX (vbox2));
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (menus_clear),
gimp);
button = gtk_button_new_with_label (_("Configure Extended Input Devices"));
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0);
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
gtk_widget_show (button);
g_signal_connect (button, "clicked",
G_CALLBACK (prefs_input_devices_dialog),
gimp);
/***********/ /***********/
/* Theme */ /* Theme */
/***********/ /***********/
vbox = prefs_notebook_append_page (gimp, vbox = prefs_notebook_append_page (gimp,
GTK_NOTEBOOK (notebook), GTK_NOTEBOOK (notebook),
_("Theme"), _("Theme"),
"theme.png", "theme.png",
GTK_TREE_STORE (tree), GTK_TREE_STORE (tree),
_("Theme"), _("Theme"),
GIMP_HELP_PREFS_THEME, GIMP_HELP_PREFS_THEME,
NULL, NULL,
&top_iter, &top_iter,
page_index++); page_index++);
vbox2 = prefs_frame_new (_("Select Theme"), GTK_CONTAINER (vbox), TRUE); vbox2 = prefs_frame_new (_("Select Theme"), GTK_CONTAINER (vbox), TRUE);
@ -1252,11 +1288,9 @@ prefs_dialog_new (Gimp *gimp,
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox); gtk_widget_show (hbox);
button = gtk_button_new_with_mnemonic (_("Reload C_urrent Theme")); button = prefs_button_add (GTK_STOCK_REFRESH,
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 4, 0); _("Reload C_urrent Theme"),
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); GTK_BOX (hbox));
gtk_widget_show (button);
g_signal_connect (button, "clicked", g_signal_connect (button, "clicked",
G_CALLBACK (prefs_theme_reload_callback), G_CALLBACK (prefs_theme_reload_callback),
gimp); gimp);
@ -1748,6 +1782,165 @@ prefs_dialog_new (Gimp *gimp,
sizeentry); sizeentry);
/*******************/
/* Input Devices */
/*******************/
vbox = prefs_notebook_append_page (gimp,
GTK_NOTEBOOK (notebook),
_("Input Devices"),
"input-devices.png",
GTK_TREE_STORE (tree),
_("Input Devices"),
GIMP_HELP_PREFS_INPUT_DEVICES,
NULL,
&top_iter,
page_index++);
/* Extended Input Devices */
vbox2 = prefs_frame_new (_("Extended Input Devices"),
GTK_CONTAINER (vbox), FALSE);
button = prefs_button_add (GTK_STOCK_PREFERENCES,
_("Configure Extended Input Devices..."),
GTK_BOX (vbox2));
g_signal_connect (button, "clicked",
G_CALLBACK (prefs_input_devices_dialog),
gimp);
prefs_check_button_add (object, "save-device-status",
_("Save Input Device Settings on Exit"),
GTK_BOX (vbox2));
button = prefs_button_add (GTK_STOCK_SAVE,
_("Save Input Device Settings Now"),
GTK_BOX (vbox2));
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (gimp_devices_save),
gimp);
button = prefs_button_add (GTK_STOCK_CLEAR,
_("Clear Saved Input Device Settings Now"),
GTK_BOX (vbox2));
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (gimp_devices_clear),
gimp);
/****************************/
/* Additional Controllers */
/****************************/
vbox = prefs_notebook_append_page (gimp,
GTK_NOTEBOOK (notebook),
_("Additional Input Controllers"),
"controllers.png",
GTK_TREE_STORE (tree),
_("Input Controllers"),
GIMP_HELP_PREFS_INPUT_CONTROLLERS,
&top_iter,
&child_iter,
page_index++);
/* Controllers */
vbox2 = prefs_frame_new (_("Additional Controllers"),
GTK_CONTAINER (vbox), TRUE);
enum
{
COLUMN_EVENT,
COLUMN_ACTION,
NUM_COLUMNS
};
{
GimpContainer *controllers;
GtkWidget *notebook;
GList *list;
controllers = gimp_controllers_get_list (gimp);
notebook = gtk_notebook_new ();
gtk_box_pack_start (GTK_BOX (vbox2), notebook, TRUE, TRUE, 0);
gtk_widget_show (notebook);
for (list = GIMP_LIST (controllers)->list;
list;
list = g_list_next (list))
{
GimpControllerInfo *info = list->data;
GtkListStore *store;
GtkWidget *vbox3;
GtkWidget *tv;
GtkWidget *sw;
gint n_events;
gint i;
vbox3 = gtk_vbox_new (FALSE, 4);
gtk_container_set_border_width (GTK_CONTAINER (vbox3), 4);
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox3,
gtk_label_new (GIMP_OBJECT (info)->name));
gtk_widget_show (vbox3);
table = prefs_table_new (2, GTK_CONTAINER (vbox3));
gimp_table_attach_aligned (GTK_TABLE (table), 0, 0,
_("Controller Class:"), 0.0, 0.5,
gtk_label_new (GIMP_CONTROLLER_GET_CLASS (info->controller)->name),
1, TRUE);
gimp_table_attach_aligned (GTK_TABLE (table), 0, 1,
_("Controller Instance:"), 0.0, 0.5,
gtk_label_new (info->controller->name),
1, TRUE);
store = gtk_list_store_new (NUM_COLUMNS,
G_TYPE_STRING, G_TYPE_STRING);
tv = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
g_object_unref (store);
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
GTK_SHADOW_IN);
gtk_container_add (GTK_CONTAINER (sw), tv);
gtk_widget_show (tv);
gtk_container_add (GTK_CONTAINER (vbox3), sw);
gtk_widget_show (sw);
n_events = gimp_controller_get_n_events (info->controller);
for (i = 0; i < n_events; i++)
{
GtkTreeIter iter;
const gchar *event_name;
const gchar *event_blurb;
const gchar *event_action;
gtk_list_store_append (store, &iter);
event_name = gimp_controller_get_event_name (info->controller, i);
event_blurb = gimp_controller_get_event_blurb (info->controller, i);
event_action = g_hash_table_lookup (info->mapping, event_name);
gtk_list_store_set (store, &iter,
COLUMN_EVENT, event_blurb,
COLUMN_ACTION, event_action,
-1);
}
gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tv), 0,
_("Event"),
gtk_cell_renderer_text_new (),
"text", COLUMN_EVENT,
NULL);
gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tv), 2,
_("Action"),
gtk_cell_renderer_text_new (),
"text", COLUMN_ACTION,
NULL);
}
}
/***********************/ /***********************/
/* Window Management */ /* Window Management */
/***********************/ /***********************/
@ -1782,6 +1975,27 @@ prefs_dialog_new (Gimp *gimp,
_("Activate the _Focused Image"), _("Activate the _Focused Image"),
GTK_BOX (vbox2)); GTK_BOX (vbox2));
/* Window Positions */
vbox2 = prefs_frame_new (_("Window Positions"), GTK_CONTAINER (vbox), FALSE);
prefs_check_button_add (object, "save-session-info",
_("_Save Window Positions on Exit"),
GTK_BOX (vbox2));
button = prefs_button_add (GTK_STOCK_SAVE,
_("Save Window Positions Now"),
GTK_BOX (vbox2));
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (session_save),
gimp);
button = prefs_button_add (GTK_STOCK_CLEAR,
_("Clear Saved Window Positions Now"),
GTK_BOX (vbox2));
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (session_clear),
gimp);
/*****************/ /*****************/
/* Environment */ /* Environment */
@ -1844,108 +2058,6 @@ prefs_dialog_new (Gimp *gimp,
size_group = NULL; size_group = NULL;
/************************/
/* Session Management */
/************************/
vbox = prefs_notebook_append_page (gimp,
GTK_NOTEBOOK (notebook),
_("Session Management"),
"session.png",
GTK_TREE_STORE (tree),
_("Session"),
GIMP_HELP_PREFS_SESSION,
NULL,
&top_iter,
page_index++);
/* Window Positions */
vbox2 = prefs_frame_new (_("Window Positions"), GTK_CONTAINER (vbox), FALSE);
prefs_check_button_add (object, "save-session-info",
_("_Save Window Positions on Exit"),
GTK_BOX (vbox2));
hbox = gtk_hbox_new (FALSE, 6);
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
button = gtk_button_new_with_label (_("Save Window Positions Now"));
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
gtk_widget_show (button);
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (session_save),
gimp);
button = gtk_button_new_with_label (_("Clear Saved Window Positions Now"));
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
gtk_widget_show (button);
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (session_clear),
gimp);
/* Keyboard Shortcuts */
vbox2 = prefs_frame_new (_("Keyboard Shortcuts"), GTK_CONTAINER (vbox), FALSE);
prefs_check_button_add (object, "save-accels",
_("Save Keyboard Shortcuts on Exit"),
GTK_BOX (vbox2));
hbox = gtk_hbox_new (FALSE, 6);
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
button = gtk_button_new_with_label (_("Save Keyboard Shortcuts Now"));
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
gtk_widget_show (button);
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (menus_save),
gimp);
button = gtk_button_new_with_label (_("Clear Saved Keyboard Shortcuts Now"));
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
gtk_widget_show (button);
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (menus_clear),
gimp);
/* Input Devices */
vbox2 = prefs_frame_new (_("Input Devices"), GTK_CONTAINER (vbox), FALSE);
prefs_check_button_add (object, "save-device-status",
_("Save Input Device Settings on Exit"),
GTK_BOX (vbox2));
hbox = gtk_hbox_new (FALSE, 6);
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
button = gtk_button_new_with_label (_("Save Input Device Settings Now"));
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
gtk_widget_show (button);
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (gimp_devices_save),
gimp);
button = gtk_button_new_with_label (_("Clear Saved Input Device Settings Now"));
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
gtk_widget_show (button);
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (gimp_devices_clear),
gimp);
/*************/ /*************/
/* Folders */ /* Folders */
/*************/ /*************/

View File

@ -46,6 +46,7 @@
enum enum
{ {
PROP_0, PROP_0,
PROP_ENABLED,
PROP_CONTROLLER, PROP_CONTROLLER,
PROP_MAPPING PROP_MAPPING
}; };
@ -158,6 +159,10 @@ gimp_controller_info_class_init (GimpControllerInfoClass *klass)
object_class->set_property = gimp_controller_info_set_property; object_class->set_property = gimp_controller_info_set_property;
object_class->get_property = gimp_controller_info_get_property; object_class->get_property = gimp_controller_info_get_property;
GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_ENABLED,
"enabled", NULL,
TRUE,
0);
GIMP_CONFIG_INSTALL_PROP_OBJECT (object_class, PROP_CONTROLLER, GIMP_CONFIG_INSTALL_PROP_OBJECT (object_class, PROP_CONTROLLER,
"controller", NULL, "controller", NULL,
GIMP_TYPE_CONTROLLER, GIMP_TYPE_CONTROLLER,
@ -217,6 +222,9 @@ gimp_controller_info_set_property (GObject *object,
switch (property_id) switch (property_id)
{ {
case PROP_ENABLED:
info->enabled = g_value_get_boolean (value);
break;
case PROP_CONTROLLER: case PROP_CONTROLLER:
if (info->controller) if (info->controller)
{ {
@ -258,6 +266,9 @@ gimp_controller_info_get_property (GObject *object,
switch (property_id) switch (property_id)
{ {
case PROP_ENABLED:
g_value_set_boolean (value, info->enabled);
break;
case PROP_CONTROLLER: case PROP_CONTROLLER:
g_value_set_object (value, info->controller); g_value_set_object (value, info->controller);
break; break;
@ -300,13 +311,16 @@ gimp_controller_info_serialize_property (GimpConfig *config,
mapping = g_value_get_pointer (value); mapping = g_value_get_pointer (value);
gimp_config_writer_open (writer, pspec->name); if (mapping)
{
gimp_config_writer_open (writer, pspec->name);
g_hash_table_foreach (mapping, g_hash_table_foreach (mapping,
(GHFunc) gimp_controller_info_serialize_mapping, (GHFunc) gimp_controller_info_serialize_mapping,
writer); writer);
gimp_config_writer_close (writer); gimp_config_writer_close (writer);
}
return TRUE; return TRUE;
} }
@ -319,7 +333,7 @@ gimp_controller_info_deserialize_property (GimpConfig *config,
GScanner *scanner, GScanner *scanner,
GTokenType *expected) GTokenType *expected)
{ {
GHashTable *mapping = NULL; GHashTable *mapping;
GTokenType token; GTokenType token;
if (property_id != PROP_MAPPING) if (property_id != PROP_MAPPING)
@ -386,8 +400,7 @@ gimp_controller_info_deserialize_property (GimpConfig *config,
else else
{ {
error: error:
if (mapping) g_hash_table_destroy (mapping);
g_hash_table_destroy (mapping);
*expected = token; *expected = token;
} }
@ -395,27 +408,50 @@ gimp_controller_info_deserialize_property (GimpConfig *config,
return TRUE; return TRUE;
} }
void
gimp_controller_info_set_enabled (GimpControllerInfo *info,
gboolean enabled)
{
g_return_if_fail (GIMP_IS_CONTROLLER_INFO (info));
if (enabled != info->enabled)
g_object_set (info, "enabled", enabled, NULL);
}
gboolean
gimp_controller_info_get_enabled (GimpControllerInfo *info)
{
g_return_val_if_fail (GIMP_IS_CONTROLLER_INFO (info), FALSE);
return info->enabled;
}
static gboolean static gboolean
gimp_controller_info_event (GimpController *controller, gimp_controller_info_event (GimpController *controller,
const GimpControllerEvent *event, const GimpControllerEvent *event,
GimpControllerInfo *info) GimpControllerInfo *info)
{ {
const gchar *class_name;
const gchar *event_name; const gchar *event_name;
const gchar *event_blurb; const gchar *event_blurb;
const gchar *action_name; const gchar *action_name = NULL;
class_name = GIMP_CONTROLLER_GET_CLASS (controller)->name;
event_name = gimp_controller_get_event_name (controller, event->any.event_id); event_name = gimp_controller_get_event_name (controller, event->any.event_id);
event_blurb = gimp_controller_get_event_blurb (controller, event->any.event_id); event_blurb = gimp_controller_get_event_blurb (controller, event->any.event_id);
g_print ("Received '%s' (class '%s')\n" g_print ("Received '%s' (class '%s')\n"
" controller event '%s (%s)'\n", " controller event '%s (%s)'\n",
controller->name, class_name, controller->name, GIMP_CONTROLLER_GET_CLASS (controller)->name,
event_name, event_blurb); event_name, event_blurb);
action_name = g_hash_table_lookup (info->mapping, event_name); if (! info->enabled)
{
g_print (" ignoring because controller is disabled\n");
return FALSE;
}
if (info->mapping)
action_name = g_hash_table_lookup (info->mapping, event_name);
if (action_name) if (action_name)
{ {

View File

@ -41,6 +41,8 @@ struct _GimpControllerInfo
{ {
GimpObject parent_instance; GimpObject parent_instance;
gboolean enabled;
GimpController *controller; GimpController *controller;
GHashTable *mapping; GHashTable *mapping;
}; };
@ -56,7 +58,11 @@ struct _GimpControllerInfoClass
}; };
GType gimp_controller_info_get_type (void) G_GNUC_CONST; GType gimp_controller_info_get_type (void) G_GNUC_CONST;
void gimp_controller_info_set_enabled (GimpControllerInfo *info,
gboolean enabled);
gboolean gimp_controller_info_get_enabled (GimpControllerInfo *info);
#endif /* __GIMP_CONTROLLER_INFO_H__ */ #endif /* __GIMP_CONTROLLER_INFO_H__ */

View File

@ -204,6 +204,20 @@ gimp_controllers_save (Gimp *gimp)
g_free (filename); g_free (filename);
} }
GimpContainer *
gimp_controllers_get_list (Gimp *gimp)
{
GimpControllerManager *manager;
g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL);
manager = gimp_controller_manager_get (gimp);
g_return_val_if_fail (manager != NULL, NULL);
return manager->controllers;
}
GimpController * GimpController *
gimp_controllers_get_wheel (Gimp *gimp) gimp_controllers_get_wheel (Gimp *gimp)
{ {

View File

@ -30,6 +30,7 @@ void gimp_controllers_restore (Gimp *gimp,
GimpUIManager *ui_manager); GimpUIManager *ui_manager);
void gimp_controllers_save (Gimp *gimp); void gimp_controllers_save (Gimp *gimp);
GimpContainer * gimp_controllers_get_list (Gimp *gimp);
GimpController * gimp_controllers_get_wheel (Gimp *gimp); GimpController * gimp_controllers_get_wheel (Gimp *gimp);

View File

@ -45,6 +45,11 @@ struct _WheelEvent
static void gimp_controller_wheel_class_init (GimpControllerWheelClass *klass); static void gimp_controller_wheel_class_init (GimpControllerWheelClass *klass);
static void gimp_controller_wheel_init (GimpControllerWheel *wheel);
static GObject * gimp_controller_wheel_constructor (GType type,
guint n_params,
GObjectConstructParam *params);
static gint gimp_controller_wheel_get_n_events (GimpController *controller); static gint gimp_controller_wheel_get_n_events (GimpController *controller);
static const gchar * gimp_controller_wheel_get_event_name (GimpController *controller, static const gchar * gimp_controller_wheel_get_event_name (GimpController *controller,
@ -59,100 +64,100 @@ static const WheelEvent wheel_events[] =
{ {
{ GDK_SCROLL_UP, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK, { GDK_SCROLL_UP, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK,
"scroll-up-shift-control-alt", "scroll-up-shift-control-alt",
N_("Alt + Control + Shift + Scroll Up") }, N_("Scroll Up (Shift + Control + Alt)") },
{ GDK_SCROLL_UP, GDK_MOD1_MASK | GDK_CONTROL_MASK, { GDK_SCROLL_UP, GDK_MOD1_MASK | GDK_CONTROL_MASK,
"scroll-up-control-alt", "scroll-up-control-alt",
N_("Alt + Control + Scroll Up") }, N_("Scroll Up (Control + Alt)") },
{ GDK_SCROLL_UP, GDK_MOD1_MASK | GDK_SHIFT_MASK, { GDK_SCROLL_UP, GDK_MOD1_MASK | GDK_SHIFT_MASK,
"scroll-up-shift-alt", "scroll-up-shift-alt",
N_("Alt + Shift + Scroll Up") }, N_("Scroll Up (Shift + Alt)") },
{ GDK_SCROLL_UP, GDK_CONTROL_MASK | GDK_SHIFT_MASK, { GDK_SCROLL_UP, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
"scroll-up-shift-control", "scroll-up-shift-control",
N_("Control + Shift + Scroll Up") }, N_("Scroll Up (Shift + Control)") },
{ GDK_SCROLL_UP, GDK_MOD1_MASK, { GDK_SCROLL_UP, GDK_MOD1_MASK,
"scroll-up-alt", "scroll-up-alt",
N_("Alt + Scroll Up") }, N_("Scroll Up (Alt)") },
{ GDK_SCROLL_UP, GDK_CONTROL_MASK, { GDK_SCROLL_UP, GDK_CONTROL_MASK,
"scroll-up-control", "scroll-up-control",
N_("Control + Scroll Up") }, N_("Scroll Up (Control)") },
{ GDK_SCROLL_UP, GDK_SHIFT_MASK, { GDK_SCROLL_UP, GDK_SHIFT_MASK,
"scroll-up-shift", "scroll-up-shift",
N_("Shift + Scroll Up") }, N_("Scroll Up (Shift)") },
{ GDK_SCROLL_UP, 0, { GDK_SCROLL_UP, 0,
"scroll-up", "scroll-up",
N_("Scroll Up") }, N_("Scroll Up") },
{ GDK_SCROLL_DOWN, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK, { GDK_SCROLL_DOWN, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK,
"scroll-down-shift-control-alt", "scroll-down-shift-control-alt",
N_("Alt + Control + Shift + Scroll Down") }, N_("Scroll Down (Shift + Control + Alt)") },
{ GDK_SCROLL_DOWN, GDK_MOD1_MASK | GDK_CONTROL_MASK, { GDK_SCROLL_DOWN, GDK_MOD1_MASK | GDK_CONTROL_MASK,
"scroll-down-control-alt", "scroll-down-control-alt",
N_("Alt + Control + Scroll Down") }, N_("Scroll Down (Control + Alt)") },
{ GDK_SCROLL_DOWN, GDK_MOD1_MASK | GDK_SHIFT_MASK, { GDK_SCROLL_DOWN, GDK_MOD1_MASK | GDK_SHIFT_MASK,
"scroll-down-shift-alt", "scroll-down-shift-alt",
N_("Alt + Shift + Scroll Down") }, N_("Scroll Down (Shift + Alt)") },
{ GDK_SCROLL_DOWN, GDK_CONTROL_MASK | GDK_SHIFT_MASK, { GDK_SCROLL_DOWN, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
"scroll-down-shift-control", "scroll-down-shift-control",
N_("Control + Shift + Scroll Down") }, N_("Scroll Down (Shift + Control)") },
{ GDK_SCROLL_DOWN, GDK_MOD1_MASK, { GDK_SCROLL_DOWN, GDK_MOD1_MASK,
"scroll-down-alt", "scroll-down-alt",
N_("Alt + Scroll Down") }, N_("Scroll Down (Alt)") },
{ GDK_SCROLL_DOWN, GDK_CONTROL_MASK, { GDK_SCROLL_DOWN, GDK_CONTROL_MASK,
"scroll-down-control", "scroll-down-control",
N_("Control + Scroll Down") }, N_("Scroll Down (Control)") },
{ GDK_SCROLL_DOWN, GDK_SHIFT_MASK, { GDK_SCROLL_DOWN, GDK_SHIFT_MASK,
"scroll-down-shift", "scroll-down-shift",
N_("Shift + Scroll Down") }, N_("Scroll Down (Shift)") },
{ GDK_SCROLL_DOWN, 0, { GDK_SCROLL_DOWN, 0,
"scroll-down", "scroll-down",
N_("Scroll Down") }, N_("Scroll Down") },
{ GDK_SCROLL_LEFT, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK, { GDK_SCROLL_LEFT, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK,
"scroll-left-shift-control-alt", "scroll-left-shift-control-alt",
N_("Alt + Control + Shift + Scroll Left") }, N_("Scroll Left (Shift + Control + Alt)") },
{ GDK_SCROLL_LEFT, GDK_MOD1_MASK | GDK_CONTROL_MASK, { GDK_SCROLL_LEFT, GDK_MOD1_MASK | GDK_CONTROL_MASK,
"scroll-left-control-alt", "scroll-left-control-alt",
N_("Alt + Control + Scroll Left") }, N_("Scroll Left (Control + Alt)") },
{ GDK_SCROLL_LEFT, GDK_MOD1_MASK | GDK_SHIFT_MASK, { GDK_SCROLL_LEFT, GDK_MOD1_MASK | GDK_SHIFT_MASK,
"scroll-left-shift-alt", "scroll-left-shift-alt",
N_("Alt + Shift + Scroll Left") }, N_("Scroll Left (Shift + Alt)") },
{ GDK_SCROLL_LEFT, GDK_CONTROL_MASK | GDK_SHIFT_MASK, { GDK_SCROLL_LEFT, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
"scroll-left-shift-control", "scroll-left-shift-control",
N_("Control + Shift + Scroll Left") }, N_("Scroll Left (Shift + Control)") },
{ GDK_SCROLL_LEFT, GDK_MOD1_MASK, { GDK_SCROLL_LEFT, GDK_MOD1_MASK,
"scroll-left-alt", "scroll-left-alt",
N_("Alt + Scroll Left") }, N_("Scroll Left (Alt)") },
{ GDK_SCROLL_LEFT, GDK_CONTROL_MASK, { GDK_SCROLL_LEFT, GDK_CONTROL_MASK,
"scroll-left-control", "scroll-left-control",
N_("Control + Scroll Left") }, N_("Scroll Left (Control)") },
{ GDK_SCROLL_LEFT, GDK_SHIFT_MASK, { GDK_SCROLL_LEFT, GDK_SHIFT_MASK,
"scroll-left-shift", "scroll-left-shift",
N_("Shift + Scroll Left") }, N_("Scroll Left (Shift)") },
{ GDK_SCROLL_LEFT, 0, { GDK_SCROLL_LEFT, 0,
"scroll-left", "scroll-left",
N_("Scroll Left") }, N_("Scroll Left") },
{ GDK_SCROLL_RIGHT, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK, { GDK_SCROLL_RIGHT, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK,
"scroll-right-shift-control-alt", "scroll-right-shift-control-alt",
N_("Alt + Control + Shift + Scroll Right") }, N_("Scroll Right (Shift + Control + Alt)") },
{ GDK_SCROLL_RIGHT, GDK_MOD1_MASK | GDK_CONTROL_MASK, { GDK_SCROLL_RIGHT, GDK_MOD1_MASK | GDK_CONTROL_MASK,
"scroll-right-control-alt", "scroll-right-control-alt",
N_("Alt + Control + Scroll Right") }, N_("Scroll Right (Control + Alt)") },
{ GDK_SCROLL_RIGHT, GDK_MOD1_MASK | GDK_SHIFT_MASK, { GDK_SCROLL_RIGHT, GDK_MOD1_MASK | GDK_SHIFT_MASK,
"scroll-right-shift-alt", "scroll-right-shift-alt",
N_("Alt + Shift + Scroll Right") }, N_("Scroll Right (Shift + Alt)") },
{ GDK_SCROLL_RIGHT, GDK_CONTROL_MASK | GDK_SHIFT_MASK, { GDK_SCROLL_RIGHT, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
"scroll-right-shift-control", "scroll-right-shift-control",
N_("Control + Shift + Scroll Right") }, N_("Scroll Right (Shift + Control)") },
{ GDK_SCROLL_RIGHT, GDK_MOD1_MASK, { GDK_SCROLL_RIGHT, GDK_MOD1_MASK,
"scroll-right-alt", "scroll-right-alt",
N_("Alt + Scroll Right") }, N_("Scroll Right (Alt)") },
{ GDK_SCROLL_RIGHT, GDK_CONTROL_MASK, { GDK_SCROLL_RIGHT, GDK_CONTROL_MASK,
"scroll-right-control", "scroll-right-control",
N_("Control + Scroll Right") }, N_("Scroll Right (Control)") },
{ GDK_SCROLL_RIGHT, GDK_SHIFT_MASK, { GDK_SCROLL_RIGHT, GDK_SHIFT_MASK,
"scroll-right-shift", "scroll-right-shift",
N_("Shift + Scroll Right") }, N_("Scroll Right (Shift)") },
{ GDK_SCROLL_RIGHT, 0, { GDK_SCROLL_RIGHT, 0,
"scroll-right", "scroll-right",
N_("Scroll Right") } N_("Scroll Right") }
@ -176,7 +181,7 @@ gimp_controller_wheel_get_type (void)
NULL, /* class_data */ NULL, /* class_data */
sizeof (GimpControllerWheel), sizeof (GimpControllerWheel),
0, /* n_preallocs */ 0, /* n_preallocs */
NULL /* instance_init */ (GInstanceInitFunc) gimp_controller_wheel_init,
}; };
controller_type = g_type_register_static (GIMP_TYPE_CONTROLLER, controller_type = g_type_register_static (GIMP_TYPE_CONTROLLER,
@ -190,10 +195,13 @@ gimp_controller_wheel_get_type (void)
static void static void
gimp_controller_wheel_class_init (GimpControllerWheelClass *klass) gimp_controller_wheel_class_init (GimpControllerWheelClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GimpControllerClass *controller_class = GIMP_CONTROLLER_CLASS (klass); GimpControllerClass *controller_class = GIMP_CONTROLLER_CLASS (klass);
parent_class = g_type_class_peek_parent (klass); parent_class = g_type_class_peek_parent (klass);
object_class->constructor = gimp_controller_wheel_constructor;
controller_class->name = _("Mouse Wheel"); controller_class->name = _("Mouse Wheel");
controller_class->get_n_events = gimp_controller_wheel_get_n_events; controller_class->get_n_events = gimp_controller_wheel_get_n_events;
@ -201,6 +209,25 @@ gimp_controller_wheel_class_init (GimpControllerWheelClass *klass)
controller_class->get_event_blurb = gimp_controller_wheel_get_event_blurb; controller_class->get_event_blurb = gimp_controller_wheel_get_event_blurb;
} }
static void
gimp_controller_wheel_init (GimpControllerWheel *wheel)
{
}
static GObject *
gimp_controller_wheel_constructor (GType type,
guint n_params,
GObjectConstructParam *params)
{
GObject *object;
object = G_OBJECT_CLASS (parent_class)->constructor (type, n_params, params);
g_object_set (object, "name", _("Main Mouse Wheel"), NULL);
return object;
}
static gint static gint
gimp_controller_wheel_get_n_events (GimpController *controller) gimp_controller_wheel_get_n_events (GimpController *controller)
{ {

View File

@ -362,6 +362,7 @@
#define GIMP_HELP_PREFS_TOOL_OPTIONS "gimp-prefs-tool-options" #define GIMP_HELP_PREFS_TOOL_OPTIONS "gimp-prefs-tool-options"
#define GIMP_HELP_PREFS_TOOLBOX "gimp-prefs-toolbox" #define GIMP_HELP_PREFS_TOOLBOX "gimp-prefs-toolbox"
#define GIMP_HELP_PREFS_INPUT_DEVICES "gimp-prefs-input-devices" #define GIMP_HELP_PREFS_INPUT_DEVICES "gimp-prefs-input-devices"
#define GIMP_HELP_PREFS_INPUT_CONTROLLERS "gimp-prefs-input-controllers"
#define GIMP_HELP_PREFS_IMAGE_WINDOW "gimp-prefs-image-window" #define GIMP_HELP_PREFS_IMAGE_WINDOW "gimp-prefs-image-window"
#define GIMP_HELP_PREFS_IMAGE_WINDOW_APPEARANCE "gimp-prefs-image-window-appearance" #define GIMP_HELP_PREFS_IMAGE_WINDOW_APPEARANCE "gimp-prefs-image-window-appearance"
#define GIMP_HELP_PREFS_IMAGE_WINDOW_TITLE "gimp-prefs-image-window-title" #define GIMP_HELP_PREFS_IMAGE_WINDOW_TITLE "gimp-prefs-image-window-title"

View File

@ -3,9 +3,8 @@
# This file will be entirely rewritten every time you quit the gimp. # This file will be entirely rewritten every time you quit the gimp.
(GimpControllerInfo "Main Mouse Wheel" (GimpControllerInfo "Main Mouse Wheel"
(controller "GimpControllerWheel" (enabled yes)
(name "Main Mouse Wheel") (controller "GimpControllerWheel")
(enabled yes))
(mapping (mapping
(map "scroll-down-alt" "context-opacity-decrease-skip") (map "scroll-down-alt" "context-opacity-decrease-skip")
(map "scroll-down-control-alt" "context-gradient-previous") (map "scroll-down-control-alt" "context-gradient-previous")
@ -18,9 +17,8 @@
(map "scroll-up-shift-control" "context-brush-next") (map "scroll-up-shift-control" "context-brush-next")
(map "scroll-up-shift-control-alt" "context-font-next"))) (map "scroll-up-shift-control-alt" "context-font-next")))
(GimpControllerInfo "ShuttlePRO" (GimpControllerInfo "ShuttlePRO"
(enabled yes)
(controller "ControllerLinuxInput" (controller "ControllerLinuxInput"
(name "ShuttlePRO")
(enabled yes)
(device "/dev/input/event2")) (device "/dev/input/event2"))
(mapping (mapping
(map "button-0" "tools-rect-select") (map "button-0" "tools-rect-select")

View File

@ -35,8 +35,7 @@
enum enum
{ {
PROP_0, PROP_0,
PROP_NAME, PROP_NAME
PROP_ENABLED
}; };
enum enum
@ -120,14 +119,7 @@ gimp_controller_class_init (GimpControllerClass *klass)
g_param_spec_string ("name", NULL, NULL, g_param_spec_string ("name", NULL, NULL,
"Unnamed Controller", "Unnamed Controller",
G_PARAM_READWRITE | G_PARAM_READWRITE |
G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT));
GIMP_CONTROLLER_PARAM_SERIALIZE));
g_object_class_install_property (object_class, PROP_ENABLED,
g_param_spec_boolean ("enabled", NULL, NULL,
TRUE,
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT |
GIMP_CONTROLLER_PARAM_SERIALIZE));
controller_signals[EVENT] = controller_signals[EVENT] =
g_signal_new ("event", g_signal_new ("event",
@ -162,9 +154,6 @@ gimp_controller_set_property (GObject *object,
g_free (controller->name); g_free (controller->name);
controller->name = g_value_dup_string (value); controller->name = g_value_dup_string (value);
break; break;
case PROP_ENABLED:
controller->enabled = g_value_get_boolean (value);
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break; break;
@ -184,9 +173,6 @@ gimp_controller_get_property (GObject *object,
case PROP_NAME: case PROP_NAME:
g_value_set_string (value, controller->name); g_value_set_string (value, controller->name);
break; break;
case PROP_ENABLED:
g_value_set_boolean (value, controller->enabled);
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break; break;
@ -253,28 +239,6 @@ gimp_controller_get_event_blurb (GimpController *controller,
return blurb; return blurb;
} }
void
gimp_controller_set_enabled (GimpController *controller,
gboolean enabled)
{
g_return_if_fail (GIMP_IS_CONTROLLER (controller));
if (enabled != controller->enabled)
{
g_object_set (controller,
"enabled", enabled,
NULL);
}
}
gboolean
gimp_controller_get_enabled (GimpController *controller)
{
g_return_val_if_fail (GIMP_IS_CONTROLLER (controller), FALSE);
return controller->enabled;
}
gboolean gboolean
gimp_controller_event (GimpController *controller, gimp_controller_event (GimpController *controller,
const GimpControllerEvent *event) const GimpControllerEvent *event)
@ -284,9 +248,8 @@ gimp_controller_event (GimpController *controller,
g_return_val_if_fail (GIMP_IS_CONTROLLER (controller), FALSE); g_return_val_if_fail (GIMP_IS_CONTROLLER (controller), FALSE);
g_return_val_if_fail (event != NULL, FALSE); g_return_val_if_fail (event != NULL, FALSE);
if (controller->enabled) g_signal_emit (controller, controller_signals[EVENT], 0,
g_signal_emit (controller, controller_signals[EVENT], 0, event, &retval);
event, &retval);
return retval; return retval;
} }

View File

@ -88,7 +88,6 @@ struct _GimpController
GObject parent_instance; GObject parent_instance;
gchar *name; gchar *name;
gboolean enabled;
}; };
struct _GimpControllerClass struct _GimpControllerClass
@ -126,10 +125,6 @@ const gchar * gimp_controller_get_event_name (GimpController *controller,
const gchar * gimp_controller_get_event_blurb (GimpController *controller, const gchar * gimp_controller_get_event_blurb (GimpController *controller,
gint event_id); gint event_id);
void gimp_controller_set_enabled (GimpController *controller,
gboolean enabled);
gboolean gimp_controller_get_enabled (GimpController *controller);
/* protected */ /* protected */

View File

@ -38,6 +38,7 @@
#include <libgimpwidgets/gimpcolorselector.h> #include <libgimpwidgets/gimpcolorselector.h>
#include <libgimpwidgets/gimpcolorselect.h> #include <libgimpwidgets/gimpcolorselect.h>
#include <libgimpwidgets/gimpcolorselection.h> #include <libgimpwidgets/gimpcolorselection.h>
#include <libgimpwidgets/gimpcontroller.h>
#include <libgimpwidgets/gimpdialog.h> #include <libgimpwidgets/gimpdialog.h>
#include <libgimpwidgets/gimpfileentry.h> #include <libgimpwidgets/gimpfileentry.h>
#include <libgimpwidgets/gimpframe.h> #include <libgimpwidgets/gimpframe.h>

View File

@ -120,7 +120,7 @@ struct _ControllerLinuxInputClass
GType linux_input_get_type (GTypeModule *module); GType linux_input_get_type (GTypeModule *module);
static void linux_input_class_init (ControllerLinuxInputClass *klass); static void linux_input_class_init (ControllerLinuxInputClass *klass);
static void linux_input_finalize (GObject *object); static void linux_input_dispose (GObject *object);
static void linux_input_set_property (GObject *object, static void linux_input_set_property (GObject *object,
guint property_id, guint property_id,
const GValue *value, const GValue *value,
@ -208,7 +208,7 @@ linux_input_class_init (ControllerLinuxInputClass *klass)
parent_class = g_type_class_peek_parent (klass); parent_class = g_type_class_peek_parent (klass);
object_class->finalize = linux_input_finalize; object_class->dispose = linux_input_dispose;
object_class->get_property = linux_input_get_property; object_class->get_property = linux_input_get_property;
object_class->set_property = linux_input_set_property; object_class->set_property = linux_input_set_property;
@ -227,13 +227,13 @@ linux_input_class_init (ControllerLinuxInputClass *klass)
} }
static void static void
linux_input_finalize (GObject *object) linux_input_dispose (GObject *object)
{ {
ControllerLinuxInput *controller = CONTROLLER_LINUX_INPUT (object); ControllerLinuxInput *controller = CONTROLLER_LINUX_INPUT (object);
linux_input_set_device (controller, NULL); linux_input_set_device (controller, NULL);
G_OBJECT_CLASS (parent_class)->finalize (object); G_OBJECT_CLASS (parent_class)->dispose (object);
} }
static void static void
@ -357,6 +357,12 @@ linux_input_set_device (ControllerLinuxInput *controller,
"name", name, "name", name,
NULL); NULL);
} }
else
{
g_object_set (controller,
"name", _("Unknown device"),
NULL);
}
controller->io = g_io_channel_unix_new (fd); controller->io = g_io_channel_unix_new (fd);
g_io_channel_set_close_on_unref (controller->io, TRUE); g_io_channel_set_close_on_unref (controller->io, TRUE);
@ -370,10 +376,20 @@ linux_input_set_device (ControllerLinuxInput *controller,
} }
else else
{ {
g_printerr ("controller_linux_input: Cannot open device '%s': %s\n", gchar *name = g_strdup_printf (_("Device not available: %s"),
device, g_strerror (errno)); g_strerror (errno));
g_object_set (controller,
"name", name,
NULL);
g_free (name);
} }
} }
else
{
g_object_set (controller,
"name", _("No device configured"),
NULL);
}
return FALSE; return FALSE;
} }

View File

@ -3,6 +3,7 @@
themedatadir = $(gimpdatadir)/themes/Default/images/preferences themedatadir = $(gimpdatadir)/themes/Default/images/preferences
PREFS_IMAGES = \ PREFS_IMAGES = \
controllers.png \
default-comment.png \ default-comment.png \
default-grid.png \ default-grid.png \
display.png \ display.png \
@ -27,6 +28,7 @@ PREFS_IMAGES = \
monitor.png \ monitor.png \
new-image.png \ new-image.png \
session.png \ session.png \
theme.png \
toolbox.png \ toolbox.png \
tool-options.png \ tool-options.png \
window-management.png window-management.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB