X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-application.c;h=43c40680dec9b4662aca03081a262a75d0ec4ed1;hb=11368f9b50db86ce4f2ae0b549fb575a19af2a74;hp=2a89eaa151a719b0ed6999690bceae87bcb8ff0d;hpb=69d92c409d333e5dd9cc82537c0834b201487c60;p=evince.git diff --git a/shell/ev-application.c b/shell/ev-application.c index 2a89eaa1..43c40680 100644 --- a/shell/ev-application.c +++ b/shell/ev-application.c @@ -20,6 +20,10 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "ev-application.h" #include @@ -28,10 +32,7 @@ #include #include #include -#include - -#include -#include +#include struct _EvApplicationPrivate { GList *windows; @@ -67,7 +68,7 @@ window_destroy_cb (GtkObject *object, gpointer user_data) g_list_remove (application->priv->windows, object); if (application->priv->windows == NULL) - bonobo_main_quit (); + gtk_main_quit (); } EvWindow * @@ -98,7 +99,7 @@ is_window_empty (const EvWindow *ev_window, gconstpointer dummy) : -1; } -static EvWindow * +EvWindow * ev_application_get_empty_window (EvApplication *application) { GList *node; @@ -116,8 +117,17 @@ ev_application_open (EvApplication *application, GError *err) { EvWindow *ev_window; GtkWidget *chooser; - GtkFileFilter *both_filter, *pdf_filter, *ps_filter, *all_filter; - + GtkFileFilter *documents_filter; + GtkFileFilter *pdf_filter; + GtkFileFilter *ps_filter; + GtkFileFilter *pixbuf_filter; + GtkFileFilter *all_filter; +#ifdef ENABLE_DJVU + GtkFileFilter *djvu_filter; +#endif +#ifdef ENABLE_DVI + GtkFileFilter *dvi_filter; +#endif ev_window = ev_application_get_empty_window (application); @@ -129,16 +139,27 @@ ev_application_open (EvApplication *application, GError *err) GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL); - both_filter = gtk_file_filter_new (); - gtk_file_filter_set_name (both_filter, - _("PostScript and PDF Documents")); - gtk_file_filter_add_mime_type (both_filter, "application/postscript"); - gtk_file_filter_add_mime_type (both_filter, "application/pdf"); - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), both_filter); + documents_filter = gtk_file_filter_new (); + gtk_file_filter_set_name (documents_filter, + _("All Documents")); + gtk_file_filter_add_mime_type (documents_filter, "application/postscript"); + gtk_file_filter_add_mime_type (documents_filter, "application/x-gzpostscript"); + gtk_file_filter_add_mime_type (documents_filter, "image/x-eps"); + gtk_file_filter_add_mime_type (documents_filter, "application/pdf"); +#ifdef ENABLE_DVI + gtk_file_filter_add_mime_type (documents_filter, "application/x-dvi"); +#endif + gtk_file_filter_add_pixbuf_formats (documents_filter); +#ifdef ENABLE_DJVU + gtk_file_filter_add_mime_type (documents_filter, "image/vnd.djvu"); +#endif + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), documents_filter); ps_filter = gtk_file_filter_new (); gtk_file_filter_set_name (ps_filter, _("PostScript Documents")); gtk_file_filter_add_mime_type (ps_filter, "application/postscript"); + gtk_file_filter_add_mime_type (ps_filter, "application/x-gzpostscript"); + gtk_file_filter_add_mime_type (ps_filter, "image/x-eps"); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), ps_filter); pdf_filter = gtk_file_filter_new (); @@ -146,12 +167,31 @@ ev_application_open (EvApplication *application, GError *err) gtk_file_filter_add_mime_type (pdf_filter, "application/pdf"); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), pdf_filter); +#ifdef ENABLE_DVI + dvi_filter = gtk_file_filter_new (); + gtk_file_filter_set_name (dvi_filter, _("DVI Documents")); + gtk_file_filter_add_mime_type (dvi_filter, "application/x-dvi"); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), dvi_filter); +#endif + + pixbuf_filter = gtk_file_filter_new (); + gtk_file_filter_set_name (pixbuf_filter, _("Images")); + gtk_file_filter_add_pixbuf_formats (pixbuf_filter); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), pixbuf_filter); + +#ifdef ENABLE_DJVU + djvu_filter = gtk_file_filter_new (); + gtk_file_filter_set_name (djvu_filter, _("Djvu Documents")); + gtk_file_filter_add_mime_type (djvu_filter, "image/vnd.djvu"); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), djvu_filter); +#endif + all_filter = gtk_file_filter_new (); gtk_file_filter_set_name (all_filter, _("All Files")); gtk_file_filter_add_pattern (all_filter, "*"); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), all_filter); - - gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (chooser), both_filter); + + gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (chooser), documents_filter); if (gtk_dialog_run (GTK_DIALOG (chooser)) == GTK_RESPONSE_OK) { char *uri; @@ -160,29 +200,21 @@ ev_application_open (EvApplication *application, GError *err) ev_window_open (ev_window, uri); gtk_widget_show (GTK_WIDGET (ev_window)); g_free (uri); + + } else { + if (!GTK_WIDGET_VISIBLE (ev_window)) + gtk_widget_destroy (GTK_WIDGET (ev_window)); } gtk_widget_destroy (GTK_WIDGET (chooser)); } -static void -ev_application_finalize (GObject *object) -{ - g_return_if_fail (object != NULL && EV_IS_APPLICATION (object)); - - EV_APPLICATION (object)->priv = NULL; - - EV_CALL_VIRTUAL ( - G_OBJECT_CLASS (ev_application_parent_class), finalize, (object)); -} - static void ev_application_class_init (EvApplicationClass *ev_application_class) { GObjectClass *g_object_class; g_object_class = G_OBJECT_CLASS (ev_application_class); - g_object_class->finalize = ev_application_finalize; g_type_class_add_private (g_object_class, sizeof (EvApplicationPrivate));