Mercurial > cropper
view support.c @ 14:da18f2d4f92f
removed all buttons and stuff from the window; cleaned up
author | meillo@marmaro.de |
---|---|
date | Thu, 04 Mar 2010 18:31:28 +0100 |
parents | c18ba4ea1514 |
children |
line wrap: on
line source
#include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <string.h> #include <stdio.h> #include <gtk/gtk.h> #include "support.h" static GList *pixmaps_directories = NULL; GtkWidget* lookup_widget(GtkWidget* widget, const gchar* widget_name) { GtkWidget* parent; GtkWidget* found_widget; for (;;) { if (GTK_IS_MENU(widget)) { parent = gtk_menu_get_attach_widget(GTK_MENU(widget)); } else { parent = widget->parent; } if (!parent) { parent = (GtkWidget*) g_object_get_data(G_OBJECT(widget), "GladeParentKey"); } if (parent == NULL) { break; } widget = parent; } found_widget = (GtkWidget*) g_object_get_data(G_OBJECT(widget), widget_name); if (!found_widget) { g_warning("Widget not found: %s", widget_name); } return found_widget; } /* Use this function to set the directory containing installed pixmaps. */ void add_pixmap_directory(const gchar* directory) { pixmaps_directories = g_list_prepend(pixmaps_directories, g_strdup(directory)); } /* This is an internally used function to find pixmap files. */ static gchar* find_pixmap_file(const gchar* filename) { GList* elem; /* We step through each of the pixmaps directory to find it. */ elem = pixmaps_directories; while (elem) { gchar *pathname = g_strdup_printf("%s%s%s", (gchar*)elem->data, G_DIR_SEPARATOR_S, filename); if (g_file_test(pathname, G_FILE_TEST_EXISTS)) { return pathname; } g_free(pathname); elem = elem->next; } return NULL; } /* This is an internally used function to create pixmaps. */ GtkWidget* create_pixmap(GtkWidget* widget, const gchar* filename) { gchar* pathname = NULL; GtkWidget* pixmap; if (!filename || !filename[0]) { return gtk_image_new(); } pathname = find_pixmap_file(filename); if (!pathname) { g_warning("Couldn't find pixmap file: %s", filename); return gtk_image_new(); } pixmap = gtk_image_new_from_file(pathname); g_free(pathname); return pixmap; } /* This is an internally used function to create pixmaps. */ GdkPixbuf* create_pixbuf(const gchar* filename) { gchar* pathname = NULL; GdkPixbuf* pixbuf; GError* error = NULL; if (!filename || !filename[0]) { return NULL; } pathname = find_pixmap_file(filename); if (!pathname) { g_warning("Couldn't find pixmap file: %s", filename); return NULL; } pixbuf = gdk_pixbuf_new_from_file(pathname, &error); if (!pixbuf) { fprintf(stderr, "Failed to load pixbuf file: %s: %s\n", pathname, error->message); g_error_free(error); } g_free(pathname); return pixbuf; } /* This is used to set ATK action descriptions. */ void glade_set_atk_action_description(AtkAction* action, const gchar* action_name, const gchar* description) { gint n_actions; gint i; n_actions = atk_action_get_n_actions(action); for (i = 0; i < n_actions; i++) { if (!strcmp(atk_action_get_name(action, i), action_name)) { atk_action_set_description(action, i, description); } } }