[Goodies-commits] r6533 - ristretto/branches/ristretto-gio/src
Stephan Arts
stephan at xfce.org
Fri Jan 23 20:50:31 CET 2009
Author: stephan
Date: 2009-01-23 19:50:31 +0000 (Fri, 23 Jan 2009)
New Revision: 6533
Modified:
ristretto/branches/ristretto-gio/src/main.c
ristretto/branches/ristretto-gio/src/main_window.c
ristretto/branches/ristretto-gio/src/navigator.c
ristretto/branches/ristretto-gio/src/settings.c
Log:
- Add file filter to file-open dialog
- Add mimetype selection for cli files
- Fix 'Close All'
- Remember 'current-uri' for file-open dialog
Modified: ristretto/branches/ristretto-gio/src/main.c
===================================================================
--- ristretto/branches/ristretto-gio/src/main.c 2009-01-23 18:52:12 UTC (rev 6532)
+++ ristretto/branches/ristretto-gio/src/main.c 2009-01-23 19:50:31 UTC (rev 6533)
@@ -17,6 +17,8 @@
*/
#include <config.h>
+#include <string.h>
+
#include <glib.h>
#include <gio/gio.h>
@@ -130,11 +132,20 @@
static gboolean
cb_rstto_open_files (RsttoOpenFiles *rof)
{
+ GFile *file;
+ GFileInfo *file_info;
+ const gchar *content_type;
if (rof->iter < rof->argc)
{
- GFile *file = g_file_new_for_commandline_arg (rof->argv[rof->iter]);
- rstto_navigator_add_file (rof->navigator, file, NULL);
- rof->iter++;
+ file = g_file_new_for_commandline_arg (rof->argv[rof->iter]);
+ file_info = g_file_query_info (file, "standard::content-type", 0, NULL, NULL);
+ content_type = g_file_info_get_attribute_string (file_info, "standard::content-type");
+
+ if (strncmp (content_type, "image/", 6) == 0)
+ {
+ rstto_navigator_add_file (rof->navigator, file, NULL);
+ }
+ rof->iter++;
return TRUE;
}
return FALSE;
Modified: ristretto/branches/ristretto-gio/src/main_window.c
===================================================================
--- ristretto/branches/ristretto-gio/src/main_window.c 2009-01-23 18:52:12 UTC (rev 6532)
+++ ristretto/branches/ristretto-gio/src/main_window.c 2009-01-23 19:50:31 UTC (rev 6533)
@@ -734,7 +734,14 @@
GtkWidget *dialog, *err_dialog;
gint response;
GFile *file;
+ GSList *files, *_files_iter;
+ GValue current_uri_val = {0, };
+ g_value_init (¤t_uri_val, G_TYPE_STRING);
+ g_object_get_property (G_OBJECT(window->priv->settings_manager), "current-uri", ¤t_uri_val);
+
+ GtkFileFilter *filter = gtk_file_filter_new();
+
dialog = gtk_file_chooser_dialog_new(_("Open image"),
GTK_WINDOW(window),
GTK_FILE_CHOOSER_ACTION_OPEN,
@@ -742,21 +749,40 @@
GTK_STOCK_OPEN, GTK_RESPONSE_OK,
NULL);
+ gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dialog), TRUE);
+ if (g_value_get_string (¤t_uri_val))
+ gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dialog), g_value_get_string (¤t_uri_val));
+
+ gtk_file_filter_add_pixbuf_formats (filter);
+ gtk_file_filter_set_name (filter, _("Images"));
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
+
+
response = gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_hide (dialog);
if(response == GTK_RESPONSE_OK)
{
- file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog));
- if (rstto_navigator_add_file (window->priv->props.navigator, file, NULL) == FALSE)
+ files = gtk_file_chooser_get_files (GTK_FILE_CHOOSER (dialog));
+ _files_iter = files;
+ while (_files_iter)
{
- err_dialog = gtk_message_dialog_new(GTK_WINDOW(window),
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- _("Could not open file"));
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
+ file = _files_iter->data;
+ if (rstto_navigator_add_file (window->priv->props.navigator, file, NULL) == FALSE)
+ {
+ err_dialog = gtk_message_dialog_new(GTK_WINDOW(window),
+ GTK_DIALOG_MODAL,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_OK,
+ _("Could not open file"));
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+ }
+ _files_iter = g_slist_next (_files_iter);
}
+
+ g_value_set_string (¤t_uri_val, gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dialog)));
+ g_object_set_property (G_OBJECT(window->priv->settings_manager), "current-uri", ¤t_uri_val);
+
}
gtk_widget_destroy(dialog);
@@ -913,7 +939,7 @@
static void
cb_rstto_main_window_close_all (GtkWidget *widget, RsttoMainWindow *window)
{
- g_debug ("%s", __FUNCTION__);
+ rstto_navigator_remove_all (window->priv->props.navigator);
}
/**
Modified: ristretto/branches/ristretto-gio/src/navigator.c
===================================================================
--- ristretto/branches/ristretto-gio/src/navigator.c 2009-01-23 18:52:12 UTC (rev 6532)
+++ ristretto/branches/ristretto-gio/src/navigator.c 2009-01-23 19:50:31 UTC (rev 6533)
@@ -35,6 +35,9 @@
static void
rstto_navigator_dispose(GObject *object);
+static gint
+cb_rstto_navigator_image_name_compare_func (RsttoImage *a, RsttoImage *b);
+
static GObjectClass *parent_class = NULL;
enum
@@ -145,7 +148,7 @@
RsttoImage *image = rstto_image_new (file);
if (image)
{
- navigator->priv->images = g_list_prepend (navigator->priv->images, image);
+ navigator->priv->images = g_list_insert_sorted (navigator->priv->images, image, (GCompareFunc)cb_rstto_navigator_image_name_compare_func);
navigator->priv->n_images++;
g_signal_emit (G_OBJECT (navigator), rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_INVALIDATE_ITERS], 0, NULL);
@@ -170,7 +173,8 @@
iter->iter = iter->list;
- g_list_foreach (iter->list, (GFunc)g_object_ref, NULL);
+ if (iter->list)
+ g_list_foreach (iter->list, (GFunc)g_object_ref, NULL);
return iter;
}
@@ -261,6 +265,7 @@
{
g_list_foreach (navigator->priv->images, (GFunc)g_object_unref, NULL);
g_list_free (navigator->priv->images);
+ navigator->priv->images = NULL;
g_signal_emit (G_OBJECT (navigator), rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_INVALIDATE_ITERS], 0, NULL);
}
@@ -274,3 +279,18 @@
return FALSE;
}
+
+static gint
+cb_rstto_navigator_image_name_compare_func (RsttoImage *a, RsttoImage *b)
+{
+ gchar *a_base = g_file_get_basename (rstto_image_get_file (a));
+ gchar *b_base = g_file_get_basename (rstto_image_get_file (b));
+ gint result = 0;
+
+ result = g_strcasecmp (a_base, b_base);
+
+
+ g_free (a_base);
+ g_free (b_base);
+ return result;
+}
Modified: ristretto/branches/ristretto-gio/src/settings.c
===================================================================
--- ristretto/branches/ristretto-gio/src/settings.c 2009-01-23 18:52:12 UTC (rev 6532)
+++ ristretto/branches/ristretto-gio/src/settings.c 2009-01-23 19:50:31 UTC (rev 6533)
@@ -56,6 +56,7 @@
PROP_SHOW_TOOLBAR,
PROP_WINDOW_WIDTH,
PROP_WINDOW_HEIGHT,
+ PROP_CURRENT_URI,
};
GType
@@ -91,6 +92,7 @@
gboolean show_toolbar;
guint window_width;
guint window_height;
+ gchar *last_file_path;
};
@@ -115,6 +117,7 @@
xfconf_g_property_bind (settings->priv->channel, "/window/width", G_TYPE_UINT, settings, "window-width");
xfconf_g_property_bind (settings->priv->channel, "/window/height", G_TYPE_UINT, settings, "window-height");
xfconf_g_property_bind (settings->priv->channel, "/window/show-toolbar", G_TYPE_BOOLEAN, settings, "show-toolbar");
+ xfconf_g_property_bind (settings->priv->channel, "/file/current-uri", G_TYPE_STRING, settings, "current-uri");
}
@@ -138,7 +141,6 @@
"",
TRUE,
G_PARAM_READWRITE);
-
g_object_class_install_property (object_class,
PROP_SHOW_TOOLBAR,
pspec);
@@ -150,7 +152,6 @@
G_MAXUINT,
600,
G_PARAM_READWRITE);
-
g_object_class_install_property (object_class,
PROP_WINDOW_WIDTH,
pspec);
@@ -162,10 +163,18 @@
G_MAXUINT,
400,
G_PARAM_READWRITE);
-
g_object_class_install_property (object_class,
PROP_WINDOW_HEIGHT,
pspec);
+
+ pspec = g_param_spec_string ("current-uri",
+ "",
+ "",
+ "file://~/",
+ G_PARAM_READWRITE);
+ g_object_class_install_property (object_class,
+ PROP_CURRENT_URI,
+ pspec);
}
/**
@@ -249,6 +258,11 @@
case PROP_WINDOW_HEIGHT:
settings->priv->window_height = g_value_get_uint (value);
break;
+ case PROP_CURRENT_URI:
+ if (settings->priv->last_file_path)
+ g_free (settings->priv->last_file_path);
+ settings->priv->last_file_path = g_value_dup_string (value);
+ break;
default:
break;
}
@@ -274,6 +288,9 @@
case PROP_WINDOW_HEIGHT:
g_value_set_uint (value, settings->priv->window_height);
break;
+ case PROP_CURRENT_URI:
+ g_value_set_string (value, settings->priv->last_file_path);
+ break;
default:
break;
More information about the Goodies-commits
mailing list