mirror of https://github.com/GNOME/gimp.git
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:
parent
c3a0a277e7
commit
5f4eabdbcb
36
ChangeLog
36
ChangeLog
|
@ -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
|
||||||
|
|
|
@ -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 */
|
||||||
/*************/
|
/*************/
|
||||||
|
|
|
@ -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 */
|
||||||
/*************/
|
/*************/
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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__ */
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 |
Loading…
Reference in New Issue