annotate src/evdev-plug/ed_ui.c @ 1317:78861d8b86f2

updated info boxes to make them translatable
author Giacomo Lozito <james@develia.org>
date Sat, 21 Jul 2007 04:05:35 +0200
parents 96cc46b1cf5e
children 145966acb0c4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
422
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1 /*
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
2 *
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
3 * Author: Giacomo Lozito <james@develia.org>, (C) 2005-2007
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
4 *
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
5 * This program is free software; you can redistribute it and/or modify it
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
6 * under the terms of the GNU General Public License as published by the
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
7 * Free Software Foundation; either version 2 of the License, or (at your
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
8 * option) any later version.
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
9 *
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
10 * This program is distributed in the hope that it will be useful, but
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
13 * General Public License for more details.
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
14 *
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License along
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
16 * with this program; if not, write to the Free Software Foundation, Inc.,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
18 *
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
19 */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
20
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
21 #include "ed_ui.h"
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
22 #include "ed_types.h"
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
23 #include "ed_internals.h"
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
24 #include "ed_actions.h"
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
25 #include "ed_bindings_store.h"
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
26 #include "ed_common.h"
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
27 #include <stdlib.h>
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
28 #include <linux/input.h>
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
29
527
d124034ebea3 [svn] - glib/gi18n.h -> audacious/i18n.h for automatic dgettext support
nenolod
parents: 457
diff changeset
30 #include <audacious/i18n.h>
422
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
31 #include <gtk/gtk.h>
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
32
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
33
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
34 static void cfg_ui_bindings_show ( ed_device_t * , GtkTreeRowReference * );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
35
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
36 extern ed_action_t player_actions[];
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
37 extern gboolean plugin_is_active;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
38
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
39 static GtkWidget *cfg_win = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
40
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
41 enum
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
42 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
43 DEVLIST_COL_ISACTIVE = 0,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
44 DEVLIST_COL_NAME,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
45 DEVLIST_COL_FILENAME,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
46 DEVLIST_COL_PHYS,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
47 DEVLIST_COL_ISAVAILABLE,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
48 DEVLIST_COL_BINDINGS,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
49 DEVLIST_NUMCOLS
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
50 };
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
51
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
52 enum
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
53 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
54 DEVLIST_ISAVAILABLE_NOTDET = 0,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
55 DEVLIST_ISAVAILABLE_DET,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
56 DEVLIST_ISAVAILABLE_CUSTOM
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
57 };
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
58
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
59
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
60
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
61 static void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
62 cfg_device_lv_populate( GtkListStore * store )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
63 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
64 /* store is logically divided in three families of devices,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
65 depending on the ISAVAILABLE value;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
66 DEVLIST_ISAVAILABLE_NOTDET -> not detected devices: these are not-custom
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
67 devices that are present in configuration file but they do not seem
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
68 to be plugged at the moment, cause they're not in system_devices_list;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
69 DEVLIST_ISAVAILABLE_DET -> detected devices: these are not-custom devices that
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
70 are currently plugged, no matter whether they are in configuration or not;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
71 DEVLIST_ISAVAILABLE_CUSTOM -> custom devices: defined by user in configuration
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
72 file, these are not checked against system_devices_list;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
73 */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
74
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
75 GList *system_devices_list = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
76 GList *config_devices_list = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
77 GList *list_iter = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
78
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
79 system_devices_list = ed_device_get_list_from_system();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
80 config_devices_list = ed_device_get_list_from_config();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
81
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
82 /* first, for each not-custom device in config_devices_list,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
83 perform a search in system_devices_list */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
84 list_iter = config_devices_list;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
85 while ( list_iter != NULL )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
86 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
87 ed_device_info_t *info_from_cfg = list_iter->data;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
88 if ( info_from_cfg->is_custom == 0 ) /* only try to detect not-custom devices */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
89 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
90 /* note: if device is found, filename and phys in info_from_cfg could be updated by the
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
91 check; the found device will be marked as "found" in system_devices_list too */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
92 if ( ed_device_check( system_devices_list ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
93 info_from_cfg->name , &(info_from_cfg->filename) , &(info_from_cfg->phys) ) == ED_DEVCHECK_OK )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
94 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
95 info_from_cfg->reg = 1; /* mark our device from config as "found" */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
96 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
97 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
98 list_iter = g_list_next( list_iter );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
99 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
100
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
101 /* at this point, we have three logical groups:
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
102 #1 - not-custom devices in config_devices_list, marked as "found" -> DEVLIST_ISAVAILABLE_DET
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
103 #2 - not-custom devices in config_devices_list, not-marked -> DEVLIST_ISAVAILABLE_NOTDET
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
104 #3 - custom devices in config_devices_list -> DEVLIST_ISAVAILABLE_CUSTOM
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
105 #1bis - plus, we pick not-marked devices from system_devices_list, which
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
106 are plugged devices that are not present in config_devices_list -> DEVLIST_ISAVAILABLE_DET
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
107 */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
108
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
109 /* let's start to fill the store with items from group #1 (DEVLIST_ISAVAILABLE_DET) */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
110 list_iter = config_devices_list;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
111 while ( list_iter != NULL )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
112 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
113 ed_device_info_t *info_from_cfg = list_iter->data;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
114 if (( info_from_cfg->reg == 1 ) && ( info_from_cfg->is_custom == 0 ))
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
115 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
116 GtkTreeIter iter;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
117 gtk_list_store_append( store , &iter );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
118 gtk_list_store_set( store , &iter ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
119 DEVLIST_COL_ISACTIVE , info_from_cfg->is_active ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
120 DEVLIST_COL_NAME , info_from_cfg->name ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
121 DEVLIST_COL_FILENAME , info_from_cfg->filename ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
122 DEVLIST_COL_PHYS , info_from_cfg->phys ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
123 DEVLIST_COL_ISAVAILABLE , DEVLIST_ISAVAILABLE_DET ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
124 DEVLIST_COL_BINDINGS , info_from_cfg->bindings ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
125 -1 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
126 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
127 list_iter = g_list_next( list_iter );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
128 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
129
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
130 /* add items from group #1bis (DEVLIST_ISAVAILABLE_DET) */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
131 list_iter = system_devices_list;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
132 while ( list_iter != NULL )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
133 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
134 ed_device_info_t *info_from_sys = list_iter->data;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
135 if ( info_from_sys->reg == 0 )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
136 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
137 GtkTreeIter iter;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
138 gtk_list_store_append( store , &iter );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
139 gtk_list_store_set( store , &iter ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
140 DEVLIST_COL_ISACTIVE , info_from_sys->is_active ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
141 DEVLIST_COL_NAME , info_from_sys->name ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
142 DEVLIST_COL_FILENAME , info_from_sys->filename ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
143 DEVLIST_COL_PHYS , info_from_sys->phys ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
144 DEVLIST_COL_ISAVAILABLE , DEVLIST_ISAVAILABLE_DET ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
145 DEVLIST_COL_BINDINGS , info_from_sys->bindings ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
146 -1 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
147 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
148 list_iter = g_list_next( list_iter );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
149 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
150
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
151 /* add items from group #2 (DEVLIST_ISAVAILABLE_NOTDET) */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
152 list_iter = config_devices_list;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
153 while ( list_iter != NULL )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
154 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
155 ed_device_info_t *info_from_cfg = list_iter->data;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
156 if (( info_from_cfg->reg == 0 ) && ( info_from_cfg->is_custom == 0 ))
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
157 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
158 GtkTreeIter iter;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
159 gtk_list_store_append( store , &iter );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
160 gtk_list_store_set( store , &iter ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
161 DEVLIST_COL_ISACTIVE , info_from_cfg->is_active ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
162 DEVLIST_COL_NAME , info_from_cfg->name ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
163 DEVLIST_COL_FILENAME , info_from_cfg->filename ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
164 DEVLIST_COL_PHYS , info_from_cfg->phys ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
165 DEVLIST_COL_ISAVAILABLE , DEVLIST_ISAVAILABLE_NOTDET ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
166 DEVLIST_COL_BINDINGS , info_from_cfg->bindings ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
167 -1 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
168 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
169 list_iter = g_list_next( list_iter );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
170 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
171
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
172 /* add items from group #3 (DEVLIST_ISAVAILABLE_CUSTOM) */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
173 list_iter = config_devices_list;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
174 while ( list_iter != NULL )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
175 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
176 ed_device_info_t *info_from_cfg = list_iter->data;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
177 if ( info_from_cfg->is_custom == 1 )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
178 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
179 GtkTreeIter iter;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
180 gtk_list_store_append( store , &iter );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
181 gtk_list_store_set( store , &iter ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
182 DEVLIST_COL_ISACTIVE , info_from_cfg->is_active ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
183 DEVLIST_COL_NAME , info_from_cfg->name ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
184 DEVLIST_COL_FILENAME , info_from_cfg->filename ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
185 DEVLIST_COL_PHYS , info_from_cfg->phys ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
186 DEVLIST_COL_ISAVAILABLE , DEVLIST_ISAVAILABLE_CUSTOM ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
187 DEVLIST_COL_BINDINGS , info_from_cfg->bindings ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
188 -1 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
189 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
190 list_iter = g_list_next( list_iter );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
191 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
192
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
193 /* delete lists; bindings objects are not deleted,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
194 they must be accessible from liststore for customization
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
195 and they'll be deleted when the config win is destroyed */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
196 ed_device_free_list( config_devices_list );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
197 ed_device_free_list( system_devices_list );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
198 return;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
199 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
200
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
201
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
202 static void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
203 cfg_device_lv_celldatafunc_isavailable( GtkTreeViewColumn * col , GtkCellRenderer * renderer ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
204 GtkTreeModel * model , GtkTreeIter * iter , gpointer data )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
205 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
206 guint is_available = 0;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
207 gtk_tree_model_get( model , iter , DEVLIST_COL_ISAVAILABLE , &is_available , -1 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
208 switch (is_available)
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
209 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
210 case DEVLIST_ISAVAILABLE_DET:
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
211 g_object_set( renderer , "text" , "Detected" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
212 "foreground" , "Green" , "foreground-set" , TRUE ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
213 "background" , "Black" , "background-set" , TRUE , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
214 break;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
215 case DEVLIST_ISAVAILABLE_CUSTOM:
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
216 g_object_set( renderer , "text" , "Custom" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
217 "foreground" , "Yellow" , "foreground-set" , TRUE ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
218 "background" , "Black" , "background-set" , TRUE , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
219 break;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
220 case DEVLIST_ISAVAILABLE_NOTDET:
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
221 default:
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
222 g_object_set( renderer , "text" , "Not Detected" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
223 "foreground" , "Orange" , "foreground-set" , TRUE ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
224 "background" , "Black" , "background-set" , TRUE , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
225 break;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
226 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
227 return;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
228 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
229
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
230
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
231 static void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
232 cfg_device_lv_changetoggle ( GtkCellRendererToggle * toggle ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
233 gchar * path_str , gpointer cfg_device_lv )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
234 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
235 GtkTreeModel *model = gtk_tree_view_get_model( GTK_TREE_VIEW(cfg_device_lv) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
236 GtkTreeIter iter;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
237 GtkTreePath *path = gtk_tree_path_new_from_string( path_str );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
238 gboolean toggled;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
239
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
240 gtk_tree_model_get_iter( model , &iter , path );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
241 gtk_tree_model_get( model , &iter , DEVLIST_COL_ISACTIVE , &toggled , -1 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
242
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
243 toggled ^= 1;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
244 gtk_list_store_set( GTK_LIST_STORE(model), &iter , DEVLIST_COL_ISACTIVE , toggled , -1 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
245
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
246 gtk_tree_path_free( path );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
247 return;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
248 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
249
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
250
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
251 static void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
252 cfg_config_cb_bindings_show ( gpointer cfg_device_lv )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
253 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
254 GtkTreeSelection *sel;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
255 GtkTreeModel *model;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
256 GtkTreeIter iter;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
257
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
258 /* check if a row is selected */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
259 sel = gtk_tree_view_get_selection( GTK_TREE_VIEW(cfg_device_lv) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
260 if ( gtk_tree_selection_get_selected( sel , &model , &iter ) == TRUE )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
261 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
262 /* check availability and active status */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
263 guint is_available = 0;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
264 gboolean is_active = FALSE;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
265
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
266 gtk_tree_model_get( model , &iter ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
267 DEVLIST_COL_ISACTIVE , &is_active ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
268 DEVLIST_COL_ISAVAILABLE , &is_available ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
269 -1 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
270
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
271 if ( is_available == DEVLIST_ISAVAILABLE_NOTDET )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
272 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
273 /* do not open bindings window for a not-detected device */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
274 ed_ui_message_show( _("Information") ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
275 _("Cannot open bindings window for a not-detected device.\n"
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
276 "Ensure that the device has been correctly plugged in.") ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
277 cfg_win );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
278 return;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
279 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
280 else
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
281 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
282 /* ok, create a ed_device_t item from selected row information */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
283 ed_device_t *dev;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
284 gchar *device_name = NULL, *device_file = NULL, *device_phys = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
285 gpointer bindings = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
286
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
287 gtk_tree_model_get( model , &iter ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
288 DEVLIST_COL_NAME , &device_name ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
289 DEVLIST_COL_FILENAME , &device_file ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
290 DEVLIST_COL_PHYS , &device_phys ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
291 DEVLIST_COL_BINDINGS , &bindings ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
292 -1 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
293
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
294 dev = ed_device_new(
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
295 device_name , device_file , device_phys ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
296 ( is_available == DEVLIST_ISAVAILABLE_CUSTOM ? 1 : 0 ) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
297 g_free( device_name ); g_free( device_file ); g_free( device_phys );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
298
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
299 if ( dev != NULL )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
300 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
301 GtkTreePath *path;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
302 GtkTreeRowReference *rowref;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
303
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
304 dev->info->bindings = bindings;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
305
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
306 path = gtk_tree_model_get_path( model , &iter );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
307 rowref = gtk_tree_row_reference_new( model , path );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
308 gtk_tree_path_free( path );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
309 /* show bindings window for device "dev"; also pass to the bindings window
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
310 the GtkTreeRowReference (it keeps track of the model too) for selected row;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
311 if changes are committed in the bindings window, the row reference will be
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
312 needed to update the treemodel with the new bindings information */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
313 cfg_ui_bindings_show( dev , rowref );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
314 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
315 else
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
316 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
317 /* something went wrong */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
318 ed_ui_message_show( _("Error") ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
319 _("Unable to open selected device.\n"
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
320 "Please check read permissions on device file.") ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
321 cfg_win );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
322 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
323 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
324 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
325 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
326
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
327
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
328 static void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
329 cfg_config_cb_addcustom_show ( gpointer cfg_device_lv )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
330 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
331 GtkWidget *addc_dlg;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
332 GtkWidget *addc_data_frame, *addc_data_vbox;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
333 GtkWidget *addc_data_label;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
334 GtkWidget *addc_data_table;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
335 GtkWidget *addc_data_name_label, *addc_data_name_entry;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
336 GtkWidget *addc_data_file_label, *addc_data_file_entry;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
337 gint result;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
338 gboolean task_done = FALSE;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
339
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
340 addc_dlg = gtk_dialog_new_with_buttons( _("EvDev-Plug - Add custom device") ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
341 GTK_WINDOW(cfg_win) , GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
342 GTK_STOCK_CANCEL , GTK_RESPONSE_REJECT , GTK_STOCK_OK , GTK_RESPONSE_ACCEPT , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
343
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
344 addc_data_frame = gtk_frame_new( NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
345 gtk_container_add( GTK_CONTAINER(GTK_DIALOG(addc_dlg)->vbox) , addc_data_frame );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
346 addc_data_vbox = gtk_vbox_new( FALSE , 5 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
347 gtk_container_set_border_width( GTK_CONTAINER(addc_data_vbox) , 5 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
348 gtk_container_add( GTK_CONTAINER(addc_data_frame) , addc_data_vbox );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
349
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
350 addc_data_label = gtk_label_new( "" );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
351 gtk_label_set_text( GTK_LABEL(addc_data_label) ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
352 _("EvDev-Plug tries to automatically detect and update information about\n"
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
353 "event devices available on the system.\n"
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
354 "However, if auto-detect doesn't work for your system, or you have event\n"
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
355 "devices in a non-standard location (currently they're only searched in\n"
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
356 "/dev/input/ ), you may want to add a custom device, explicitly specifying\n"
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
357 "name and device file.") );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
358 gtk_box_pack_start( GTK_BOX(addc_data_vbox) , addc_data_label , FALSE , FALSE , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
359
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
360 addc_data_name_label = gtk_label_new( _("Device name:") );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
361 gtk_misc_set_alignment( GTK_MISC(addc_data_name_label) , 0 , 0.5 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
362 addc_data_name_entry = gtk_entry_new();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
363
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
364 addc_data_file_label = gtk_label_new( _("Device file:") );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
365 gtk_misc_set_alignment( GTK_MISC(addc_data_file_label) , 0 , 0.5 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
366 addc_data_file_entry = gtk_entry_new();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
367
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
368 addc_data_table = gtk_table_new( 2 , 2 , FALSE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
369 gtk_table_set_col_spacings( GTK_TABLE(addc_data_table) , 2 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
370 gtk_table_set_row_spacings( GTK_TABLE(addc_data_table) , 2 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
371 gtk_table_attach( GTK_TABLE(addc_data_table) , addc_data_name_label , 0 , 1 , 0 , 1 ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
372 GTK_FILL , GTK_EXPAND | GTK_FILL , 0 , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
373 gtk_table_attach( GTK_TABLE(addc_data_table) , addc_data_name_entry , 1 , 2 , 0 , 1 ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
374 GTK_EXPAND | GTK_FILL , GTK_EXPAND | GTK_FILL , 0 , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
375 gtk_table_attach( GTK_TABLE(addc_data_table) , addc_data_file_label , 0 , 1 , 1 , 2 ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
376 GTK_FILL , GTK_EXPAND | GTK_FILL , 0 , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
377 gtk_table_attach( GTK_TABLE(addc_data_table) , addc_data_file_entry , 1 , 2 , 1 , 2 ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
378 GTK_EXPAND | GTK_FILL , GTK_EXPAND | GTK_FILL , 0 , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
379 gtk_box_pack_start( GTK_BOX(addc_data_vbox) , addc_data_table , TRUE , TRUE , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
380
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
381 gtk_widget_show_all( addc_dlg );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
382
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
383 while ( task_done == FALSE )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
384 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
385 result = gtk_dialog_run( GTK_DIALOG(addc_dlg) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
386 if ( result == GTK_RESPONSE_ACCEPT )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
387 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
388 const gchar *name = gtk_entry_get_text( GTK_ENTRY(addc_data_name_entry) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
389 const gchar *file = gtk_entry_get_text( GTK_ENTRY(addc_data_file_entry) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
390 if ( ( strcmp( name , "" ) != 0 ) &&
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
391 ( strcmp( name , "___plugin___" ) != 0 ) &&
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
392 ( strcmp( file , "" ) != 0 ) &&
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
393 ( file[0] == '/' ) )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
394 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
395 GtkTreeModel *model = gtk_tree_view_get_model( GTK_TREE_VIEW(cfg_device_lv) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
396 GtkTreeIter iter;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
397
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
398 gtk_list_store_append( GTK_LIST_STORE(model) , &iter );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
399 gtk_list_store_set( GTK_LIST_STORE(model) , &iter ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
400 DEVLIST_COL_ISACTIVE , FALSE ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
401 DEVLIST_COL_NAME , name ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
402 DEVLIST_COL_FILENAME , file ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
403 DEVLIST_COL_PHYS , "(custom)" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
404 DEVLIST_COL_ISAVAILABLE , DEVLIST_ISAVAILABLE_CUSTOM ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
405 DEVLIST_COL_BINDINGS , NULL , -1 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
406 task_done = TRUE;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
407 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
408 else
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
409 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
410 ed_ui_message_show( _("Information") ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
411 _("Please specify both name and filename.\n"
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
412 "Filename must be specified with absolute path.") ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
413 addc_dlg );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
414 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
415 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
416 else
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
417 task_done = TRUE;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
418 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
419
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
420 gtk_widget_destroy( addc_dlg );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
421 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
422
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
423
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
424 static void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
425 cfg_config_cb_remove ( gpointer cfg_device_lv )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
426 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
427 GtkTreeSelection *sel;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
428 GtkTreeModel *model;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
429 GtkTreeIter iter;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
430
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
431 /* check if a row is selected */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
432 sel = gtk_tree_view_get_selection( GTK_TREE_VIEW(cfg_device_lv) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
433 if ( gtk_tree_selection_get_selected( sel , &model , &iter ) == TRUE )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
434 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
435 guint is_available = 0;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
436 gtk_tree_model_get( model , &iter , DEVLIST_COL_ISAVAILABLE , &is_available , -1 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
437 switch ( is_available )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
438 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
439 case DEVLIST_ISAVAILABLE_NOTDET:
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
440 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
441 /* if remove is called on a not-detected device,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
442 it allows to remove existing configuration for it */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
443 GtkWidget *yesno_dlg = gtk_message_dialog_new( GTK_WINDOW(cfg_win) ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
444 GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT , GTK_MESSAGE_QUESTION ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
445 GTK_BUTTONS_YES_NO ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
446 _("Do you want to remove the existing configuration for selected device?\n") );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
447 if ( gtk_dialog_run( GTK_DIALOG(yesno_dlg) ) == GTK_RESPONSE_YES )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
448 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
449 gpointer bindings = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
450 gtk_tree_model_get( model , &iter , DEVLIST_COL_BINDINGS , &bindings , -1 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
451 if ( bindings != NULL ) ed_bindings_store_delete( bindings );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
452 gtk_list_store_remove( GTK_LIST_STORE(model) , &iter );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
453 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
454 gtk_widget_destroy( yesno_dlg );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
455 break;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
456 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
457
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
458 case DEVLIST_ISAVAILABLE_CUSTOM:
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
459 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
460 /* if remove is called on a custom device,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
461 it allows to remove it along with its configuration */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
462 GtkWidget *yesno_dlg = gtk_message_dialog_new( GTK_WINDOW(cfg_win) ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
463 GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT , GTK_MESSAGE_QUESTION ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
464 GTK_BUTTONS_YES_NO ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
465 _("Do you want to remove the selected custom device?\n") );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
466 if ( gtk_dialog_run( GTK_DIALOG(yesno_dlg) ) == GTK_RESPONSE_YES )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
467 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
468 gpointer bindings = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
469 gtk_tree_model_get( model , &iter , DEVLIST_COL_BINDINGS , &bindings , -1 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
470 if ( bindings != NULL ) ed_bindings_store_delete( bindings );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
471 gtk_list_store_remove( GTK_LIST_STORE(model) , &iter );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
472 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
473 gtk_widget_destroy( yesno_dlg );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
474 break;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
475 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
476
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
477 case DEVLIST_ISAVAILABLE_DET:
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
478 default:
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
479 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
480 /* do nothing for detected devices */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
481 break;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
482 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
483 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
484 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
485 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
486
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
487
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
488 static gboolean
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
489 cfg_config_cb_bindings_commit_foreach ( GtkTreeModel * model ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
490 GtkTreePath * path ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
491 GtkTreeIter * iter ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
492 gpointer config_device_list_p )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
493 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
494 gchar *device_name = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
495 gchar *device_file = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
496 gchar *device_phys = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
497 gboolean is_active = FALSE;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
498 guint is_available = 0;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
499 gpointer bindings = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
500 ed_device_info_t *info;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
501 GList **config_device_list = config_device_list_p;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
502
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
503 gtk_tree_model_get( model , iter ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
504 DEVLIST_COL_ISACTIVE , &is_active ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
505 DEVLIST_COL_NAME , &device_name ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
506 DEVLIST_COL_FILENAME , &device_file ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
507 DEVLIST_COL_PHYS , &device_phys ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
508 DEVLIST_COL_ISAVAILABLE , &is_available ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
509 DEVLIST_COL_BINDINGS , &bindings , -1 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
510
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
511 info = ed_device_info_new( device_name , device_file , device_phys ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
512 ( is_available == DEVLIST_ISAVAILABLE_CUSTOM ? 1 : 0 ) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
513 info->bindings = bindings;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
514 info->is_active = is_active;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
515
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
516 *config_device_list = g_list_append( *config_device_list , info );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
517 return FALSE;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
518 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
519
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
520
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
521 static gboolean
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
522 cfg_config_cb_bindings_delbindings_foreach ( GtkTreeModel * model ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
523 GtkTreePath * path ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
524 GtkTreeIter * iter ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
525 gpointer data )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
526 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
527 gpointer bindings = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
528 gtk_tree_model_get( model , iter , DEVLIST_COL_BINDINGS , &bindings , -1 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
529 if ( bindings != NULL )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
530 ed_bindings_store_delete( bindings );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
531 return FALSE;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
532 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
533
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
534
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
535 static void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
536 cfg_config_cb_commit ( gpointer cfg_device_lv )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
537 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
538 GList *config_device_list = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
539 GList *list_iter;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
540 GtkTreeModel *model;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
541
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
542 model = gtk_tree_view_get_model( GTK_TREE_VIEW(cfg_device_lv) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
543 /* fill config_device_list with information from the treeview */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
544 gtk_tree_model_foreach( model , cfg_config_cb_bindings_commit_foreach , &config_device_list );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
545 /* ok, now we have a list of ed_device_info_t objects */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
546
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
547 /* commit changes in configuration file */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
548 ed_config_save_from_list( config_device_list );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
549
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
550 /* not needed anymore */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
551 ed_device_free_list( config_device_list );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
552
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
553 /* free bindings stored in the liststore */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
554 gtk_tree_model_foreach( model , cfg_config_cb_bindings_delbindings_foreach , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
555
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
556 if ( plugin_is_active == TRUE )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
557 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
558 /* restart device listening according to the (possibly changed) config file */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
559 ed_device_start_listening_from_config();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
560 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
561
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
562 gtk_widget_destroy( cfg_win );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
563 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
564
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
565
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
566 static void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
567 cfg_config_cb_cancel ( gpointer cfg_device_lv )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
568 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
569 GtkTreeModel *model;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
570 model = gtk_tree_view_get_model( GTK_TREE_VIEW(cfg_device_lv) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
571
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
572 /* free bindings stored in the liststore */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
573 gtk_tree_model_foreach( model , cfg_config_cb_bindings_delbindings_foreach , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
574
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
575 if ( plugin_is_active == TRUE )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
576 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
577 /* restart device listening according to the (unchanged) config file */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
578 ed_device_start_listening_from_config();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
579 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
580
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
581 gtk_widget_destroy( cfg_win );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
582 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
583
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
584
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
585 void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
586 ed_ui_config_show( void )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
587 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
588 GtkWidget *cfg_vbox;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
589 GtkWidget *cfg_device_lv, *cfg_device_lv_frame, *cfg_device_lv_sw;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
590 GtkTreeViewColumn *cfg_device_lv_col_name, *cfg_device_lv_col_filename, *cfg_device_lv_col_phys;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
591 GtkTreeViewColumn *cfg_device_lv_col_isactive, *cfg_device_lv_col_isavailable;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
592 GtkCellRenderer *cfg_device_lv_rndr_text, *cfg_device_lv_rndr_toggle;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
593 GtkCellRenderer *cfg_device_lv_rndr_textphys, *cfg_device_lv_rndr_isavailable;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
594 GtkListStore *device_store;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
595 GtkWidget *cfg_bbar_hbbox;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
596 GtkWidget *cfg_bbar_bt_bind, *cfg_bbar_bt_addc, *cfg_bbar_bt_remc;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
597 GtkWidget *cfg_bbar_bt_cancel, *cfg_bbar_bt_ok;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
598 GdkGeometry cfg_win_hints;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
599
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
600 if ( cfg_win != NULL )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
601 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
602 gtk_window_present( GTK_WINDOW(cfg_win) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
603 return;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
604 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
605
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
606 /* IMPORTANT: stop listening for all devices when config window is opened */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
607 ed_device_stop_listening_all( TRUE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
608
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
609 cfg_win = gtk_window_new( GTK_WINDOW_TOPLEVEL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
610 gtk_window_set_type_hint( GTK_WINDOW(cfg_win), GDK_WINDOW_TYPE_HINT_DIALOG );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
611 gtk_window_set_position( GTK_WINDOW(cfg_win), GTK_WIN_POS_CENTER );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
612 gtk_window_set_title( GTK_WINDOW(cfg_win), _("EvDev-Plug - Configuration") );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
613 gtk_container_set_border_width( GTK_CONTAINER(cfg_win), 10 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
614 g_signal_connect( G_OBJECT(cfg_win) , "destroy" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
615 G_CALLBACK(gtk_widget_destroyed) , &cfg_win );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
616 cfg_win_hints.min_width = -1;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
617 cfg_win_hints.min_height = 300;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
618 gtk_window_set_geometry_hints( GTK_WINDOW(cfg_win) , GTK_WIDGET(cfg_win) ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
619 &cfg_win_hints , GDK_HINT_MIN_SIZE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
620
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
621 cfg_vbox = gtk_vbox_new( FALSE , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
622 gtk_container_add( GTK_CONTAINER(cfg_win) , cfg_vbox );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
623
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
624 /* current liststore model
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
625 ----------------------------------------------
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
626 G_TYPE_BOOLEAN -> device listening on/off
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
627 G_TYPE_STRING -> device name
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
628 G_TYPE_STRING -> device filename
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
629 G_TYPE_STRING -> device physical port
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
630 G_TYPE_UINT -> device is available
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
631 G_TYPE_POINTER -> device bindings
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
632 ----------------------------------------------
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
633 */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
634 device_store = gtk_list_store_new(
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
635 DEVLIST_NUMCOLS , G_TYPE_BOOLEAN , G_TYPE_STRING ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
636 G_TYPE_STRING , G_TYPE_STRING , G_TYPE_UINT , G_TYPE_POINTER );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
637 cfg_device_lv_populate( device_store );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
638
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
639 cfg_device_lv_frame = gtk_frame_new( NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
640 cfg_device_lv = gtk_tree_view_new_with_model( GTK_TREE_MODEL(device_store) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
641 g_object_unref( device_store );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
642
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
643 cfg_device_lv_rndr_text = gtk_cell_renderer_text_new();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
644 cfg_device_lv_rndr_toggle = gtk_cell_renderer_toggle_new();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
645 cfg_device_lv_rndr_isavailable = gtk_cell_renderer_text_new();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
646 cfg_device_lv_rndr_textphys = gtk_cell_renderer_text_new();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
647 g_object_set( G_OBJECT(cfg_device_lv_rndr_textphys) ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
648 "ellipsize-set" , TRUE , "ellipsize" , PANGO_ELLIPSIZE_END , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
649
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
650 cfg_device_lv_col_isactive = gtk_tree_view_column_new_with_attributes(
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
651 _("Active") , cfg_device_lv_rndr_toggle , "active" , DEVLIST_COL_ISACTIVE , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
652 gtk_tree_view_column_set_expand( GTK_TREE_VIEW_COLUMN(cfg_device_lv_col_isactive) , FALSE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
653 gtk_tree_view_append_column( GTK_TREE_VIEW(cfg_device_lv), cfg_device_lv_col_isactive );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
654 cfg_device_lv_col_isavailable = gtk_tree_view_column_new();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
655 gtk_tree_view_column_set_title( cfg_device_lv_col_isavailable , _("Status") );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
656 gtk_tree_view_column_pack_start( cfg_device_lv_col_isavailable , cfg_device_lv_rndr_isavailable , TRUE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
657 gtk_tree_view_column_set_cell_data_func(
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
658 cfg_device_lv_col_isavailable , cfg_device_lv_rndr_isavailable ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
659 (GtkTreeCellDataFunc)cfg_device_lv_celldatafunc_isavailable ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
660 NULL , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
661 gtk_tree_view_column_set_expand( GTK_TREE_VIEW_COLUMN(cfg_device_lv_col_isavailable) , FALSE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
662 gtk_tree_view_append_column( GTK_TREE_VIEW(cfg_device_lv), cfg_device_lv_col_isavailable );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
663 cfg_device_lv_col_name = gtk_tree_view_column_new_with_attributes(
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
664 _("Device Name") , cfg_device_lv_rndr_text , "text" , DEVLIST_COL_NAME , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
665 gtk_tree_view_column_set_expand( GTK_TREE_VIEW_COLUMN(cfg_device_lv_col_name) , FALSE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
666 gtk_tree_view_append_column( GTK_TREE_VIEW(cfg_device_lv), cfg_device_lv_col_name );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
667 cfg_device_lv_col_filename = gtk_tree_view_column_new_with_attributes(
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
668 _("Device File") , cfg_device_lv_rndr_text , "text" , DEVLIST_COL_FILENAME , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
669 gtk_tree_view_column_set_expand( GTK_TREE_VIEW_COLUMN(cfg_device_lv_col_filename) , FALSE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
670 gtk_tree_view_append_column( GTK_TREE_VIEW(cfg_device_lv), cfg_device_lv_col_filename );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
671 cfg_device_lv_col_phys = gtk_tree_view_column_new_with_attributes(
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
672 _("Device Address") , cfg_device_lv_rndr_textphys , "text" , DEVLIST_COL_PHYS , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
673 gtk_tree_view_column_set_expand( GTK_TREE_VIEW_COLUMN(cfg_device_lv_col_phys) , TRUE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
674 gtk_tree_view_column_set_resizable( GTK_TREE_VIEW_COLUMN(cfg_device_lv_col_phys) , TRUE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
675 gtk_tree_view_append_column( GTK_TREE_VIEW(cfg_device_lv), cfg_device_lv_col_phys );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
676 cfg_device_lv_sw = gtk_scrolled_window_new( NULL , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
677 gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(cfg_device_lv_sw) ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
678 GTK_POLICY_NEVER , GTK_POLICY_ALWAYS );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
679
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
680 gtk_container_add( GTK_CONTAINER(cfg_device_lv_sw) , cfg_device_lv );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
681 gtk_container_add( GTK_CONTAINER(cfg_device_lv_frame) , cfg_device_lv_sw );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
682 gtk_box_pack_start( GTK_BOX(cfg_vbox) , cfg_device_lv_frame , TRUE , TRUE , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
683
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
684 gtk_box_pack_start( GTK_BOX(cfg_vbox) , gtk_hseparator_new() , FALSE , FALSE , 4 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
685
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
686 /* button bar */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
687 cfg_bbar_hbbox = gtk_hbutton_box_new();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
688 gtk_button_box_set_layout( GTK_BUTTON_BOX(cfg_bbar_hbbox) , GTK_BUTTONBOX_START );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
689 cfg_bbar_bt_bind = gtk_button_new_with_mnemonic( _("_Bindings") );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
690 gtk_button_set_image( GTK_BUTTON(cfg_bbar_bt_bind) ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
691 gtk_image_new_from_stock( GTK_STOCK_PREFERENCES , GTK_ICON_SIZE_BUTTON ) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
692 cfg_bbar_bt_addc = gtk_button_new_from_stock( GTK_STOCK_ADD );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
693 cfg_bbar_bt_remc = gtk_button_new_from_stock( GTK_STOCK_REMOVE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
694 /*cfg_bbar_bt_refresh = gtk_button_new_from_stock( GTK_STOCK_REFRESH );*/
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
695 cfg_bbar_bt_cancel = gtk_button_new_from_stock( GTK_STOCK_CANCEL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
696 cfg_bbar_bt_ok = gtk_button_new_from_stock( GTK_STOCK_OK );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
697 gtk_container_add( GTK_CONTAINER(cfg_bbar_hbbox) , cfg_bbar_bt_bind );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
698 gtk_container_add( GTK_CONTAINER(cfg_bbar_hbbox) , cfg_bbar_bt_addc );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
699 gtk_container_add( GTK_CONTAINER(cfg_bbar_hbbox) , cfg_bbar_bt_remc );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
700 /*gtk_container_add( GTK_CONTAINER(cfg_bbar_hbbox) , cfg_bbar_bt_refresh );*/
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
701 gtk_container_add( GTK_CONTAINER(cfg_bbar_hbbox) , cfg_bbar_bt_cancel );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
702 gtk_container_add( GTK_CONTAINER(cfg_bbar_hbbox) , cfg_bbar_bt_ok );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
703 gtk_button_box_set_child_secondary( GTK_BUTTON_BOX(cfg_bbar_hbbox) , cfg_bbar_bt_cancel , TRUE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
704 gtk_button_box_set_child_secondary( GTK_BUTTON_BOX(cfg_bbar_hbbox) , cfg_bbar_bt_ok , TRUE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
705 gtk_box_pack_start( GTK_BOX(cfg_vbox) , cfg_bbar_hbbox , FALSE , FALSE , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
706
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
707 g_signal_connect( cfg_device_lv_rndr_toggle , "toggled" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
708 G_CALLBACK(cfg_device_lv_changetoggle) , cfg_device_lv );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
709 g_signal_connect_swapped( G_OBJECT(cfg_bbar_bt_bind) , "clicked" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
710 G_CALLBACK(cfg_config_cb_bindings_show) , cfg_device_lv );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
711 g_signal_connect_swapped( G_OBJECT(cfg_bbar_bt_addc) , "clicked" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
712 G_CALLBACK(cfg_config_cb_addcustom_show) , cfg_device_lv );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
713 g_signal_connect_swapped( G_OBJECT(cfg_bbar_bt_remc) , "clicked" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
714 G_CALLBACK(cfg_config_cb_remove) , cfg_device_lv );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
715 g_signal_connect_swapped( G_OBJECT(cfg_bbar_bt_cancel) , "clicked" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
716 G_CALLBACK(cfg_config_cb_cancel) , cfg_device_lv );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
717 g_signal_connect_swapped( G_OBJECT(cfg_bbar_bt_ok) , "clicked" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
718 G_CALLBACK(cfg_config_cb_commit) , cfg_device_lv );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
719
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
720 gtk_widget_show_all( cfg_win );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
721 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
722
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
723
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
724
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
725 /* bindings window */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
726
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
727 static void cfg_bindbox_new_empty_row( GtkTable * , GtkWidget * , gboolean );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
728
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
729 enum
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
730 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
731 BINDLIST_COL_COMBO_ACTION = 0,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
732 BINDLIST_COL_BT_ASSIGN,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
733 BINDLIST_COL_LABEL_EVCODE,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
734 BINDLIST_COL_BT_DELETE,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
735 BINDLIST_NUMCOLS
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
736 };
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
737
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
738
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
739 static gboolean
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
740 cfg_bindbox_assign_binding_timeout_func ( gpointer bindings_win )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
741 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
742 GtkWidget *trigger_dlg = g_object_get_data( G_OBJECT(bindings_win) , "trigger-win" );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
743 if ( trigger_dlg != NULL )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
744 gtk_dialog_response( GTK_DIALOG(trigger_dlg) , GTK_RESPONSE_CANCEL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
745
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
746 return FALSE;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
747 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
748
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
749
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
750 static gboolean
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
751 cfg_bindbox_assign_binding_input_func ( GIOChannel * iochan ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
752 GIOCondition cond ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
753 gpointer bindings_win )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
754 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
755 switch ( cond )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
756 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
757 case G_IO_IN:
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
758 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
759 gsize rb = 0;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
760 GError *gerr = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
761 struct input_event inputev;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
762 g_io_channel_read_chars( iochan , (gchar*)&inputev ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
763 sizeof(struct input_event) , &rb , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
764 if ( rb == sizeof(struct input_event) )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
765 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
766 GtkWidget *trigger_dlg = g_object_get_data( G_OBJECT(bindings_win) , "trigger-win" );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
767 if ( trigger_dlg == NULL )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
768 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
769 /* the trigger-dialog window is not open; ignore input */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
770 return TRUE;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
771 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
772 else
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
773 {
1055
0cc6b35fbeb4 [svn] - evdev-plug 0.2: do not intercept all event types, currently only pick types KEY and ABSOLUTE; there could be other event types that are worth intercepting, feedback needed about this
giacomo
parents: 527
diff changeset
774 /* currently, only care about events of type 'key' and 'absolute'
0cc6b35fbeb4 [svn] - evdev-plug 0.2: do not intercept all event types, currently only pick types KEY and ABSOLUTE; there could be other event types that are worth intercepting, feedback needed about this
giacomo
parents: 527
diff changeset
775 TODO: should we handle some other event type as well? */
0cc6b35fbeb4 [svn] - evdev-plug 0.2: do not intercept all event types, currently only pick types KEY and ABSOLUTE; there could be other event types that are worth intercepting, feedback needed about this
giacomo
parents: 527
diff changeset
776 switch ( inputev.type )
0cc6b35fbeb4 [svn] - evdev-plug 0.2: do not intercept all event types, currently only pick types KEY and ABSOLUTE; there could be other event types that are worth intercepting, feedback needed about this
giacomo
parents: 527
diff changeset
777 {
0cc6b35fbeb4 [svn] - evdev-plug 0.2: do not intercept all event types, currently only pick types KEY and ABSOLUTE; there could be other event types that are worth intercepting, feedback needed about this
giacomo
parents: 527
diff changeset
778 case EV_KEY:
0cc6b35fbeb4 [svn] - evdev-plug 0.2: do not intercept all event types, currently only pick types KEY and ABSOLUTE; there could be other event types that are worth intercepting, feedback needed about this
giacomo
parents: 527
diff changeset
779 case EV_ABS:
0cc6b35fbeb4 [svn] - evdev-plug 0.2: do not intercept all event types, currently only pick types KEY and ABSOLUTE; there could be other event types that are worth intercepting, feedback needed about this
giacomo
parents: 527
diff changeset
780 {
0cc6b35fbeb4 [svn] - evdev-plug 0.2: do not intercept all event types, currently only pick types KEY and ABSOLUTE; there could be other event types that are worth intercepting, feedback needed about this
giacomo
parents: 527
diff changeset
781 /* the trigger-dialog window is open; record input and
0cc6b35fbeb4 [svn] - evdev-plug 0.2: do not intercept all event types, currently only pick types KEY and ABSOLUTE; there could be other event types that are worth intercepting, feedback needed about this
giacomo
parents: 527
diff changeset
782 store it in a container managed by the trigger-dialog itself */
1170
96cc46b1cf5e [svn] - fix a possible allocation overflow issue. found while merging to 1.3 stable.
nenolod
parents: 1055
diff changeset
783 ed_inputevent_t *dinputev = g_malloc(sizeof(ed_inputevent_t));
1055
0cc6b35fbeb4 [svn] - evdev-plug 0.2: do not intercept all event types, currently only pick types KEY and ABSOLUTE; there could be other event types that are worth intercepting, feedback needed about this
giacomo
parents: 527
diff changeset
784 dinputev->type = inputev.type;
0cc6b35fbeb4 [svn] - evdev-plug 0.2: do not intercept all event types, currently only pick types KEY and ABSOLUTE; there could be other event types that are worth intercepting, feedback needed about this
giacomo
parents: 527
diff changeset
785 dinputev->code = inputev.code;
0cc6b35fbeb4 [svn] - evdev-plug 0.2: do not intercept all event types, currently only pick types KEY and ABSOLUTE; there could be other event types that are worth intercepting, feedback needed about this
giacomo
parents: 527
diff changeset
786 dinputev->value = inputev.value;
0cc6b35fbeb4 [svn] - evdev-plug 0.2: do not intercept all event types, currently only pick types KEY and ABSOLUTE; there could be other event types that are worth intercepting, feedback needed about this
giacomo
parents: 527
diff changeset
787 g_object_set_data( G_OBJECT(trigger_dlg) , "trigger-data" , dinputev );
0cc6b35fbeb4 [svn] - evdev-plug 0.2: do not intercept all event types, currently only pick types KEY and ABSOLUTE; there could be other event types that are worth intercepting, feedback needed about this
giacomo
parents: 527
diff changeset
788 gtk_dialog_response( GTK_DIALOG(trigger_dlg) , GTK_RESPONSE_OK );
0cc6b35fbeb4 [svn] - evdev-plug 0.2: do not intercept all event types, currently only pick types KEY and ABSOLUTE; there could be other event types that are worth intercepting, feedback needed about this
giacomo
parents: 527
diff changeset
789 break;
0cc6b35fbeb4 [svn] - evdev-plug 0.2: do not intercept all event types, currently only pick types KEY and ABSOLUTE; there could be other event types that are worth intercepting, feedback needed about this
giacomo
parents: 527
diff changeset
790 }
0cc6b35fbeb4 [svn] - evdev-plug 0.2: do not intercept all event types, currently only pick types KEY and ABSOLUTE; there could be other event types that are worth intercepting, feedback needed about this
giacomo
parents: 527
diff changeset
791 }
422
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
792 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
793 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
794 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
795 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
796 return TRUE;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
797 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
798
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
799
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
800 static gboolean
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
801 cfg_bindbox_assign_binding_checkdups( GtkWidget * table , ed_inputevent_t * inputev )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
802 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
803 /* check if inputev is already assigned in table */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
804 GList *children = GTK_TABLE(table)->children;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
805 for ( children ; children != NULL ; children = g_list_next(children) )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
806 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
807 GtkTableChild *child = children->data;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
808
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
809 if ( child->top_attach + 1 == GTK_TABLE(table)->nrows )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
810 continue; /* skip last empty row */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
811
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
812 if ( child->left_attach == BINDLIST_COL_LABEL_EVCODE )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
813 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
814 /* it's a label, pick its inputevent */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
815 ed_inputevent_t * iev = g_object_get_data( G_OBJECT(child->widget) , "inputevent" );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
816 if ( ( iev != NULL ) && ( ed_inputevent_check_equality( inputev , iev ) == TRUE ) )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
817 return TRUE; /* a duplicate was found */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
818 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
819 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
820 return FALSE;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
821 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
822
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
823
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
824 static void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
825 cfg_bindbox_assign_binding ( GtkButton * assign_button , gpointer bindings_win )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
826 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
827 GtkWidget *trigger_dlg;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
828 GtkWidget *trigger_dlg_frame;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
829 GtkWidget *trigger_dlg_label;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
830 guint timeout_sid = 0;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
831 gint res = 0;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
832
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
833 /* create a not-decorated window to inform the user about what's going on */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
834 trigger_dlg = gtk_dialog_new();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
835 gtk_widget_set_name( trigger_dlg , "trigger_dlg" );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
836 trigger_dlg_label = gtk_label_new( _("Press a key of your device to bind it;\n"
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
837 "if no key is pressed in five seconds, this window\n"
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
838 "will close without binding changes.") );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
839 gtk_widget_hide( GTK_WIDGET(GTK_DIALOG(trigger_dlg)->action_area) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
840 gtk_misc_set_padding( GTK_MISC(trigger_dlg_label) , 10 , 10 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
841 trigger_dlg_frame = gtk_frame_new( NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
842 gtk_container_add( GTK_CONTAINER(trigger_dlg_frame) , trigger_dlg_label );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
843 gtk_container_add( GTK_CONTAINER(GTK_DIALOG(trigger_dlg)->vbox) , trigger_dlg_frame );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
844 gtk_window_set_position( GTK_WINDOW(trigger_dlg) , GTK_WIN_POS_CENTER );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
845 gtk_window_set_decorated( GTK_WINDOW(trigger_dlg) , FALSE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
846 gtk_window_set_transient_for( GTK_WINDOW(trigger_dlg) ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
847 GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(assign_button))) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
848 gtk_dialog_set_has_separator( GTK_DIALOG(trigger_dlg) , FALSE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
849 gtk_widget_show_all( trigger_dlg );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
850
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
851 /* close the trigger-window if no input is received in 5 seconds */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
852 timeout_sid = g_timeout_add( 5000 , cfg_bindbox_assign_binding_timeout_func , bindings_win );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
853
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
854 g_object_set_data( G_OBJECT(bindings_win) , "trigger-win" , trigger_dlg ); /* enable trigger-listening */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
855 res = gtk_dialog_run( GTK_DIALOG(trigger_dlg) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
856 g_object_set_data( G_OBJECT(bindings_win) , "trigger-win" , NULL ); /* stop trigger-listening */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
857 switch ( res )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
858 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
859 case GTK_RESPONSE_OK:
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
860 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
861 ed_inputevent_t *dinputev = g_object_get_data( G_OBJECT(trigger_dlg) , "trigger-data" );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
862 GtkWidget *label = g_object_get_data( G_OBJECT(assign_button) , "label" );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
863 GtkWidget *table = g_object_get_data( G_OBJECT(bindings_win) , "table" );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
864 gchar *input_str;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
865
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
866 /* we got a new input event; ensure that this has not been assigned to an action already */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
867 if ( cfg_bindbox_assign_binding_checkdups( table , dinputev ) == TRUE )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
868 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
869 /* this input event has been already used */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
870 g_free( dinputev );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
871 g_source_remove( timeout_sid );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
872 ed_ui_message_show( _("Information") ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
873 _("This input event has been already assigned.\n\n"
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
874 "It's not possible to assign multiple actions to the same input event "
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
875 "(although it's possible to assign the same action to multiple events).") ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
876 bindings_win );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
877 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
878 else
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
879 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
880 /* if this is the last row ("Assign" button) , create a new empty row */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
881 if ( GPOINTER_TO_INT(g_object_get_data(G_OBJECT(assign_button),"last")) == 1 )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
882 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
883 cfg_bindbox_new_empty_row( GTK_TABLE(table) , bindings_win , TRUE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
884 /* so, the current row is not the last one anymore;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
885 remove its "last" mark and enable its delete button */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
886 g_object_set_data( G_OBJECT(assign_button) , "last" , GINT_TO_POINTER(0) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
887 gtk_widget_set_sensitive( GTK_WIDGET(g_object_get_data(G_OBJECT(assign_button),"delbt")) , TRUE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
888 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
889
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
890 g_object_set_data_full( G_OBJECT(label) , "inputevent" , dinputev , g_free );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
891 input_str = g_strdup_printf( "%i:%i:%i" , dinputev->type , dinputev->code , dinputev->value );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
892 gtk_label_set_text( GTK_LABEL(label) , input_str );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
893 g_free( input_str );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
894 g_source_remove( timeout_sid );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
895 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
896
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
897 break;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
898 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
899
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
900 default:
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
901 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
902 break; /* nothing should be changed */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
903 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
904 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
905
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
906 gtk_widget_destroy( trigger_dlg );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
907 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
908
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
909
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
910 static void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
911 cfg_bindbox_delete_row( GtkButton * delete_button , gpointer bindings_win )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
912 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
913 GtkTable *oldtable, *newtable;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
914 GtkWidget *table_sw, *table_vp;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
915 GList *children = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
916 gint drow = 0;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
917
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
918 /* here comes the drawback of using GtkTable to display
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
919 a list-like set of widgets :) deletion can be a complex task */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
920
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
921 /* first, get the row number of the row that should be deleted
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
922 (this can't be the last one cause it has the delete button disabled) */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
923 oldtable = g_object_get_data( G_OBJECT(bindings_win) , "table" );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
924 children = oldtable->children;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
925 while ( children != NULL )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
926 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
927 GtkTableChild *child = children->data;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
928 if ( child->widget == (GtkWidget*)delete_button )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
929 drow = child->top_attach;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
930 children = g_list_next( children );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
931 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
932
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
933 /* now, a simple trick: create a new GtkTable and move all
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
934 of the widgets there, excepting those positioned in row "drow" */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
935 newtable = (GtkTable*)gtk_table_new( oldtable->nrows - 1 , oldtable->ncols , FALSE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
936
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
937 children = oldtable->children;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
938 while ( children != NULL )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
939 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
940 GtkTableChild *child = children->data;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
941 if ( child->top_attach < drow )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
942 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
943 GtkWidget *widget = child->widget;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
944 guint widget_row = child->top_attach;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
945 guint widget_col = child->left_attach;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
946 g_object_ref( widget );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
947 gtk_container_remove( GTK_CONTAINER(oldtable) , widget );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
948 gtk_table_attach( GTK_TABLE(newtable) , widget ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
949 widget_col , widget_col + 1 , widget_row , widget_row + 1 ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
950 (widget_col == BINDLIST_COL_LABEL_EVCODE ? GTK_EXPAND | GTK_FILL : GTK_FILL ) , GTK_FILL , 0 , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
951 /* gtk_container_remove() changed the structure used to iterate; restart */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
952 children = oldtable->children;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
953 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
954 else if ( child->top_attach > drow )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
955 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
956 GtkWidget *widget = child->widget;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
957 guint widget_row = child->top_attach;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
958 guint widget_col = child->left_attach;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
959 g_object_ref( widget );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
960 gtk_container_remove( GTK_CONTAINER(oldtable) , widget );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
961 gtk_table_attach( GTK_TABLE(newtable) , widget ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
962 widget_col , widget_col + 1 , widget_row - 1 , widget_row ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
963 (widget_col == BINDLIST_COL_LABEL_EVCODE ? GTK_EXPAND | GTK_FILL : GTK_FILL ) , GTK_FILL , 0 , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
964 /* gtk_container_remove() changed the structure used to iterate; restart */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
965 children = oldtable->children;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
966 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
967 else
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
968 children = g_list_next(children);
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
969 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
970
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
971 /* now, replace the old GtkTable with the new one */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
972 table_sw = g_object_get_data( G_OBJECT(bindings_win) , "tablesw" );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
973 table_vp = gtk_bin_get_child( GTK_BIN(table_sw) ); /* get the viewport */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
974 gtk_widget_destroy( GTK_WIDGET(oldtable) ); /* destroy old GtkTable */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
975 gtk_container_add( GTK_CONTAINER(table_vp) , GTK_WIDGET(newtable) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
976 g_object_set_data( G_OBJECT(bindings_win) , "table" , newtable ); /* update table in bindings_win */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
977 gtk_widget_show_all( GTK_WIDGET(newtable) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
978 return;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
979 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
980
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
981
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
982 /* the three structure types defined below
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
983 are only used in cfg_bindbox_populate process */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
984 typedef struct
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
985 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
986 GtkWidget *combobox;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
987 gint action_code;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
988 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
989 combosas_helper_t;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
990
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
991 typedef struct
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
992 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
993 gint action_code;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
994 ed_inputevent_t * inputev;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
995 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
996 popul_binding_t;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
997
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
998 typedef struct
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
999 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1000 gint id;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1001 popul_binding_t *bindings;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1002 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1003 popul_container_binding_t;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1004
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1005 static gboolean
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1006 cfg_bindbox_populate_foreach_combosas ( GtkTreeModel * model ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1007 GtkTreePath * path ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1008 GtkTreeIter * iter ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1009 gpointer combosas_helper_gp )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1010 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1011 gint action_code = 0;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1012 combosas_helper_t *combosas_helper = combosas_helper_gp;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1013 gtk_tree_model_get( model , iter , 1 , &action_code , -1 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1014 if ( action_code == combosas_helper->action_code )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1015 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1016 gtk_combo_box_set_active_iter( GTK_COMBO_BOX(combosas_helper->combobox) , iter );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1017 return TRUE;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1018 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1019 return FALSE;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1020 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1021
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1022 static void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1023 cfg_bindbox_populate_foreach ( ed_inputevent_t * sinputev ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1024 gint action_code ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1025 gpointer popul_container_gp ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1026 gpointer none )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1027 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1028 ed_inputevent_t *inputev;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1029 popul_container_binding_t *popul_container = popul_container_gp;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1030
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1031 /* make a copy of the ed_inputevent_t object "sinputev" */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1032 inputev = g_malloc(sizeof(ed_inputevent_t));
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1033 inputev->type = sinputev->type;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1034 inputev->code = sinputev->code;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1035 inputev->value = sinputev->value;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1036
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1037 popul_container->bindings[popul_container->id].inputev = inputev;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1038 popul_container->bindings[popul_container->id].action_code = action_code;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1039
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1040 popul_container->id++;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1041 return;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1042 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1043
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1044 static int
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1045 cfg_bindbox_populate_qsortfunc( const void * p_binding_a , const void * p_binding_b )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1046 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1047 return ((popul_binding_t*)p_binding_a)->action_code - ((popul_binding_t*)p_binding_b)->action_code;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1048 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1049
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1050 static void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1051 cfg_bindbox_populate( GtkWidget * bind_table , GtkWidget * bindings_win , gpointer bindings )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1052 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1053 if ( bindings != NULL )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1054 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1055 guint bindings_num = ed_bindings_store_size( bindings );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1056 popul_binding_t *popul_binding = (popul_binding_t*)calloc( bindings_num , sizeof(popul_binding_t) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1057 popul_container_binding_t *popul_container = g_malloc(sizeof(popul_container_binding_t));
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1058 gint i = 0;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1059
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1060 popul_container->bindings = popul_binding;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1061 popul_container->id = 0;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1062
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1063 ed_bindings_store_foreach( bindings ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1064 (ed_bindings_store_foreach_func)cfg_bindbox_populate_foreach , popul_container , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1065
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1066 /* ok, now we have a popul_binding array, reorder it using action_codes */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1067 qsort( popul_binding , bindings_num , sizeof(popul_binding_t) , cfg_bindbox_populate_qsortfunc );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1068
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1069 /* attach to table each popul_binding */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1070 for ( i = 0 ; i < bindings_num ; i++ )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1071 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1072 GList *children = GTK_TABLE(bind_table)->children;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1073 for ( children ; children != NULL ; children = g_list_next(children) )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1074 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1075 GtkTableChild *child = children->data;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1076 if ( ( (child->top_attach + 1) == GTK_TABLE(bind_table)->nrows ) &&
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1077 ( child->left_attach == BINDLIST_COL_BT_ASSIGN ) &&
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1078 ( GPOINTER_TO_INT(g_object_get_data(G_OBJECT(child->widget),"last")) == 1 ) )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1079 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1080 /* ok, this child->widget is the last assign button */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1081 GtkWidget *combobox = g_object_get_data(G_OBJECT(child->widget),"combobox");
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1082 GtkWidget *label = g_object_get_data(G_OBJECT(child->widget),"label");
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1083 GtkWidget *delbt = g_object_get_data(G_OBJECT(child->widget),"delbt");
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1084 GtkTreeModel *combomodel;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1085 GtkTreeIter comboiter;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1086 combosas_helper_t *combosas_helper;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1087 gchar *input_str;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1088
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1089 combomodel = gtk_combo_box_get_model( GTK_COMBO_BOX(combobox) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1090 combosas_helper = g_malloc(sizeof(combosas_helper_t));
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1091 combosas_helper->combobox = combobox;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1092 combosas_helper->action_code = popul_binding[i].action_code;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1093 gtk_tree_model_foreach( combomodel , cfg_bindbox_populate_foreach_combosas , combosas_helper );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1094 g_free( combosas_helper );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1095
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1096 g_object_set_data_full( G_OBJECT(label) , "inputevent" , popul_binding[i].inputev , g_free );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1097 input_str = g_strdup_printf( "%i:%i:%i" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1098 popul_binding[i].inputev->type ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1099 popul_binding[i].inputev->code ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1100 popul_binding[i].inputev->value );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1101 gtk_label_set_text( GTK_LABEL(label) , input_str );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1102 g_free( input_str );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1103
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1104 /* so, the current row wont' be the last one anymore;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1105 remove its "last" mark and enable its delete button */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1106 g_object_set_data( G_OBJECT(child->widget) , "last" , GINT_TO_POINTER(0) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1107 gtk_widget_set_sensitive( delbt , TRUE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1108 cfg_bindbox_new_empty_row( GTK_TABLE(bind_table) , bindings_win , TRUE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1109
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1110 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1111 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1112 DEBUGMSG( "populating bindings window: code %i -> event %d:%d:%d\n" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1113 popul_binding[i].action_code , popul_binding[i].inputev->type,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1114 popul_binding[i].inputev->code, popul_binding[i].inputev->value );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1115 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1116 g_free( popul_binding );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1117 g_free( popul_container );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1118 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1119 return;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1120 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1121
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1122
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1123 static void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1124 cfg_bindbox_new_empty_row( GtkTable * bind_table , GtkWidget * bindings_win , gboolean resize_table )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1125 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1126 GtkWidget *action_combobox;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1127 GtkCellRenderer *action_combobox_rndr;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1128 GtkWidget *assign_button;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1129 GtkWidget *assign_label;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1130 GtkWidget *delete_button;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1131
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1132 /* add one row to the table */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1133 if ( resize_table == TRUE )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1134 gtk_table_resize( bind_table , bind_table->nrows + 1 , bind_table->ncols );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1135
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1136 /* action combobox */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1137 action_combobox = gtk_combo_box_new_with_model(
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1138 GTK_TREE_MODEL(g_object_get_data(G_OBJECT(bindings_win),"action_store")) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1139 action_combobox_rndr = gtk_cell_renderer_text_new();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1140 gtk_cell_layout_pack_start( GTK_CELL_LAYOUT(action_combobox) , action_combobox_rndr , TRUE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1141 gtk_cell_layout_set_attributes( GTK_CELL_LAYOUT(action_combobox) ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1142 action_combobox_rndr , "text" , 0 , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1143 gtk_combo_box_set_active( GTK_COMBO_BOX(action_combobox) , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1144
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1145 gtk_table_attach( bind_table , action_combobox ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1146 BINDLIST_COL_COMBO_ACTION , BINDLIST_COL_COMBO_ACTION + 1 ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1147 bind_table->nrows - 1 , bind_table->nrows ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1148 GTK_FILL , GTK_FILL , 0 , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1149
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1150 /* assign button */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1151 assign_button = gtk_button_new();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1152 gtk_button_set_image( GTK_BUTTON(assign_button) ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1153 gtk_image_new_from_stock( GTK_STOCK_EXECUTE , GTK_ICON_SIZE_BUTTON ) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1154 g_object_set_data( G_OBJECT(assign_button) , "last" , GINT_TO_POINTER(1) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1155 g_signal_connect( G_OBJECT(assign_button) , "clicked" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1156 G_CALLBACK(cfg_bindbox_assign_binding) , bindings_win );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1157
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1158 gtk_table_attach( bind_table , assign_button ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1159 BINDLIST_COL_BT_ASSIGN , BINDLIST_COL_BT_ASSIGN + 1 ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1160 bind_table->nrows - 1 , bind_table->nrows ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1161 GTK_FILL , GTK_FILL , 0 , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1162
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1163 /* assigned-code label */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1164 assign_label = gtk_label_new( "" );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1165 gtk_misc_set_alignment( GTK_MISC(assign_label) , 0 , 0.5 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1166 gtk_misc_set_padding( GTK_MISC(assign_label) , 10 , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1167 g_object_set_data_full( G_OBJECT(assign_label) , "inputevent" , NULL , g_free );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1168
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1169 gtk_table_attach( bind_table , assign_label ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1170 BINDLIST_COL_LABEL_EVCODE , BINDLIST_COL_LABEL_EVCODE +1 ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1171 bind_table->nrows - 1 , bind_table->nrows ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1172 GTK_EXPAND | GTK_FILL , GTK_FILL , 0 , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1173
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1174 /* delete button */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1175 delete_button = gtk_button_new();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1176 gtk_button_set_image( GTK_BUTTON(delete_button) ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1177 gtk_image_new_from_stock( GTK_STOCK_DELETE , GTK_ICON_SIZE_BUTTON ) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1178 g_signal_connect( G_OBJECT(delete_button) , "clicked" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1179 G_CALLBACK(cfg_bindbox_delete_row) , bindings_win );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1180 gtk_widget_set_sensitive( delete_button , FALSE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1181
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1182 gtk_table_attach( bind_table , delete_button ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1183 BINDLIST_COL_BT_DELETE , BINDLIST_COL_BT_DELETE + 1 ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1184 bind_table->nrows - 1 , bind_table->nrows ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1185 GTK_FILL , GTK_FILL , 0 , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1186
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1187 /* data for assign button */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1188 g_object_set_data( G_OBJECT(assign_button) , "combobox" , action_combobox );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1189 g_object_set_data( G_OBJECT(assign_button) , "label" , assign_label );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1190 g_object_set_data( G_OBJECT(assign_button) , "delbt" , delete_button );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1191
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1192 gtk_widget_show_all( GTK_WIDGET(bind_table) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1193 return;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1194 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1195
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1196
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1197 static void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1198 cfg_bindings_cb_destroy ( GtkObject * bindings_win , gpointer dev_gp )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1199 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1200 ed_device_t *dev = dev_gp;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1201 /* bindings window is going to be destroyed;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1202 deactivate device listening and free the ed_device_t object */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1203 g_source_remove( dev->iochan_sid );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1204 ed_device_delete( dev );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1205
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1206 /* the rowreference is no longer needed as well */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1207 gtk_tree_row_reference_free(
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1208 (GtkTreeRowReference*)g_object_get_data(G_OBJECT(bindings_win),"rowref") );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1209 return;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1210 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1211
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1212
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1213 static void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1214 cfg_bindings_cb_commit ( gpointer bindings_win )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1215 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1216 GtkTreeRowReference *rowref = g_object_get_data(G_OBJECT(bindings_win),"rowref");
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1217 if ( gtk_tree_row_reference_valid( rowref ) == TRUE )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1218 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1219 GtkTreeModel *model = gtk_tree_row_reference_get_model( rowref );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1220 GtkTreePath *path = gtk_tree_row_reference_get_path( rowref );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1221 GtkTreeIter iter;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1222 GtkTable *table;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1223 gpointer new_bindings = NULL, old_bindings = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1224
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1225 /****************************************************************************/
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1226 table = g_object_get_data( G_OBJECT(bindings_win) , "table" );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1227 if ( table->nrows > 1 )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1228 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1229 /* bindings defined */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1230 GList *children = table->children;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1231 gint *array_actioncode;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1232 ed_inputevent_t **array_inputevent;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1233 gint i = 0;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1234
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1235 array_actioncode = calloc( table->nrows - 1 , sizeof(gint) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1236 array_inputevent = calloc( table->nrows - 1 , sizeof(ed_inputevent_t*) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1237
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1238 for ( children ; children != NULL ; children = g_list_next( children ) )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1239 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1240 /* pick information from relevant table cells and put them in arrays */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1241 GtkTableChild *child = children->data;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1242
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1243 if ( ( child->top_attach + 1 ) == table->nrows )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1244 continue; /* skip last empty row */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1245
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1246 if ( child->left_attach == BINDLIST_COL_COMBO_ACTION )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1247 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1248 GtkTreeModel *combomodel = gtk_combo_box_get_model( GTK_COMBO_BOX(child->widget) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1249 GtkTreeIter comboiter;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1250 gint actioncode = 0;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1251
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1252 gtk_combo_box_get_active_iter( GTK_COMBO_BOX(child->widget) , &comboiter );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1253 gtk_tree_model_get( combomodel , &comboiter , 1 , &actioncode , -1 ); /* pick the action code */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1254 array_actioncode[child->top_attach] = actioncode;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1255 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1256 else if ( child->left_attach == BINDLIST_COL_LABEL_EVCODE )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1257 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1258 ed_inputevent_t *inputevent = g_object_get_data( G_OBJECT(child->widget) , "inputevent" );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1259 array_inputevent[child->top_attach] = inputevent;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1260 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1261 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1262
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1263 /* ok, now copy data from arrays to the bindings store */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1264 new_bindings = ed_bindings_store_new(); /* new bindings store object */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1265
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1266 for ( i = 0 ; i < ( table->nrows - 1 ) ; i++ )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1267 ed_bindings_store_insert( new_bindings , array_inputevent[i] , array_actioncode[i] );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1268
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1269 g_free( array_actioncode ); g_free( array_inputevent ); /* not needed anymore */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1270 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1271 else
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1272 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1273 /* no bindings defined */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1274 new_bindings = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1275 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1276 /****************************************************************************/
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1277
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1278 /* pick old bindings store and delete it */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1279 gtk_tree_model_get_iter( model , &iter , path );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1280 gtk_tree_model_get( model , &iter, DEVLIST_COL_BINDINGS , &old_bindings , -1 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1281 if ( old_bindings != NULL )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1282 ed_bindings_store_delete( old_bindings );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1283 /* replace it with new one */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1284 gtk_list_store_set( GTK_LIST_STORE(model) , &iter , DEVLIST_COL_BINDINGS , new_bindings , -1 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1285 /* everything done! */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1286 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1287 gtk_widget_destroy( GTK_WIDGET(bindings_win) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1288 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1289
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1290
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1291 #define action_store_add(x) { gtk_list_store_append(action_store,&iter); gtk_list_store_set(action_store,&iter,0,player_actions[x].desc,1,x,-1); }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1292
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1293 static void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1294 cfg_ui_bindings_show ( ed_device_t * dev , GtkTreeRowReference * rowref )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1295 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1296 GtkWidget *bindings_win;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1297 GdkGeometry bindings_win_hints;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1298 GtkWidget *bindings_vbox;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1299 GtkWidget *bindings_info_table, *bindings_info_frame;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1300 GtkWidget *bindings_info_label_name_p, *bindings_info_label_name_c;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1301 GtkWidget *bindings_info_label_file_p, *bindings_info_label_file_c;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1302 GtkWidget *bindings_info_label_phys_p, *bindings_info_label_phys_c;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1303 GtkWidget *bindings_bind_frame, *bindings_bind_table, *bindings_bind_table_sw;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1304 GtkWidget *bindings_bbar_hbbox, *bindings_bbar_bt_cancel, *bindings_bbar_bt_ok;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1305 GtkListStore *action_store;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1306 GtkTreeIter iter;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1307 static gboolean style_added = FALSE;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1308
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1309 if ( !style_added )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1310 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1311 /* this is used by trigger dialogs, calling it once is enough */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1312 gtk_rc_parse_string( "style \"noaaborder\" { GtkDialog::action-area-border = 0 }\n"
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1313 "widget \"trigger_dlg\" style \"noaaborder\"\n" );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1314 style_added = TRUE;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1315 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1316
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1317 bindings_win = gtk_window_new( GTK_WINDOW_TOPLEVEL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1318 gtk_window_set_type_hint( GTK_WINDOW(bindings_win), GDK_WINDOW_TYPE_HINT_DIALOG );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1319 gtk_window_set_position( GTK_WINDOW(bindings_win), GTK_WIN_POS_CENTER );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1320 gtk_window_set_transient_for( GTK_WINDOW(bindings_win), GTK_WINDOW(cfg_win) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1321 gtk_window_set_modal( GTK_WINDOW(bindings_win) , TRUE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1322 gtk_window_set_title( GTK_WINDOW(bindings_win), _("EvDev-Plug - Bindings Configuration") );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1323 gtk_container_set_border_width( GTK_CONTAINER(bindings_win), 10 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1324 bindings_win_hints.min_width = 400;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1325 bindings_win_hints.min_height = 400;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1326 gtk_window_set_geometry_hints( GTK_WINDOW(bindings_win) , GTK_WIDGET(bindings_win) ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1327 &bindings_win_hints , GDK_HINT_MIN_SIZE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1328
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1329 g_object_set_data( G_OBJECT(bindings_win) , "rowref" , rowref );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1330 g_object_set_data( G_OBJECT(bindings_win) , "trigger-win" , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1331
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1332 bindings_vbox = gtk_vbox_new( FALSE , 4 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1333 gtk_container_add( GTK_CONTAINER(bindings_win) , bindings_vbox );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1334
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1335 /* action combobox model
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1336 column 0 -> action desc
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1337 column 1 -> action code */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1338 action_store = gtk_list_store_new( 2 , G_TYPE_STRING , G_TYPE_INT );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1339 action_store_add( ED_ACTION_PB_PLAY );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1340 action_store_add( ED_ACTION_PB_STOP );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1341 action_store_add( ED_ACTION_PB_PAUSE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1342 action_store_add( ED_ACTION_PB_PREV );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1343 action_store_add( ED_ACTION_PB_NEXT );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1344 action_store_add( ED_ACTION_PB_EJECT );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1345 action_store_add( ED_ACTION_PL_REPEAT );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1346 action_store_add( ED_ACTION_PL_SHUFFLE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1347 action_store_add( ED_ACTION_VOL_UP5 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1348 action_store_add( ED_ACTION_VOL_DOWN5 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1349 action_store_add( ED_ACTION_VOL_UP10 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1350 action_store_add( ED_ACTION_VOL_DOWN10 );
457
f5ed9a6ad3f1 [svn] - evdev-plug: added volume->mute and win->jumptofile actions
giacomo
parents: 422
diff changeset
1351 action_store_add( ED_ACTION_VOL_MUTE );
422
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1352 action_store_add( ED_ACTION_WIN_MAIN );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1353 action_store_add( ED_ACTION_WIN_PLAYLIST );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1354 action_store_add( ED_ACTION_WIN_EQUALIZER );
457
f5ed9a6ad3f1 [svn] - evdev-plug: added volume->mute and win->jumptofile actions
giacomo
parents: 422
diff changeset
1355 action_store_add( ED_ACTION_WIN_JTF );
422
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1356 g_object_set_data_full( G_OBJECT(bindings_win) , "action_store" , action_store , g_object_unref );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1357
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1358 /* info table */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1359 bindings_info_table = gtk_table_new( 3 , 2 , FALSE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1360 gtk_container_set_border_width( GTK_CONTAINER(bindings_info_table), 4 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1361 bindings_info_label_name_p = gtk_label_new( "" );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1362 gtk_label_set_markup( GTK_LABEL(bindings_info_label_name_p) , _("<b>Name: </b>") );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1363 gtk_misc_set_alignment( GTK_MISC(bindings_info_label_name_p) , 0 , 0.5 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1364 bindings_info_label_name_c = gtk_label_new( dev->info->name );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1365 gtk_misc_set_alignment( GTK_MISC(bindings_info_label_name_c) , 0 , 0.5 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1366 gtk_table_attach( GTK_TABLE(bindings_info_table) , bindings_info_label_name_p , 0 , 1 , 0 , 1 ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1367 GTK_FILL , GTK_FILL | GTK_EXPAND , 0 , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1368 gtk_table_attach( GTK_TABLE(bindings_info_table) , bindings_info_label_name_c , 1 , 2 , 0 , 1 ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1369 GTK_FILL , GTK_FILL | GTK_EXPAND , 0 , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1370 bindings_info_label_file_p = gtk_label_new( "" );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1371 gtk_label_set_markup( GTK_LABEL(bindings_info_label_file_p) , _("<b>Filename: </b>") );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1372 gtk_misc_set_alignment( GTK_MISC(bindings_info_label_file_p) , 0 , 0.5 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1373 bindings_info_label_file_c = gtk_label_new( dev->info->filename );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1374 gtk_misc_set_alignment( GTK_MISC(bindings_info_label_file_c) , 0 , 0.5 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1375 gtk_table_attach( GTK_TABLE(bindings_info_table) , bindings_info_label_file_p , 0 , 1 , 1 , 2 ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1376 GTK_FILL , GTK_FILL | GTK_EXPAND , 0 , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1377 gtk_table_attach( GTK_TABLE(bindings_info_table) , bindings_info_label_file_c , 1 , 2 , 1 , 2 ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1378 GTK_FILL , GTK_FILL | GTK_EXPAND , 0 , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1379 bindings_info_label_phys_p = gtk_label_new( "" );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1380 gtk_label_set_markup( GTK_LABEL(bindings_info_label_phys_p) , _("<b>Phys.Address: </b>") );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1381 gtk_misc_set_alignment( GTK_MISC(bindings_info_label_phys_p) , 0 , 0.5 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1382 bindings_info_label_phys_c = gtk_label_new( dev->info->phys );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1383 gtk_misc_set_alignment( GTK_MISC(bindings_info_label_phys_c) , 0 , 0.5 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1384 gtk_table_attach( GTK_TABLE(bindings_info_table) , bindings_info_label_phys_p , 0 , 1 , 2 , 3 ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1385 GTK_FILL , GTK_FILL | GTK_EXPAND , 0 , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1386 gtk_table_attach( GTK_TABLE(bindings_info_table) , bindings_info_label_phys_c , 1 , 2 , 2 , 3 ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1387 GTK_FILL , GTK_FILL | GTK_EXPAND , 0 , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1388 bindings_info_frame = gtk_frame_new( NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1389 gtk_container_add( GTK_CONTAINER(bindings_info_frame) , bindings_info_table );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1390 gtk_box_pack_start( GTK_BOX(bindings_vbox) , bindings_info_frame , FALSE , FALSE , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1391
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1392 /* bindings boxlist */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1393 bindings_bind_table = gtk_table_new( 1 , BINDLIST_NUMCOLS , FALSE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1394 cfg_bindbox_new_empty_row( GTK_TABLE(bindings_bind_table) , bindings_win , FALSE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1395 cfg_bindbox_populate( bindings_bind_table , bindings_win , dev->info->bindings );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1396 bindings_bind_table_sw = gtk_scrolled_window_new( NULL , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1397 gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(bindings_bind_table_sw) ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1398 GTK_POLICY_NEVER , GTK_POLICY_ALWAYS );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1399 bindings_bind_frame = gtk_frame_new( NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1400 gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW(bindings_bind_table_sw) ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1401 bindings_bind_table );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1402 gtk_container_add( GTK_CONTAINER(bindings_bind_frame) , bindings_bind_table_sw );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1403 gtk_box_pack_start( GTK_BOX(bindings_vbox) , bindings_bind_frame , TRUE , TRUE , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1404 g_object_set_data( G_OBJECT(bindings_win) , "table" , bindings_bind_table );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1405 g_object_set_data( G_OBJECT(bindings_win) , "tablesw" , bindings_bind_table_sw );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1406
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1407 gtk_box_pack_start( GTK_BOX(bindings_vbox) , gtk_hseparator_new() , FALSE , FALSE , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1408
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1409 /* button bar */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1410 bindings_bbar_hbbox = gtk_hbutton_box_new();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1411 gtk_button_box_set_layout( GTK_BUTTON_BOX(bindings_bbar_hbbox) , GTK_BUTTONBOX_START );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1412 bindings_bbar_bt_cancel = gtk_button_new_from_stock( GTK_STOCK_CANCEL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1413 bindings_bbar_bt_ok = gtk_button_new_from_stock( GTK_STOCK_OK );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1414 gtk_container_add( GTK_CONTAINER(bindings_bbar_hbbox) , bindings_bbar_bt_cancel );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1415 gtk_container_add( GTK_CONTAINER(bindings_bbar_hbbox) , bindings_bbar_bt_ok );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1416 gtk_button_box_set_child_secondary( GTK_BUTTON_BOX(bindings_bbar_hbbox) , bindings_bbar_bt_cancel , TRUE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1417 gtk_button_box_set_child_secondary( GTK_BUTTON_BOX(bindings_bbar_hbbox) , bindings_bbar_bt_ok , TRUE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1418 gtk_box_pack_start( GTK_BOX(bindings_vbox) , bindings_bbar_hbbox , FALSE , FALSE , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1419
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1420 /* activate device listening */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1421 dev->iochan_sid = g_io_add_watch( dev->iochan , G_IO_IN ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1422 (GIOFunc)cfg_bindbox_assign_binding_input_func , bindings_win );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1423
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1424 /* signals */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1425 g_signal_connect( G_OBJECT(bindings_win) , "destroy" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1426 G_CALLBACK(cfg_bindings_cb_destroy) , dev );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1427 g_signal_connect_swapped( G_OBJECT(bindings_bbar_bt_cancel) , "clicked" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1428 G_CALLBACK(gtk_widget_destroy) , bindings_win );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1429 g_signal_connect_swapped( G_OBJECT(bindings_bbar_bt_ok) , "clicked" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1430 G_CALLBACK(cfg_bindings_cb_commit) , bindings_win );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1431
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1432 gtk_widget_show_all( bindings_win );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1433 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1434
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1435
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1436
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1437 /* about box */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1438 void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1439 ed_ui_about_show( void )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1440 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1441 static GtkWidget *about_win = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1442 GtkWidget *about_vbox;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1443 GtkWidget *logoandinfo_vbox;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1444 GtkWidget *info_tv, *info_tv_sw, *info_tv_frame;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1445 GtkWidget *bbar_bbox, *bbar_bt_ok;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1446 GtkTextBuffer *info_tb;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1447 GdkGeometry abount_win_hints;
1317
78861d8b86f2 updated info boxes to make them translatable
Giacomo Lozito <james@develia.org>
parents: 1170
diff changeset
1448 gchar *info_tb_content = NULL;
422
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1449
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1450 if ( about_win != NULL )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1451 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1452 gtk_window_present( GTK_WINDOW(about_win) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1453 return;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1454 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1455
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1456 about_win = gtk_window_new( GTK_WINDOW_TOPLEVEL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1457 gtk_window_set_type_hint( GTK_WINDOW(about_win), GDK_WINDOW_TYPE_HINT_DIALOG );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1458 gtk_window_set_position( GTK_WINDOW(about_win), GTK_WIN_POS_CENTER );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1459 gtk_window_set_title( GTK_WINDOW(about_win), _("EvDev-Plug - about") );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1460 abount_win_hints.min_width = 420;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1461 abount_win_hints.min_height = 200;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1462 gtk_window_set_geometry_hints( GTK_WINDOW(about_win) , GTK_WIDGET(about_win) ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1463 &abount_win_hints , GDK_HINT_MIN_SIZE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1464 /* gtk_window_set_resizable( GTK_WINDOW(about_win) , FALSE ); */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1465 gtk_container_set_border_width( GTK_CONTAINER(about_win) , 10 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1466 g_signal_connect( G_OBJECT(about_win) , "destroy" , G_CALLBACK(gtk_widget_destroyed) , &about_win );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1467
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1468 about_vbox = gtk_vbox_new( FALSE , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1469 gtk_container_add( GTK_CONTAINER(about_win) , about_vbox );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1470
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1471 logoandinfo_vbox = gtk_vbox_new( TRUE , 2 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1472
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1473 /* TODO make a logo or make someone do it! :)
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1474 logo_pixbuf = gdk_pixbuf_new_from_xpm_data( (const gchar **)evdev_plug_logo_xpm );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1475 logo_image = gtk_image_new_from_pixbuf( logo_pixbuf );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1476 g_object_unref( logo_pixbuf );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1477
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1478 logo_frame = gtk_frame_new( NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1479 gtk_container_add( GTK_CONTAINER(logo_frame) , logo_image );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1480 gtk_box_pack_start( GTK_BOX(logoandinfo_vbox) , logo_frame , TRUE , TRUE , 0 ); */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1481
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1482 info_tv = gtk_text_view_new();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1483 info_tb = gtk_text_view_get_buffer( GTK_TEXT_VIEW(info_tv) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1484 gtk_text_view_set_editable( GTK_TEXT_VIEW(info_tv) , FALSE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1485 gtk_text_view_set_cursor_visible( GTK_TEXT_VIEW(info_tv) , FALSE );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1486 gtk_text_view_set_justification( GTK_TEXT_VIEW(info_tv) , GTK_JUSTIFY_LEFT );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1487 gtk_text_view_set_left_margin( GTK_TEXT_VIEW(info_tv) , 10 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1488
1317
78861d8b86f2 updated info boxes to make them translatable
Giacomo Lozito <james@develia.org>
parents: 1170
diff changeset
1489 info_tb_content = g_strjoin( NULL , "\nEvDev-Plug " , ED_VERSION_PLUGIN ,
78861d8b86f2 updated info boxes to make them translatable
Giacomo Lozito <james@develia.org>
parents: 1170
diff changeset
1490 _("\nplayer remote control via event devices\n"
78861d8b86f2 updated info boxes to make them translatable
Giacomo Lozito <james@develia.org>
parents: 1170
diff changeset
1491 "http://www.develia.org/projects.php?p=audacious#evdevplug\n\n"
78861d8b86f2 updated info boxes to make them translatable
Giacomo Lozito <james@develia.org>
parents: 1170
diff changeset
1492 "written by Giacomo Lozito\n") ,
78861d8b86f2 updated info boxes to make them translatable
Giacomo Lozito <james@develia.org>
parents: 1170
diff changeset
1493 "< james@develia.org >\n\n" , NULL );
78861d8b86f2 updated info boxes to make them translatable
Giacomo Lozito <james@develia.org>
parents: 1170
diff changeset
1494 gtk_text_buffer_set_text( info_tb , info_tb_content , -1 );
78861d8b86f2 updated info boxes to make them translatable
Giacomo Lozito <james@develia.org>
parents: 1170
diff changeset
1495 g_free( info_tb_content );
422
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1496
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1497 info_tv_sw = gtk_scrolled_window_new( NULL , NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1498 gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(info_tv_sw) ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1499 GTK_POLICY_NEVER , GTK_POLICY_ALWAYS );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1500 gtk_container_add( GTK_CONTAINER(info_tv_sw) , info_tv );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1501 info_tv_frame = gtk_frame_new( NULL );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1502 gtk_container_add( GTK_CONTAINER(info_tv_frame) , info_tv_sw );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1503 gtk_box_pack_start( GTK_BOX(logoandinfo_vbox) , info_tv_frame , TRUE , TRUE , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1504
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1505 gtk_box_pack_start( GTK_BOX(about_vbox) , logoandinfo_vbox , TRUE , TRUE , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1506
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1507 /* horizontal separator and buttons */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1508 gtk_box_pack_start( GTK_BOX(about_vbox) , gtk_hseparator_new() , FALSE , FALSE , 4 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1509 bbar_bbox = gtk_hbutton_box_new();
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1510 gtk_button_box_set_layout( GTK_BUTTON_BOX(bbar_bbox) , GTK_BUTTONBOX_END );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1511 bbar_bt_ok = gtk_button_new_from_stock( GTK_STOCK_OK );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1512 g_signal_connect_swapped( G_OBJECT(bbar_bt_ok) , "clicked" ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1513 G_CALLBACK(gtk_widget_destroy) , about_win );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1514 gtk_container_add( GTK_CONTAINER(bbar_bbox) , bbar_bt_ok );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1515 gtk_box_pack_start( GTK_BOX(about_vbox) , bbar_bbox , FALSE , FALSE , 0 );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1516
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1517 gtk_widget_show_all( about_win );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1518 }
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1519
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1520
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1521
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1522 /* message box */
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1523 void
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1524 ed_ui_message_show ( gchar * title , gchar * message , gpointer parent_win_gp )
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1525 {
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1526 GtkWidget *message_win;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1527 GtkWindow *parent_win = NULL;
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1528
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1529 if (( parent_win_gp != NULL ) && ( GTK_WIDGET_TOPLEVEL(GTK_WIDGET(parent_win_gp)) ))
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1530 parent_win = GTK_WINDOW(parent_win_gp);
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1531
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1532 message_win = gtk_message_dialog_new(
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1533 parent_win ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1534 ( parent_win != NULL ? GTK_DIALOG_DESTROY_WITH_PARENT : 0 ) ,
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1535 GTK_MESSAGE_INFO , GTK_BUTTONS_CLOSE , message );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1536 gtk_window_set_title( GTK_WINDOW(message_win) , title );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1537
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1538 gtk_dialog_run( GTK_DIALOG(message_win) );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1539 gtk_widget_destroy( message_win );
5e46b57d1eda [svn] - added evdev-plug, written-from-scratch plugin that allows to control the player via event devices on linux systems
giacomo
parents:
diff changeset
1540 }