static GailTextUtil * get_simple_text (gpointer object) { GObject *gobject; EelAccessibleTextIface *aif; if (GTK_IS_ACCESSIBLE (object)) { gobject = G_OBJECT (gtk_accessible_get_widget (GTK_ACCESSIBLE (object))); } else { gobject = eel_accessibility_get_gobject (object); } if (!gobject) { return NULL; } aif = EEL_ACCESSIBLE_TEXT_GET_IFACE (gobject); if (!aif) { g_warning ("No accessible text inferface on '%s'", g_type_name_from_instance ((gpointer) gobject)); } else if (aif->get_text) { return aif->get_text (gobject); } return NULL; }
static gboolean app_state_changed_idle (gpointer user_data) { GsFeatureTile *tile = GS_FEATURE_TILE (user_data); AtkObject *accessible; g_autofree gchar *name = NULL; accessible = gtk_widget_get_accessible (GTK_WIDGET (tile)); switch (gs_app_get_state (tile->app)) { case AS_APP_STATE_INSTALLED: case AS_APP_STATE_INSTALLING: case AS_APP_STATE_REMOVING: case AS_APP_STATE_UPDATABLE: case AS_APP_STATE_UPDATABLE_LIVE: name = g_strdup_printf ("%s (%s)", gs_app_get_name (tile->app), _("Installed")); break; case AS_APP_STATE_AVAILABLE: default: name = g_strdup (gs_app_get_name (tile->app)); break; } if (GTK_IS_ACCESSIBLE (accessible)) { atk_object_set_name (accessible, name); atk_object_set_description (accessible, gs_app_get_summary (tile->app)); } g_object_unref (tile); return G_SOURCE_REMOVE; }
static const char * get_name (AtkObject *accessible) { char *name; name = g_object_get_data (G_OBJECT (accessible), "gtk-accessibility-dump-name"); if (name) return name; if (GTK_IS_ACCESSIBLE (accessible)) { GtkWidget *widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible)); name = g_strdup (gtk_buildable_get_name (GTK_BUILDABLE (widget))); } if (name == NULL && ATK_IS_TEXT (accessible)) { name = atk_text_get_text (ATK_TEXT (accessible), 0, -1); } if (name == NULL) { /* Generate a unique, repeatable name */ name = g_strdup_printf ("unnamed-%s-%d", G_OBJECT_TYPE_NAME (accessible), unnamed_object_count++); } g_object_set_data_full (G_OBJECT (accessible), "gtk-accessibility-dump-name", name, g_free); return name; }
/** * gtk_accessible_get_widget: * @accessible: a #GtkAccessible * * Gets the #GtkWidget corresponding to the #GtkAccessible. The returned widget * does not have a reference added, so you do not need to unref it. * * Returns: (transfer none): pointer to the #GtkWidget corresponding to * the #GtkAccessible, or %NULL. * * Since: 2.22 **/ GtkWidget* gtk_accessible_get_widget (GtkAccessible *accessible) { g_return_val_if_fail (GTK_IS_ACCESSIBLE (accessible), NULL); return accessible->widget; }
static void accessibility_settings_at (GtkToggleButton *button, GtkBuilder *builder) { AtkObject *atkobj; GObject *info_logout; GObject *no_atspi; gchar **atspi; info_logout = gtk_builder_get_object (builder, "info-logout"); no_atspi = gtk_builder_get_object (builder, "info-no-at"); gtk_widget_hide (GTK_WIDGET (info_logout)); gtk_widget_hide (GTK_WIDGET (no_atspi)); if (gtk_toggle_button_get_active (button)) { atspi = xfce_resource_match (XFCE_RESOURCE_CONFIG, "autostart/at-spi-*.desktop", TRUE); atkobj = gtk_widget_get_accessible (GTK_WIDGET (button)); if (atspi == NULL || g_strv_length (atspi) == 0) gtk_widget_show (GTK_WIDGET (no_atspi)); else if (!GTK_IS_ACCESSIBLE (atkobj)) gtk_widget_show (GTK_WIDGET (info_logout)); g_strfreev (atspi); } }
static void gail_focus_tracker (AtkObject *focus_object) { /* * Do not report focus on redundant object */ if (focus_object && (atk_object_get_role(focus_object) != ATK_ROLE_REDUNDANT_OBJECT)) { AtkObject *old_focus_object; if (!GTK_IS_ACCESSIBLE (focus_object)) { AtkObject *parent; parent = focus_object; while (1) { parent = atk_object_get_parent (parent); if (parent == NULL) break; if (GTK_IS_ACCESSIBLE (parent)) break; } if (parent) { gail_set_focus_object (focus_object, parent); } } else { old_focus_object = g_object_get_qdata (G_OBJECT (focus_object), quark_focus_object); if (old_focus_object) { g_object_weak_unref (G_OBJECT (old_focus_object), (GWeakNotify) gail_focus_object_destroyed, focus_object); g_object_set_qdata (G_OBJECT (focus_object), quark_focus_object, NULL); g_object_unref (G_OBJECT (focus_object)); } } } }
static void set_atk_name_description (GtkWidget *widget, const gchar *name, const gchar *description) { AtkObject *aobj = gtk_widget_get_accessible (widget); /* Check if gail is loaded */ if (GTK_IS_ACCESSIBLE (aobj) == FALSE) return; atk_object_set_name (aobj, name); atk_object_set_description (aobj, description); }
static G_CONST_RETURN gchar* gail_combo_box_get_keybinding (AtkAction *action, gint i) { GailComboBox *combo_box; gchar *return_value = NULL; switch (i) { case 0: { GtkWidget *widget; GtkWidget *label; AtkRelationSet *set; AtkRelation *relation; GPtrArray *target; gpointer target_object; guint key_val; combo_box = GAIL_COMBO_BOX (action); widget = GTK_ACCESSIBLE (combo_box)->widget; if (widget == NULL) return NULL; set = atk_object_ref_relation_set (ATK_OBJECT (action)); if (!set) return NULL; label = NULL; relation = atk_relation_set_get_relation_by_type (set, ATK_RELATION_LABELLED_BY); if (relation) { target = atk_relation_get_target (relation); target_object = g_ptr_array_index (target, 0); if (GTK_IS_ACCESSIBLE (target_object)) { label = GTK_ACCESSIBLE (target_object)->widget; } } g_object_unref (set); if (GTK_IS_LABEL (label)) { key_val = gtk_label_get_mnemonic_keyval (GTK_LABEL (label)); if (key_val != GDK_VoidSymbol) return_value = gtk_accelerator_name (key_val, GDK_MOD1_MASK); } g_free (combo_box->press_keybinding); combo_box->press_keybinding = return_value; break; } default: break; } return return_value; }
gboolean panel_a11y_get_is_a11y_enabled (GtkWidget *widget) { static gboolean initialised = FALSE; static gboolean a11y_enabled = FALSE; if (!initialised) { a11y_enabled = GTK_IS_ACCESSIBLE (gtk_widget_get_accessible (widget)); initialised = TRUE; } return a11y_enabled; }
static void set_atk_name_description (GtkWidget *widget, const char *name, const char *description) { AtkObject *aobj; aobj = gtk_widget_get_accessible (widget); if (!GTK_IS_ACCESSIBLE (aobj)) return; atk_object_set_name (aobj, name); atk_object_set_description (aobj, description); }
/** * gedit_set_atk_relation: * @obj1: specified widget. * @obj2: specified widget. * @rel_type: the type of relation to set up. * * This function establishes atk relation * between 2 specified widgets. */ void gedit_utils_set_atk_relation (GtkWidget *obj1, GtkWidget *obj2, AtkRelationType rel_type) { AtkObject *atk_obj1, *atk_obj2; AtkRelationSet *relation_set; AtkObject *targets[1]; AtkRelation *relation; atk_obj1 = gtk_widget_get_accessible (obj1); atk_obj2 = gtk_widget_get_accessible (obj2); if (!(GTK_IS_ACCESSIBLE (atk_obj1)) || !(GTK_IS_ACCESSIBLE (atk_obj2))) return; relation_set = atk_object_ref_relation_set (atk_obj1); targets[0] = atk_obj2; relation = atk_relation_new (targets, 1, rel_type); atk_relation_set_add (relation_set, relation); g_object_unref (G_OBJECT (relation)); }
static void gtk_search_entry_init (GtkSearchEntry *entry) { AtkObject *atk_obj; g_object_set (entry, "primary-icon-name", "edit-find-symbolic", "primary-icon-activatable", FALSE, "primary-icon-sensitive", FALSE, NULL); atk_obj = gtk_widget_get_accessible (GTK_WIDGET (entry)); if (GTK_IS_ACCESSIBLE (atk_obj)) atk_object_set_name (atk_obj, _("Search")); }
static const gchar * get_name (gpointer obj) { GtkWidget *widget; if (obj == NULL) return "(nil)"; else if (GTK_IS_WIDGET (obj)) widget = GTK_WIDGET (obj); else if (GTK_IS_ACCESSIBLE (obj)) widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj)); else return "OOPS"; if (GTK_IS_BUILDABLE (widget)) return gtk_buildable_get_name (GTK_BUILDABLE (widget)); else return G_OBJECT_TYPE_NAME (widget); }
/** * gedit_utils_set_atk_name_description: * @widget: The Gtk widget for which name/description to be set * @name: Atk name string * @description: Atk description string * * This function sets up name and description * for a specified gtk widget. */ void gedit_utils_set_atk_name_description (GtkWidget *widget, const gchar *name, const gchar *description) { AtkObject *aobj; aobj = gtk_widget_get_accessible (widget); if (!(GTK_IS_ACCESSIBLE (aobj))) return; if (name) atk_object_set_name (aobj, name); if (description) atk_object_set_description (aobj, description); }
/* sets accessible name and description */ void set_access_namedesc(GtkWidget* widget, const gchar* name, const gchar* desc) { AtkObject* obj = gtk_widget_get_accessible(widget); if (!GTK_IS_ACCESSIBLE(obj)) { return; } if (desc) { atk_object_set_description(obj, desc); } if (name) { atk_object_set_name(obj, name); } }
static gboolean app_state_changed_idle (gpointer user_data) { GsPopularTile *tile = GS_POPULAR_TILE (user_data); AtkObject *accessible; GtkWidget *label; gboolean installed; g_autofree gchar *name = NULL; accessible = gtk_widget_get_accessible (GTK_WIDGET (tile)); label = gtk_bin_get_child (GTK_BIN (tile->eventbox)); switch (gs_app_get_state (tile->app)) { case AS_APP_STATE_INSTALLED: case AS_APP_STATE_INSTALLING: case AS_APP_STATE_REMOVING: case AS_APP_STATE_UPDATABLE: case AS_APP_STATE_UPDATABLE_LIVE: installed = TRUE; name = g_strdup_printf ("%s (%s)", gs_app_get_name (tile->app), _("Installed")); /* TRANSLATORS: this is the small blue label on the tile * that tells the user the application is installed */ gtk_label_set_label (GTK_LABEL (label), _("Installed")); break; case AS_APP_STATE_AVAILABLE: default: installed = FALSE; name = g_strdup (gs_app_get_name (tile->app)); break; } gtk_widget_set_visible (tile->eventbox, installed); if (GTK_IS_ACCESSIBLE (accessible)) { atk_object_set_name (accessible, name); atk_object_set_description (accessible, gs_app_get_summary (tile->app)); } g_object_unref (tile); return G_SOURCE_REMOVE; }
/* sets up ATK Relation between the widgets */ static void add_atk_relation(GtkWidget* widget1, GtkWidget* widget2, AtkRelationType type) { AtkObject* atk_obj1; AtkObject* atk_obj2; AtkRelationSet* relation_set; AtkRelation* relation; atk_obj1 = gtk_widget_get_accessible(widget1); if (!GTK_IS_ACCESSIBLE(atk_obj1)) { return; } atk_obj2 = gtk_widget_get_accessible(widget2); relation_set = atk_object_ref_relation_set(atk_obj1); relation = atk_relation_new(&atk_obj2, 1, type); atk_relation_set_add(relation_set, relation); g_object_unref(G_OBJECT(relation)); }
static void set_ally_name_desc (GtkWidget *widget, FishApplet *fish) { const char *name_format = _("%s the Fish"); const char *desc_format = _("%s the Fish, a contemporary oracle"); AtkObject *obj; char *desc, *name; obj = gtk_widget_get_accessible (widget); /* Return immediately if GAIL is not loaded */ if (!GTK_IS_ACCESSIBLE (obj)) return; name = g_strdup_printf (name_format, fish->name); atk_object_set_name (obj, name); g_free (name); desc = g_strdup_printf (desc_format, fish->name); atk_object_set_description (obj, desc); g_free (desc); }
static void ensure_menus_unposted (GailMenuItem *menu_item) { AtkObject *parent; GtkWidget *widget; parent = atk_object_get_parent (ATK_OBJECT (menu_item)); while (parent) { if (GTK_IS_ACCESSIBLE (parent)) { widget = GTK_ACCESSIBLE (parent)->widget; if (GTK_IS_MENU (widget)) { if (gtk_widget_get_mapped (widget)) gtk_menu_shell_cancel (GTK_MENU_SHELL (widget)); return; } } parent = atk_object_get_parent (parent); } }
static void cpufreq_applet_setup (CPUFreqApplet *applet) { GtkActionGroup *action_group; gchar *ui_path; AtkObject *atk_obj; gchar *prefs_key; GSettings *settings; g_set_application_name (_("CPU Frequency Scaling Monitor")); gtk_window_set_default_icon_name ("mate-cpu-frequency-applet"); /* Preferences */ if (applet->prefs) g_object_unref (applet->prefs); settings = mate_panel_applet_settings_new (MATE_PANEL_APPLET (applet), "org.mate.panel.applet.cpufreq"); applet->prefs = cpufreq_prefs_new (settings); g_signal_connect (G_OBJECT (applet->prefs), "notify::cpu", G_CALLBACK (cpufreq_applet_prefs_cpu_changed), (gpointer) applet); g_signal_connect (G_OBJECT (applet->prefs), "notify::show-mode", G_CALLBACK (cpufreq_applet_prefs_show_mode_changed), (gpointer) applet); g_signal_connect (G_OBJECT (applet->prefs), "notify::show-text-mode", G_CALLBACK (cpufreq_applet_prefs_show_mode_changed), (gpointer) applet); /* Monitor */ applet->monitor = cpufreq_monitor_factory_create_monitor ( cpufreq_prefs_get_cpu (applet->prefs)); cpufreq_monitor_run (applet->monitor); g_signal_connect_swapped (G_OBJECT (applet->monitor), "changed", G_CALLBACK (cpufreq_applet_update), (gpointer) applet); /* Setup the menus */ action_group = gtk_action_group_new ("CPUFreq Applet Actions"); gtk_action_group_set_translation_domain (action_group, GETTEXT_PACKAGE); gtk_action_group_add_actions (action_group, cpufreq_applet_menu_actions, G_N_ELEMENTS (cpufreq_applet_menu_actions), applet); ui_path = g_build_filename (CPUFREQ_MENU_UI_DIR, "cpufreq-applet-menu.xml", NULL); mate_panel_applet_setup_menu_from_file (MATE_PANEL_APPLET (applet), ui_path, action_group); g_free (ui_path); if (mate_panel_applet_get_locked_down (MATE_PANEL_APPLET (applet))) { GtkAction *action; action = gtk_action_group_get_action (action_group, "CPUFreqPreferences"); gtk_action_set_visible (action, FALSE); } g_object_unref (action_group); atk_obj = gtk_widget_get_accessible (GTK_WIDGET (applet)); if (GTK_IS_ACCESSIBLE (atk_obj)) { atk_object_set_name (atk_obj, _("CPU Frequency Scaling Monitor")); atk_object_set_description (atk_obj, _("This utility shows the current CPU Frequency")); } cpufreq_applet_update_visibility (applet); gtk_widget_show (GTK_WIDGET (applet)); }
static void _check_object (AtkObject *obj) { AtkRole role; static G_CONST_RETURN char *name = NULL; static gboolean first_time = TRUE; role = atk_object_get_role (obj); if (role == ATK_ROLE_PUSH_BUTTON) /* * Find the specified optionmenu item */ { AtkRole valid_roles[NUM_VALID_ROLES]; AtkObject *atk_option_menu; GtkWidget *widget; if (name == NULL) { name = g_getenv ("TEST_ACCESSIBLE_NAME"); if (name == NULL) name = "foo"; } valid_roles[0] = ATK_ROLE_PUSH_BUTTON; atk_option_menu = find_object_by_accessible_name_and_role (obj, name, valid_roles, NUM_VALID_ROLES); if (atk_option_menu == NULL) { g_print ("Object not found for %s\n", name); return; } else { g_print ("Object found for %s\n", name); } g_assert (GTK_IS_ACCESSIBLE (atk_option_menu)); widget = GTK_ACCESSIBLE (atk_option_menu)->widget; g_assert (GTK_IS_OPTION_MENU (widget)); if (first_time) first_time = FALSE; else return; /* * This action opens the GtkOptionMenu whose name is "foo" or whatever * was specified in the environment variable TEST_ACCESSIBLE_NAME */ atk_action_do_action (ATK_ACTION (atk_option_menu), 0); } else if ((role == ATK_ROLE_MENU_ITEM) || (role == ATK_ROLE_CHECK_MENU_ITEM) || (role == ATK_ROLE_RADIO_MENU_ITEM) || (role == ATK_ROLE_TEAR_OFF_MENU_ITEM)) { AtkObject *parent, *child; AtkRole parent_role; /* * If we receive focus while waiting for the menu to be closed * we return immediately */ if (doing_action) return; parent = atk_object_get_parent (obj); parent_role = atk_object_get_role (parent); g_assert (parent_role == ATK_ROLE_MENU); child = atk_object_ref_accessible_child (parent, 1); doing_action = TRUE; gtk_timeout_add (5000, _do_menu_item_action, child); } else { G_CONST_RETURN char *accessible_name; accessible_name = atk_object_get_name (obj); if (accessible_name) { g_print ("Name: %s\n", accessible_name); } else if (GTK_IS_ACCESSIBLE (obj)) { GtkWidget *widget = GTK_ACCESSIBLE (obj)->widget; g_print ("Type: %s\n", g_type_name (G_OBJECT_TYPE (widget))); } if (role == ATK_ROLE_TABLE) { gint n_cols, i; n_cols = atk_table_get_n_columns (ATK_TABLE (obj)); g_print ("Number of Columns: %d\n", n_cols); for (i = 0; i < n_cols; i++) { AtkObject *header; header = atk_table_get_column_header (ATK_TABLE (obj), i); g_print ("header: %s %s\n", g_type_name (G_OBJECT_TYPE (header)), atk_object_get_name (header)); } } } }
void mateweather_applet_create (MateWeatherApplet *gw_applet) { GtkActionGroup *action_group; gchar *ui_path; AtkObject *atk_obj; gw_applet->mateweather_pref.location = NULL; gw_applet->mateweather_pref.show_notifications = FALSE; gw_applet->mateweather_pref.update_interval = 1800; gw_applet->mateweather_pref.update_enabled = TRUE; gw_applet->mateweather_pref.detailed = FALSE; gw_applet->mateweather_pref.radar_enabled = TRUE; gw_applet->mateweather_pref.temperature_unit = TEMP_UNIT_INVALID; gw_applet->mateweather_pref.speed_unit = SPEED_UNIT_INVALID; gw_applet->mateweather_pref.pressure_unit = PRESSURE_UNIT_INVALID; gw_applet->mateweather_pref.distance_unit = DISTANCE_UNIT_INVALID; mate_panel_applet_set_flags (gw_applet->applet, MATE_PANEL_APPLET_EXPAND_MINOR); mate_panel_applet_set_background_widget(gw_applet->applet, GTK_WIDGET(gw_applet->applet)); g_set_application_name (_("Weather Report")); gtk_window_set_default_icon_name ("weather-storm"); gw_applet->container = gtk_alignment_new (0.5, 0.5, 0, 0); gtk_container_add (GTK_CONTAINER (gw_applet->applet), gw_applet->container); g_signal_connect (G_OBJECT(gw_applet->applet), "change_orient", G_CALLBACK(change_orient_cb), gw_applet); g_signal_connect (G_OBJECT(gw_applet->applet), "size_allocate", G_CALLBACK(size_allocate_cb), gw_applet); g_signal_connect (G_OBJECT(gw_applet->applet), "destroy", G_CALLBACK (applet_destroy), gw_applet); g_signal_connect (GTK_OBJECT(gw_applet->applet), "button_press_event", G_CALLBACK(clicked_cb), gw_applet); g_signal_connect (G_OBJECT(gw_applet->applet), "key_press_event", G_CALLBACK(key_press_cb), gw_applet); gtk_widget_set_tooltip_text (GTK_WIDGET(gw_applet->applet), _("MATE Weather")); atk_obj = gtk_widget_get_accessible (GTK_WIDGET (gw_applet->applet)); if (GTK_IS_ACCESSIBLE (atk_obj)) atk_object_set_name (atk_obj, _("MATE Weather")); gw_applet->size = mate_panel_applet_get_size (gw_applet->applet); gw_applet->orient = mate_panel_applet_get_orient (gw_applet->applet); action_group = gtk_action_group_new ("MateWeather Applet Actions"); gtk_action_group_set_translation_domain (action_group, GETTEXT_PACKAGE); gtk_action_group_add_actions (action_group, weather_applet_menu_actions, G_N_ELEMENTS (weather_applet_menu_actions), gw_applet); ui_path = g_build_filename (MATEWEATHER_MENU_UI_DIR, "mateweather-applet-menu.xml", NULL); mate_panel_applet_setup_menu_from_file (gw_applet->applet, ui_path, action_group); g_free (ui_path); if (mate_panel_applet_get_locked_down (gw_applet->applet)) { GtkAction *action; action = gtk_action_group_get_action (action_group, "Props"); gtk_action_set_visible (action, FALSE); } g_object_unref (action_group); place_widgets(gw_applet); #ifdef HAVE_NETWORKMANAGER setup_network_monitor (gw_applet); #endif }
static void _check_object (AtkObject *obj) { AtkRole role; static G_CONST_RETURN char *name = NULL; static gboolean first_time = TRUE; role = atk_object_get_role (obj); if (role == ATK_ROLE_FRAME) /* * Find the specified menu item */ { AtkRole valid_roles[NUM_VALID_ROLES]; AtkObject *atk_menu_item; GtkWidget *widget; if (name == NULL) { valid_roles[0] = ATK_ROLE_MENU_ITEM; name = g_getenv ("TEST_ACCESSIBLE_NAME"); if (name == NULL) name = "foo"; } atk_menu_item = find_object_by_accessible_name_and_role (obj, name, valid_roles, NUM_VALID_ROLES); if (atk_menu_item == NULL) { g_print ("Object not found for %s\n", name); return; } g_assert (GTK_IS_ACCESSIBLE (atk_menu_item)); widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (atk_menu_item)); g_assert (GTK_IS_MENU_ITEM (widget)); if (first_time) first_time = FALSE; else return; /* * This action opens the menu whose name is "foo" or whatever * was specified in the environment variable TEST_ACCESSIBLE_NAME */ atk_action_do_action (ATK_ACTION (atk_menu_item), 0); } else if ((role == ATK_ROLE_MENU_ITEM) || (role == ATK_ROLE_CHECK_MENU_ITEM) || (role == ATK_ROLE_RADIO_MENU_ITEM) || (role == ATK_ROLE_TEAR_OFF_MENU_ITEM)) { G_CONST_RETURN char *keybinding; G_CONST_RETURN char *accessible_name; accessible_name = atk_object_get_name (obj); if (accessible_name) g_print ("Name: %s\n", accessible_name); g_print ("Action: %s\n", atk_action_get_name (ATK_ACTION (obj), 0)); keybinding = atk_action_get_keybinding (ATK_ACTION (obj), 0); if (keybinding) g_print ("KeyBinding: %s\n", keybinding); /* * Do the action associated with the menu item once, otherwise * we get into a loop */ if (strcmp (name, accessible_name) == 0) { if (first_time) first_time = FALSE; else return; if (g_getenv ("TEST_ACCESSIBLE_AUTO")) { g_idle_add (_do_menu_item_action, obj); } } } else { G_CONST_RETURN char *accessible_name; accessible_name = atk_object_get_name (obj); if (accessible_name) g_print ("Name: %s\n", accessible_name); else if (GTK_IS_ACCESSIBLE (obj)) { GtkWidget *widget; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj)); g_print ("Type: %s\n", g_type_name (G_OBJECT_TYPE (widget))); } } }
void gweather_applet_create (GWeatherApplet *gw_applet) { GSimpleActionGroup *action_group; GAction *action; gchar *ui_path; AtkObject *atk_obj; GWeatherForecastType type; GNetworkMonitor*monitor; panel_applet_set_flags (gw_applet->applet, PANEL_APPLET_EXPAND_MINOR); gw_applet->container = gtk_alignment_new (0.5, 0.5, 0, 0); gtk_container_add (GTK_CONTAINER (gw_applet->applet), gw_applet->container); g_signal_connect (G_OBJECT(gw_applet->applet), "change_orient", G_CALLBACK(change_orient_cb), gw_applet); g_signal_connect (G_OBJECT(gw_applet->applet), "size_allocate", G_CALLBACK(size_allocate_cb), gw_applet); g_signal_connect (G_OBJECT(gw_applet->applet), "destroy", G_CALLBACK (applet_destroy), gw_applet); g_signal_connect (G_OBJECT(gw_applet->applet), "button_press_event", G_CALLBACK(clicked_cb), gw_applet); g_signal_connect (G_OBJECT(gw_applet->applet), "key_press_event", G_CALLBACK(key_press_cb), gw_applet); gtk_widget_set_tooltip_text (GTK_WIDGET(gw_applet->applet), _("GNOME Weather")); atk_obj = gtk_widget_get_accessible (GTK_WIDGET (gw_applet->applet)); if (GTK_IS_ACCESSIBLE (atk_obj)) atk_object_set_name (atk_obj, _("GNOME Weather")); gw_applet->orient = panel_applet_get_orient (gw_applet->applet); action_group = g_simple_action_group_new (); g_action_map_add_action_entries (G_ACTION_MAP (action_group), weather_applet_menu_actions, G_N_ELEMENTS (weather_applet_menu_actions), gw_applet); ui_path = g_build_filename (GWEATHER_MENU_UI_DIR, "gweather-applet-menu.xml", NULL); panel_applet_setup_menu_from_file (gw_applet->applet, ui_path, action_group, GETTEXT_PACKAGE); g_free (ui_path); gtk_widget_insert_action_group (GTK_WIDGET (gw_applet->applet), "gweather", G_ACTION_GROUP (action_group)); action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "preferences"); g_object_bind_property (gw_applet->applet, "locked-down", action, "enabled", G_BINDING_DEFAULT|G_BINDING_INVERT_BOOLEAN|G_BINDING_SYNC_CREATE); g_object_unref (action_group); type = g_settings_get_boolean (gw_applet->applet_settings, "detailed") ? GWEATHER_FORECAST_ZONE : GWEATHER_FORECAST_STATE; gw_applet->gweather_info = gweather_info_new(NULL, type); g_signal_connect (gw_applet->gweather_info, "updated", G_CALLBACK (update_finish), gw_applet); place_widgets(gw_applet); monitor = g_network_monitor_get_default(); g_signal_connect (monitor, "network-changed", G_CALLBACK (network_changed), gw_applet); }
static G_CONST_RETURN gchar* gail_item_get_name (AtkObject *obj) { G_CONST_RETURN gchar* name; g_return_val_if_fail (GAIL_IS_ITEM (obj), NULL); name = ATK_OBJECT_CLASS (parent_class)->get_name (obj); if (name == NULL) { /* * Get the label child */ GtkWidget *widget; GtkWidget *label; widget = GTK_ACCESSIBLE (obj)->widget; if (widget == NULL) /* * State is defunct */ return NULL; label = get_label_from_container (widget); if (GTK_IS_LABEL (label)) return gtk_label_get_text (GTK_LABEL(label)); /* * If we have a menu item in a menu attached to a GtkOptionMenu * the label of the selected item is detached from the menu item */ else if (GTK_IS_MENU_ITEM (widget)) { GtkWidget *parent; GtkWidget *attach; GList *list; AtkObject *parent_obj; gint index; parent = gtk_widget_get_parent (widget); if (GTK_IS_MENU (parent)) { attach = gtk_menu_get_attach_widget (GTK_MENU (parent)); if (GTK_IS_OPTION_MENU (attach)) { label = get_label_from_container (attach); if (GTK_IS_LABEL (label)) return gtk_label_get_text (GTK_LABEL(label)); } list = gtk_container_get_children (GTK_CONTAINER (parent)); index = g_list_index (list, widget); if (index < 0 || index > g_list_length (list)) { g_list_free (list); return NULL; } g_list_free (list); parent_obj = atk_object_get_parent (gtk_widget_get_accessible (parent)); if (GTK_IS_ACCESSIBLE (parent_obj)) { parent = GTK_ACCESSIBLE (parent_obj)->widget; if (GTK_IS_COMBO_BOX (parent)) { GtkTreeModel *model; GtkTreeIter iter; GailItem *item; gint n_columns, i; model = gtk_combo_box_get_model (GTK_COMBO_BOX (parent)); item = GAIL_ITEM (obj); if (gtk_tree_model_iter_nth_child (model, &iter, NULL, index)) { n_columns = gtk_tree_model_get_n_columns (model); for (i = 0; i < n_columns; i++) { GValue value = { 0, }; gtk_tree_model_get_value (model, &iter, i, &value); if (G_VALUE_HOLDS_STRING (&value)) { g_free (item->text); item->text = (gchar *) g_value_dup_string (&value); g_value_unset (&value); break; } } } name = item->text; } } } } } return name; }
static void cpufreq_applet_setup (CPUFreqApplet *applet) { GSimpleActionGroup *action_group; GAction *action; gchar *ui_path; AtkObject *atk_obj; GSettings *settings; /* Preferences */ if (applet->prefs) g_object_unref (applet->prefs); settings = panel_applet_settings_new (PANEL_APPLET (applet), "org.gnome.gnome-applets.cpufreq"); applet->prefs = cpufreq_prefs_new (settings); g_signal_connect (G_OBJECT (applet->prefs), "notify::cpu", G_CALLBACK (cpufreq_applet_prefs_cpu_changed), (gpointer) applet); g_signal_connect (G_OBJECT (applet->prefs), "notify::show-mode", G_CALLBACK (cpufreq_applet_prefs_show_mode_changed), (gpointer) applet); g_signal_connect (G_OBJECT (applet->prefs), "notify::show-text-mode", G_CALLBACK (cpufreq_applet_prefs_show_mode_changed), (gpointer) applet); /* Monitor */ applet->monitor = cpufreq_monitor_new (cpufreq_prefs_get_cpu (applet->prefs)); cpufreq_monitor_run (applet->monitor); g_signal_connect_swapped (G_OBJECT (applet->monitor), "changed", G_CALLBACK (cpufreq_applet_update), (gpointer) applet); /* Setup the menus */ action_group = g_simple_action_group_new (); g_action_map_add_action_entries (G_ACTION_MAP (action_group), cpufreq_applet_menu_actions, G_N_ELEMENTS (cpufreq_applet_menu_actions), applet); ui_path = g_build_filename (CPUFREQ_MENU_UI_DIR, "cpufreq-applet-menu.xml", NULL); panel_applet_setup_menu_from_file (PANEL_APPLET (applet), ui_path, action_group, GETTEXT_PACKAGE); g_free (ui_path); gtk_widget_insert_action_group (GTK_WIDGET (applet), "cpufreq", G_ACTION_GROUP (action_group)); action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "preferences"); g_object_bind_property (applet, "locked-down", action, "enabled", G_BINDING_DEFAULT|G_BINDING_INVERT_BOOLEAN|G_BINDING_SYNC_CREATE); g_object_unref (action_group); atk_obj = gtk_widget_get_accessible (GTK_WIDGET (applet)); if (GTK_IS_ACCESSIBLE (atk_obj)) { atk_object_set_name (atk_obj, _("CPU Frequency Scaling Monitor")); atk_object_set_description (atk_obj, _("This utility shows the current CPU Frequency")); } cpufreq_applet_update_visibility (applet); gtk_widget_show (GTK_WIDGET (applet)); }