/* Log Out */ static void panel_action_logout (GtkWidget *widget) { PanelSessionManager *manager; gboolean prompt = TRUE; if (mate_gsettings_schema_exists (MATE_SESSION_SCHEMA)) { GSettings *msm_settings; msm_settings = g_settings_new (MATE_SESSION_SCHEMA); prompt = g_settings_get_boolean (msm_settings, MATE_SESSION_LOGOUT_PROMPT_KEY); g_object_unref (msm_settings); } manager = panel_session_manager_get (); if (!prompt) panel_session_manager_request_logout (manager, PANEL_SESSION_MANAGER_LOGOUT_MODE_NO_CONFIRMATION); else /* FIXME: we need to use widget to get the screen for the * confirmation dialog, see * http://bugzilla.gnome.org/show_bug.cgi?id=536914 */ panel_session_manager_request_logout (manager, PANEL_SESSION_MANAGER_LOGOUT_MODE_NORMAL); }
static inline gboolean desktop_is_home_dir(void) { gboolean retval = FALSE; GSettings *settings; if (mate_gsettings_schema_exists (CAJA_PREFS_SCHEMA)) { settings = g_settings_new (CAJA_PREFS_SCHEMA); retval = g_settings_get_boolean (settings, CAJA_PREFS_DESKTOP_IS_HOME_DIR_KEY); g_object_unref (settings); } return retval; }
static MateThemeMetaInfo * theme_load_from_gsettings (AppearanceData *data) { MateThemeMetaInfo *theme; gchar *scheme; theme = mate_theme_meta_info_new (); theme->gtk_theme_name = g_settings_get_string (data->interface_settings, GTK_THEME_KEY); if (theme->gtk_theme_name == NULL) theme->gtk_theme_name = g_strdup ("Menta"); scheme = g_settings_get_string (data->interface_settings, COLOR_SCHEME_KEY); if (scheme == NULL || !strcmp (scheme, "")) { g_free (scheme); scheme = gtkrc_get_color_scheme_for_theme (theme->gtk_theme_name); } theme->gtk_color_scheme = scheme; theme->marco_theme_name = g_settings_get_string (data->marco_settings, MARCO_THEME_KEY); if (theme->marco_theme_name == NULL) theme->marco_theme_name = g_strdup ("Menta"); theme->icon_theme_name = g_settings_get_string (data->interface_settings, ICON_THEME_KEY); if (theme->icon_theme_name == NULL) theme->icon_theme_name = g_strdup ("menta"); if (mate_gsettings_schema_exists (NOTIFICATION_SCHEMA)) { GSettings *notification_settings; notification_settings = g_settings_new (NOTIFICATION_SCHEMA); theme->notification_theme_name = g_settings_get_string (notification_settings, NOTIFICATION_THEME_KEY); g_object_unref (notification_settings); } else theme->notification_theme_name = NULL; theme->cursor_theme_name = g_settings_get_string (data->mouse_settings, CURSOR_THEME_KEY); theme->cursor_size = g_settings_get_int (data->mouse_settings, CURSOR_SIZE_KEY); if (theme->cursor_theme_name == NULL) theme->cursor_theme_name = g_strdup ("default"); theme->application_font = g_settings_get_string (data->interface_settings, GTK_FONT_KEY); return theme; }
static char * panel_util_get_file_display_for_common_files (GFile *file) { GFile *compare; compare = g_file_new_for_path (g_get_home_dir ()); if (g_file_equal (file, compare)) { GSettings *caja_desktop_settings; char *caja_home_icon_name = NULL; g_object_unref (compare); if (mate_gsettings_schema_exists (CAJA_DESKTOP_SCHEMA)) { caja_desktop_settings = g_settings_new (CAJA_DESKTOP_SCHEMA); caja_home_icon_name = g_settings_get_string (caja_desktop_settings, CAJA_DESKTOP_HOME_ICON_NAME_KEY); g_object_unref (caja_desktop_settings); } if (PANEL_GLIB_STR_EMPTY (caja_home_icon_name)) { g_free (caja_home_icon_name); return g_strdup (_("Home Folder")); } else { return caja_home_icon_name; } } g_object_unref (compare); compare = g_file_new_for_path ("/"); if (g_file_equal (file, compare)) { g_object_unref (compare); /* Translators: this is the same string as the one found in * caja */ return g_strdup (_("File System")); } g_object_unref (compare); return NULL; }
static void panel_bindings_initialise (void) { int i; char *str; if (initialised) return; if (!mate_gsettings_schema_exists (MARCO_SCHEMA)) { initialised = TRUE; return; } marco_settings = g_settings_new (MARCO_SCHEMA); marco_keybindings_settings = g_settings_new (MARCO_KEYBINDINGS_SCHEMA); for (i = 0; i < G_N_ELEMENTS (bindings); i++) { str = g_settings_get_string (marco_keybindings_settings, bindings [i].key); panel_binding_set_from_string (&bindings [i], str); panel_binding_watch (&bindings [i], bindings [i].key); g_free (str); } /* mouse button modifier */ g_signal_connect (marco_settings, "changed::" MARCO_MOUSE_BUTTON_MODIFIER_KEY, G_CALLBACK (panel_bindings_mouse_modifier_changed), NULL); str = g_settings_get_string (marco_settings, MARCO_MOUSE_BUTTON_MODIFIER_KEY); panel_bindings_mouse_modifier_set_from_string (str); g_free (str); initialised = TRUE; }
void mate_meta_theme_set (MateThemeMetaInfo *meta_theme_info) { GSettings *interface_settings; GSettings *marco_settings; GSettings *mouse_settings; GSettings *notification_settings = NULL; gchar *old_key; gint old_key_int; interface_settings = g_settings_new (INTERFACE_SCHEMA); marco_settings = g_settings_new (MARCO_SCHEMA); mouse_settings = g_settings_new (MOUSE_SCHEMA); if (mate_gsettings_schema_exists (NOTIFICATION_SCHEMA)) { notification_settings = g_settings_new (NOTIFICATION_SCHEMA); } /* Set the gtk+ key */ old_key = g_settings_get_string (interface_settings, GTK_THEME_KEY); if (compare (old_key, meta_theme_info->gtk_theme_name)) { g_settings_set_string (interface_settings, GTK_THEME_KEY, meta_theme_info->gtk_theme_name); } g_free (old_key); /* Set the color scheme key */ old_key = g_settings_get_string (interface_settings, COLOR_SCHEME_KEY); if (compare (old_key, meta_theme_info->gtk_color_scheme)) { /* only save the color scheme if it differs from the default scheme for the selected gtk theme */ gchar *newval, *gtkcols; newval = meta_theme_info->gtk_color_scheme; gtkcols = gtkrc_get_color_scheme_for_theme (meta_theme_info->gtk_theme_name); if (newval == NULL || !strcmp (newval, "") || mate_theme_color_scheme_equal (newval, gtkcols)) { g_settings_reset (interface_settings, COLOR_SCHEME_KEY); } else { g_settings_set_string (interface_settings, COLOR_SCHEME_KEY, newval); } g_free (gtkcols); } g_free (old_key); /* Set the wm key */ g_settings_set_string (marco_settings, MARCO_THEME_KEY, meta_theme_info->marco_theme_name); /* set the icon theme */ old_key = g_settings_get_string (interface_settings, ICON_THEME_KEY); if (compare (old_key, meta_theme_info->icon_theme_name)) { g_settings_set_string (interface_settings, ICON_THEME_KEY, meta_theme_info->icon_theme_name); } g_free (old_key); /* set the notification theme */ if (notification_settings != NULL) { if (meta_theme_info->notification_theme_name != NULL) { old_key = g_settings_get_string (notification_settings, NOTIFICATION_THEME_KEY); if (compare (old_key, meta_theme_info->notification_theme_name)) { g_settings_set_string (notification_settings, NOTIFICATION_THEME_KEY, meta_theme_info->notification_theme_name); } g_free (old_key); } } /* Set the cursor theme key */ #ifdef HAVE_XCURSOR old_key = g_settings_get_string (mouse_settings, CURSOR_THEME_KEY); if (compare (old_key, meta_theme_info->cursor_theme_name)) { g_settings_set_string (mouse_settings, CURSOR_THEME_KEY, meta_theme_info->cursor_theme_name); } old_key_int = g_settings_get_int (mouse_settings, CURSOR_SIZE_KEY); if (old_key_int != meta_theme_info->cursor_size) { g_settings_set_int (mouse_settings, CURSOR_SIZE_KEY, meta_theme_info->cursor_size); } #else old_key = g_settings_get_string (mouse_settings, CURSOR_FONT_KEY); if (compare (old_key, meta_theme_info->cursor_theme_name)) { g_settings_set_string (mouse_settings, CURSOR_FONT_KEY, meta_theme_info->cursor_theme_name); } #endif g_free (old_key); g_object_unref (interface_settings); g_object_unref (marco_settings); g_object_unref (mouse_settings); if (notification_settings != NULL) g_object_unref (notification_settings); }
static void setup_dialog(GtkBuilder* builder, PagerData* pager) { gboolean value; GtkTreeViewColumn* column; GtkCellRenderer* cell; int nr_ws, i; GSettings *marco_general_settings = NULL; GSettings *marco_workspaces_settings = NULL; if (mate_gsettings_schema_exists(MARCO_GENERAL_SCHEMA)) marco_general_settings = g_settings_new (MARCO_GENERAL_SCHEMA); if (mate_gsettings_schema_exists(MARCO_WORKSPACES_SCHEMA)) marco_workspaces_settings = g_settings_new (MARCO_WORKSPACES_SCHEMA); pager->workspaces_frame = WID("workspaces_frame"); pager->workspace_names_label = WID("workspace_names_label"); pager->workspace_names_scroll = WID("workspace_names_scroll"); pager->display_workspaces_toggle = WID("workspace_name_toggle"); setup_sensitivity(pager, builder, "workspace_name_toggle", NULL, NULL, pager->settings, "display-workspace-names" /* key */); pager->wrap_workspaces_toggle = WID("workspace_wrap_toggle"); setup_sensitivity(pager, builder, "workspace_wrap_toggle", NULL, NULL, pager->settings, "wrap-workspaces" /* key */); pager->all_workspaces_radio = WID("all_workspaces_radio"); pager->current_only_radio = WID("current_only_radio"); setup_sensitivity(pager, builder, "all_workspaces_radio", "current_only_radio", "label_row_col", pager->settings, "display-all-workspaces" /* key */); pager->num_rows_spin = WID("num_rows_spin"); pager->label_row_col = WID("label_row_col"); setup_sensitivity(pager, builder, "num_rows_spin", NULL, NULL, pager->settings, "num-rows" /* key */); pager->num_workspaces_spin = WID("num_workspaces_spin"); setup_sensitivity(pager, builder, "num_workspaces_spin", NULL, NULL, marco_general_settings, NUM_WORKSPACES /* key */); pager->workspaces_tree = WID("workspaces_tree_view"); setup_sensitivity(pager, builder, "workspaces_tree_view", NULL, NULL, marco_workspaces_settings, WORKSPACE_NAME /* key */); if (marco_general_settings != NULL) g_object_unref (marco_general_settings); if (marco_workspaces_settings != NULL) g_object_unref (marco_workspaces_settings); /* Wrap workspaces: */ if (pager->wrap_workspaces_toggle) { /* make sure the toggle button resembles the value of wrap_workspaces */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pager->wrap_workspaces_toggle), pager->wrap_workspaces); } g_signal_connect(G_OBJECT(pager->wrap_workspaces_toggle), "toggled", (GCallback) wrap_workspaces_toggled, pager); /* Display workspace names: */ g_signal_connect(G_OBJECT(pager->display_workspaces_toggle), "toggled", (GCallback) display_workspace_names_toggled, pager); if (pager->display_mode == WNCK_PAGER_DISPLAY_NAME) { value = TRUE; } else { value = FALSE; } gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pager->display_workspaces_toggle), value); /* Display all workspaces: */ g_signal_connect(G_OBJECT(pager->all_workspaces_radio), "toggled", (GCallback) all_workspaces_toggled, pager); if (pager->display_all) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pager->all_workspaces_radio), TRUE); if (!g_object_get_data(G_OBJECT(pager->num_rows_spin), NEVER_SENSITIVE)) { gtk_widget_set_sensitive(pager->num_rows_spin, TRUE); } } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pager->current_only_radio), TRUE); gtk_widget_set_sensitive(pager->num_rows_spin, FALSE); } /* Num rows: */ g_signal_connect(G_OBJECT(pager->num_rows_spin), "value_changed", (GCallback) num_rows_value_changed, pager); gtk_spin_button_set_value(GTK_SPIN_BUTTON(pager->num_rows_spin), pager->n_rows); gtk_label_set_text(GTK_LABEL(pager->label_row_col), pager->orientation == GTK_ORIENTATION_HORIZONTAL ? _("rows") : _("columns")); g_signal_connect(pager->properties_dialog, "destroy", G_CALLBACK(properties_dialog_destroyed), pager); g_signal_connect(pager->properties_dialog, "delete_event", G_CALLBACK(delete_event), pager); g_signal_connect(pager->properties_dialog, "response", G_CALLBACK(response_cb), pager); g_signal_connect(WID("done_button"), "clicked", (GCallback) close_dialog, pager); gtk_spin_button_set_value(GTK_SPIN_BUTTON(pager->num_workspaces_spin), wnck_screen_get_workspace_count(pager->screen)); g_signal_connect(G_OBJECT(pager->num_workspaces_spin), "value_changed", (GCallback) num_workspaces_value_changed, pager); wncklet_connect_while_alive(pager->screen, "workspace_created", G_CALLBACK(workspace_created), pager, pager->properties_dialog); wncklet_connect_while_alive(pager->screen, "workspace_destroyed", G_CALLBACK(workspace_destroyed), pager, pager->properties_dialog); g_signal_connect(G_OBJECT(pager->workspaces_tree), "focus_out_event", (GCallback) workspaces_tree_focused_out, pager); pager->workspaces_store = gtk_list_store_new(1, G_TYPE_STRING, NULL); update_workspaces_model(pager); gtk_tree_view_set_model(GTK_TREE_VIEW(pager->workspaces_tree), GTK_TREE_MODEL(pager->workspaces_store)); g_object_unref(pager->workspaces_store); cell = g_object_new(GTK_TYPE_CELL_RENDERER_TEXT, "editable", TRUE, NULL); column = gtk_tree_view_column_new_with_attributes("workspace", cell, "text", 0, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(pager->workspaces_tree), column); g_signal_connect(cell, "edited", (GCallback) workspace_name_edited, pager); nr_ws = wnck_screen_get_workspace_count(pager->screen); for (i = 0; i < nr_ws; i++) { wncklet_connect_while_alive(G_OBJECT(wnck_screen_get_workspace(pager->screen, i)), "name_changed", G_CALLBACK(workspace_renamed), pager, pager->properties_dialog); } update_properties_for_wm(pager); }
static void panel_place_menu_item_init (PanelPlaceMenuItem *menuitem) { GFile *bookmark; char *bookmarks_filename; GError *error; menuitem->priv = PANEL_PLACE_MENU_ITEM_GET_PRIVATE (menuitem); if (mate_gsettings_schema_exists (CAJA_DESKTOP_SCHEMA)) { menuitem->priv->caja_desktop_settings = g_settings_new (CAJA_DESKTOP_SCHEMA); g_signal_connect (menuitem->priv->caja_desktop_settings, "changed::" CAJA_DESKTOP_HOME_ICON_NAME_KEY, G_CALLBACK (panel_place_menu_item_key_changed), G_OBJECT (menuitem)); g_signal_connect (menuitem->priv->caja_desktop_settings, "changed::" CAJA_DESKTOP_COMPUTER_ICON_NAME_KEY, G_CALLBACK (panel_place_menu_item_key_changed), G_OBJECT (menuitem)); } else menuitem->priv->caja_desktop_settings = NULL; if (mate_gsettings_schema_exists (CAJA_PREFS_SCHEMA)) { menuitem->priv->caja_prefs_settings = g_settings_new (CAJA_PREFS_SCHEMA); g_signal_connect (menuitem->priv->caja_prefs_settings, "changed::" CAJA_PREFS_DESKTOP_IS_HOME_DIR_KEY, G_CALLBACK (panel_place_menu_item_key_changed), G_OBJECT (menuitem)); } else menuitem->priv->caja_prefs_settings = NULL; menuitem->priv->menubar_settings = g_settings_new (PANEL_MENU_BAR_SCHEMA); g_signal_connect (menuitem->priv->menubar_settings, "changed::" PANEL_MENU_BAR_MAX_ITEMS_OR_SUBMENU, G_CALLBACK (panel_place_menu_item_key_changed), G_OBJECT (menuitem)); menuitem->priv->recent_manager = gtk_recent_manager_get_default (); bookmarks_filename = g_build_filename (g_get_home_dir (), BOOKMARKS_FILENAME, NULL); bookmark = g_file_new_for_path (bookmarks_filename); error = NULL; menuitem->priv->bookmarks_monitor = g_file_monitor_file (bookmark, G_FILE_MONITOR_NONE, NULL, &error); if (error) { g_warning ("Failed to add file monitor for %s: %s\n", bookmarks_filename, error->message); g_error_free (error); } else { g_signal_connect (G_OBJECT (menuitem->priv->bookmarks_monitor), "changed", (GCallback) panel_place_menu_item_gtk_bookmarks_changed, menuitem); } g_object_unref (bookmark); g_free (bookmarks_filename); menuitem->priv->volume_monitor = g_volume_monitor_get (); menuitem->priv->drive_changed_id = g_signal_connect (menuitem->priv->volume_monitor, "drive-changed", G_CALLBACK (panel_place_menu_item_drives_changed), menuitem); menuitem->priv->drive_connected_id = g_signal_connect (menuitem->priv->volume_monitor, "drive-connected", G_CALLBACK (panel_place_menu_item_drives_changed), menuitem); menuitem->priv->drive_disconnected_id = g_signal_connect (menuitem->priv->volume_monitor, "drive-disconnected", G_CALLBACK (panel_place_menu_item_drives_changed), menuitem); menuitem->priv->volume_added_id = g_signal_connect (menuitem->priv->volume_monitor, "volume-added", G_CALLBACK (panel_place_menu_item_volumes_changed), menuitem); menuitem->priv->volume_changed_id = g_signal_connect (menuitem->priv->volume_monitor, "volume-changed", G_CALLBACK (panel_place_menu_item_volumes_changed), menuitem); menuitem->priv->volume_removed_id = g_signal_connect (menuitem->priv->volume_monitor, "volume-removed", G_CALLBACK (panel_place_menu_item_volumes_changed), menuitem); menuitem->priv->mount_added_id = g_signal_connect (menuitem->priv->volume_monitor, "mount-added", G_CALLBACK (panel_place_menu_item_mounts_changed), menuitem); menuitem->priv->mount_changed_id = g_signal_connect (menuitem->priv->volume_monitor, "mount-changed", G_CALLBACK (panel_place_menu_item_mounts_changed), menuitem); menuitem->priv->mount_removed_id = g_signal_connect (menuitem->priv->volume_monitor, "mount-removed", G_CALLBACK (panel_place_menu_item_mounts_changed), menuitem); }
int main (int argc, char *argv[]) { MateSettingsManager *manager; DBusGConnection *bus; gboolean res; GError *error; GSettings *debug_settings = NULL; manager = NULL; mate_settings_profile_start (NULL); bindtextdomain (GETTEXT_PACKAGE, MATE_SETTINGS_LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); setlocale (LC_ALL, ""); parse_args (&argc, &argv); /* Allows to enable/disable debug from GSettings only if it is not set from argument */ if (mate_gsettings_schema_exists (DEBUG_SCHEMA)) { debug_settings = g_settings_new (DEBUG_SCHEMA); debug = g_settings_get_boolean (debug_settings, DEBUG_KEY); g_signal_connect (debug_settings, "changed::" DEBUG_KEY, G_CALLBACK (debug_changed), NULL); if (debug) { g_setenv ("G_MESSAGES_DEBUG", "all", FALSE); } } mate_settings_profile_start ("opening gtk display"); if (! gtk_init_check (NULL, NULL)) { g_warning ("Unable to initialize GTK+"); exit (EXIT_FAILURE); } mate_settings_profile_end ("opening gtk display"); g_log_set_default_handler (msd_log_default_handler, NULL); bus = get_session_bus (); if (bus == NULL) { g_warning ("Could not get a connection to the bus"); goto out; } if (! bus_register (bus)) { goto out; } #ifdef HAVE_LIBNOTIFY notify_init ("mate-settings-daemon"); #endif /* HAVE_LIBNOTIFY */ mate_settings_profile_start ("mate_settings_manager_new"); manager = mate_settings_manager_new (); mate_settings_profile_end ("mate_settings_manager_new"); if (manager == NULL) { g_warning ("Unable to register object"); goto out; } set_session_over_handler (bus, manager); /* If we aren't started by dbus then load the plugins automatically. Otherwise, wait for an Awake etc. */ if (g_getenv ("DBUS_STARTER_BUS_TYPE") == NULL) { error = NULL; res = mate_settings_manager_start (manager, &error); if (! res) { g_warning ("Unable to start: %s", error->message); g_error_free (error); goto out; } } if (do_timed_exit) { g_timeout_add_seconds (30, (GSourceFunc) timed_exit_cb, NULL); } gtk_main (); out: if (bus != NULL) { dbus_g_connection_unref (bus); } if (manager != NULL) { g_object_unref (manager); } if (debug_settings != NULL) { g_object_unref (debug_settings); } #ifdef HAVE_LIBNOTIFY if (notify_is_initted ()) notify_uninit (); #endif /* HAVE_LIBNOTIFY */ g_debug ("SettingsDaemon finished"); mate_settings_profile_end (NULL); return 0; }