From 934a0a1f1c7766dd8193e020af6bed8134488e83 Mon Sep 17 00:00:00 2001 From: Perberos Date: Mon, 30 Jan 2012 12:06:56 -0300 Subject: g_get_user_config_dir() would be better (https://github.com/mate-desktop/mate-panel/issues/8) --- geyes/themes.c | 105 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 55 insertions(+), 50 deletions(-) (limited to 'geyes') diff --git a/geyes/themes.c b/geyes/themes.c index 7334a318..35b13a73 100644 --- a/geyes/themes.c +++ b/geyes/themes.c @@ -1,20 +1,20 @@ /* * Copyright (C) 1999 Dave Camp - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * + * */ #include @@ -41,12 +41,17 @@ enum { void theme_dirs_create (void) { static gboolean themes_created = FALSE; - + if (themes_created == TRUE) return; theme_directories[0] = g_build_filename(GEYES_THEMES_DIR, NULL); - theme_directories[1] = g_build_filename(g_get_home_dir(), ".config", "mate", "geyes-themes", NULL); + + #if GLIB_CHECK_VERSION(2, 6, 0) + theme_directories[1] = g_build_filename(g_get_user_config_dir(), "mate", "geyes-themes", NULL); + #else // glib version < 2.6.0 + theme_directories[1] = g_build_filename(g_get_home_dir(), ".config", "mate", "geyes-themes", NULL); + #endif themes_created = TRUE; } @@ -59,13 +64,13 @@ parse_theme_file (EyesApplet *eyes_applet, FILE *theme_file) fgets (line_buf, 512, theme_file); while (!feof (theme_file)) { token = strtok (line_buf, "="); - if (strncmp (token, "wall-thickness", + if (strncmp (token, "wall-thickness", strlen ("wall-thickness")) == 0) { token += strlen ("wall-thickness"); while (!isdigit (*token)) { token++; } - sscanf (token, "%d", &eyes_applet->wall_thickness); + sscanf (token, "%d", &eyes_applet->wall_thickness); } else if (strncmp (token, "num-eyes", strlen ("num-eyes")) == 0) { token += strlen ("num-eyes"); while (!isdigit (*token)) { @@ -76,24 +81,24 @@ parse_theme_file (EyesApplet *eyes_applet, FILE *theme_file) eyes_applet->num_eyes = MAX_EYES; } else if (strncmp (token, "eye-pixmap", strlen ("eye-pixmap")) == 0) { token = strtok (NULL, "\""); - token = strtok (NULL, "\""); - if (eyes_applet->eye_filename != NULL) + token = strtok (NULL, "\""); + if (eyes_applet->eye_filename != NULL) g_free (eyes_applet->eye_filename); eyes_applet->eye_filename = g_strdup_printf ("%s%s", eyes_applet->theme_dir, token); } else if (strncmp (token, "pupil-pixmap", strlen ("pupil-pixmap")) == 0) { token = strtok (NULL, "\""); - token = strtok (NULL, "\""); - if (eyes_applet->pupil_filename != NULL) + token = strtok (NULL, "\""); + if (eyes_applet->pupil_filename != NULL) g_free (eyes_applet->pupil_filename); - eyes_applet->pupil_filename + eyes_applet->pupil_filename = g_strdup_printf ("%s%s", eyes_applet->theme_dir, - token); + token); } fgets (line_buf, 512, theme_file); - } + } } int @@ -140,7 +145,7 @@ load_theme (EyesApplet *eyes_applet, const gchar *theme_dir) fclose (theme_file); eyes_applet->theme_name = g_strdup (theme_dir); - + if (eyes_applet->eye_image) g_object_unref (eyes_applet->eye_image); eyes_applet->eye_image = gdk_pixbuf_new_from_file (eyes_applet->eye_filename, NULL); @@ -152,9 +157,9 @@ load_theme (EyesApplet *eyes_applet, const gchar *theme_dir) eyes_applet->eye_width = gdk_pixbuf_get_width (eyes_applet->eye_image); eyes_applet->pupil_height = gdk_pixbuf_get_height (eyes_applet->pupil_image); eyes_applet->pupil_width = gdk_pixbuf_get_width (eyes_applet->pupil_image); - + g_free (file_name); - + return TRUE; } @@ -163,14 +168,14 @@ destroy_theme (EyesApplet *eyes_applet) { /* Dunno about this - to unref or not to unref? */ if (eyes_applet->eye_image != NULL) { - g_object_unref (eyes_applet->eye_image); + g_object_unref (eyes_applet->eye_image); eyes_applet->eye_image = NULL; } if (eyes_applet->pupil_image != NULL) { - g_object_unref (eyes_applet->pupil_image); + g_object_unref (eyes_applet->pupil_image); eyes_applet->pupil_image = NULL; } - + g_free (eyes_applet->theme_dir); g_free (eyes_applet->theme_name); } @@ -202,29 +207,29 @@ theme_selected_cb (GtkTreeSelection *selection, gpointer data) GtkTreeIter iter; gchar *theme; gchar *theme_dir; - + if (!gtk_tree_selection_get_selected (selection, &model, &iter)) return; - + gtk_tree_model_get (model, &iter, COL_THEME_DIR, &theme, -1); - + g_return_if_fail (theme); - + theme_dir = g_strdup_printf ("%s/", theme); if (!g_ascii_strncasecmp (theme_dir, eyes_applet->theme_dir, strlen (theme_dir))) { g_free (theme_dir); return; } g_free (theme_dir); - + destroy_eyes (eyes_applet); destroy_theme (eyes_applet); load_theme (eyes_applet, theme); setup_eyes (eyes_applet); - + mate_panel_applet_mateconf_set_string ( eyes_applet->applet, "theme_path", theme, NULL); - + g_free (theme); } @@ -290,7 +295,7 @@ properties_cb (GtkAction *action, gchar *filename; #endif gchar *title; - + if (eyes_applet->prop_box.pbox) { gtk_window_set_screen ( GTK_WINDOW (eyes_applet->prop_box.pbox), @@ -307,7 +312,7 @@ properties_cb (GtkAction *action, gtk_window_set_screen (GTK_WINDOW (pbox), gtk_widget_get_screen (GTK_WIDGET (eyes_applet->applet))); - + gtk_widget_set_size_request (GTK_WIDGET (pbox), 300, 200); gtk_dialog_set_default_response(GTK_DIALOG (pbox), GTK_RESPONSE_CLOSE); gtk_dialog_set_has_separator (GTK_DIALOG (pbox), FALSE); @@ -317,11 +322,11 @@ properties_cb (GtkAction *action, g_signal_connect (pbox, "response", G_CALLBACK (presponse_cb), eyes_applet); - + vbox = gtk_vbox_new (FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox), 5); gtk_widget_show (vbox); - + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (pbox))), vbox, TRUE, TRUE, 0); @@ -332,7 +337,7 @@ properties_cb (GtkAction *action, category_vbox = gtk_vbox_new (FALSE, 6); gtk_box_pack_start (GTK_BOX (categories_vbox), category_vbox, TRUE, TRUE, 0); gtk_widget_show (category_vbox); - + title = g_strconcat ("", _("Themes"), "", NULL); label = gtk_label_new (_(title)); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); @@ -340,20 +345,20 @@ properties_cb (GtkAction *action, gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_box_pack_start (GTK_BOX (category_vbox), label, FALSE, FALSE, 0); g_free (title); - + hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (category_vbox), hbox, TRUE, TRUE, 0); gtk_widget_show (hbox); - + indent = gtk_label_new (HIG_IDENTATION); gtk_label_set_justify (GTK_LABEL (indent), GTK_JUSTIFY_LEFT); gtk_box_pack_start (GTK_BOX (hbox), indent, FALSE, FALSE, 0); gtk_widget_show (indent); - + control_vbox = gtk_vbox_new (FALSE, 6); gtk_box_pack_start (GTK_BOX (hbox), control_vbox, TRUE, TRUE, 0); gtk_widget_show (control_vbox); - + label = gtk_label_new_with_mnemonic (_("_Select a theme:")); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_box_pack_start (GTK_BOX (control_vbox), label, FALSE, FALSE, 0); @@ -371,12 +376,12 @@ properties_cb (GtkAction *action, g_object_unref (model); gtk_container_add (GTK_CONTAINER (scrolled), tree); - + cell = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("not used", cell, "text", COL_THEME_NAME, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column); - + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree)); g_signal_connect (selection, "changed", G_CALLBACK (theme_selected_cb), @@ -394,7 +399,7 @@ properties_cb (GtkAction *action, gchar *theme_dir; gchar *theme_name; #ifdef PATH_MAX - strcpy (filename, + strcpy (filename, theme_directories[i]); strcat (filename, dp->d_name); #else @@ -402,20 +407,20 @@ properties_cb (GtkAction *action, #endif theme_dir = g_strdup_printf ("%s/", filename); theme_name = g_path_get_basename (filename); - + gtk_list_store_append (model, &iter); gtk_list_store_set (model, &iter, COL_THEME_DIR, &filename, COL_THEME_NAME, theme_name, -1); - + if (!g_ascii_strncasecmp (eyes_applet->theme_dir, theme_dir, strlen (theme_dir))) { GtkTreePath *path; - path = gtk_tree_model_get_path (GTK_TREE_MODEL (model), + path = gtk_tree_model_get_path (GTK_TREE_MODEL (model), &iter); - gtk_tree_view_set_cursor (GTK_TREE_VIEW (tree), - path, - NULL, + gtk_tree_view_set_cursor (GTK_TREE_VIEW (tree), + path, + NULL, FALSE); gtk_tree_path_free (path); } @@ -429,13 +434,13 @@ properties_cb (GtkAction *action, #ifndef PATH_MAX g_free (filename); #endif - + gtk_box_pack_start (GTK_BOX (control_vbox), scrolled, TRUE, TRUE, 0); - + gtk_widget_show_all (pbox); - + eyes_applet->prop_box.pbox = pbox; - + return; } -- cgit v1.2.1