41
/* Class implementation */
43
G_DEFINE_TYPE (GamesControlsList, games_controls_list, GTK_TYPE_SCROLLED_WINDOW)
45
struct GamesControlsListPrivate {
51
gulong notify_handler_id;
42
55
accel_edited_cb (GtkCellRendererAccel *cell,
57
if (!gtk_tree_model_get_iter (list->model, &iter, path)) {
70
if (!gtk_tree_model_get_iter (list->priv->model, &iter, path)) {
58
71
gtk_tree_path_free (path);
61
74
gtk_tree_path_free (path);
63
gtk_tree_model_get (list->model, &iter,
76
gtk_tree_model_get (list->priv->model, &iter,
64
77
CONFKEY_COLUMN, &conf_key,
69
82
/* Note: the model is updated in the conf notification callback */
70
83
/* FIXME: what to do with the modifiers? */
71
games_conf_set_keyval (list->conf_group, conf_key, keyval);
84
games_conf_set_keyval (list->priv->conf_group, conf_key, keyval);
89
if (!gtk_tree_model_get_iter (list->model, &iter, path)) {
102
if (!gtk_tree_model_get_iter (list->priv->model, &iter, path)) {
90
103
gtk_tree_path_free (path);
93
106
gtk_tree_path_free (path);
95
gtk_tree_model_get (list->model, &iter,
108
gtk_tree_model_get (list->priv->model, &iter,
96
109
CONFKEY_COLUMN, &conf_key,
97
110
DEFAULT_KEYCODE_COLUMN, &default_keyval,
102
115
/* Note: the model is updated in the conf notification callback */
103
116
/* FIXME: what to do with the modifiers? */
104
games_conf_set_keyval (list->conf_group, conf_key, default_keyval);
117
games_conf_set_keyval (list->priv->conf_group, conf_key, default_keyval);
105
118
g_free (conf_key);
114
127
GtkTreeIter iter;
117
if ((group == NULL && list->conf_group != NULL) ||
118
(group != NULL && (list->conf_group == NULL ||
119
strcmp (group, list->conf_group) != 0)))
130
if ((group == NULL && list->priv->conf_group != NULL) ||
131
(group != NULL && (list->priv->conf_group == NULL ||
132
strcmp (group, list->priv->conf_group) != 0)))
122
135
/* find our gconf key in the list store and update it */
123
valid = gtk_tree_model_get_iter_first (list->model, &iter);
136
valid = gtk_tree_model_get_iter_first (list->priv->model, &iter);
127
gtk_tree_model_get (list->model, &iter,
140
gtk_tree_model_get (list->priv->model, &iter,
128
141
CONFKEY_COLUMN, &conf_key,
131
144
if (strcmp (key, conf_key) == 0) {
132
145
guint keyval, default_keyval;
134
gtk_tree_model_get (list->model, &iter,
147
gtk_tree_model_get (list->priv->model, &iter,
135
148
DEFAULT_KEYCODE_COLUMN, &default_keyval,
138
keyval = games_conf_get_keyval_with_default (list->conf_group, key, default_keyval);
151
keyval = games_conf_get_keyval_with_default (list->priv->conf_group, key, default_keyval);
140
gtk_list_store_set (list->store, &iter,
153
gtk_list_store_set (list->priv->store, &iter,
141
154
KEYCODE_COLUMN, keyval,
142
155
KEYMODS_COLUMN, 0 /* FIXME? */,
149
162
g_free (conf_key);
150
valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (list->store), &iter);
163
valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (list->priv->store), &iter);
154
/* Class implementation */
156
G_DEFINE_TYPE (GamesControlsList, games_controls_list, GTK_TYPE_SCROLLED_WINDOW)
159
168
games_controls_list_init (GamesControlsList *list)
170
list->priv = G_TYPE_INSTANCE_GET_PRIVATE (list, GAMES_TYPE_CONTROLS_LIST, GamesControlsListPrivate);
189
list->model = GTK_TREE_MODEL (store);
198
list->priv->store = store;
199
list->priv->model = GTK_TREE_MODEL (store);
191
list->view = gtk_tree_view_new_with_model (list->model);
201
list->priv->view = gtk_tree_view_new_with_model (list->priv->model);
192
202
g_object_unref (store);
194
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (list->view), FALSE);
195
gtk_tree_view_set_enable_search (GTK_TREE_VIEW (list->view), FALSE);
204
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (list->priv->view), FALSE);
205
gtk_tree_view_set_enable_search (GTK_TREE_VIEW (list->priv->view), FALSE);
197
207
/* label column */
198
208
label_renderer = gtk_cell_renderer_text_new ();
218
228
"accel-key", KEYCODE_COLUMN,
219
229
"accel-mods", KEYMODS_COLUMN,
221
gtk_tree_view_append_column (GTK_TREE_VIEW (list->view), column);
223
gtk_container_add (GTK_CONTAINER (scrolled_window), list->view);
225
list->notify_handler_id = g_signal_connect (games_conf_get_default (),
231
gtk_tree_view_append_column (GTK_TREE_VIEW (list->priv->view), column);
233
gtk_container_add (GTK_CONTAINER (scrolled_window), list->priv->view);
235
list->priv->notify_handler_id = g_signal_connect (games_conf_get_default (),
227
237
G_CALLBACK (conf_value_changed_cb),
234
244
games_controls_list_finalize (GObject *object)
237
246
GamesControlsList *list = GAMES_CONTROLS_LIST (object);
239
g_signal_handler_disconnect (games_conf_get_default (), list->notify_handler_id);
248
g_signal_handler_disconnect (games_conf_get_default (), list->priv->notify_handler_id);
241
g_free (list->conf_group);
250
g_free (list->priv->conf_group);
243
252
G_OBJECT_CLASS (games_controls_list_parent_class)->finalize (object);
265
276
"shadow-type", GTK_SHADOW_IN,
268
list->conf_group = g_strdup (conf_group);
279
list->priv->conf_group = g_strdup (conf_group);
270
281
return GTK_WIDGET (list);
286
297
label = _("Unknown Command");
288
keyval = games_conf_get_keyval_with_default (list->conf_group, conf_key, default_keyval);
299
keyval = games_conf_get_keyval_with_default (list->priv->conf_group, conf_key, default_keyval);
290
gtk_list_store_insert_with_values (list->store, &iter, -1,
301
gtk_list_store_insert_with_values (list->priv->store, &iter, -1,
291
302
CONFKEY_COLUMN, conf_key,
292
303
LABEL_COLUMN, label,
293
304
KEYCODE_COLUMN, keyval,