void ide_application_actions_update (IdeApplication *self) { GList *windows; GAction *action; gboolean enabled; g_assert (IDE_IS_APPLICATION (self)); /* * We only enable the preferences action if we have a workbench open * that is past the greeter. */ action = g_action_map_lookup_action (G_ACTION_MAP (self), "preferences"); enabled = FALSE; for (windows = gtk_application_get_windows (GTK_APPLICATION (self)); windows != NULL; windows = windows->next) { GtkWindow *window = windows->data; if (IDE_IS_WORKBENCH (window) && !ide_str_equal0 ("greeter", ide_workbench_get_visible_perspective_name (IDE_WORKBENCH (window)))) { enabled = TRUE; break; } } g_simple_action_set_enabled (G_SIMPLE_ACTION (action), enabled); }
static void ide_workbench_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { IdeWorkbench *self = IDE_WORKBENCH (object); switch (prop_id) { case PROP_CONTEXT: g_value_set_object (value, ide_workbench_get_context (self)); break; case PROP_DISABLE_GREETER: g_value_set_boolean (value, self->disable_greeter); break; case PROP_VISIBLE_PERSPECTIVE: g_value_set_object (value, ide_workbench_get_visible_perspective (self)); break; case PROP_VISIBLE_PERSPECTIVE_NAME: g_value_set_string (value, ide_workbench_get_visible_perspective_name (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } }
static void ide_application_actions_preferences (GSimpleAction *action, GVariant *parameter, gpointer user_data) { IdeApplication *self = user_data; GList *windows; IDE_ENTRY; g_assert (IDE_IS_APPLICATION (self)); /* * TODO: Make this work at the greeter screen too. */ windows = gtk_application_get_windows (GTK_APPLICATION (self)); for (; windows; windows = windows->next) { GtkWindow *window = windows->data; const gchar *name; if (!IDE_IS_WORKBENCH (window)) continue; name = ide_workbench_get_visible_perspective_name (IDE_WORKBENCH (window)); if (!ide_str_equal0 (name, "greeter") && !ide_str_equal0 (name, "genesis")) { ide_workbench_set_visible_perspective_name (IDE_WORKBENCH (window), "preferences"); IDE_EXIT; } } IDE_EXIT; }