added A11Y applications to the default applications capplet.

2007-04-23  George Kraft IV <gk4@austin.ibm.com>

	* configure.in:
	* capplets/default-applications/*: added A11Y applications to the
	default applications capplet.

svn path=/trunk/; revision=7484
This commit is contained in:
George Kraft IV 2007-04-23 15:04:41 +00:00 committed by Rodrigo Moya
parent c23e87b689
commit f912cb6f4a
10 changed files with 948 additions and 2 deletions

View file

@ -1,3 +1,9 @@
2007-04-23 George Kraft IV <gk4@austin.ibm.com>
* configure.in:
* capplets/default-applications/*: added A11Y applications to the
default applications capplet.
2007-04-09 Rodrigo Moya <rodrigo@gnome-db.org>
* configure.in: build libslab statically, to avoid conflicts with

View file

@ -3,6 +3,8 @@ cappletname = default-applications
bin_PROGRAMS = gnome-default-applications-properties
bin_SCRIPTS = gnome-at-visual gnome-at-mobility
gnome_default_applications_properties_LDADD = $(GNOMECC_CAPPLETS_LIBS)
gnome_default_applications_properties_SOURCES = \
gnome-da-capplet.c gnome-da-capplet.h \
@ -14,10 +16,22 @@ gnome_default_applications_properties_SOURCES = \
gladedir = $(pkgdatadir)/glade
glade_DATA = gnome-default-applications-properties.glade
gnome-at-visual: gnome-at-commandline.in
cp $< $@
gnome-at-mobility: gnome-at-commandline.in
cp $< $@
desktopdir = $(datadir)/applications
Desktop_in_files = default-applications.desktop.in
Desktop_in_files = default-applications.desktop.in \
default-applications-accessibility.desktop.in \
gnome-at-visual.desktop.in gnome-at-mobility.desktop.in
desktop_DATA = $(Desktop_in_files:.desktop.in=.desktop)
autostartdir = $(datadir)/gnome/autostart
autostart_in_files = gnome-at-session.desktop.in
autostart_DATA = $(autostart_in_files:.desktop.in=.desktop)
xmldata_in_files = gnome-default-applications.xml.in
xmldatadir = $(pkgdatadir)
xmldata_DATA = $(xmldata_in_files:.xml.in=.xml)
@ -31,5 +45,6 @@ INCLUDES = \
-DGNOMECC_DATA_DIR=\""$(pkgdatadir)"\"
noinst_DATA = gnome-default-applications.xml.in
CLEANFILES = $(GNOMECC_CAPPLETS_CLEANFILES) $(Desktop_in_files) $(desktop_DATA) $(xmldata_DATA)
CLEANFILES = $(GNOMECC_CAPPLETS_CLEANFILES) $(Desktop_in_files) $(desktop_DATA) $(xmldata_DATA) $(autostart_DATA)
EXTRA_DIST = $(glade_DATA) gnome-default-applications.xml.in

View file

@ -81,6 +81,12 @@ entry_focus_out_event_cb (GtkWidget *widget, GdkEventFocus *event, GnomeDACapple
g_error_free (error);
error = NULL;
}
else if (widget == capplet->visual_command_entry) {
gconf_client_set_string (capplet->gconf, DEFAULT_APPS_KEY_VISUAL_EXEC, text, &error);
}
else if (widget == capplet->mobility_command_entry) {
gconf_client_set_string (capplet->gconf, DEFAULT_APPS_KEY_MOBILITY_EXEC, text, &error);
}
return FALSE;
}
@ -110,6 +116,45 @@ terminal_checkbutton_toggled_cb (GtkToggleButton *togglebutton, GnomeDACapplet *
}
}
static void
visual_checkbutton_toggled_cb (GtkToggleButton *togglebutton, GnomeDACapplet *capplet)
{
gboolean is_active;
GError *error = NULL;
is_active = gtk_toggle_button_get_active (togglebutton);
if (GTK_WIDGET (togglebutton) == capplet->visual_startup_checkbutton) {
gconf_client_set_bool (capplet->gconf, DEFAULT_APPS_KEY_VISUAL_STARTUP, is_active, &error);
}
if (error != NULL) {
g_warning (_("Error saving configuration: %s"), error->message);
g_error_free (error);
error = NULL;
}
}
static void
mobility_checkbutton_toggled_cb (GtkToggleButton *togglebutton, GnomeDACapplet *capplet)
{
gboolean is_active;
GError *error = NULL;
is_active = gtk_toggle_button_get_active (togglebutton);
if (GTK_WIDGET (togglebutton) == capplet->mobility_startup_checkbutton) {
gconf_client_set_bool (capplet->gconf, DEFAULT_APPS_KEY_MOBILITY_STARTUP, is_active, &error);
}
if (error != NULL) {
g_warning (_("Error saving configuration: %s"), error->message);
g_error_free (error);
error = NULL;
}
}
static void
set_icon (GtkImage *image, GtkIconTheme *theme, const char *name)
{
@ -377,6 +422,103 @@ terminal_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet)
gtk_widget_set_sensitive (capplet->terminal_exec_flag_label, is_custom_active);
}
static void
visual_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet)
{
GtkTreeIter iter;
GtkTreePath *path;
guint current_index;
gboolean is_custom_active;
GnomeDAVisualItem *item;
GConfChangeSet *cs;
GError *error = NULL;
gtk_combo_box_get_active_iter (combo, &iter);
path = gtk_tree_model_get_path (gtk_combo_box_get_model (combo), &iter);
current_index = gtk_tree_path_get_indices (path)[0];
gtk_tree_path_free (path);
if (current_index < g_list_length (capplet->visual_ats)) {
item = (GnomeDAVisualItem*) g_list_nth_data (capplet->visual_ats, current_index);
is_custom_active = FALSE;
cs = gconf_change_set_new ();
gconf_change_set_set_string (cs, DEFAULT_APPS_KEY_VISUAL_EXEC, item->generic.command);
gconf_change_set_set_bool (cs, DEFAULT_APPS_KEY_VISUAL_STARTUP, item->run_at_startup);
gconf_client_commit_change_set (capplet->gconf, cs, TRUE, &error);
if (error != NULL) {
g_warning (_("Error saving configuration: %s"), error->message);
g_error_free (error);
error = NULL;
}
gconf_change_set_unref (cs);
}
else {
is_custom_active = TRUE;
}
gtk_entry_set_text (GTK_ENTRY (capplet->visual_command_entry),
gconf_client_get_string (capplet->gconf, DEFAULT_APPS_KEY_VISUAL_EXEC, NULL));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->visual_startup_checkbutton),
gconf_client_get_bool (capplet->gconf, DEFAULT_APPS_KEY_VISUAL_STARTUP, NULL));
gtk_editable_set_editable (GTK_EDITABLE (capplet->visual_command_entry), is_custom_active);
gtk_widget_set_sensitive (capplet->visual_command_label, is_custom_active);
}
static void
mobility_combo_changed_cb (GtkComboBox *combo, GnomeDACapplet *capplet)
{
GtkTreeIter iter;
GtkTreePath *path;
guint current_index;
gboolean is_custom_active;
GnomeDAMobilityItem *item;
GConfChangeSet *cs;
GError *error = NULL;
gtk_combo_box_get_active_iter (combo, &iter);
path = gtk_tree_model_get_path (gtk_combo_box_get_model (combo), &iter);
current_index = gtk_tree_path_get_indices (path)[0];
gtk_tree_path_free (path);
if (current_index < g_list_length (capplet->mobility_ats)) {
item = (GnomeDAMobilityItem*) g_list_nth_data (capplet->mobility_ats, current_index);
is_custom_active = FALSE;
cs = gconf_change_set_new ();
gconf_change_set_set_string (cs, DEFAULT_APPS_KEY_MOBILITY_EXEC, item->generic.command);
gconf_change_set_set_bool (cs, DEFAULT_APPS_KEY_MOBILITY_STARTUP, item->run_at_startup);
gconf_client_commit_change_set (capplet->gconf, cs, TRUE, &error);
if (error != NULL) {
g_warning (_("Error saving configuration: %s"), error->message);
g_error_free (error);
error = NULL;
}
gconf_change_set_unref (cs);
}
else {
is_custom_active = TRUE;
}
gtk_entry_set_text (GTK_ENTRY (capplet->mobility_command_entry),
gconf_client_get_string (capplet->gconf, DEFAULT_APPS_KEY_MOBILITY_EXEC, NULL));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->mobility_startup_checkbutton),
gconf_client_get_bool (capplet->gconf, DEFAULT_APPS_KEY_MOBILITY_STARTUP, NULL));
gtk_editable_set_editable (GTK_EDITABLE (capplet->mobility_command_entry), is_custom_active);
gtk_widget_set_sensitive (capplet->mobility_command_label, is_custom_active);
}
static void
refresh_combo_box_icons (GtkIconTheme *theme, GtkComboBox *combo_box, GList *app_list)
{
@ -411,6 +553,8 @@ static struct {
{ "web_browser_image", "web-browser" },
{ "mail_reader_image", "stock_mail-open" },
{ "media_player_image", "gnome-audio" },
{ "visual_image", "gnome-searchtool" },
{ "mobility_image", "icon-accessibility" },
/* { "messenger_image", "im" },
* { "image_image", "image-viewer" },
* { "video_image", "gnome-multimedia" },
@ -433,6 +577,8 @@ theme_changed_cb (GtkIconTheme *theme, GnomeDACapplet *capplet)
refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->mail_combo_box), capplet->mail_readers);
refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->media_combo_box), capplet->media_players);
refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->term_combo_box), capplet->terminals);
refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->visual_combo_box), capplet->visual_ats);
refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->mobility_combo_box), capplet->mobility_ats);
}
static void
@ -643,6 +789,63 @@ terminal_update_combo_box (GnomeDACapplet *capplet, const gchar *command)
gtk_combo_box_set_active (GTK_COMBO_BOX (capplet->term_combo_box), index);
}
static void
visual_update_combo_box (GnomeDACapplet *capplet, const gchar *command)
{
GList *entry;
gint index;
gboolean is_custom_active;
entry = g_list_find_custom (capplet->visual_ats, command, (GCompareFunc) generic_item_comp);
if (entry) {
index = g_list_position (capplet->visual_ats, entry);
is_custom_active = FALSE;
}
else {
/* index of 'Custom' combo box entry */
index = g_list_length (capplet->visual_ats) + 1;
is_custom_active = TRUE;
}
gtk_entry_set_text (GTK_ENTRY (capplet->visual_command_entry), command);
gtk_editable_set_editable (GTK_EDITABLE (capplet->visual_command_entry), is_custom_active);
gtk_widget_set_sensitive (capplet->visual_command_label, is_custom_active);
if (gtk_combo_box_get_active (GTK_COMBO_BOX (capplet->visual_combo_box)) != index)
gtk_combo_box_set_active (GTK_COMBO_BOX (capplet->visual_combo_box), index);
}
static void
mobility_update_combo_box (GnomeDACapplet *capplet, const gchar *command)
{
GList *entry;
gint index;
gboolean is_custom_active;
entry = g_list_find_custom (capplet->mobility_ats, command, (GCompareFunc) generic_item_comp);
if (entry) {
index = g_list_position (capplet->mobility_ats, entry);
is_custom_active = FALSE;
}
else {
/* index of 'Custom' combo box entry */
index = g_list_length (capplet->mobility_ats) + 1;
is_custom_active = TRUE;
}
gtk_entry_set_text (GTK_ENTRY (capplet->mobility_command_entry), command);
gtk_editable_set_editable (GTK_EDITABLE (capplet->mobility_command_entry), is_custom_active);
gtk_widget_set_sensitive (capplet->mobility_command_label, is_custom_active);
if (gtk_combo_box_get_active (GTK_COMBO_BOX (capplet->mobility_combo_box)) != index)
gtk_combo_box_set_active (GTK_COMBO_BOX (capplet->mobility_combo_box), index);
}
static void
web_gconf_changed_cb (GConfClient *client, guint id, GConfEntry *entry, GnomeDACapplet *capplet)
{
@ -781,6 +984,47 @@ term_gconf_changed_cb (GConfClient *client, guint id, GConfEntry *entry, GnomeDA
}
}
static void
visual_gconf_changed_cb (GConfClient *client, guint id, GConfEntry *entry, GnomeDACapplet *capplet)
{
GConfValue *value;
g_return_if_fail (gconf_entry_get_key (entry) != NULL);
if (!(value = gconf_entry_get_value (entry)))
return;
if (strcmp (entry->key, DEFAULT_APPS_KEY_VISUAL_EXEC) == 0) {
visual_update_combo_box (capplet, gconf_value_get_string (value));
}
/* TODO: Remove when GConfPropertyEditor will be used */
else if (strcmp (entry->key, DEFAULT_APPS_KEY_VISUAL_STARTUP) == 0) {
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->visual_startup_checkbutton),
gconf_value_get_bool (value));
}
}
static void
mobility_gconf_changed_cb (GConfClient *client, guint id, GConfEntry *entry, GnomeDACapplet *capplet)
{
GConfValue *value;
g_return_if_fail (gconf_entry_get_key (entry) != NULL);
if (!(value = gconf_entry_get_value (entry)))
return;
if (strcmp (entry->key, DEFAULT_APPS_KEY_MOBILITY_EXEC) == 0) {
mobility_update_combo_box (capplet, gconf_value_get_string (value));
}
/* TODO: Remove when GConfPropertyEditor will be used */
else if (strcmp (entry->key, DEFAULT_APPS_KEY_MOBILITY_STARTUP) == 0) {
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->mobility_startup_checkbutton),
gconf_value_get_bool (value));
}
}
static gboolean
is_separator (GtkTreeModel *model, GtkTreeIter *iter, gpointer sep_index)
{
@ -904,10 +1148,20 @@ show_dialog (GnomeDACapplet *capplet)
capplet->media_player_command_label = glade_xml_get_widget (capplet->xml, "media_player_command_label");
capplet->media_player_terminal_checkbutton = glade_xml_get_widget (capplet->xml, "media_player_terminal_checkbutton");
capplet->visual_command_entry = glade_xml_get_widget (capplet->xml, "visual_command_entry");
capplet->visual_command_label = glade_xml_get_widget (capplet->xml, "visual_command_label");
capplet->visual_startup_checkbutton = glade_xml_get_widget (capplet->xml, "visual_start_checkbutton");
capplet->mobility_command_entry = glade_xml_get_widget (capplet->xml, "mobility_command_entry");
capplet->mobility_command_label = glade_xml_get_widget (capplet->xml, "mobility_command_label");
capplet->mobility_startup_checkbutton = glade_xml_get_widget (capplet->xml, "mobility_start_checkbutton");
capplet->web_combo_box = glade_xml_get_widget (capplet->xml, "web_browser_combobox");
capplet->mail_combo_box = glade_xml_get_widget (capplet->xml, "mail_reader_combobox");
capplet->term_combo_box = glade_xml_get_widget (capplet->xml, "terminal_combobox");
capplet->media_combo_box = glade_xml_get_widget (capplet->xml, "media_player_combobox");
capplet->visual_combo_box = glade_xml_get_widget (capplet->xml, "visual_combobox");
capplet->mobility_combo_box = glade_xml_get_widget (capplet->xml, "mobility_combobox");
g_signal_connect (capplet->window, "screen-changed", G_CALLBACK (screen_changed_cb), capplet);
screen_changed_cb (capplet->window, gdk_screen_get_default (), capplet);
@ -916,6 +1170,8 @@ show_dialog (GnomeDACapplet *capplet)
fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->mail_combo_box), capplet->mail_readers);
fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->term_combo_box), capplet->terminals);
fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->media_combo_box), capplet->media_players);
fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->visual_combo_box), capplet->visual_ats);
fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->mobility_combo_box), capplet->mobility_ats);
/* update ui to gconf content */
value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_HTTP_EXEC, NULL);
@ -979,10 +1235,48 @@ show_dialog (GnomeDACapplet *capplet)
gconf_value_free (value);
}
value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_VISUAL_EXEC, NULL);
if (value)
{
visual_update_combo_box (capplet, gconf_value_get_string (value));
gconf_value_free (value);
}
value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_VISUAL_STARTUP, NULL);
if (value)
{
gtk_toggle_button_set_active (
GTK_TOGGLE_BUTTON (capplet->visual_startup_checkbutton),
gconf_value_get_bool (value));
gconf_value_free (value);
}
value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_MOBILITY_EXEC, NULL);
if (value)
{
mobility_update_combo_box (capplet, gconf_value_get_string (value));
gconf_value_free (value);
}
value = gconf_client_get (capplet->gconf, DEFAULT_APPS_KEY_MOBILITY_STARTUP, NULL);
if (value)
{
gtk_toggle_button_set_active (
GTK_TOGGLE_BUTTON (capplet->mobility_startup_checkbutton),
gconf_value_get_bool (value));
gconf_value_free (value);
}
g_signal_connect (capplet->web_combo_box, "changed", G_CALLBACK (web_combo_changed_cb), capplet);
g_signal_connect (capplet->mail_combo_box, "changed", G_CALLBACK (mail_combo_changed_cb), capplet);
g_signal_connect (capplet->term_combo_box, "changed", G_CALLBACK (terminal_combo_changed_cb), capplet);
g_signal_connect (capplet->media_combo_box, "changed", G_CALLBACK (media_combo_changed_cb), capplet);
g_signal_connect (capplet->visual_combo_box, "changed", G_CALLBACK (visual_combo_changed_cb), capplet);
g_signal_connect (capplet->mobility_combo_box, "changed", G_CALLBACK (mobility_combo_changed_cb), capplet);
/* TODO: Remove when GConfPropertyEditor will be used */
g_signal_connect (capplet->web_browser_terminal_checkbutton, "toggled",
@ -991,6 +1285,11 @@ show_dialog (GnomeDACapplet *capplet)
G_CALLBACK (terminal_checkbutton_toggled_cb), capplet);
g_signal_connect (capplet->media_player_terminal_checkbutton, "toggled",
G_CALLBACK (terminal_checkbutton_toggled_cb), capplet);
g_signal_connect (capplet->visual_startup_checkbutton, "toggled",
G_CALLBACK (visual_checkbutton_toggled_cb), capplet);
g_signal_connect (capplet->mobility_startup_checkbutton, "toggled",
G_CALLBACK (mobility_checkbutton_toggled_cb), capplet);
/* TODO: Remove when GConfPropertyEditor will be used */
g_signal_connect (capplet->web_browser_command_entry, "focus-out-event", G_CALLBACK (entry_focus_out_event_cb), capplet);
@ -998,6 +1297,8 @@ show_dialog (GnomeDACapplet *capplet)
g_signal_connect (capplet->terminal_command_entry, "focus-out-event", G_CALLBACK (entry_focus_out_event_cb), capplet);
g_signal_connect (capplet->terminal_exec_flag_entry, "focus-out-event", G_CALLBACK (entry_focus_out_event_cb), capplet);
g_signal_connect (capplet->media_player_command_entry, "focus-out-event", G_CALLBACK (entry_focus_out_event_cb), capplet);
g_signal_connect (capplet->visual_command_entry, "focus-out-event", G_CALLBACK (entry_focus_out_event_cb), capplet);
g_signal_connect (capplet->mobility_command_entry, "focus-out-event", G_CALLBACK (entry_focus_out_event_cb), capplet);
g_signal_connect (capplet->default_radiobutton, "toggled", G_CALLBACK (web_radiobutton_toggled_cb), capplet);
g_signal_connect (capplet->new_win_radiobutton, "toggled", G_CALLBACK (web_radiobutton_toggled_cb), capplet);
@ -1035,6 +1336,7 @@ main (int argc, char **argv)
gconf_client_add_dir (capplet->gconf, "/desktop/gnome/applications/terminal", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
gconf_client_add_dir (capplet->gconf, "/desktop/gnome/applications/media", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
gconf_client_add_dir (capplet->gconf, "/desktop/gnome/url-handlers", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
gconf_client_add_dir (capplet->gconf, "/desktop/gnome/accessibility/at", GCONF_CLIENT_PRELOAD_RECURSIVE, NULL);
gconf_client_notify_add (capplet->gconf, DEFAULT_APPS_KEY_HTTP_PATH,
(GConfClientNotifyFunc) web_gconf_changed_cb,
@ -1048,6 +1350,12 @@ main (int argc, char **argv)
gconf_client_notify_add (capplet->gconf, DEFAULT_APPS_KEY_MEDIA_PATH,
(GConfClientNotifyFunc) media_gconf_changed_cb,
capplet, NULL, NULL);
gconf_client_notify_add (capplet->gconf, DEFAULT_APPS_KEY_VISUAL_PATH,
(GConfClientNotifyFunc) visual_gconf_changed_cb,
capplet, NULL, NULL);
gconf_client_notify_add (capplet->gconf, DEFAULT_APPS_KEY_MOBILITY_PATH,
(GConfClientNotifyFunc) mobility_gconf_changed_cb,
capplet, NULL, NULL);
gnome_da_xml_load_list (capplet);

View file

@ -62,6 +62,14 @@
#define DEFAULT_APPS_KEY_MEDIA_EXEC DEFAULT_APPS_KEY_MEDIA_PATH"/exec"
#define DEFAULT_APPS_KEY_MEDIA_NEEDS_TERM DEFAULT_APPS_KEY_MEDIA_PATH"/needs_term"
#define DEFAULT_APPS_KEY_VISUAL_PATH "/desktop/gnome/applications/at/visual"
#define DEFAULT_APPS_KEY_VISUAL_EXEC DEFAULT_APPS_KEY_VISUAL_PATH"/exec"
#define DEFAULT_APPS_KEY_VISUAL_STARTUP DEFAULT_APPS_KEY_VISUAL_PATH"/startup"
#define DEFAULT_APPS_KEY_MOBILITY_PATH "/desktop/gnome/applications/at/mobility"
#define DEFAULT_APPS_KEY_MOBILITY_EXEC DEFAULT_APPS_KEY_MOBILITY_PATH"/exec"
#define DEFAULT_APPS_KEY_MOBILITY_STARTUP DEFAULT_APPS_KEY_MOBILITY_PATH"/startup"
typedef struct _GnomeDACapplet GnomeDACapplet;
struct _GnomeDACapplet {
@ -75,6 +83,8 @@ struct _GnomeDACapplet {
GtkWidget *mail_combo_box;
GtkWidget *term_combo_box;
GtkWidget *media_combo_box;
GtkWidget *visual_combo_box;
GtkWidget *mobility_combo_box;
GtkWidget *web_browser_command_entry;
GtkWidget *web_browser_command_label;
@ -96,12 +106,22 @@ struct _GnomeDACapplet {
GtkWidget *media_player_command_label;
GtkWidget *media_player_terminal_checkbutton;
GtkWidget *visual_command_entry;
GtkWidget *visual_command_label;
GtkWidget *visual_startup_checkbutton;
GtkWidget *mobility_command_entry;
GtkWidget *mobility_command_label;
GtkWidget *mobility_startup_checkbutton;
GConfClient *gconf;
GList *web_browsers;
GList *mail_readers;
GList *terminals;
GList *media_players;
GList *visual_ats;
GList *mobility_ats;
};
#endif

View file

@ -51,6 +51,26 @@ gnome_da_term_item_new (void)
return item;
}
GnomeDAVisualItem*
gnome_da_visual_item_new (void)
{
GnomeDAVisualItem *item = NULL;
item = g_new0 (GnomeDAVisualItem, 1);
return item;
}
GnomeDAMobilityItem*
gnome_da_mobility_item_new (void)
{
GnomeDAMobilityItem *item = NULL;
item = g_new0 (GnomeDAMobilityItem, 1);
return item;
}
void
gnome_da_web_item_free (GnomeDAWebItem *item)
{
@ -97,3 +117,32 @@ gnome_da_term_item_free (GnomeDATermItem *item)
g_free (item);
}
void
gnome_da_visual_item_free (GnomeDAVisualItem *item)
{
g_return_if_fail (item != NULL);
g_free (item->generic.name);
g_free (item->generic.executable);
g_free (item->generic.command);
g_free (item->generic.icon_name);
g_free (item->generic.icon_path);
g_free (item);
}
void
gnome_da_mobility_item_free (GnomeDAMobilityItem *item)
{
g_return_if_fail (item != NULL);
g_free (item->generic.name);
g_free (item->generic.executable);
g_free (item->generic.command);
g_free (item->generic.icon_name);
g_free (item->generic.icon_path);
g_free (item);
}

View file

@ -28,6 +28,8 @@ typedef struct _GnomeDAItem GnomeDAItem;
typedef struct _GnomeDAWebItem GnomeDAWebItem;
typedef struct _GnomeDATermItem GnomeDATermItem;
typedef struct _GnomeDASimpleItem GnomeDASimpleItem;
typedef struct _GnomeDAVisualItem GnomeDAVisualItem;
typedef struct _GnomeDAMobilityItem GnomeDAMobilityItem;
struct _GnomeDAItem {
gchar *name;
@ -55,11 +57,25 @@ struct _GnomeDATermItem {
gchar *exec_flag;
};
struct _GnomeDAVisualItem {
GnomeDAItem generic;
gboolean run_at_startup;
};
struct _GnomeDAMobilityItem {
GnomeDAItem generic;
gboolean run_at_startup;
};
GnomeDAWebItem* gnome_da_web_item_new (void);
GnomeDATermItem* gnome_da_term_item_new (void);
GnomeDASimpleItem* gnome_da_simple_item_new (void);
GnomeDAVisualItem* gnome_da_visual_item_new (void);
GnomeDAMobilityItem* gnome_da_mobility_item_new (void);
void gnome_da_web_item_free (GnomeDAWebItem *item);
void gnome_da_term_item_free (GnomeDATermItem *item);
void gnome_da_simple_item_free (GnomeDASimpleItem *item);
void gnome_da_visual_item_free (GnomeDAVisualItem *item);
void gnome_da_mobility_item_free (GnomeDAMobilityItem *item);
#endif

View file

@ -133,6 +133,8 @@ gnome_da_xml_load_xml (GnomeDACapplet *capplet, const gchar * filename)
GnomeDASimpleItem *mail_item;
GnomeDASimpleItem *media_item;
GnomeDATermItem *term_item;
GnomeDAVisualItem *visual_item;
GnomeDAMobilityItem *mobility_item;
xml_doc = xmlParseFile (filename);
@ -231,6 +233,48 @@ gnome_da_xml_load_xml (GnomeDACapplet *capplet, const gchar * filename)
}
}
}
else if (!xmlStrncmp (section->name, "a11y-visual", 11)) {
for (element = section->children; element != NULL; element = element->next) {
if (!xmlStrncmp (element->name, "visual", 6)) {
executable = gnome_da_xml_get_string (element,"executable");
if (is_executable_valid (executable)) {
visual_item = gnome_da_visual_item_new ();
visual_item->generic.name = gnome_da_xml_get_string (element, "name");
visual_item->generic.executable = executable;
visual_item->generic.command = gnome_da_xml_get_string (element, "command");
visual_item->generic.icon_name = gnome_da_xml_get_string (element, "icon-name");
visual_item->run_at_startup = gnome_da_xml_get_bool (element, "run-at-startup");
capplet->visual_ats = g_list_append (capplet->visual_ats, visual_item);
}
else
g_free (executable);
}
}
}
else if (!xmlStrncmp (section->name, "a11y-mobility", 13)) {
for (element = section->children; element != NULL; element = element->next) {
if (!xmlStrncmp (element->name, "mobility", 8)) {
executable = gnome_da_xml_get_string (element,"executable");
if (is_executable_valid (executable)) {
mobility_item = gnome_da_mobility_item_new ();
mobility_item->generic.name = gnome_da_xml_get_string (element, "name");
mobility_item->generic.executable = executable;
mobility_item->generic.command = gnome_da_xml_get_string (element, "command");
mobility_item->generic.icon_name = gnome_da_xml_get_string (element, "icon-name");
mobility_item->run_at_startup = gnome_da_xml_get_bool (element, "run-at-startup");
capplet->mobility_ats = g_list_append (capplet->mobility_ats, mobility_item);
}
else
g_free (executable);
}
}
}
}
xmlFreeDoc (xml_doc);
@ -261,10 +305,15 @@ gnome_da_xml_free (GnomeDACapplet *capplet)
g_list_foreach (capplet->mail_readers, (GFunc) gnome_da_simple_item_free, NULL);
g_list_foreach (capplet->terminals, (GFunc) gnome_da_term_item_free, NULL);
g_list_foreach (capplet->media_players, (GFunc) gnome_da_simple_item_free, NULL);
g_list_foreach (capplet->visual_ats, (GFunc) gnome_da_visual_item_free, NULL);
g_list_foreach (capplet->mobility_ats, (GFunc) gnome_da_mobility_item_free, NULL);
g_list_free (capplet->web_browsers);
g_list_free (capplet->mail_readers);
g_list_free (capplet->terminals);
g_list_free (capplet->media_players);
g_list_free (capplet->visual_ats);
g_list_free (capplet->mobility_ats);
g_object_unref (capplet->xml);
g_free (capplet);

View file

@ -1738,6 +1738,400 @@
<property name="type">tab</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="a11y_apps_vbox">
<property name="border_width">12</property>
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">18</property>
<child>
<widget class="GtkVBox" id="visual_vbox">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">6</property>
<child>
<widget class="GtkLabel" id="visual_label">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Visual&lt;/b&gt;</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="visual_hbox">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">12</property>
<child>
<widget class="GtkImage" id="visual_image">
<property name="visible">True</property>
<property name="xalign">0.5</property>
<property name="yalign">0</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="visual_options_vbox">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">6</property>
<child>
<widget class="GtkComboBox" id="visual_combobox">
<property name="visible">True</property>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="visual_start_checkbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Run at st_art</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="active">False</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkTable" id="visual_options_table">
<property name="visible">True</property>
<property name="n_rows">1</property>
<property name="n_columns">2</property>
<property name="homogeneous">False</property>
<property name="row_spacing">6</property>
<property name="column_spacing">12</property>
<child>
<widget class="GtkLabel" id="visual_command_label">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="label" translatable="yes">Co_mmand:</property>
<property name="use_underline">True</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">image_command_entry</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="visual_command_entry">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">All %s occurrences will be replaced with actual link</property>
<property name="can_focus">True</property>
<property name="editable">False</property>
<property name="visibility">True</property>
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
<property name="invisible_char">*</property>
<property name="activates_default">False</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="y_options"></property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="mobility_vbox">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">6</property>
<child>
<widget class="GtkLabel" id="mobility_label">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Mobility&lt;/b&gt;</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="mobility_hbox">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">12</property>
<child>
<widget class="GtkImage" id="mobility_image">
<property name="visible">True</property>
<property name="xalign">0.5</property>
<property name="yalign">0</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="mobility_options_vbox">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">6</property>
<child>
<widget class="GtkComboBox" id="mobility_combobox">
<property name="visible">True</property>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="mobility_start_checkbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Run at st_art</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="active">False</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkTable" id="mobility_options_table">
<property name="visible">True</property>
<property name="n_rows">1</property>
<property name="n_columns">2</property>
<property name="homogeneous">False</property>
<property name="row_spacing">6</property>
<property name="column_spacing">12</property>
<child>
<widget class="GtkLabel" id="mobility_command_label">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="label" translatable="yes">Co_mmand:</property>
<property name="use_underline">True</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">sound_command_entry</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="mobility_command_entry">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">All %s occurrences will be replaced with actual link</property>
<property name="can_focus">True</property>
<property name="editable">False</property>
<property name="visibility">True</property>
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
<property name="invisible_char">*</property>
<property name="activates_default">False</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="y_options"></property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="tab_expand">False</property>
<property name="tab_fill">True</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="a11y_apps_label">
<property name="visible">True</property>
<property name="label" translatable="yes">Accessibility</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="type">tab</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>

View file

@ -367,4 +367,88 @@
</media-player>
</media-players>
<a11y-visual>
<visual>
<_name>Orca</_name>
<executable>orca</executable>
<command>orca</command>
<icon-name>orca</icon-name>
<run-at-start>false</run-at-start>
</visual>
<visual>
<_name>Orca with Magnifier</_name>
<executable>orca</executable>
<command>orca -m</command>
<icon-name>orca</icon-name>
<run-at-start>false</run-at-start>
</visual>
<visual>
<_name>Linux Screen Reader</_name>
<executable>lsr</executable>
<command>lsr</command>
<icon-name>lsr</icon-name>
<run-at-start>false</run-at-start>
</visual>
<visual>
<_name>Linux Screen Reader with Magnifier</_name>
<executable>lsr</executable>
<command>lsr -p mag</command>
<icon-name>lsr</icon-name>
<run-at-start>false</run-at-start>
</visual>
<visual>
<_name>Gnopernicus</_name>
<executable>gnopernicus</executable>
<command>gnopernicus</command>
<icon-name>icon-accessibility</icon-name>
<run-at-start>false</run-at-start>
</visual>
<visual>
<_name>Gnopernicus with Magnifier</_name>
<executable>gnopernicus</executable>
<command>gnopernicus -m</command>
<icon-name>icon-accessibility</icon-name>
<run-at-start>false</run-at-start>
</visual>
<visual>
<_name>GNOME Magnifier without Screen Reader</_name>
<executable>magnifier</executable>
<command>magnifier -m</command>
<icon-name>gnome-searchtool</icon-name>
<run-at-start>false</run-at-start>
</visual>
<visual>
<_name>KDE Magnifier without Screen Reader</_name>
<executable>kmag</executable>
<command>kmag</command>
<icon-name>gnome-searchtool</icon-name>
<run-at-start>false</run-at-start>
</visual>
</a11y-visual>
<a11y-mobility>
<mobility>
<_name>GNOME OnScreen Keyboard</_name>
<executable>gok</executable>
<command>gok</command>
<icon-name>accessibility-keyboard-capplet</icon-name>
<run-at-start>false</run-at-start>
</mobility>
<mobility>
<_name>Simple OnScreen Keyboard</_name>
<executable>sok</executable>
<command>sok</command>
<icon-name>accessibility-keyboard-capplet</icon-name>
<run-at-start>false</run-at-start>
</mobility>
<mobility>
<_name>Dasher</_name>
<executable>dasher</executable>
<command>dasher</command>
<icon-name>gnome-searchtool</icon-name>
<run-at-start>false</run-at-start>
</mobility>
</a11y-mobility>
</default-apps>

View file

@ -610,6 +610,11 @@ capplets/sound/gnome-settings-sound.desktop.in
capplets/theme-switcher/gtk-theme-selector.desktop.in
capplets/theme-switcher/gnome-theme-installer.desktop.in
capplets/default-applications/default-applications.desktop.in
capplets/default-applications/default-applications-accessibility.desktop.in
capplets/default-applications/gnome-at-session.desktop.in
capplets/default-applications/gnome-at-visual.desktop.in
capplets/default-applications/gnome-at-mobility.desktop.in
capplets/default-applications/gnome-at-commandline.in
capplets/accessibility/at-properties/at-properties.desktop.in
capplets/accessibility/keyboard/accessibility-keyboard.desktop.in
capplets/background/background.desktop.in