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>
* app/display/gimpdisplayshell.c: GtkUIManager makes the menu bar

View File

@ -25,6 +25,7 @@
#include "libgimpmath/gimpmath.h"
#include "libgimpbase/gimpbase.h"
#include "libgimpwidgets/gimpwidgets.h"
#include "libgimpwidgets/gimpcontroller.h"
#include "gui-types.h"
@ -34,11 +35,14 @@
#include "config/gimprc.h"
#include "core/gimp.h"
#include "core/gimplist.h"
#include "core/gimptemplate.h"
#include "widgets/gimpcolorpanel.h"
#include "widgets/gimpcontainercombobox.h"
#include "widgets/gimpcontainerview.h"
#include "widgets/gimpcontrollers.h"
#include "widgets/gimpcontrollerinfo.h"
#include "widgets/gimpdeviceinfo.h"
#include "widgets/gimpdevices.h"
#include "widgets/gimpdialogfactory.h"
@ -642,6 +646,37 @@ prefs_table_new (gint rows,
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 *
prefs_check_button_add (GObject *config,
const gchar *property_name,
@ -1147,37 +1182,38 @@ prefs_dialog_new (Gimp *gimp,
prefs_check_button_add (object, "can-change-accels",
_("Use Dynamic _Keyboard Shortcuts"),
GTK_BOX (vbox2));
prefs_check_button_add (object, "save-accels",
_("Save Keyboard Shortcuts on Exit"),
GTK_BOX (vbox2));
/* Input Device Settings */
vbox2 = prefs_frame_new (_("Extended Input Devices"),
GTK_CONTAINER (vbox), FALSE);
button = prefs_button_add (GTK_STOCK_SAVE,
_("Save Keyboard Shortcuts Now"),
GTK_BOX (vbox2));
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (menus_save),
gimp);
hbox = gtk_hbox_new (FALSE, 6);
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
button = prefs_button_add (GTK_STOCK_CLEAR,
_("Clear Saved Keyboard Shortcuts Now"),
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 */
/***********/
vbox = prefs_notebook_append_page (gimp,
GTK_NOTEBOOK (notebook),
_("Theme"),
_("Theme"),
"theme.png",
GTK_TREE_STORE (tree),
_("Theme"),
GIMP_HELP_PREFS_THEME,
NULL,
&top_iter,
page_index++);
GTK_TREE_STORE (tree),
_("Theme"),
GIMP_HELP_PREFS_THEME,
NULL,
&top_iter,
page_index++);
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_widget_show (hbox);
button = gtk_button_new_with_mnemonic (_("Reload C_urrent Theme"));
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 4, 0);
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
gtk_widget_show (button);
button = prefs_button_add (GTK_STOCK_REFRESH,
_("Reload C_urrent Theme"),
GTK_BOX (hbox));
g_signal_connect (button, "clicked",
G_CALLBACK (prefs_theme_reload_callback),
gimp);
@ -1748,6 +1782,165 @@ prefs_dialog_new (Gimp *gimp,
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 */
/***********************/
@ -1782,6 +1975,27 @@ prefs_dialog_new (Gimp *gimp,
_("Activate the _Focused Image"),
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 */
@ -1844,108 +2058,6 @@ prefs_dialog_new (Gimp *gimp,
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 */
/*************/

View File

@ -25,6 +25,7 @@
#include "libgimpmath/gimpmath.h"
#include "libgimpbase/gimpbase.h"
#include "libgimpwidgets/gimpwidgets.h"
#include "libgimpwidgets/gimpcontroller.h"
#include "gui-types.h"
@ -34,11 +35,14 @@
#include "config/gimprc.h"
#include "core/gimp.h"
#include "core/gimplist.h"
#include "core/gimptemplate.h"
#include "widgets/gimpcolorpanel.h"
#include "widgets/gimpcontainercombobox.h"
#include "widgets/gimpcontainerview.h"
#include "widgets/gimpcontrollers.h"
#include "widgets/gimpcontrollerinfo.h"
#include "widgets/gimpdeviceinfo.h"
#include "widgets/gimpdevices.h"
#include "widgets/gimpdialogfactory.h"
@ -642,6 +646,37 @@ prefs_table_new (gint rows,
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 *
prefs_check_button_add (GObject *config,
const gchar *property_name,
@ -1147,37 +1182,38 @@ prefs_dialog_new (Gimp *gimp,
prefs_check_button_add (object, "can-change-accels",
_("Use Dynamic _Keyboard Shortcuts"),
GTK_BOX (vbox2));
prefs_check_button_add (object, "save-accels",
_("Save Keyboard Shortcuts on Exit"),
GTK_BOX (vbox2));
/* Input Device Settings */
vbox2 = prefs_frame_new (_("Extended Input Devices"),
GTK_CONTAINER (vbox), FALSE);
button = prefs_button_add (GTK_STOCK_SAVE,
_("Save Keyboard Shortcuts Now"),
GTK_BOX (vbox2));
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (menus_save),
gimp);
hbox = gtk_hbox_new (FALSE, 6);
gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
button = prefs_button_add (GTK_STOCK_CLEAR,
_("Clear Saved Keyboard Shortcuts Now"),
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 */
/***********/
vbox = prefs_notebook_append_page (gimp,
GTK_NOTEBOOK (notebook),
_("Theme"),
_("Theme"),
"theme.png",
GTK_TREE_STORE (tree),
_("Theme"),
GIMP_HELP_PREFS_THEME,
NULL,
&top_iter,
page_index++);
GTK_TREE_STORE (tree),
_("Theme"),
GIMP_HELP_PREFS_THEME,
NULL,
&top_iter,
page_index++);
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_widget_show (hbox);
button = gtk_button_new_with_mnemonic (_("Reload C_urrent Theme"));
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 4, 0);
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
gtk_widget_show (button);
button = prefs_button_add (GTK_STOCK_REFRESH,
_("Reload C_urrent Theme"),
GTK_BOX (hbox));
g_signal_connect (button, "clicked",
G_CALLBACK (prefs_theme_reload_callback),
gimp);
@ -1748,6 +1782,165 @@ prefs_dialog_new (Gimp *gimp,
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 */
/***********************/
@ -1782,6 +1975,27 @@ prefs_dialog_new (Gimp *gimp,
_("Activate the _Focused Image"),
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 */
@ -1844,108 +2058,6 @@ prefs_dialog_new (Gimp *gimp,
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 */
/*************/

View File

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

View File

@ -41,6 +41,8 @@ struct _GimpControllerInfo
{
GimpObject parent_instance;
gboolean enabled;
GimpController *controller;
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__ */

View File

@ -204,6 +204,20 @@ gimp_controllers_save (Gimp *gimp)
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 *
gimp_controllers_get_wheel (Gimp *gimp)
{

View File

@ -30,6 +30,7 @@ void gimp_controllers_restore (Gimp *gimp,
GimpUIManager *ui_manager);
void gimp_controllers_save (Gimp *gimp);
GimpContainer * gimp_controllers_get_list (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_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 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,
"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,
"scroll-up-control-alt",
N_("Alt + Control + Scroll Up") },
N_("Scroll Up (Control + Alt)") },
{ GDK_SCROLL_UP, GDK_MOD1_MASK | GDK_SHIFT_MASK,
"scroll-up-shift-alt",
N_("Alt + Shift + Scroll Up") },
N_("Scroll Up (Shift + Alt)") },
{ GDK_SCROLL_UP, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
"scroll-up-shift-control",
N_("Control + Shift + Scroll Up") },
N_("Scroll Up (Shift + Control)") },
{ GDK_SCROLL_UP, GDK_MOD1_MASK,
"scroll-up-alt",
N_("Alt + Scroll Up") },
N_("Scroll Up (Alt)") },
{ GDK_SCROLL_UP, GDK_CONTROL_MASK,
"scroll-up-control",
N_("Control + Scroll Up") },
N_("Scroll Up (Control)") },
{ GDK_SCROLL_UP, GDK_SHIFT_MASK,
"scroll-up-shift",
N_("Shift + Scroll Up") },
N_("Scroll Up (Shift)") },
{ GDK_SCROLL_UP, 0,
"scroll-up",
N_("Scroll Up") },
{ GDK_SCROLL_DOWN, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK,
"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,
"scroll-down-control-alt",
N_("Alt + Control + Scroll Down") },
N_("Scroll Down (Control + Alt)") },
{ GDK_SCROLL_DOWN, GDK_MOD1_MASK | GDK_SHIFT_MASK,
"scroll-down-shift-alt",
N_("Alt + Shift + Scroll Down") },
N_("Scroll Down (Shift + Alt)") },
{ GDK_SCROLL_DOWN, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
"scroll-down-shift-control",
N_("Control + Shift + Scroll Down") },
N_("Scroll Down (Shift + Control)") },
{ GDK_SCROLL_DOWN, GDK_MOD1_MASK,
"scroll-down-alt",
N_("Alt + Scroll Down") },
N_("Scroll Down (Alt)") },
{ GDK_SCROLL_DOWN, GDK_CONTROL_MASK,
"scroll-down-control",
N_("Control + Scroll Down") },
N_("Scroll Down (Control)") },
{ GDK_SCROLL_DOWN, GDK_SHIFT_MASK,
"scroll-down-shift",
N_("Shift + Scroll Down") },
N_("Scroll Down (Shift)") },
{ GDK_SCROLL_DOWN, 0,
"scroll-down",
N_("Scroll Down") },
{ GDK_SCROLL_LEFT, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK,
"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,
"scroll-left-control-alt",
N_("Alt + Control + Scroll Left") },
N_("Scroll Left (Control + Alt)") },
{ GDK_SCROLL_LEFT, GDK_MOD1_MASK | GDK_SHIFT_MASK,
"scroll-left-shift-alt",
N_("Alt + Shift + Scroll Left") },
N_("Scroll Left (Shift + Alt)") },
{ GDK_SCROLL_LEFT, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
"scroll-left-shift-control",
N_("Control + Shift + Scroll Left") },
N_("Scroll Left (Shift + Control)") },
{ GDK_SCROLL_LEFT, GDK_MOD1_MASK,
"scroll-left-alt",
N_("Alt + Scroll Left") },
N_("Scroll Left (Alt)") },
{ GDK_SCROLL_LEFT, GDK_CONTROL_MASK,
"scroll-left-control",
N_("Control + Scroll Left") },
N_("Scroll Left (Control)") },
{ GDK_SCROLL_LEFT, GDK_SHIFT_MASK,
"scroll-left-shift",
N_("Shift + Scroll Left") },
N_("Scroll Left (Shift)") },
{ GDK_SCROLL_LEFT, 0,
"scroll-left",
N_("Scroll Left") },
{ GDK_SCROLL_RIGHT, GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SHIFT_MASK,
"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,
"scroll-right-control-alt",
N_("Alt + Control + Scroll Right") },
N_("Scroll Right (Control + Alt)") },
{ GDK_SCROLL_RIGHT, GDK_MOD1_MASK | GDK_SHIFT_MASK,
"scroll-right-shift-alt",
N_("Alt + Shift + Scroll Right") },
N_("Scroll Right (Shift + Alt)") },
{ GDK_SCROLL_RIGHT, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
"scroll-right-shift-control",
N_("Control + Shift + Scroll Right") },
N_("Scroll Right (Shift + Control)") },
{ GDK_SCROLL_RIGHT, GDK_MOD1_MASK,
"scroll-right-alt",
N_("Alt + Scroll Right") },
N_("Scroll Right (Alt)") },
{ GDK_SCROLL_RIGHT, GDK_CONTROL_MASK,
"scroll-right-control",
N_("Control + Scroll Right") },
N_("Scroll Right (Control)") },
{ GDK_SCROLL_RIGHT, GDK_SHIFT_MASK,
"scroll-right-shift",
N_("Shift + Scroll Right") },
N_("Scroll Right (Shift)") },
{ GDK_SCROLL_RIGHT, 0,
"scroll-right",
N_("Scroll Right") }
@ -176,7 +181,7 @@ gimp_controller_wheel_get_type (void)
NULL, /* class_data */
sizeof (GimpControllerWheel),
0, /* n_preallocs */
NULL /* instance_init */
(GInstanceInitFunc) gimp_controller_wheel_init,
};
controller_type = g_type_register_static (GIMP_TYPE_CONTROLLER,
@ -190,10 +195,13 @@ gimp_controller_wheel_get_type (void)
static void
gimp_controller_wheel_class_init (GimpControllerWheelClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GimpControllerClass *controller_class = GIMP_CONTROLLER_CLASS (klass);
parent_class = g_type_class_peek_parent (klass);
object_class->constructor = gimp_controller_wheel_constructor;
controller_class->name = _("Mouse Wheel");
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;
}
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
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_TOOLBOX "gimp-prefs-toolbox"
#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_APPEARANCE "gimp-prefs-image-window-appearance"
#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.
(GimpControllerInfo "Main Mouse Wheel"
(controller "GimpControllerWheel"
(name "Main Mouse Wheel")
(enabled yes))
(enabled yes)
(controller "GimpControllerWheel")
(mapping
(map "scroll-down-alt" "context-opacity-decrease-skip")
(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-alt" "context-font-next")))
(GimpControllerInfo "ShuttlePRO"
(enabled yes)
(controller "ControllerLinuxInput"
(name "ShuttlePRO")
(enabled yes)
(device "/dev/input/event2"))
(mapping
(map "button-0" "tools-rect-select")

View File

@ -35,8 +35,7 @@
enum
{
PROP_0,
PROP_NAME,
PROP_ENABLED
PROP_NAME
};
enum
@ -120,14 +119,7 @@ gimp_controller_class_init (GimpControllerClass *klass)
g_param_spec_string ("name", NULL, NULL,
"Unnamed Controller",
G_PARAM_READWRITE |
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));
G_PARAM_CONSTRUCT));
controller_signals[EVENT] =
g_signal_new ("event",
@ -162,9 +154,6 @@ gimp_controller_set_property (GObject *object,
g_free (controller->name);
controller->name = g_value_dup_string (value);
break;
case PROP_ENABLED:
controller->enabled = g_value_get_boolean (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@ -184,9 +173,6 @@ gimp_controller_get_property (GObject *object,
case PROP_NAME:
g_value_set_string (value, controller->name);
break;
case PROP_ENABLED:
g_value_set_boolean (value, controller->enabled);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@ -253,28 +239,6 @@ gimp_controller_get_event_blurb (GimpController *controller,
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
gimp_controller_event (GimpController *controller,
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 (event != NULL, FALSE);
if (controller->enabled)
g_signal_emit (controller, controller_signals[EVENT], 0,
event, &retval);
g_signal_emit (controller, controller_signals[EVENT], 0,
event, &retval);
return retval;
}

View File

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

View File

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

View File

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

View File

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