[Goodies-commits] r3478 - in ristretto/trunk: . src
Stephan Arts
stephan at xfce.org
Mon Oct 29 20:33:43 CET 2007
Author: stephan
Date: 2007-10-29 19:33:43 +0000 (Mon, 29 Oct 2007)
New Revision: 3478
Modified:
ristretto/trunk/configure.in.in
ristretto/trunk/src/Makefile.am
ristretto/trunk/src/main.c
ristretto/trunk/src/main_window.c
ristretto/trunk/src/main_window.h
ristretto/trunk/src/navigator.c
ristretto/trunk/src/picture_viewer.c
Log:
Add preferences dialog
add libxfcegui4 dependency
Modified: ristretto/trunk/configure.in.in
===================================================================
--- ristretto/trunk/configure.in.in 2007-10-29 13:26:10 UTC (rev 3477)
+++ ristretto/trunk/configure.in.in 2007-10-29 19:33:43 UTC (rev 3478)
@@ -114,6 +114,7 @@
XDT_CHECK_PACKAGE([THUNAR_VFS], [thunar-vfs-1], [0.4.0])
XDT_CHECK_PACKAGE([DBUS_GLIB], [dbus-glib-1], [0.34])
XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.4.0])
+XDT_CHECK_PACKAGE([LIBXFCEGUI4], [libxfcegui4-1.0], [4.4.0])
dnl check for debugging support
Modified: ristretto/trunk/src/Makefile.am
===================================================================
--- ristretto/trunk/src/Makefile.am 2007-10-29 13:26:10 UTC (rev 3477)
+++ ristretto/trunk/src/Makefile.am 2007-10-29 19:33:43 UTC (rev 3478)
@@ -13,6 +13,7 @@
$(DBUS_GLIB_CFLAGS) \
$(LIBEXIF_CFLAGS) \
$(LIBXFCE4UTIL_CFLAGS) \
+ $(LIBXFCEGUI4_CFLAGS) \
$(THUNAR_VFS_CFLAGS) \
-DDATADIR=\"$(datadir)\" \
-DSRCDIR=\"$(top_srcdir)\" \
@@ -24,6 +25,7 @@
$(DBUS_GLIB_LIBS) \
$(LIBEXIF_LIBS) \
$(LIBXFCE4UTIL_LIBS) \
+ $(LIBXFCEGUI4_LIBS) \
$(THUNAR_VFS_LIBS)
INCLUDES = \
Modified: ristretto/trunk/src/main.c
===================================================================
--- ristretto/trunk/src/main.c 2007-10-29 13:26:10 UTC (rev 3477)
+++ ristretto/trunk/src/main.c 2007-10-29 19:33:43 UTC (rev 3478)
@@ -93,15 +93,14 @@
gint window_height = xfce_rc_read_int_entry(xfce_rc, "LastWindowHeight", 300);
gint slideshow_timeout = xfce_rc_read_int_entry(xfce_rc, "SlideShowTimeout", 5000);
gint max_cache = xfce_rc_read_int_entry(xfce_rc, "MaxImagesCacheSize", 1);
- gint max_preload = xfce_rc_read_int_entry(xfce_rc, "MaxImagesPreload", 1);
GtkWidget *window = rstto_main_window_new();
gtk_widget_ref(window);
RsttoNavigator *navigator = rstto_main_window_get_navigator(RSTTO_MAIN_WINDOW(window));
- navigator->max_history = max_cache;
- navigator->max_preload = max_preload;
+ rstto_main_window_set_max_cache_size(RSTTO_MAIN_WINDOW(window), max_cache);
+ rstto_main_window_set_slideshow_timeout(RSTTO_MAIN_WINDOW(window), (gdouble)slideshow_timeout);
GtkRecentManager *recent_manager = rstto_main_window_get_recent_manager(RSTTO_MAIN_WINDOW(window));
rstto_navigator_set_timeout(navigator, slideshow_timeout);
@@ -228,7 +227,8 @@
xfce_rc_write_entry(xfce_rc, "ThumbnailViewerOrientation", "horizontal");
break;
}
- xfce_rc_write_int_entry(xfce_rc, "MaxImagesCacheSize", rstto_navigator_get_cache_max_images(navigator));
+ xfce_rc_write_int_entry(xfce_rc, "MaxImagesCacheSize", rstto_main_window_get_max_cache_size(RSTTO_MAIN_WINDOW(window)));
+ xfce_rc_write_int_entry(xfce_rc, "SlideShowTimeout", (gint)rstto_main_window_get_slideshow_timeout(RSTTO_MAIN_WINDOW(window)));
xfce_rc_flush(xfce_rc);
xfce_rc_close(xfce_rc);
gtk_widget_unref(window);
Modified: ristretto/trunk/src/main_window.c
===================================================================
--- ristretto/trunk/src/main_window.c 2007-10-29 13:26:10 UTC (rev 3477)
+++ ristretto/trunk/src/main_window.c 2007-10-29 19:33:43 UTC (rev 3478)
@@ -19,6 +19,7 @@
#include <gdk/gdkkeysyms.h>
#include <string.h>
#include <thunar-vfs/thunar-vfs.h>
+#include <libxfcegui4/libxfcegui4.h>
#include <libexif/exif-data.h>
#include <dbus/dbus-glib.h>
@@ -53,6 +54,8 @@
GtkOrientation thumbnail_viewer_orientation;
gboolean thumbnail_viewer_visibility;
gboolean toolbar_visibility;
+ gint max_cache_size;
+ gdouble slideshow_timeout;
} settings;
struct {
@@ -83,6 +86,7 @@
GtkWidget *menu;
GtkWidget *menu_item_empty;
} open_with;
+ GtkWidget *menu_item_preferences;
} edit;
GtkWidget *menu_item_view;
@@ -207,6 +211,8 @@
cb_rstto_main_window_quit(GtkWidget *widget, RsttoMainWindow *window);
static void
cb_rstto_main_window_about(GtkWidget *widget, RsttoMainWindow *window);
+static void
+cb_rstto_main_window_preferences(GtkWidget *widget, RsttoMainWindow *window);
static void
cb_rstto_main_window_nav_iter_changed(RsttoNavigator *navigator, gint nr, RsttoNavigatorEntry *entry, RsttoMainWindow *window);
@@ -321,9 +327,11 @@
window->priv->menus.edit.menu = gtk_menu_new();
gtk_menu_set_accel_group(GTK_MENU(window->priv->menus.edit.menu), accel_group);
window->priv->menus.edit.menu_item_open_with = gtk_menu_item_new_with_mnemonic(_("Open with..."));
+ window->priv->menus.edit.menu_item_preferences = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES, NULL);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->priv->menus.menu_item_edit), window->priv->menus.edit.menu);
gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.edit.menu), window->priv->menus.edit.menu_item_open_with);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.edit.menu), window->priv->menus.edit.menu_item_preferences);
window->priv->menus.edit.open_with.menu = gtk_menu_new();
window->priv->menus.edit.open_with.menu_item_empty = gtk_menu_item_new_with_label(_("No applications available"));
@@ -600,6 +608,10 @@
"activate",
G_CALLBACK(cb_rstto_main_window_about), window);
+ g_signal_connect(window->priv->menus.edit.menu_item_preferences,
+ "activate",
+ G_CALLBACK(cb_rstto_main_window_preferences), window);
+
g_signal_connect(window->priv->menus.go.menu_item_next,
"activate",
G_CALLBACK(cb_rstto_main_window_next), window);
@@ -811,6 +823,32 @@
return window->priv->manager;
}
+gdouble
+rstto_main_window_get_slideshow_timeout (RsttoMainWindow *window)
+{
+ return window->priv->settings.slideshow_timeout;
+}
+
+gint
+rstto_main_window_get_max_cache_size (RsttoMainWindow *window)
+{
+ return window->priv->settings.max_cache_size;
+}
+
+void
+rstto_main_window_set_slideshow_timeout (RsttoMainWindow *window, gdouble timeout)
+{
+ window->priv->settings.slideshow_timeout = timeout;
+ rstto_navigator_set_timeout(window->priv->navigator, timeout);
+}
+
+void
+rstto_main_window_set_max_cache_size (RsttoMainWindow *window, gint max_cache_size)
+{
+ window->priv->settings.max_cache_size = max_cache_size;
+ window->priv->navigator->max_history = max_cache_size;
+}
+
/* CALLBACK FUNCTIONS */
static void
@@ -960,6 +998,73 @@
}
static void
+cb_rstto_main_window_preferences(GtkWidget *widget, RsttoMainWindow *window)
+{
+ GtkWidget *dialog = xfce_titled_dialog_new_with_buttons(N_("Image viewer Preferences"),
+ GTK_WINDOW(window),
+ 0,
+ GTK_STOCK_CANCEL,
+ GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OK,
+ GTK_RESPONSE_OK,
+ NULL);
+ gtk_window_set_icon_name(GTK_WINDOW(dialog), "ristretto");
+
+ GtkWidget *notebook = gtk_notebook_new();
+
+ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), notebook, TRUE, TRUE, 0);
+
+ GtkWidget *main_vbox = gtk_vbox_new(FALSE, 0);
+ GtkWidget *main_lbl = gtk_label_new(N_("Behaviour"));
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), main_vbox, main_lbl);
+
+ GtkWidget *slideshow_frame = gtk_frame_new(N_("Slideshow:"));
+
+ GtkWidget *slideshow_vbox = gtk_vbox_new(FALSE, 0);
+ GtkWidget *slideshow_lbl = gtk_label_new(NULL);
+ GtkWidget *slideshow_hscale = gtk_hscale_new_with_range(1, 60, 1);
+
+ gtk_range_set_value(GTK_RANGE(slideshow_hscale), window->priv->settings.slideshow_timeout / 1000);
+
+ gtk_box_pack_start(GTK_BOX(slideshow_vbox), slideshow_lbl, FALSE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(slideshow_vbox), slideshow_hscale, FALSE, TRUE, 0);
+
+ gtk_container_add(GTK_CONTAINER(slideshow_frame), slideshow_vbox);
+
+ GtkWidget *cache_frame = gtk_frame_new(N_("Image history cache:"));
+
+ GtkWidget *cache_vbox = gtk_vbox_new(FALSE, 0);
+ GtkWidget *cache_lbl = gtk_label_new(NULL);
+ GtkWidget *cache_hscale = gtk_hscale_new_with_range(1, 20, 3);
+
+ gtk_range_set_value(GTK_RANGE(cache_hscale), window->priv->settings.max_cache_size);
+
+ gtk_box_pack_start(GTK_BOX(cache_vbox), cache_lbl, FALSE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(cache_vbox), cache_hscale, FALSE, TRUE, 0);
+
+ gtk_container_add(GTK_CONTAINER(cache_frame), cache_vbox);
+
+ gtk_box_pack_start(GTK_BOX(main_vbox), slideshow_frame, FALSE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(main_vbox), cache_frame, FALSE, TRUE, 0);
+
+ gtk_widget_show_all(notebook);
+
+ gint result = gtk_dialog_run(GTK_DIALOG(dialog));
+
+ switch (result)
+ {
+ case GTK_RESPONSE_OK:
+ rstto_main_window_set_slideshow_timeout(window, gtk_range_get_value(GTK_RANGE(slideshow_hscale)) * 1000);
+ rstto_main_window_set_max_cache_size(window, gtk_range_get_value(GTK_RANGE(cache_hscale)));
+ break;
+ default:
+ break;
+ }
+
+ gtk_widget_destroy(dialog);
+}
+
+static void
cb_rstto_main_window_about(GtkWidget *widget, RsttoMainWindow *window)
{
const gchar *authors[] = {
Modified: ristretto/trunk/src/main_window.h
===================================================================
--- ristretto/trunk/src/main_window.h 2007-10-29 13:26:10 UTC (rev 3477)
+++ ristretto/trunk/src/main_window.h 2007-10-29 19:33:43 UTC (rev 3478)
@@ -77,6 +77,16 @@
GtkRecentManager *
rstto_main_window_get_recent_manager (RsttoMainWindow *window);
+
+gdouble
+rstto_main_window_get_slideshow_timeout (RsttoMainWindow *window);
+gint
+rstto_main_window_get_max_cache_size (RsttoMainWindow *window);
+void
+rstto_main_window_set_slideshow_timeout (RsttoMainWindow *window, gdouble timeout);
+void
+rstto_main_window_set_max_cache_size (RsttoMainWindow *window, gint max_cache_size);
+
G_END_DECLS
#endif /* __RISTRETTO_MAIN_WINDOW_H__ */
Modified: ristretto/trunk/src/navigator.c
===================================================================
--- ristretto/trunk/src/navigator.c 2007-10-29 13:26:10 UTC (rev 3477)
+++ ristretto/trunk/src/navigator.c 2007-10-29 19:33:43 UTC (rev 3478)
@@ -245,8 +245,6 @@
{
g_signal_handlers_disconnect_by_func(entry->loader , cb_rstto_navigator_entry_area_prepared, entry);
gdk_pixbuf_loader_close(entry->loader, NULL);
- g_object_unref(entry->loader);
- entry->loader = NULL;
}
if(entry->animation)
@@ -554,6 +552,7 @@
{
if(navigator->file_iter)
{
+ rstto_navigator_guard_history(navigator, navigator->file_iter->data);
navigator->old_position = rstto_navigator_get_position(navigator);
}
navigator->file_iter = g_list_nth(navigator->file_list, n);
@@ -713,6 +712,7 @@
if(nav_entry->io_channel)
{
+ g_io_channel_unref(nav_entry->io_channel);
g_source_remove(nav_entry->io_source_id);
}
@@ -720,7 +720,6 @@
{
g_signal_handlers_disconnect_by_func(nav_entry->loader , cb_rstto_navigator_entry_area_prepared, nav_entry);
gdk_pixbuf_loader_close(nav_entry->loader, NULL);
- g_object_unref(nav_entry->loader);
}
if(nav_entry->animation)
{
@@ -836,6 +835,7 @@
gboolean
rstto_navigator_entry_load_image (RsttoNavigatorEntry *entry)
{
+ g_return_val_if_fail(entry != NULL, FALSE);
gchar *path = NULL;
if (entry->io_channel)
@@ -915,6 +915,8 @@
}
}
g_io_channel_unref(io_channel);
+ entry->io_channel = NULL;
+ entry->io_source_id = 0;
return FALSE;
}
@@ -965,6 +967,12 @@
}
}
+ if (entry->loader)
+ {
+ g_object_unref(entry->loader);
+ entry->loader = NULL;
+ }
+
if (pixbuf != NULL)
{
Modified: ristretto/trunk/src/picture_viewer.c
===================================================================
--- ristretto/trunk/src/picture_viewer.c 2007-10-29 13:26:10 UTC (rev 3477)
+++ ristretto/trunk/src/picture_viewer.c 2007-10-29 19:33:43 UTC (rev 3478)
@@ -730,7 +730,15 @@
cb_rstto_picture_viewer_nav_iter_changed(RsttoNavigator *nav, gint nr, RsttoNavigatorEntry *entry, RsttoPictureViewer *viewer)
{
viewer->priv->entry = entry;
- rstto_navigator_entry_load_image(entry);
+ if(entry)
+ {
+ rstto_navigator_entry_load_image(entry);
+ }
+ else
+ {
+ rstto_picture_viewer_refresh(viewer);
+ rstto_picture_viewer_paint(GTK_WIDGET(viewer));
+ }
}
static void
More information about the Goodies-commits
mailing list