*
*/
+#include <string.h>
#include <gtk/gtk.h>
#include <hildon/hildon-helper.h>
-#include "../platform/hgw.h"
+#if MAEMO_VERSION >= 5
+#include <hildon/hildon-gtk.h>
+#include <hildon/hildon-pannable-area.h>
+#include <hildon/hildon-button.h>
+#include <hildon/hildon-check-button.h>
+#include <hildon/hildon-picker-button.h>
+#include <hildon/hildon-touch-selector.h>
+#include <pango/pango-attributes.h>
+#else
+#include <hildon/hildon-caption.h>
+#endif
+
#include "plugin.h"
-#include "cellrendererkey.h"
+#include "gconf.h"
+#include "i18n.h"
static GtkDialog* dialog;
-static GtkComboBox* combo;
-static GtkLabel* none_label;
-static GtkScrolledWindow* keys_scroll;
-static GtkListStore* keys_store;
-static GtkTreeView* keys_list;
-static GtkLabel* ts_label;
-
-enum
-{
- BUTTON_COLUMN,
- BUTTONENTRY_COLUMN,
- N_COLUMNS
-};
-
-typedef struct ButtonEntry {
- const char * name;
- const char * gconf_key;
- unsigned char scancode;
- unsigned char default_scancode;
-} ButtonEntry;
-#define BUTTON_INITIALIZER(desc, name, default) \
- { desc, kGConfKeysPath "/" name, 0, default }
-#define BUTTON_LAST \
- { 0 }
-static ButtonEntry buttons[] = {
- BUTTON_INITIALIZER("A", "a", 48),
- BUTTON_INITIALIZER("B", "b", 20),
- BUTTON_INITIALIZER("X", "x", 32),
- BUTTON_INITIALIZER("Y", "y", 45),
- BUTTON_INITIALIZER("L", "l", 24),
- BUTTON_INITIALIZER("R", "r", 22),
- BUTTON_INITIALIZER("Start", "start", 65),
- BUTTON_INITIALIZER("Select", "select", 135),
- BUTTON_INITIALIZER("Up", "up", 111),
- BUTTON_INITIALIZER("Down", "down", 116),
- BUTTON_INITIALIZER("Left", "left", 113),
- BUTTON_INITIALIZER("Right", "right", 114),
- BUTTON_INITIALIZER("Return to launcher", "quit", 9),
- BUTTON_INITIALIZER("Fullscreen", "fullscreen", 72),
- BUTTON_LAST
-};
-
-static void show_widgets()
+static int current_player;
+#if MAEMO_VERSION >= 5
+static HildonCheckButton* keys_chk;
+static HildonButton* keys_btn;
+static HildonCheckButton* touch_chk;
+static HildonCheckButton* touch_show_chk;
+#if CONF_ZEEMOTE
+static HildonCheckButton* zeemote_chk;
+#endif
+#else /* MAEMO_VERSION < 5 */
+static GtkCheckButton* keys_chk;
+static GtkButton* keys_btn;
+static GtkCheckButton* touch_chk;
+static GtkCheckButton* touch_show_chk;
+#if CONF_ZEEMOTE
+static GtkCheckButton* zeemote_chk;
+#endif
+#endif /* MAEMO_VERSION */
+
+static void load_settings()
{
- gtk_widget_show_all(GTK_WIDGET(combo));
- gtk_widget_hide_all(GTK_WIDGET(none_label));
- gtk_widget_hide_all(GTK_WIDGET(keys_scroll));
- gtk_widget_hide_all(GTK_WIDGET(ts_label));
- switch (gtk_combo_box_get_active(combo)) {
- case 0:
- gtk_widget_show_all(GTK_WIDGET(none_label));
- break;
- case 1: // Keys
- gtk_widget_show_all(GTK_WIDGET(keys_scroll));
- break;
- case 2: // Touchscreen
- gtk_widget_show_all(GTK_WIDGET(ts_label));
- break;
- case 3: // Touchscreen + keys
- gtk_widget_show_all(GTK_WIDGET(keys_scroll));
- break;
- case 4: // Mouse
- gtk_widget_show_all(GTK_WIDGET(ts_label));
- break;
- case 5: // Mouse + keys
- gtk_widget_show_all(GTK_WIDGET(keys_scroll));
- break;
- }
+ gchar key_base[kGConfPlayerPathBufferLen];
+ const int key_len = sprintf(key_base, kGConfPlayerPath, current_player);
+ gchar *key = key_base + key_len;
+
+#if MAEMO_VERSION >= 5
+ // Keyboard
+ strcpy(key, kGConfPlayerKeyboardEnable);
+ hildon_check_button_set_active(keys_chk,
+ gconf_client_get_bool(gcc, key_base, NULL));
+
+ // Touchscreen
+ strcpy(key, kGConfPlayerTouchscreenEnable);
+ hildon_check_button_set_active(touch_chk,
+ gconf_client_get_bool(gcc, key_base, NULL));
+ strcpy(key, kGConfPlayerTouchscreenShow);
+ hildon_check_button_set_active(touch_show_chk,
+ gconf_client_get_bool(gcc, key_base, NULL));
+
+#if CONF_ZEEMOTE
+ strcpy(key, kGConfPlayerZeemoteEnable);
+ hildon_check_button_set_active(zeemote_chk,
+ gconf_client_get_bool(gcc, key_base, NULL));
+#endif
+#else /* MAEMO_VERSION < 5 */
+ // Keyboard
+ strcpy(key, kGConfPlayerKeyboardEnable);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(keys_chk),
+ gconf_client_get_bool(gcc, key_base, NULL));
+
+ // Touchscreen
+ strcpy(key, kGConfPlayerTouchscreenEnable);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(touch_chk),
+ gconf_client_get_bool(gcc, key_base, NULL));
+ strcpy(key, kGConfPlayerTouchscreenShow);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(touch_show_chk),
+ gconf_client_get_bool(gcc, key_base, NULL));
+
+#if CONF_ZEEMOTE
+ strcpy(key, kGConfPlayerZeemoteEnable);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(zeemote_chk),
+ gconf_client_get_bool(gcc, key_base, NULL));
+#endif
+#endif /* MAEMO_VERSION */
}
-static gboolean load_key_config(GtkTreeModel *model, GtkTreePath *path,
- GtkTreeIter *iter, gpointer data)
+static void save_settings()
{
- ButtonEntry *button_entry;
-
- gtk_tree_model_get(model, iter,
- BUTTONENTRY_COLUMN, &button_entry,
- -1);
-
- int scancode = gconf_client_get_int(gcc, button_entry->gconf_key, NULL);
- button_entry->scancode = scancode;
-
- gtk_tree_model_row_changed(GTK_TREE_MODEL(keys_store), path, iter);
-
- return FALSE;
+ gchar key_base[kGConfPlayerPathBufferLen];
+ const int key_len = sprintf(key_base, kGConfPlayerPath, current_player);
+ gchar *key = key_base + key_len;
+
+#if MAEMO_VERSION >= 5
+ // Keyboard
+ strcpy(key, kGConfPlayerKeyboardEnable);
+ gconf_client_set_bool(gcc, key_base,
+ hildon_check_button_get_active(keys_chk), NULL);
+
+ // Touchscreen
+ strcpy(key, kGConfPlayerTouchscreenEnable);
+ gconf_client_set_bool(gcc, key_base,
+ hildon_check_button_get_active(touch_chk), NULL);
+ strcpy(key, kGConfPlayerTouchscreenShow);
+ gconf_client_set_bool(gcc, key_base,
+ hildon_check_button_get_active(touch_show_chk), NULL);
+
+#if CONF_ZEEMOTE
+ strcpy(key, kGConfPlayerZeemoteEnable);
+ gconf_client_set_bool(gcc, key_base,
+ hildon_check_button_get_active(zeemote_chk), NULL);
+#endif
+#else /* MAEMO_VERSION < 5 */
+ // Keyboard
+ strcpy(key, kGConfPlayerKeyboardEnable);
+ gconf_client_set_bool(gcc, key_base,
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(keys_chk)), NULL);
+
+ // Touchscreen
+ strcpy(key, kGConfPlayerTouchscreenEnable);
+ gconf_client_set_bool(gcc, key_base,
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(touch_chk)), NULL);
+ strcpy(key, kGConfPlayerTouchscreenShow);
+ gconf_client_set_bool(gcc, key_base,
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(touch_show_chk)), NULL);
+
+#if CONF_ZEEMOTE
+ strcpy(key, kGConfPlayerZeemoteEnable);
+ gconf_client_set_bool(gcc, key_base,
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(zeemote_chk)), NULL);
+#endif
+#endif /* MAEMO_VERSION */
}
-static void load_config()
+static void keys_btn_callback(GtkWidget * button, gpointer data)
{
- GConfValue* mapping = gconf_client_get(gcc, kGConfMapping, NULL);
-
- if (!mapping) {
- mapping = gconf_value_new(GCONF_VALUE_INT);
- gconf_value_set_int(mapping, 1);
- gconf_client_set(gcc, kGConfMapping, mapping, NULL);
- }
-
- gtk_combo_box_set_active(combo, gconf_value_get_int(mapping));
-
- gconf_client_preload(gcc, kGConfKeysPath, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
- gtk_tree_model_foreach(GTK_TREE_MODEL(keys_store), load_key_config, NULL);
-
- show_widgets();
- gconf_value_free(mapping);
+ keys_dialog(GTK_WINDOW(dialog), GPOINTER_TO_INT(data));
}
-static void
-accel_set_func (GtkTreeViewColumn *tree_column,
- GtkCellRenderer *cell,
- GtkTreeModel *model,
- GtkTreeIter *iter,
- gpointer data)
+static void cb_dialog_response(GtkWidget * button, gint response, gpointer data)
{
- ButtonEntry *button_entry;
-
- gtk_tree_model_get (model, iter,
- BUTTONENTRY_COLUMN, &button_entry,
- -1);
-
- if (button_entry == NULL) {
- g_object_set (G_OBJECT (cell),
- "visible", FALSE,
- NULL);
- } else {
- g_object_set (G_OBJECT (cell),
- "visible", TRUE,
- "editable", TRUE,
- "scancode", button_entry->scancode,
- "style", PANGO_STYLE_NORMAL,
- NULL);
+ if (response == GTK_RESPONSE_OK) {
+ save_settings();
+ settings_update_controls(current_player);
}
+
+ gtk_widget_destroy(GTK_WIDGET(dialog));
}
-static void
-cb_key_edited(GtkCellRendererText *cell, const char *path_string,
- guint scancode, gpointer data)
+#if MAEMO_VERSION >= 5
+static void set_button_layout(HildonButton* button,
+ GtkSizeGroup* titles_size_group, GtkSizeGroup* values_size_group)
{
- GtkTreePath *path = gtk_tree_path_new_from_string(path_string);
- GtkTreeIter iter;
- ButtonEntry *button_entry;
-
- gtk_tree_model_get_iter(GTK_TREE_MODEL(keys_store), &iter, path);
- gtk_tree_model_get(GTK_TREE_MODEL(keys_store), &iter,
- BUTTONENTRY_COLUMN, &button_entry,
- -1);
-
- g_debug("Setting scancode for button %s to %u\n",
- button_entry->name, scancode);
- gconf_client_set_int(gcc, button_entry->gconf_key, scancode, NULL);
-
- button_entry->scancode = scancode;
- gtk_tree_model_row_changed(GTK_TREE_MODEL(keys_store), path, &iter);
-
- gtk_tree_path_free(path);
+ hildon_button_add_title_size_group(button, titles_size_group);
+ hildon_button_add_value_size_group(button, values_size_group);
+ hildon_button_set_alignment(button, 0.0, 0.5, 1.0, 0.0);
}
+#endif
-static void
-cb_key_cleared(GtkCellRendererText *cell, const char *path_string,
- gpointer data)
+gchar* controls_describe(int player)
{
- GtkTreePath *path = gtk_tree_path_new_from_string(path_string);
- GtkTreeIter iter;
- ButtonEntry *button_entry;
+ static gchar description[256];
+ unsigned char count = 0;
- gtk_tree_model_get_iter(GTK_TREE_MODEL(keys_store), &iter, path);
- gtk_tree_path_free(path);
- gtk_tree_model_get(GTK_TREE_MODEL(keys_store), &iter,
- BUTTONENTRY_COLUMN, &button_entry,
- -1);
+ gchar key_base[kGConfPlayerPathBufferLen];
+ const int key_len = sprintf(key_base, kGConfPlayerPath, player);
+ gchar *key = key_base + key_len;
- g_debug("Clearing scancode for button %s\n", button_entry->name);
- gconf_client_set_int(gcc, button_entry->gconf_key, 0, NULL);
- // prefer 0 value over unset key.
+ description[0] = '\0';
- button_entry->scancode = 0;
-}
+ strcpy(key, kGConfPlayerKeyboardEnable);
+ if (gconf_client_get_bool(gcc, key_base, NULL)) {
+ strcpy(description, _("Keyboard"));
+ count++;
+ }
-static void cb_combo_changed(GtkComboBox * widget, gpointer data)
-{
- show_widgets();
- gconf_client_set_int(gcc, kGConfMapping,
- gtk_combo_box_get_active(combo), NULL);
-}
+ strcpy(key, kGConfPlayerTouchscreenEnable);
+ if (gconf_client_get_bool(gcc, key_base, NULL)) {
+ if (count > 0) strcat(description, ", ");
+ strcat(description, _("Touchscreen"));
+ count++;
+ }
-static void cb_dialog_response(GtkWidget * button, gpointer data)
-{
- gtk_widget_destroy(GTK_WIDGET(dialog));
-}
+#if CONF_ZEEMOTE
+ strcpy(key, kGConfPlayerZeemoteEnable);
+ if (gconf_client_get_bool(gcc, key_base, NULL)) {
+ if (count > 0) strcat(description, ", ");
+ strcat(description, _("Zeemote"));
+ count++;
+ }
+#endif
-void controls_setup()
-{
- GConfValue* mapping = gconf_client_get(gcc, kGConfMapping, NULL);
-
- if (!mapping) {
- // Key not set; setup defaults
- int i;
- for (i = 0; buttons[i].name; i++) {
- gconf_client_set_int(gcc,
- buttons[i].gconf_key, buttons[i].default_scancode, NULL);
- }
-
- g_debug("Loading default key mappings\n");
-
- gconf_client_set_int(gcc, kGConfMapping, 1, NULL);
- } else {
- // If this is set, consider defaults loaded.
- gconf_value_free(mapping);
+ if (count == 0) {
+ /* Add some text if there are no enabled controls */
+ strcpy(description, _("Disabled"));
}
+
+ return description;
}
-void controls_dialog(GtkWindow* parent)
+void controls_dialog(GtkWindow* parent, int player)
{
- dialog = GTK_DIALOG(gtk_dialog_new_with_buttons("Controls",
+ gchar* title = g_strdup_printf(_("Player %d controls"), player);
+ dialog = GTK_DIALOG(gtk_dialog_new_with_buttons(title,
parent, GTK_DIALOG_MODAL,
- GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL));
-
- combo = GTK_COMBO_BOX(gtk_combo_box_new_text());
- gtk_combo_box_append_text(combo, "No controls/Use config file");
- gtk_combo_box_append_text(combo, "Use physical keys");
- gtk_combo_box_append_text(combo, "Use touchscreen");
- gtk_combo_box_append_text(combo, "Use touchscreen + physical keys");
- gtk_combo_box_append_text(combo, "Use SNES mouse");
- gtk_combo_box_append_text(combo, "Use SNES mouse + physical keys");
-
- none_label = GTK_LABEL(gtk_label_new("Check documentation for details."));
-
- keys_scroll = GTK_SCROLLED_WINDOW(gtk_scrolled_window_new(NULL, NULL));
- gtk_scrolled_window_set_policy(keys_scroll,
- GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
- keys_store = GTK_LIST_STORE(gtk_list_store_new(N_COLUMNS,
- G_TYPE_STRING, G_TYPE_POINTER));
- keys_list = GTK_TREE_VIEW(
- gtk_tree_view_new_with_model(GTK_TREE_MODEL(keys_store)));
-
- GtkCellRenderer* renderer = GTK_CELL_RENDERER(gtk_cell_renderer_text_new());
- GtkTreeViewColumn * column =
- gtk_tree_view_column_new_with_attributes ("Button",
- gtk_cell_renderer_text_new(),
- "text", BUTTON_COLUMN,
- NULL);
- gtk_tree_view_column_set_resizable(column, FALSE);
- gtk_tree_view_column_set_expand(column, TRUE);
- gtk_tree_view_append_column(keys_list, column);
-
- renderer = GTK_CELL_RENDERER(cell_renderer_key_new());
- column = gtk_tree_view_column_new_with_attributes("Key", renderer, NULL);
- gtk_tree_view_column_set_cell_data_func(column, renderer, accel_set_func, NULL, NULL);
- gtk_tree_view_column_set_resizable(column, FALSE);
- gtk_tree_view_column_set_min_width(column, 240);
- gtk_tree_view_append_column(keys_list, column);
- gtk_tree_view_set_headers_visible(keys_list, TRUE);
-
- int i;
- for (i = 0; buttons[i].name; i++) {
- GtkTreeIter iter;
- gtk_list_store_append(keys_store, &iter);
- gtk_list_store_set(keys_store, &iter,
- BUTTON_COLUMN, buttons[i].name,
- BUTTONENTRY_COLUMN, &buttons[i],
- -1);
- }
-
- ts_label = GTK_LABEL(gtk_label_new("Check layout somewhere else for now."));
-
- gtk_window_resize(GTK_WINDOW(dialog), 600, 340);
- gtk_box_pack_start(GTK_BOX(dialog->vbox), GTK_WIDGET(combo),
+ GTK_STOCK_SAVE, GTK_RESPONSE_OK,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL));
+ g_free(title);
+
+ current_player = player;
+
+#if MAEMO_VERSION >= 5
+ GtkBox * box = GTK_BOX(gtk_vbox_new(FALSE, HILDON_MARGIN_HALF));
+ HildonPannableArea * pannable =
+ HILDON_PANNABLE_AREA(hildon_pannable_area_new());
+ GtkSizeGroup * titles_size_group =
+ gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+ GtkSizeGroup * values_size_group =
+ gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+ PangoAttrList *pattrlist = pango_attr_list_new();
+ PangoAttribute *attr = pango_attr_size_new(22 * PANGO_SCALE);
+ attr->start_index = 0;
+ attr->end_index = G_MAXINT;
+ pango_attr_list_insert(pattrlist, attr);
+
+ GtkLabel* separator_1 = GTK_LABEL(gtk_label_new(_("Keys")));
+ gtk_label_set_attributes(separator_1, pattrlist);
+ gtk_label_set_justify(separator_1, GTK_JUSTIFY_CENTER);
+
+ keys_chk = HILDON_CHECK_BUTTON(hildon_check_button_new(
+ HILDON_SIZE_AUTO_WIDTH | HILDON_SIZE_FINGER_HEIGHT));
+ gtk_button_set_label(GTK_BUTTON(keys_chk), _("Enable keyboard"));
+ set_button_layout(HILDON_BUTTON(keys_chk),
+ titles_size_group, values_size_group);
+
+ keys_btn = HILDON_BUTTON(hildon_button_new_with_text(
+ HILDON_SIZE_AUTO_WIDTH | HILDON_SIZE_FINGER_HEIGHT,
+ HILDON_BUTTON_ARRANGEMENT_HORIZONTAL,
+ _("Configure keys…"), NULL));
+ set_button_layout(HILDON_BUTTON(keys_btn),
+ titles_size_group, values_size_group);
+ g_signal_connect(G_OBJECT(keys_btn), "clicked",
+ G_CALLBACK(keys_btn_callback), GINT_TO_POINTER(player));
+
+ GtkLabel* separator_2 = GTK_LABEL(gtk_label_new(_("Touchscreen")));
+ gtk_label_set_attributes(separator_2, pattrlist);
+ gtk_label_set_justify(separator_2, GTK_JUSTIFY_CENTER);
+
+ touch_chk = HILDON_CHECK_BUTTON(hildon_check_button_new(
+ HILDON_SIZE_AUTO_WIDTH | HILDON_SIZE_FINGER_HEIGHT));
+ gtk_button_set_label(GTK_BUTTON(touch_chk),
+ _("Enable touchscreen buttons"));
+ set_button_layout(HILDON_BUTTON(touch_chk),
+ titles_size_group, values_size_group);
+
+ touch_show_chk = HILDON_CHECK_BUTTON(hildon_check_button_new(
+ HILDON_SIZE_AUTO_WIDTH | HILDON_SIZE_FINGER_HEIGHT));
+ gtk_button_set_label(GTK_BUTTON(touch_show_chk),
+ _("Show on-screen button grid"));
+ set_button_layout(HILDON_BUTTON(touch_show_chk),
+ titles_size_group, values_size_group);
+
+#if 0
+ GtkLabel* separator_3 = GTK_LABEL(gtk_label_new(_("Accelerometer")));
+ gtk_label_set_attributes(separator_3, pattrlist);
+ gtk_label_set_justify(separator_3, GTK_JUSTIFY_CENTER);
+
+ GtkLabel* separator_4 = GTK_LABEL(gtk_label_new(_("Wiimote")));
+ gtk_label_set_attributes(separator_4, pattrlist);
+ gtk_label_set_justify(separator_4, GTK_JUSTIFY_CENTER);
+#endif
+#if CONF_ZEEMOTE
+ GtkLabel* separator_5 = GTK_LABEL(gtk_label_new(_("Zeemote")));
+ gtk_label_set_attributes(separator_5, pattrlist);
+ gtk_label_set_justify(separator_5, GTK_JUSTIFY_CENTER);
+
+ zeemote_chk = HILDON_CHECK_BUTTON(hildon_check_button_new(
+ HILDON_SIZE_AUTO_WIDTH | HILDON_SIZE_FINGER_HEIGHT));
+ gtk_button_set_label(GTK_BUTTON(zeemote_chk), _("Enable Zeemote joystick"));
+ set_button_layout(HILDON_BUTTON(zeemote_chk),
+ titles_size_group, values_size_group);
+#endif
+ gtk_box_pack_start(box, GTK_WIDGET(separator_1),
FALSE, FALSE, HILDON_MARGIN_HALF);
- gtk_container_add(GTK_CONTAINER(keys_scroll), GTK_WIDGET(keys_list));
- gtk_box_pack_start_defaults(GTK_BOX(dialog->vbox), GTK_WIDGET(none_label));
- gtk_box_pack_start_defaults(GTK_BOX(dialog->vbox), GTK_WIDGET(keys_scroll));
- gtk_box_pack_start_defaults(GTK_BOX(dialog->vbox), GTK_WIDGET(ts_label));
-
- load_config();
+ gtk_box_pack_start(box, GTK_WIDGET(keys_chk),
+ FALSE, FALSE, 0);
+ gtk_box_pack_start(box, GTK_WIDGET(keys_btn),
+ FALSE, FALSE, 0);
+ gtk_box_pack_start(box, GTK_WIDGET(separator_2),
+ FALSE, FALSE, HILDON_MARGIN_HALF);
+ gtk_box_pack_start(box, GTK_WIDGET(touch_chk),
+ FALSE, FALSE, 0);
+ gtk_box_pack_start(box, GTK_WIDGET(touch_show_chk),
+ FALSE, FALSE, 0);
+#if 0
+ gtk_box_pack_start(box, GTK_WIDGET(separator_3),
+ FALSE, FALSE, HILDON_MARGIN_HALF);
+ gtk_box_pack_start(box, GTK_WIDGET(separator_4),
+ FALSE, FALSE, HILDON_MARGIN_HALF);
+#endif
+#if CONF_ZEEMOTE
+ gtk_box_pack_start(box, GTK_WIDGET(separator_5),
+ FALSE, FALSE, HILDON_MARGIN_HALF);
+ gtk_box_pack_start(box, GTK_WIDGET(zeemote_chk),
+ FALSE, FALSE, 0);
+#endif
+
+ hildon_pannable_area_add_with_viewport(pannable, GTK_WIDGET(box));
+ gtk_box_pack_start_defaults(GTK_BOX(dialog->vbox), GTK_WIDGET(pannable));
+
+ pango_attr_list_unref(pattrlist);
+ g_object_unref(titles_size_group);
+ g_object_unref(values_size_group);
+#else
+ GtkBox* keys_box = GTK_BOX(gtk_hbox_new(FALSE, HILDON_MARGIN_DEFAULT));
+
+ keys_chk = GTK_CHECK_BUTTON(gtk_check_button_new_with_label(
+ _("Enable keyboard")));
+ keys_btn = GTK_BUTTON(gtk_button_new_with_label(_("Configure keys…")));
+ g_signal_connect(G_OBJECT(keys_btn), "clicked",
+ G_CALLBACK(keys_btn_callback), GINT_TO_POINTER(player));
+
+ gtk_box_pack_start_defaults(keys_box, GTK_WIDGET(keys_chk));
+ gtk_box_pack_start_defaults(keys_box, GTK_WIDGET(keys_btn));
+
+ GtkWidget* sep_1 = GTK_WIDGET(gtk_hseparator_new());
+ GtkBox* touch_box = GTK_BOX(gtk_vbox_new(FALSE, HILDON_MARGIN_HALF));
+
+ touch_chk = GTK_CHECK_BUTTON(gtk_check_button_new_with_label(
+ _("Enable touchscreen buttons")));
+ touch_show_chk = GTK_CHECK_BUTTON(gtk_check_button_new_with_label(
+ _("Show on-screen button grid")));
+
+ gtk_box_pack_start_defaults(touch_box, GTK_WIDGET(touch_chk));
+ gtk_box_pack_start_defaults(touch_box, GTK_WIDGET(touch_show_chk));
+
+#if CONF_ZEEMOTE
+ GtkWidget* sep_2 = GTK_WIDGET(gtk_hseparator_new());
+ zeemote_chk = GTK_CHECK_BUTTON(gtk_check_button_new_with_label(
+ _("Enable Zeemote joystick")));
+#endif
+
+ gtk_box_pack_start_defaults(GTK_BOX(dialog->vbox), GTK_WIDGET(keys_box));
+ gtk_box_pack_start_defaults(GTK_BOX(dialog->vbox), sep_1);
+ gtk_box_pack_start_defaults(GTK_BOX(dialog->vbox), GTK_WIDGET(touch_box));
+#if CONF_ZEEMOTE
+ gtk_box_pack_start_defaults(GTK_BOX(dialog->vbox), sep_2);
+ gtk_box_pack_start_defaults(GTK_BOX(dialog->vbox), GTK_WIDGET(zeemote_chk));
+#endif
+#endif /* MAEMO_VERSION */
+
+ load_settings();
+
+#if MAEMO_VERSION >= 5
+ gtk_window_resize(GTK_WINDOW(dialog), 800, 360);
+#else
+ gtk_window_resize(GTK_WINDOW(dialog), 450, 250);
+#endif
g_signal_connect(G_OBJECT(dialog), "response",
G_CALLBACK (cb_dialog_response), NULL);
- g_signal_connect(G_OBJECT(combo), "changed",
- G_CALLBACK(cb_combo_changed), NULL);
- g_signal_connect(G_OBJECT(renderer), "accel_edited",
- G_CALLBACK(cb_key_edited), NULL);
- g_signal_connect(G_OBJECT(renderer), "accel_cleared",
- G_CALLBACK(cb_key_cleared), NULL);
-
- gtk_widget_show(GTK_WIDGET(dialog));
+
+ gtk_widget_show_all(GTK_WIDGET(dialog));
}