[Xfce4-commits] <ristretto:ristretto-0.0> Fix errors when the 'ristretto' icon is not available. Add toggle-button for hiding navigation-toolbar
Stephan Arts
noreply at xfce.org
Sun Oct 23 19:20:11 CEST 2011
Updating branch refs/heads/ristretto-0.0
to 1b71f80354aecfebee9fe7bb2fdd064b81074a2f (commit)
from 527692577906730757dea30dbb640f1f12ff5cd8 (commit)
commit 1b71f80354aecfebee9fe7bb2fdd064b81074a2f
Author: Stephan Arts <stephan at xfce.org>
Date: Sun Aug 30 10:38:23 2009 +0200
Fix errors when the 'ristretto' icon is not available.
Add toggle-button for hiding navigation-toolbar
src/main_window.c | 82 ++++++++++++++++++++++++++++++++++++++---------
src/main_window_ui.xml | 3 +-
src/picture_viewer.c | 41 +++++++++++++-----------
src/settings.c | 36 ++++++++++++++++-----
4 files changed, 117 insertions(+), 45 deletions(-)
diff --git a/src/main_window.c b/src/main_window.c
index 84153ef..82b7ac9 100644
--- a/src/main_window.c
+++ b/src/main_window.c
@@ -205,7 +205,9 @@ cb_rstto_main_window_message_bar_cancel (GtkWidget *widget, RsttoMainWindow *win
static void
-cb_rstto_main_window_toggle_show_toolbar (GtkWidget *widget, RsttoMainWindow *window);
+cb_rstto_main_window_toggle_show_file_toolbar (GtkWidget *widget, RsttoMainWindow *window);
+static void
+cb_rstto_main_window_toggle_show_nav_toolbar (GtkWidget *widget, RsttoMainWindow *window);
static void
cb_rstto_main_window_fullscreen (GtkWidget *widget, RsttoMainWindow *window);
static void
@@ -289,7 +291,8 @@ static GtkActionEntry action_entries[] =
static const GtkToggleActionEntry toggle_action_entries[] =
{
- { "show-toolbar", NULL, N_ ("Show _Toolbar"), NULL, NULL, G_CALLBACK (cb_rstto_main_window_toggle_show_toolbar), TRUE, },
+ { "show-file-toolbar", NULL, N_ ("Show File _Toolbar"), NULL, NULL, G_CALLBACK (cb_rstto_main_window_toggle_show_file_toolbar), TRUE, },
+ { "show-nav-toolbar", NULL, N_ ("Show Nav _Toolbar"), NULL, NULL, G_CALLBACK (cb_rstto_main_window_toggle_show_nav_toolbar), TRUE, },
{ "show-thumbnailbar", NULL, N_ ("Show Thumb_nailbar"), NULL, NULL, NULL, FALSE},
};
@@ -330,7 +333,7 @@ static void
rstto_main_window_init (RsttoMainWindow *window)
{
GtkAccelGroup *accel_group;
- GValue show_toolbar_val = {0,}, window_width = {0, }, window_height = {0, };
+ GValue show_file_toolbar_val = {0,}, show_nav_toolbar_val = {0, }, window_width = {0, }, window_height = {0, };
GtkWidget *separator, *back, *forward;
GtkWidget *main_vbox = gtk_vbox_new (FALSE, 0);
GtkRecentFilter *recent_filter;
@@ -464,6 +467,7 @@ rstto_main_window_init (RsttoMainWindow *window)
gtk_box_pack_start(GTK_BOX(main_vbox), window->priv->statusbar, FALSE, FALSE, 0);
gtk_widget_set_no_show_all (window->priv->toolbar, TRUE);
+ gtk_widget_set_no_show_all (window->priv->image_list_toolbar, TRUE);
gtk_widget_set_no_show_all (window->priv->message_bar, TRUE);
/**
@@ -511,13 +515,13 @@ rstto_main_window_init (RsttoMainWindow *window)
/**
* Retrieve the toolbar state from the settings-manager
*/
- g_value_init (&show_toolbar_val, G_TYPE_BOOLEAN);
- g_object_get_property (G_OBJECT(window->priv->settings_manager), "show-toolbar", &show_toolbar_val);
- if (g_value_get_boolean (&show_toolbar_val))
+ g_value_init (&show_file_toolbar_val, G_TYPE_BOOLEAN);
+ g_object_get_property (G_OBJECT(window->priv->settings_manager), "show-file-toolbar", &show_file_toolbar_val);
+ if (g_value_get_boolean (&show_file_toolbar_val))
{
gtk_check_menu_item_set_active (
GTK_CHECK_MENU_ITEM (
- gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/show-toolbar")),
+ gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/show-file-toolbar")),
TRUE);
gtk_widget_show (window->priv->toolbar);
}
@@ -525,10 +529,30 @@ rstto_main_window_init (RsttoMainWindow *window)
{
gtk_check_menu_item_set_active (
GTK_CHECK_MENU_ITEM (
- gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/show-toolbar")),
+ gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/show-file-toolbar")),
FALSE);
gtk_widget_hide (window->priv->toolbar);
}
+ g_value_init (&show_nav_toolbar_val, G_TYPE_BOOLEAN);
+ g_object_get_property (G_OBJECT(window->priv->settings_manager), "show-nav-toolbar", &show_nav_toolbar_val);
+ if (g_value_get_boolean (&show_nav_toolbar_val))
+ {
+ gtk_check_menu_item_set_active (
+ GTK_CHECK_MENU_ITEM (
+ gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/show-nav-toolbar")),
+ TRUE);
+ gtk_widget_show (window->priv->image_list_toolbar);
+ }
+ else
+ {
+ gtk_check_menu_item_set_active (
+ GTK_CHECK_MENU_ITEM (
+ gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/show-nav-toolbar")),
+ FALSE);
+ gtk_widget_hide (window->priv->image_list_toolbar);
+ }
+ g_value_reset (&show_file_toolbar_val);
+ g_value_reset (&show_nav_toolbar_val);
g_signal_connect(G_OBJECT(window->priv->picture_viewer), "motion-notify-event", G_CALLBACK(cb_rstto_main_window_picture_viewer_motion_notify_event), window);
g_signal_connect(G_OBJECT(window), "configure-event", G_CALLBACK(cb_rstto_main_window_configure_event), NULL);
@@ -1700,14 +1724,14 @@ cb_rstto_main_window_delete (GtkWidget *widget, RsttoMainWindow *window)
}
/**
- * cb_rstto_main_window_toggle_show_toolbar:
+ * cb_rstto_main_window_toggle_show_file_toolbar:
* @widget:
* @window:
*
*
*/
static void
-cb_rstto_main_window_toggle_show_toolbar (GtkWidget *widget, RsttoMainWindow *window)
+cb_rstto_main_window_toggle_show_file_toolbar (GtkWidget *widget, RsttoMainWindow *window)
{
GValue val = {0,};
g_value_init (&val, G_TYPE_BOOLEAN);
@@ -1722,7 +1746,33 @@ cb_rstto_main_window_toggle_show_toolbar (GtkWidget *widget, RsttoMainWindow *wi
gtk_widget_hide (window->priv->toolbar);
g_value_set_boolean (&val, FALSE);
}
- g_object_set_property (G_OBJECT (window->priv->settings_manager), "show-toolbar", &val);
+ g_object_set_property (G_OBJECT (window->priv->settings_manager), "show-file-toolbar", &val);
+}
+
+/**
+ * cb_rstto_main_window_toggle_show_nav_toolbar:
+ * @widget:
+ * @window:
+ *
+ *
+ */
+static void
+cb_rstto_main_window_toggle_show_nav_toolbar (GtkWidget *widget, RsttoMainWindow *window)
+{
+ GValue val = {0,};
+ g_value_init (&val, G_TYPE_BOOLEAN);
+
+ if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (widget)))
+ {
+ gtk_widget_show (window->priv->image_list_toolbar);
+ g_value_set_boolean (&val, TRUE);
+ }
+ else
+ {
+ gtk_widget_hide (window->priv->image_list_toolbar);
+ g_value_set_boolean (&val, FALSE);
+ }
+ g_object_set_property (G_OBJECT (window->priv->settings_manager), "show-nav-toolbar", &val);
}
/**
@@ -1801,7 +1851,7 @@ static void
cb_rstto_main_window_state_event(GtkWidget *widget, GdkEventWindowState *event, gpointer user_data)
{
RsttoMainWindow *window = RSTTO_MAIN_WINDOW(widget);
- GValue show_toolbar_val = {0,};
+ GValue show_file_toolbar_val = {0,};
if(event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN)
{
@@ -1854,16 +1904,16 @@ cb_rstto_main_window_state_event(GtkWidget *widget, GdkEventWindowState *event,
}
gtk_widget_show (window->priv->image_list_toolbar);
- g_value_init (&show_toolbar_val, G_TYPE_BOOLEAN);
- g_object_get_property (G_OBJECT(window->priv->settings_manager), "show-toolbar", &show_toolbar_val);
+ g_value_init (&show_file_toolbar_val, G_TYPE_BOOLEAN);
+ g_object_get_property (G_OBJECT(window->priv->settings_manager), "show-file-toolbar", &show_file_toolbar_val);
gtk_widget_show (window->priv->menubar);
gtk_widget_show (window->priv->statusbar);
- if (g_value_get_boolean (&show_toolbar_val))
+ if (g_value_get_boolean (&show_file_toolbar_val))
gtk_widget_show (window->priv->toolbar);
- g_value_reset (&show_toolbar_val);
+ g_value_reset (&show_file_toolbar_val);
}
}
if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED)
diff --git a/src/main_window_ui.xml b/src/main_window_ui.xml
index 6b5760b..0ab4824 100644
--- a/src/main_window_ui.xml
+++ b/src/main_window_ui.xml
@@ -31,7 +31,8 @@
<menuitem action="preferences"/>
</menu>
<menu action="view-menu">
- <menuitem action="show-toolbar"/>
+ <menuitem action="show-file-toolbar"/>
+ <menuitem action="show-nav-toolbar"/>
<menuitem action="show-thumbnailbar"/>
<separator/>
<menu action="zoom-menu">
diff --git a/src/picture_viewer.c b/src/picture_viewer.c
index 9fc6201..a5ea1fa 100644
--- a/src/picture_viewer.c
+++ b/src/picture_viewer.c
@@ -611,25 +611,28 @@ rstto_picture_viewer_paint (GtkWidget *widget)
"ristretto",
(size*0.8),
GTK_ICON_LOOKUP_FORCE_SIZE, NULL);
- gdk_pixbuf_saturate_and_pixelate (pixbuf, pixbuf, 0, TRUE);
- pixbuf = gdk_pixbuf_composite_color_simple (pixbuf, (size*0.8), (size*0.8), GDK_INTERP_BILINEAR, 40, 40, bg_color->pixel, bg_color->pixel);
-
- x1 = (widget->allocation.width-gdk_pixbuf_get_width(pixbuf))<0?0:(widget->allocation.width-gdk_pixbuf_get_width(pixbuf))/2;
- y1 = (widget->allocation.height-gdk_pixbuf_get_height(pixbuf))<0?0:(widget->allocation.height-gdk_pixbuf_get_height(pixbuf))/2;
- x2 = gdk_pixbuf_get_width(pixbuf);
- y2 = gdk_pixbuf_get_height(pixbuf);
-
- gdk_draw_pixbuf(GDK_DRAWABLE(buffer),
- NULL,
- pixbuf,
- 0,
- 0,
- x1,
- y1,
- x2,
- y2,
- GDK_RGB_DITHER_NONE,
- 0,0);
+ if (pixbuf)
+ {
+ gdk_pixbuf_saturate_and_pixelate (pixbuf, pixbuf, 0, TRUE);
+ pixbuf = gdk_pixbuf_composite_color_simple (pixbuf, (size*0.8), (size*0.8), GDK_INTERP_BILINEAR, 40, 40, bg_color->pixel, bg_color->pixel);
+
+ x1 = (widget->allocation.width-gdk_pixbuf_get_width(pixbuf))<0?0:(widget->allocation.width-gdk_pixbuf_get_width(pixbuf))/2;
+ y1 = (widget->allocation.height-gdk_pixbuf_get_height(pixbuf))<0?0:(widget->allocation.height-gdk_pixbuf_get_height(pixbuf))/2;
+ x2 = gdk_pixbuf_get_width(pixbuf);
+ y2 = gdk_pixbuf_get_height(pixbuf);
+
+ gdk_draw_pixbuf(GDK_DRAWABLE(buffer),
+ NULL,
+ pixbuf,
+ 0,
+ 0,
+ x1,
+ y1,
+ x2,
+ y2,
+ GDK_RGB_DITHER_NONE,
+ 0,0);
+ }
}
gdk_draw_drawable(GDK_DRAWABLE(widget->window),
gdk_gc_new(widget->window),
diff --git a/src/settings.c b/src/settings.c
index 1bf543d..7fa0b53 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -53,7 +53,8 @@ static RsttoSettings *settings_object;
enum
{
PROP_0,
- PROP_SHOW_TOOLBAR,
+ PROP_SHOW_FILE_TOOLBAR,
+ PROP_SHOW_NAV_TOOLBAR,
PROP_TOOLBAR_OPEN,
PROP_ENABLE_CACHE,
PROP_PRELOAD_IMAGES,
@@ -99,7 +100,8 @@ struct _RsttoSettingsPriv
{
XfconfChannel *channel;
- gboolean show_toolbar;
+ gboolean show_file_toolbar;
+ gboolean show_nav_toolbar;
guint preload_images;
gboolean enable_cache;
guint cache_size;
@@ -143,7 +145,8 @@ rstto_settings_init (GObject *object)
xfconf_g_property_bind (settings->priv->channel, "/file/current-uri", G_TYPE_STRING, settings, "current-uri");
- xfconf_g_property_bind (settings->priv->channel, "/window/show-toolbar", G_TYPE_BOOLEAN, settings, "show-toolbar");
+ xfconf_g_property_bind (settings->priv->channel, "/window/show-file-toolbar", G_TYPE_BOOLEAN, settings, "show-file-toolbar");
+ xfconf_g_property_bind (settings->priv->channel, "/window/show-navigation-toolbar", G_TYPE_BOOLEAN, settings, "show-nav-toolbar");
xfconf_g_property_bind (settings->priv->channel, "/window/scrollwheel-action", G_TYPE_STRING, settings, "scrollwheel-action");
xfconf_g_property_bind (settings->priv->channel, "/slideshow/timeout", G_TYPE_UINT, settings, "slideshow-timeout");
@@ -196,13 +199,22 @@ rstto_settings_class_init (GObjectClass *object_class)
PROP_WINDOW_HEIGHT,
pspec);
- pspec = g_param_spec_boolean ("show-toolbar",
+ pspec = g_param_spec_boolean ("show-file-toolbar",
"",
"",
TRUE,
G_PARAM_READWRITE);
g_object_class_install_property (object_class,
- PROP_SHOW_TOOLBAR,
+ PROP_SHOW_FILE_TOOLBAR,
+ pspec);
+
+ pspec = g_param_spec_boolean ("show-nav-toolbar",
+ "",
+ "",
+ TRUE,
+ G_PARAM_READWRITE);
+ g_object_class_install_property (object_class,
+ PROP_SHOW_NAV_TOOLBAR,
pspec);
pspec = g_param_spec_uint ("preload-images",
@@ -377,8 +389,11 @@ rstto_settings_set_property (GObject *object,
switch (property_id)
{
- case PROP_SHOW_TOOLBAR:
- settings->priv->show_toolbar = g_value_get_boolean (value);
+ case PROP_SHOW_FILE_TOOLBAR:
+ settings->priv->show_file_toolbar = g_value_get_boolean (value);
+ break;
+ case PROP_SHOW_NAV_TOOLBAR:
+ settings->priv->show_nav_toolbar = g_value_get_boolean (value);
break;
case PROP_PRELOAD_IMAGES:
settings->priv->preload_images = g_value_get_uint (value);
@@ -442,8 +457,11 @@ rstto_settings_get_property (GObject *object,
switch (property_id)
{
- case PROP_SHOW_TOOLBAR:
- g_value_set_boolean (value, settings->priv->show_toolbar);
+ case PROP_SHOW_FILE_TOOLBAR:
+ g_value_set_boolean (value, settings->priv->show_file_toolbar);
+ break;
+ case PROP_SHOW_NAV_TOOLBAR:
+ g_value_set_boolean (value, settings->priv->show_nav_toolbar);
break;
case PROP_PRELOAD_IMAGES:
g_value_set_uint (value, settings->priv->preload_images);
More information about the Xfce4-commits
mailing list