From 914262d420e78766ae11b85403aa2247d5054d46 Mon Sep 17 00:00:00 2001 From: rbuj Date: Sat, 1 Aug 2020 12:52:49 +0200 Subject: geyes: Use common subdirs - src, icons, data --- geyes/themes.c | 351 --------------------------------------------------------- 1 file changed, 351 deletions(-) delete mode 100644 geyes/themes.c (limited to 'geyes/themes.c') diff --git a/geyes/themes.c b/geyes/themes.c deleted file mode 100644 index 6eed8cc9..00000000 --- a/geyes/themes.c +++ /dev/null @@ -1,351 +0,0 @@ -/* - * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include "geyes.h" - -#define GET_WIDGET(x) (GTK_WIDGET (gtk_builder_get_object (builder, (x)))) - -#define NUM_THEME_DIRECTORIES 2 - -static char *theme_directories[NUM_THEME_DIRECTORIES]; - -enum { - COL_THEME_DIR = 0, - COL_THEME_NAME, - TOTAL_COLS -}; - -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_user_config_dir(), "mate", "geyes-themes", NULL); - - themes_created = TRUE; -} - -static void -parse_theme_file (EyesApplet *eyes_applet, FILE *theme_file) -{ - gchar line_buf [512]; /* prolly overkill */ - gchar *token; - - if (fgets (line_buf, 512, theme_file) == NULL) - printf("fgets error\n"); - - while (!feof (theme_file)) { - token = strtok (line_buf, "="); - if (strncmp (token, "wall-thickness", - strlen ("wall-thickness")) == 0) { - token += strlen ("wall-thickness"); - while (!isdigit (*token)) { - token++; - } - sscanf (token, "%d", &eyes_applet->wall_thickness); - } else if (strncmp (token, "num-eyes", strlen ("num-eyes")) == 0) { - token += strlen ("num-eyes"); - while (!isdigit (*token)) { - token++; - } - sscanf (token, "%d", &eyes_applet->num_eyes); - if (eyes_applet->num_eyes > MAX_EYES) - 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) - 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) - g_free (eyes_applet->pupil_filename); - eyes_applet->pupil_filename - = g_strdup_printf ("%s%s", - eyes_applet->theme_dir, - token); - } - if (fgets (line_buf, 512, theme_file) == NULL) - printf("fgets error\n"); - } -} - -int -load_theme (EyesApplet *eyes_applet, const gchar *theme_dir) -{ - GtkWidget *dialog; - - FILE* theme_file; - gchar *file_name; - - eyes_applet->theme_dir = g_strdup_printf ("%s/", theme_dir); - - file_name = g_strdup_printf("%s%s",theme_dir,"/config"); - theme_file = fopen (file_name, "r"); - g_free (file_name); - if (theme_file == NULL) { - g_free (eyes_applet->theme_dir); - eyes_applet->theme_dir = g_strdup_printf (GEYES_THEMES_DIR "Default-tiny/"); - theme_file = fopen (GEYES_THEMES_DIR "Default-tiny/config", "r"); - } - - /* if it's still NULL we've got a major problem */ - if (theme_file == NULL) { - dialog = gtk_message_dialog_new_with_markup (NULL, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - "%s\n\n%s", - _("Can not launch the eyes applet."), - _("There was a fatal error while trying to load the theme.")); - - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - - gtk_widget_destroy (GTK_WIDGET (eyes_applet->applet)); - - return FALSE; - } - - parse_theme_file (eyes_applet, theme_file); - 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); - if (eyes_applet->pupil_image) - g_object_unref (eyes_applet->pupil_image); - eyes_applet->pupil_image = gdk_pixbuf_new_from_file (eyes_applet->pupil_filename, NULL); - - eyes_applet->eye_height = gdk_pixbuf_get_height (eyes_applet->eye_image); - 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); - - return TRUE; -} - -static void -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); - eyes_applet->eye_image = NULL; - } - if (eyes_applet->pupil_image != NULL) { - g_object_unref (eyes_applet->pupil_image); - eyes_applet->pupil_image = NULL; - } - - g_free (eyes_applet->theme_dir); - g_free (eyes_applet->theme_name); -} - -static void -theme_selected_cb (GtkTreeSelection *selection, gpointer data) -{ - EyesApplet *eyes_applet = data; - GtkTreeModel *model; - 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); - - g_settings_set_string ( - eyes_applet->settings, "theme-path", theme); - - g_free (theme); -} - -static void -phelp_cb (GtkDialog *dialog) -{ - GError *error = NULL; - - gtk_show_uri_on_window (GTK_WINDOW (dialog), - "help:mate-geyes/geyes-settings", - gtk_get_current_event_time (), - &error); - - if (error) { - GtkWidget *error_dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, - _("There was an error displaying help: %s"), error->message); - g_signal_connect (G_OBJECT (error_dialog), "response", G_CALLBACK (gtk_widget_destroy) , NULL); - gtk_window_set_resizable (GTK_WINDOW (error_dialog), FALSE); - gtk_window_set_screen (GTK_WINDOW (error_dialog), gtk_widget_get_screen (GTK_WIDGET (dialog))); - gtk_widget_show (error_dialog); - g_error_free (error); - error = NULL; - } -} - -static void -presponse_cb (GtkDialog *dialog, gint id, gpointer data) -{ - EyesApplet *eyes_applet = data; - if(id == GTK_RESPONSE_HELP){ - phelp_cb (dialog); - return; - } - - - gtk_widget_destroy (GTK_WIDGET (dialog)); - - eyes_applet->prop_box.pbox = NULL; -} - -void -properties_cb (GtkAction *action, - EyesApplet *eyes_applet) -{ - GtkBuilder *builder; - GtkWidget *tree; - GtkWidget *label; - GtkListStore *model; - GtkTreeViewColumn *column; - GtkCellRenderer *cell; - GtkTreeIter iter; - DIR *dfd; - struct dirent *dp; - int i; -#ifdef PATH_MAX - gchar filename [PATH_MAX]; -#else - gchar *filename; -#endif - - if (eyes_applet->prop_box.pbox) { - gtk_window_set_screen ( - GTK_WINDOW (eyes_applet->prop_box.pbox), - gtk_widget_get_screen (GTK_WIDGET (eyes_applet->applet))); - gtk_window_present (GTK_WINDOW (eyes_applet->prop_box.pbox)); - return; - } - - builder = gtk_builder_new_from_resource (GEYES_RESOURCE_PATH "themes.ui"); - - eyes_applet->prop_box.pbox = GET_WIDGET ("preferences_dialog"); - tree = GET_WIDGET ("themes_treeview"); - label = GET_WIDGET ("select_theme_label"); - - model = gtk_list_store_new (TOTAL_COLS, G_TYPE_STRING, G_TYPE_STRING); - gtk_tree_view_set_model (GTK_TREE_VIEW (tree), GTK_TREE_MODEL (model)); - 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); - - if ( ! g_settings_is_writable (eyes_applet->settings, "theme-path")) { - gtk_widget_set_sensitive (tree, FALSE); - gtk_widget_set_sensitive (label, FALSE); - } - - for (i = 0; i < NUM_THEME_DIRECTORIES; i++) { - if ((dfd = opendir (theme_directories[i])) != NULL) { - while ((dp = readdir (dfd)) != NULL) { - if (dp->d_name[0] != '.') { - gchar *theme_dir; - gchar *theme_name; -#ifdef PATH_MAX - strcpy (filename, - theme_directories[i]); - strcat (filename, dp->d_name); -#else - asprintf (&filename, theme_directories[i], dp->d_name); -#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), - &iter); - gtk_tree_view_set_cursor (GTK_TREE_VIEW (tree), - path, - NULL, - FALSE); - gtk_tree_path_free (path); - } - g_free (theme_name); - g_free (theme_dir); - } - } - closedir (dfd); - } - } -#ifndef PATH_MAX - g_free (filename); -#endif - g_object_unref (model); - - /* signals */ - gtk_builder_add_callback_symbols (builder, - "on_preferences_dialog_response", G_CALLBACK (presponse_cb), - "on_themes_treeselection_changed", G_CALLBACK (theme_selected_cb), - NULL); - gtk_builder_connect_signals (builder, eyes_applet); - - g_object_unref (builder); - - gtk_widget_show_all (eyes_applet->prop_box.pbox); - - return; -} -- cgit v1.2.1