diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2018-05-30 14:18:46 +1200 |
---|---|---|
committer | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2018-06-11 14:11:47 +0000 |
commit | 014e572e9b9c8a6fdbfb0ffc0b4e4b381ac7238a (patch) | |
tree | 435ee8b5d991a73adff8c71923609d955b28aab3 | |
parent | 92f73720b66a4b4edc62b629e35093810ebf36ba (diff) | |
download | gnome-control-center-014e572e9b9c8a6fdbfb0ffc0b4e4b381ac7238a.tar.gz |
universal-access: Use GtkTemplate
-rw-r--r-- | panels/universal-access/cc-ua-panel.c | 397 | ||||
-rw-r--r-- | panels/universal-access/uap.ui | 36 |
2 files changed, 278 insertions, 155 deletions
diff --git a/panels/universal-access/cc-ua-panel.c b/panels/universal-access/cc-ua-panel.c index 60bd4bd6f..ee4665d43 100644 --- a/panels/universal-access/cc-ua-panel.c +++ b/panels/universal-access/cc-ua-panel.c @@ -33,8 +33,6 @@ #include "zoom-options.h" -#define WID(w) GTK_WIDGET (gtk_builder_get_object (self->builder, w)) - #define DPI_FACTOR_LARGE 1.25 #define DPI_FACTOR_NORMAL 1.0 #define HIGH_CONTRAST_THEME "HighContrast" @@ -103,7 +101,81 @@ struct _CcUaPanel { CcPanel parent_instance; - GtkBuilder *builder; + GtkWidget *cursor_blinking_dialog; + GtkWidget *cursor_blinking_scale; + GtkWidget *cursor_blinking_switch; + GtkWidget *cursor_size_dialog; + GtkWidget *cursor_size_grid; + GtkWidget *list_hearing; + GtkWidget *list_pointing; + GtkWidget *list_seeing; + GtkWidget *list_typing; + GtkWidget *mouse_keys_switch; + GtkWidget *pointing_dialog; + GtkWidget *pointing_dwell_delay_box; + GtkWidget *pointing_dwell_delay_scale; + GtkWidget *pointing_dwell_threshold_box; + GtkWidget *pointing_dwell_threshold_scale; + GtkWidget *pointing_hover_click_switch; + GtkWidget *pointing_secondary_click_delay_box; + GtkWidget *pointing_secondary_click_delay_scale; + GtkWidget *pointing_secondary_click_switch; + GtkWidget *repeat_keys_delay_grid; + GtkWidget *repeat_keys_delay_scale; + GtkWidget *repeat_keys_dialog; + GtkWidget *repeat_keys_speed_grid; + GtkWidget *repeat_keys_speed_scale; + GtkWidget *repeat_keys_switch; + GtkWidget *row_accessx; + GtkWidget *row_click_assist; + GtkWidget *row_cursor_blinking; + GtkWidget *row_cursor_size; + GtkWidget *row_repeat_keys; + GtkWidget *row_screen_reader; + GtkWidget *row_sound_keys; + GtkWidget *row_visual_alerts; + GtkWidget *row_zoom; + GtkWidget *scale_double_click_delay; + GtkWidget *screen_keyboard_switch; + GtkWidget *screen_reader_dialog; + GtkWidget *screen_reader_switch; + GtkWidget *section_status; + GtkWidget *sound_keys_dialog; + GtkWidget *sound_keys_switch; + GtkWidget *switch_status; + GtkWidget *typing_bouncekeys_beep_rejected_check; + GtkWidget *typing_bouncekeys_delay_box; + GtkWidget *typing_bouncekeys_delay_scale; + GtkWidget *typing_bouncekeys_switch; + GtkWidget *typing_dialog; + GtkWidget *typing_keyboard_toggle_switch; + GtkWidget *typing_slowkeys_beep_accepted_check; + GtkWidget *typing_slowkeys_beep_pressed_check; + GtkWidget *typing_slowkeys_beep_rejected_check; + GtkWidget *typing_slowkeys_delay_box; + GtkWidget *typing_slowkeys_delay_scale; + GtkWidget *typing_slowkeys_switch; + GtkWidget *typing_stickykeys_beep_modifier_check; + GtkWidget *typing_stickykeys_disable_two_keys_check; + GtkWidget *typing_stickykeys_switch; + GtkWidget *universal_access_content; + GtkWidget *universal_access_panel; + GtkWidget *value_accessx; + GtkWidget *value_click_assist; + GtkWidget *value_cursor_size; + GtkWidget *value_highcontrast; + GtkWidget *value_large_text; + GtkWidget *value_repeat_keys; + GtkWidget *value_row_cursor_blinking; + GtkWidget *value_screen_reader; + GtkWidget *value_sound_keys; + GtkWidget *value_visual_alerts; + GtkWidget *value_zoom; + GtkWidget *visual_alerts_dialog; + GtkWidget *visual_alerts_screen_radio; + GtkWidget *visual_alerts_switch; + GtkWidget *visual_alerts_test_button; + GtkWidget *visual_alerts_window_radio; GSettings *wm_settings; GSettings *a11y_settings; @@ -131,7 +203,6 @@ cc_ua_panel_dispose (GObject *object) { CcUaPanel *self = CC_UA_PANEL (object); - g_clear_object (&self->builder); g_slist_free_full (self->toplevels, (GDestroyNotify)gtk_widget_destroy); self->toplevels = NULL; @@ -160,13 +231,92 @@ cc_ua_panel_get_help_uri (CcPanel *panel) static void cc_ua_panel_class_init (CcUaPanelClass *klass) -{ +{ + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass); CcPanelClass *panel_class = CC_PANEL_CLASS (klass); panel_class->get_help_uri = cc_ua_panel_get_help_uri; object_class->dispose = cc_ua_panel_dispose; + + gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/universal-access/uap.ui"); + + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, cursor_blinking_dialog); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, cursor_blinking_scale); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, cursor_blinking_switch); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, cursor_size_dialog); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, cursor_size_grid); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, list_hearing); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, list_pointing); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, list_seeing); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, list_typing); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, mouse_keys_switch); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, pointing_dialog); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, pointing_dwell_delay_box); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, pointing_dwell_delay_scale); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, pointing_dwell_threshold_box); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, pointing_dwell_threshold_scale); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, pointing_hover_click_switch); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, pointing_secondary_click_delay_box); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, pointing_secondary_click_delay_scale); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, pointing_secondary_click_switch); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, repeat_keys_delay_grid); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, repeat_keys_delay_scale); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, repeat_keys_dialog); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, repeat_keys_speed_grid); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, repeat_keys_speed_scale); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, repeat_keys_switch); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, row_accessx); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, row_click_assist); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, row_cursor_blinking); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, row_cursor_size); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, row_repeat_keys); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, row_screen_reader); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, row_sound_keys); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, row_visual_alerts); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, row_zoom); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, scale_double_click_delay); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, screen_keyboard_switch); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, screen_reader_dialog); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, screen_reader_switch); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, section_status); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, sound_keys_dialog); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, sound_keys_switch); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, switch_status); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, typing_bouncekeys_beep_rejected_check); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, typing_bouncekeys_delay_box); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, typing_bouncekeys_delay_scale); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, typing_bouncekeys_switch); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, typing_dialog); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, typing_keyboard_toggle_switch); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, typing_slowkeys_beep_accepted_check); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, typing_slowkeys_beep_pressed_check); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, typing_slowkeys_beep_rejected_check); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, typing_slowkeys_delay_box); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, typing_slowkeys_delay_scale); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, typing_slowkeys_switch); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, typing_stickykeys_beep_modifier_check); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, typing_stickykeys_disable_two_keys_check); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, typing_stickykeys_switch); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, universal_access_content); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, universal_access_panel); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, value_accessx); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, value_click_assist); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, value_cursor_size); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, value_highcontrast); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, value_large_text); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, value_repeat_keys); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, value_row_cursor_blinking); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, value_screen_reader); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, value_sound_keys); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, value_visual_alerts); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, value_zoom); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, visual_alerts_dialog); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, visual_alerts_screen_radio); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, visual_alerts_switch); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, visual_alerts_test_button); + gtk_widget_class_bind_template_child (widget_class, CcUaPanel, visual_alerts_window_radio); } /* zoom options dialog */ @@ -202,12 +352,10 @@ cursor_size_setup (CcUaPanel *self) { guint cursor_sizes[] = { 24, 32, 48, 64, 96 }; guint current_cursor_size, i; - GtkWidget *grid; GtkSizeGroup *size_group; GtkWidget *last_radio_button = NULL; - grid = WID ("cursor_size_grid"); - gtk_style_context_add_class (gtk_widget_get_style_context (grid), "linked"); + gtk_style_context_add_class (gtk_widget_get_style_context (self->cursor_size_grid), "linked"); current_cursor_size = g_settings_get_int (self->interface_settings, KEY_MOUSE_CURSOR_SIZE); @@ -227,7 +375,7 @@ cursor_size_setup (CcUaPanel *self) g_object_set_data (G_OBJECT (button), "cursor-size", GUINT_TO_POINTER (cursor_sizes[i])); gtk_container_add (GTK_CONTAINER (button), image); - gtk_grid_attach (GTK_GRID (grid), button, i, 0, 1, 1); + gtk_grid_attach (GTK_GRID (self->cursor_size_grid), button, i, 0, 1, 1); gtk_size_group_add_widget (size_group, button); g_signal_connect (button, "toggled", @@ -237,7 +385,7 @@ cursor_size_setup (CcUaPanel *self) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE); } - gtk_widget_show_all (grid); + gtk_widget_show_all (self->cursor_size_grid); } /* seeing section */ @@ -434,11 +582,11 @@ cc_ua_panel_init_status (CcUaPanel *self) { GtkWidget *box; - box = GTK_WIDGET (gtk_builder_get_object (self->builder, "section_status")); + box = GTK_WIDGET (self->section_status); self->sections_reverse = g_list_prepend (self->sections_reverse, box); g_settings_bind (self->a11y_settings, KEY_ALWAYS_SHOW_STATUS, - WID ("switch_status"), "active", + self->switch_status, "active", G_SETTINGS_BIND_DEFAULT); } @@ -464,22 +612,22 @@ activate_row (CcUaPanel *self, GtkListBoxRow *row) { if (!g_strcmp0 (widget_name, "row_highcontrast")) { - toggle_switch (WID ("value_highcontrast")); + toggle_switch (self->value_highcontrast); return; } if (!g_strcmp0 (widget_name, "row_large_text")) { - toggle_switch (WID ("value_large_text")); + toggle_switch (self->value_large_text); return; } if (!g_strcmp0 (widget_name, "row_screen_keyboard")) { - toggle_switch (WID ("screen_keyboard_switch")); + toggle_switch (self->screen_keyboard_switch); return; } if (!g_strcmp0 (widget_name, "row_mouse_keys")) { - toggle_switch (WID ("mouse_keys_switch")); + toggle_switch (self->mouse_keys_switch); return; } } @@ -504,19 +652,15 @@ activate_row (CcUaPanel *self, GtkListBoxRow *row) static void cc_ua_panel_init_seeing (CcUaPanel *self) { - GtkWidget *list; - GtkWidget *dialog; - - list = WID ("list_seeing"); - add_section (list, self); + add_section (self->list_seeing, self); - add_separators (GTK_LIST_BOX (list)); + add_separators (GTK_LIST_BOX (self->list_seeing)); - g_signal_connect_swapped (list, "row-activated", + g_signal_connect_swapped (self->list_seeing, "row-activated", G_CALLBACK (activate_row), self); g_settings_bind_with_mapping (self->interface_settings, KEY_GTK_THEME, - WID ("value_highcontrast"), + self->value_highcontrast, "active", G_SETTINGS_BIND_DEFAULT, get_contrast_mapping, set_contrast_mapping, @@ -526,7 +670,7 @@ cc_ua_panel_init_seeing (CcUaPanel *self) /* large text */ g_settings_bind_with_mapping (self->interface_settings, KEY_TEXT_SCALING_FACTOR, - WID ("value_large_text"), + self->value_large_text, "active", G_SETTINGS_BIND_DEFAULT, get_large_text_mapping, set_large_text_mapping, @@ -538,64 +682,61 @@ cc_ua_panel_init_seeing (CcUaPanel *self) cursor_size_setup (self); g_settings_bind_with_mapping (self->interface_settings, KEY_MOUSE_CURSOR_SIZE, - WID ("value_cursor_size"), + self->value_cursor_size, "label", G_SETTINGS_BIND_GET, cursor_size_label_mapping_get, NULL, NULL, NULL); - dialog = WID ("cursor_size_dialog"); - self->toplevels = g_slist_prepend (self->toplevels, dialog); + self->toplevels = g_slist_prepend (self->toplevels, self->cursor_size_dialog); - g_object_set_data (G_OBJECT (WID ("row_cursor_size")), "dialog", dialog); - g_signal_connect (dialog, "delete-event", + g_object_set_data (G_OBJECT (self->row_cursor_size), "dialog", self->cursor_size_dialog); + g_signal_connect (self->cursor_size_dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); /* zoom */ g_settings_bind_with_mapping (self->application_settings, "screen-magnifier-enabled", - WID ("value_zoom"), + self->value_zoom, "label", G_SETTINGS_BIND_GET, on_off_label_mapping_get, NULL, NULL, NULL); - g_object_set_data (G_OBJECT (WID ("row_zoom")), "dialog-id", "zoom"); + g_object_set_data (G_OBJECT (self->row_zoom), "dialog-id", "zoom"); /* screen reader */ g_settings_bind_with_mapping (self->application_settings, "screen-reader-enabled", - WID ("value_screen_reader"), "label", + self->value_screen_reader, "label", G_SETTINGS_BIND_GET, on_off_label_mapping_get, NULL, NULL, NULL); g_settings_bind (self->application_settings, "screen-reader-enabled", - WID ("screen_reader_switch"), "active", + self->screen_reader_switch, "active", G_SETTINGS_BIND_DEFAULT); - dialog = WID ("screen_reader_dialog"); - self->toplevels = g_slist_prepend (self->toplevels, dialog); + self->toplevels = g_slist_prepend (self->toplevels, self->screen_reader_dialog); - g_object_set_data (G_OBJECT (WID ("row_screen_reader")), "dialog", dialog); - g_signal_connect (dialog, "delete-event", + g_object_set_data (G_OBJECT (self->row_screen_reader), "dialog", self->screen_reader_dialog); + g_signal_connect (self->screen_reader_dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); /* sound keys */ g_settings_bind_with_mapping (self->kb_settings, KEY_TOGGLEKEYS_ENABLED, - WID ("value_sound_keys"), "label", + self->value_sound_keys, "label", G_SETTINGS_BIND_GET, on_off_label_mapping_get, NULL, NULL, NULL); g_settings_bind (self->kb_settings, KEY_TOGGLEKEYS_ENABLED, - WID ("sound_keys_switch"), "active", + self->sound_keys_switch, "active", G_SETTINGS_BIND_DEFAULT); - dialog = WID ("sound_keys_dialog"); - self->toplevels = g_slist_prepend (self->toplevels, dialog); + self->toplevels = g_slist_prepend (self->toplevels, self->sound_keys_dialog); - g_object_set_data (G_OBJECT (WID ("row_sound_keys")), "dialog", dialog); - g_signal_connect (dialog, "delete-event", + g_object_set_data (G_OBJECT (self->row_sound_keys), "dialog", self->sound_keys_dialog); + g_signal_connect (self->sound_keys_dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); } @@ -611,9 +752,9 @@ visual_bell_type_notify_cb (GSettings *settings, type = g_settings_get_enum (self->wm_settings, KEY_VISUAL_BELL_TYPE); if (type == G_DESKTOP_VISUAL_BELL_FRAME_FLASH) - widget = WID ("visual_alerts_window_radio"); + widget = self->visual_alerts_window_radio; else - widget = WID ("visual_alerts_screen_radio"); + widget = self->visual_alerts_screen_radio; gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE); } @@ -645,15 +786,11 @@ test_flash (GtkButton *button, static void cc_ua_panel_init_hearing (CcUaPanel *self) { - GtkWidget *list; - GtkWidget *dialog; - - list = WID ("list_hearing"); - add_section (list, self); + add_section (self->list_hearing, self); - add_separators (GTK_LIST_BOX (list)); + add_separators (GTK_LIST_BOX (self->list_hearing)); - g_signal_connect_swapped (list, "row-activated", + g_signal_connect_swapped (self->list_hearing, "row-activated", G_CALLBACK (activate_row), self); /* set the initial visual bell values */ @@ -661,36 +798,35 @@ cc_ua_panel_init_hearing (CcUaPanel *self) /* and listen */ g_settings_bind (self->wm_settings, KEY_VISUAL_BELL_ENABLED, - WID ("visual_alerts_switch"), "active", + self->visual_alerts_switch, "active", G_SETTINGS_BIND_DEFAULT); g_settings_bind_with_mapping (self->wm_settings, KEY_VISUAL_BELL_ENABLED, - WID ("value_visual_alerts"), + self->value_visual_alerts, "label", G_SETTINGS_BIND_GET, on_off_label_mapping_get, NULL, NULL, NULL); - g_object_bind_property (WID ("visual_alerts_switch"), "active", - WID ("visual_alerts_window_radio"), "sensitive", + g_object_bind_property (self->visual_alerts_switch, "active", + self->visual_alerts_window_radio, "sensitive", G_BINDING_SYNC_CREATE); - g_object_bind_property (WID ("visual_alerts_switch"), "active", - WID ("visual_alerts_screen_radio"), "sensitive", + g_object_bind_property (self->visual_alerts_switch, "active", + self->visual_alerts_screen_radio, "sensitive", G_BINDING_SYNC_CREATE); g_signal_connect (self->wm_settings, "changed::" KEY_VISUAL_BELL_TYPE, G_CALLBACK (visual_bell_type_notify_cb), self); - g_signal_connect (WID ("visual_alerts_window_radio"), + g_signal_connect (self->visual_alerts_window_radio, "toggled", G_CALLBACK (visual_bell_type_toggle_cb), self); - dialog = WID ("visual_alerts_dialog"); - self->toplevels = g_slist_prepend (self->toplevels, dialog); + self->toplevels = g_slist_prepend (self->toplevels, self->visual_alerts_dialog); - g_object_set_data (G_OBJECT (WID ("row_visual_alerts")), "dialog", dialog); + g_object_set_data (G_OBJECT (self->row_visual_alerts), "dialog", self->visual_alerts_dialog); - g_signal_connect (dialog, "delete-event", + g_signal_connect (self->visual_alerts_dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); - g_signal_connect (WID ("visual_alerts_test_button"), + g_signal_connect (self->visual_alerts_test_button, "clicked", G_CALLBACK (test_flash), NULL); } @@ -702,10 +838,10 @@ on_repeat_keys_toggled (GSettings *settings, const gchar *key, CcUaPanel *self) on = g_settings_get_boolean (settings, KEY_REPEAT_KEYS); - gtk_label_set_text (GTK_LABEL (WID ("value_repeat_keys")), on ? _("On") : _("Off")); + gtk_label_set_text (GTK_LABEL (self->value_repeat_keys), on ? _("On") : _("Off")); - gtk_widget_set_sensitive (WID ("repeat-keys-delay-grid"), on); - gtk_widget_set_sensitive (WID ("repeat-keys-speed-grid"), on); + gtk_widget_set_sensitive (self->repeat_keys_delay_grid, on); + gtk_widget_set_sensitive (self->repeat_keys_speed_grid, on); } static void @@ -715,7 +851,7 @@ on_cursor_blinking_toggled (GSettings *settings, const gchar *key, CcUaPanel *se on = g_settings_get_boolean (settings, KEY_CURSOR_BLINKING); - gtk_label_set_text (GTK_LABEL (WID ("value_row_cursor_blinking")), on ? _("On") : _("Off")); + gtk_label_set_text (GTK_LABEL (self->value_row_cursor_blinking), on ? _("On") : _("Off")); } static void @@ -727,7 +863,7 @@ update_accessx_label (GSettings *settings, const gchar *key, CcUaPanel *self) g_settings_get_boolean (settings, KEY_SLOWKEYS_ENABLED) || g_settings_get_boolean (settings, KEY_BOUNCEKEYS_ENABLED); - gtk_label_set_text (GTK_LABEL (WID ("value_accessx")), on ? _("On") : _("Off")); + gtk_label_set_text (GTK_LABEL (self->value_accessx), on ? _("On") : _("Off")); } static void @@ -736,9 +872,8 @@ cc_ua_panel_init_keyboard (CcUaPanel *self) GtkWidget *list; GtkWidget *w; GtkWidget *sw; - GtkWidget *dialog; - list = WID ("list_typing"); + list = self->list_typing; add_section (list, self); add_separators (GTK_LIST_BOX (list)); @@ -747,56 +882,53 @@ cc_ua_panel_init_keyboard (CcUaPanel *self) G_CALLBACK (activate_row), self); /* on-screen keyboard */ - sw = WID ("screen_keyboard_switch"); g_settings_bind (self->application_settings, KEY_SCREEN_KEYBOARD_ENABLED, - sw, "active", + self->screen_keyboard_switch, "active", G_SETTINGS_BIND_DEFAULT); /* Repeat keys */ g_signal_connect (self->kb_desktop_settings, "changed", G_CALLBACK (on_repeat_keys_toggled), self); - dialog = WID ("repeat_keys_dialog"); - self->toplevels = g_slist_prepend (self->toplevels, dialog); + self->toplevels = g_slist_prepend (self->toplevels, self->repeat_keys_dialog); - g_object_set_data (G_OBJECT (WID ("row_repeat_keys")), "dialog", dialog); + g_object_set_data (G_OBJECT (self->row_repeat_keys), "dialog", self->repeat_keys_dialog); - g_signal_connect (dialog, "delete-event", + g_signal_connect (self->repeat_keys_dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); - sw = WID ("repeat_keys_switch"); + sw = self->repeat_keys_switch; g_settings_bind (self->kb_desktop_settings, KEY_REPEAT_KEYS, sw, "active", G_SETTINGS_BIND_DEFAULT); on_repeat_keys_toggled (self->kb_desktop_settings, NULL, self); g_settings_bind (self->kb_desktop_settings, "delay", - gtk_range_get_adjustment (GTK_RANGE (WID ("repeat_keys_delay_scale"))), "value", + gtk_range_get_adjustment (GTK_RANGE (self->repeat_keys_delay_scale)), "value", G_SETTINGS_BIND_DEFAULT); g_settings_bind (self->kb_desktop_settings, "repeat-interval", - gtk_range_get_adjustment (GTK_RANGE (WID ("repeat_keys_speed_scale"))), "value", + gtk_range_get_adjustment (GTK_RANGE (self->repeat_keys_speed_scale)), "value", G_SETTINGS_BIND_DEFAULT); /* Cursor Blinking */ g_signal_connect (self->interface_settings, "changed", G_CALLBACK (on_cursor_blinking_toggled), self); - dialog = WID ("cursor_blinking_dialog"); - self->toplevels = g_slist_prepend (self->toplevels, dialog); + self->toplevels = g_slist_prepend (self->toplevels, self->cursor_blinking_dialog); - g_object_set_data (G_OBJECT (WID ("row_cursor_blinking")), "dialog", dialog); + g_object_set_data (G_OBJECT (self->row_cursor_blinking), "dialog", self->cursor_blinking_dialog); - g_signal_connect (dialog, "delete-event", + g_signal_connect (self->cursor_blinking_dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); - sw = WID ("cursor_blinking_switch"); + sw = self->cursor_blinking_switch; g_settings_bind (self->interface_settings, KEY_CURSOR_BLINKING, sw, "active", G_SETTINGS_BIND_DEFAULT); on_cursor_blinking_toggled (self->interface_settings, NULL, self); g_settings_bind (self->interface_settings, KEY_CURSOR_BLINKING_TIME, - gtk_range_get_adjustment (GTK_RANGE (WID ("cursor_blinking_scale"))), "value", + gtk_range_get_adjustment (GTK_RANGE (self->cursor_blinking_scale)), "value", G_SETTINGS_BIND_DEFAULT); @@ -806,85 +938,84 @@ cc_ua_panel_init_keyboard (CcUaPanel *self) update_accessx_label (self->kb_settings, NULL, self); /* enable shortcuts */ - sw = WID ("typing_keyboard_toggle_switch"); + sw = self->typing_keyboard_toggle_switch; g_settings_bind (self->kb_settings, KEY_KEYBOARD_TOGGLE, sw, "active", G_SETTINGS_BIND_DEFAULT); /* sticky keys */ - sw = WID ("typing_stickykeys_switch"); + sw = self->typing_stickykeys_switch; g_settings_bind (self->kb_settings, KEY_STICKYKEYS_ENABLED, sw, "active", G_SETTINGS_BIND_DEFAULT); - w = WID ("typing_stickykeys_disable_two_keys_check"); + w = self->typing_stickykeys_disable_two_keys_check; g_settings_bind (self->kb_settings, KEY_STICKYKEYS_TWO_KEY_OFF, w, "active", G_SETTINGS_BIND_NO_SENSITIVITY); g_object_bind_property (sw, "active", w, "sensitive", G_BINDING_SYNC_CREATE); - w = WID ("typing_stickykeys_beep_modifier_check"); + w = self->typing_stickykeys_beep_modifier_check; g_settings_bind (self->kb_settings, KEY_STICKYKEYS_MODIFIER_BEEP, w, "active", G_SETTINGS_BIND_NO_SENSITIVITY); g_object_bind_property (sw, "active", w, "sensitive", G_BINDING_SYNC_CREATE); /* slow keys */ - sw = WID ("typing_slowkeys_switch"); + sw = self->typing_slowkeys_switch; g_settings_bind (self->kb_settings, KEY_SLOWKEYS_ENABLED, sw, "active", G_SETTINGS_BIND_DEFAULT); - w = WID ("typing_slowkeys_delay_scale"); + w = self->typing_slowkeys_delay_scale; g_settings_bind (self->kb_settings, KEY_SLOWKEYS_DELAY, gtk_range_get_adjustment (GTK_RANGE (w)), "value", G_SETTINGS_BIND_DEFAULT); - w = WID ("typing_slowkeys_delay_box"); + w = self->typing_slowkeys_delay_box; g_object_bind_property (sw, "active", w, "sensitive", G_BINDING_SYNC_CREATE); - w = WID ("typing_slowkeys_beep_pressed_check"); + w = self->typing_slowkeys_beep_pressed_check; g_settings_bind (self->kb_settings, KEY_SLOWKEYS_BEEP_PRESS, w, "active", G_SETTINGS_BIND_DEFAULT); g_object_bind_property (sw, "active", w, "sensitive", G_BINDING_SYNC_CREATE); - w = WID ("typing_slowkeys_beep_accepted_check"); + w = self->typing_slowkeys_beep_accepted_check; g_settings_bind (self->kb_settings, KEY_SLOWKEYS_BEEP_ACCEPT, w, "active", G_SETTINGS_BIND_DEFAULT); g_object_bind_property (sw, "active", w, "sensitive", G_BINDING_SYNC_CREATE); - w = WID ("typing_slowkeys_beep_rejected_check"); + w = self->typing_slowkeys_beep_rejected_check; g_settings_bind (self->kb_settings, KEY_SLOWKEYS_BEEP_REJECT, w, "active", G_SETTINGS_BIND_DEFAULT); g_object_bind_property (sw, "active", w, "sensitive", G_BINDING_SYNC_CREATE); /* bounce keys */ - sw = WID ("typing_bouncekeys_switch"); + sw = self->typing_bouncekeys_switch; g_settings_bind (self->kb_settings, KEY_BOUNCEKEYS_ENABLED, sw, "active", G_SETTINGS_BIND_DEFAULT); - w = WID ("typing_bouncekeys_delay_scale"); + w = self->typing_bouncekeys_delay_scale; g_settings_bind (self->kb_settings, KEY_BOUNCEKEYS_DELAY, gtk_range_get_adjustment (GTK_RANGE (w)), "value", G_SETTINGS_BIND_DEFAULT); - w = WID ("typing_bouncekeys_delay_box"); + w = self->typing_bouncekeys_delay_box; g_object_bind_property (sw, "active", w, "sensitive", G_BINDING_SYNC_CREATE); - w = WID ("typing_bouncekeys_beep_rejected_check"); + w = self->typing_bouncekeys_beep_rejected_check; g_settings_bind (self->kb_settings, KEY_BOUNCEKEYS_BEEP_REJECT, w, "active", G_SETTINGS_BIND_NO_SENSITIVITY); g_object_bind_property (sw, "active", w, "sensitive", G_BINDING_SYNC_CREATE); - dialog = WID ("typing_dialog"); - self->toplevels = g_slist_prepend (self->toplevels, dialog); + self->toplevels = g_slist_prepend (self->toplevels, self->typing_dialog); - g_object_set_data (G_OBJECT (WID ("row_accessx")), "dialog", dialog); + g_object_set_data (G_OBJECT (self->row_accessx), "dialog", self->typing_dialog); - g_signal_connect (dialog, "delete-event", + g_signal_connect (self->typing_dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); } @@ -897,7 +1028,7 @@ update_click_assist_label (GSettings *settings, const gchar *key, CcUaPanel *sel on = g_settings_get_boolean (settings, KEY_SECONDARY_CLICK_ENABLED) || g_settings_get_boolean (settings, KEY_DWELL_CLICK_ENABLED); - gtk_label_set_text (GTK_LABEL (WID ("value_click_assist")), on ? _("On") : _("Off")); + gtk_label_set_text (GTK_LABEL (self->value_click_assist), on ? _("On") : _("Off")); } @@ -905,11 +1036,10 @@ static void cc_ua_panel_init_mouse (CcUaPanel *self) { GtkWidget *list; - GtkWidget *dialog; GtkWidget *sw; GtkWidget *w; - list = WID ("list_pointing"); + list = self->list_pointing; add_section (list, self); add_separators (GTK_LIST_BOX (list)); @@ -918,7 +1048,7 @@ cc_ua_panel_init_mouse (CcUaPanel *self) G_CALLBACK (activate_row), self); g_settings_bind (self->kb_settings, KEY_MOUSEKEYS_ENABLED, - WID ("mouse_keys_switch"), "active", + self->mouse_keys_switch, "active", G_SETTINGS_BIND_DEFAULT); g_signal_connect (self->mouse_settings, "changed", @@ -926,61 +1056,59 @@ cc_ua_panel_init_mouse (CcUaPanel *self) update_click_assist_label (self->mouse_settings, NULL, self); /* simulated secondary click */ - sw = WID ("pointing_secondary_click_switch"); + sw = self->pointing_secondary_click_switch; g_settings_bind (self->mouse_settings, KEY_SECONDARY_CLICK_ENABLED, sw, "active", G_SETTINGS_BIND_DEFAULT); - w = WID ("pointing_secondary_click_delay_scale"); + w = self->pointing_secondary_click_delay_scale; g_settings_bind (self->mouse_settings, KEY_SECONDARY_CLICK_TIME, gtk_range_get_adjustment (GTK_RANGE (w)), "value", G_SETTINGS_BIND_DEFAULT); - w = WID ("pointing_secondary_click_delay_box"); + w = self->pointing_secondary_click_delay_box; g_object_bind_property (sw, "active", w, "sensitive", G_BINDING_SYNC_CREATE); /* dwell click */ - sw = WID ("pointing_hover_click_switch"); + sw = self->pointing_hover_click_switch; g_settings_bind (self->mouse_settings, KEY_DWELL_CLICK_ENABLED, sw, "active", G_SETTINGS_BIND_DEFAULT); - w = WID ("pointing_dwell_delay_scale"); + w = self->pointing_dwell_delay_scale; g_settings_bind (self->mouse_settings, KEY_DWELL_TIME, gtk_range_get_adjustment (GTK_RANGE (w)), "value", G_SETTINGS_BIND_DEFAULT); - w = WID ("pointing_dwell_delay_box"); + w = self->pointing_dwell_delay_box; g_object_bind_property (sw, "active", w, "sensitive", G_BINDING_SYNC_CREATE); - w = WID ("pointing_dwell_threshold_scale"); + w = self->pointing_dwell_threshold_scale; g_settings_bind (self->mouse_settings, KEY_DWELL_THRESHOLD, gtk_range_get_adjustment (GTK_RANGE (w)), "value", G_SETTINGS_BIND_DEFAULT); - w = WID ("pointing_dwell_threshold_box"); + w = self->pointing_dwell_threshold_box; g_object_bind_property (sw, "active", w, "sensitive", G_BINDING_SYNC_CREATE); - dialog = WID ("pointing_dialog"); - self->toplevels = g_slist_prepend (self->toplevels, dialog); + self->toplevels = g_slist_prepend (self->toplevels, self->pointing_dialog); - g_object_set_data (G_OBJECT (WID ("row_click_assist")), "dialog", dialog); + g_object_set_data (G_OBJECT (self->row_click_assist), "dialog", self->pointing_dialog); g_settings_bind (self->gsd_mouse_settings, "double-click", - gtk_range_get_adjustment (GTK_RANGE (WID ("scale_double_click_delay"))), "value", + gtk_range_get_adjustment (GTK_RANGE (self->scale_double_click_delay)), "value", G_SETTINGS_BIND_DEFAULT); - gtk_scale_add_mark (GTK_SCALE (WID ("scale_double_click_delay")), 400, GTK_POS_BOTTOM, NULL); + gtk_scale_add_mark (GTK_SCALE (self->scale_double_click_delay), 400, GTK_POS_BOTTOM, NULL); - g_signal_connect (dialog, "delete-event", + g_signal_connect (self->pointing_dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); } static void cc_ua_panel_init (CcUaPanel *self) { - GtkWidget *panel; - GtkWidget *content; - g_resources_register (cc_universal_access_get_resource ()); + gtk_widget_init_template (GTK_WIDGET (self)); + self->interface_settings = g_settings_new (INTERFACE_SETTINGS); self->a11y_settings = g_settings_new (A11Y_SETTINGS); self->wm_settings = g_settings_new (WM_SETTINGS); @@ -990,25 +1118,14 @@ cc_ua_panel_init (CcUaPanel *self) self->gsd_mouse_settings = g_settings_new (GSD_MOUSE_SETTINGS); self->application_settings = g_settings_new (APPLICATION_SETTINGS); - self->builder = gtk_builder_new (); - gtk_builder_add_from_resource (self->builder, - - "/org/gnome/control-center/universal-access/uap.ui", - NULL); - cc_ua_panel_init_status (self); cc_ua_panel_init_seeing (self); cc_ua_panel_init_hearing (self); cc_ua_panel_init_keyboard (self); cc_ua_panel_init_mouse (self); - panel = WID ("universal_access_panel"); - content = WID ("universal_access_content"); - - gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (panel), SCROLL_HEIGHT); - - self->focus_adjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (panel)); - gtk_container_set_focus_vadjustment (GTK_CONTAINER (content), self->focus_adjustment); + gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (self->universal_access_panel), SCROLL_HEIGHT); - gtk_container_add (GTK_CONTAINER (self), panel); + self->focus_adjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->universal_access_panel)); + gtk_container_set_focus_vadjustment (GTK_CONTAINER (self->universal_access_content), self->focus_adjustment); } diff --git a/panels/universal-access/uap.ui b/panels/universal-access/uap.ui index e3cef7cdd..3c0622a24 100644 --- a/panels/universal-access/uap.ui +++ b/panels/universal-access/uap.ui @@ -31,6 +31,10 @@ <property name="page_increment">200</property> </object> <!-- interface-requires gtk+ 3.0 --> + <template class="CcUaPanel" parent="CcPanel"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <child> <object class="GtkScrolledWindow" id="universal_access_panel"> <property name="visible">True</property> <property name="can_focus">True</property> @@ -1014,6 +1018,8 @@ </object> </child> </object> + </child> + </template> <object class="GtkAdjustment" id="text_scaling_factor_adjustment"> <property name="lower">0.5</property> <property name="upper">3</property> @@ -1447,11 +1453,11 @@ </object> </child> <child internal-child="vbox"> - <object class="GtkBox" id="repeat-keys-vbox5"> + <object class="GtkBox" id="repeat_keys_vbox5"> <property name="can_focus">False</property> <property name="orientation">vertical</property> <child> - <object class="GtkLabel" id="repeat-keys-description"> + <object class="GtkLabel" id="repeat_keys_description"> <property name="visible">True</property> <property name="use_underline">True</property> <property name="can_focus">False</property> @@ -1469,7 +1475,7 @@ </packing> </child> <child> - <object class="GtkGrid" id="repeat-keys-delay-grid"> + <object class="GtkGrid" id="repeat_keys_delay_grid"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="valign">start</property> @@ -1481,19 +1487,19 @@ <property name="row_spacing">18</property> <property name="column_spacing">24</property> <child> - <object class="GtkBox" id="repeat-keys-box6"> + <object class="GtkBox" id="repeat_keys_box6"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="valign">start</property> <property name="orientation">vertical</property> <property name="spacing">6</property> <child> - <object class="GtkBox" id="repeat-keys-box7"> + <object class="GtkBox" id="repeat_keys_box7"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="orientation">vertical</property> <child> - <object class="GtkLabel" id="repeat-keys-delay-label"> + <object class="GtkLabel" id="repeat_keys_delay_label"> <property name="visible">True</property> <property name="use_underline">True</property> <property name="can_focus">False</property> @@ -1554,7 +1560,7 @@ </packing> </child> <child> - <object class="GtkGrid" id="repeat-keys-speed-grid"> + <object class="GtkGrid" id="repeat_keys_speed_grid"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="valign">start</property> @@ -1566,19 +1572,19 @@ <property name="row_spacing">18</property> <property name="column_spacing">24</property> <child> - <object class="GtkBox" id="repeat-keys-speed-box7"> + <object class="GtkBox" id="repeat_keys_speed-box7"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="valign">start</property> <property name="orientation">vertical</property> <property name="spacing">6</property> <child> - <object class="GtkBox" id="repeat-keys-speed-box8"> + <object class="GtkBox" id="repeat_keys_speed-box8"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="orientation">vertical</property> <child> - <object class="GtkLabel" id="repeat-keys-speed-label"> + <object class="GtkLabel" id="repeat_keys_speed_label"> <property name="visible">True</property> <property name="use_underline">True</property> <property name="can_focus">False</property> @@ -1711,7 +1717,7 @@ <property name="can_focus">False</property> <property name="orientation">vertical</property> <child> - <object class="GtkLabel" id="cursor_blinking-label"> + <object class="GtkLabel" id="cursor_blinking_label"> <property name="visible">True</property> <property name="use_underline">True</property> <property name="can_focus">False</property> @@ -1774,13 +1780,13 @@ </object> </child> </object> - <object class="GtkSizeGroup" id="repeat-keys-dialog-labels-sizegroup"> + <object class="GtkSizeGroup" id="repeat_keys_dialog_labels_sizegroup"> <widgets> - <widget name="repeat-keys-delay-label"/> - <widget name="repeat-keys-speed-label"/> + <widget name="repeat_keys_delay_label"/> + <widget name="repeat_keys_speed_label"/> </widgets> </object> - <object class="GtkSizeGroup" id="repeat-keys-dialog-scales-sizegroup"> + <object class="GtkSizeGroup" id="repeat_keys_dialog_scales_sizegroup"> <widgets> <widget name="repeat_keys_delay_scale"/> <widget name="repeat_keys_speed_scale"/> |