[gthumb] Re-added the 2.10 semi-trasparent property box in fullscreen mode
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] Re-added the 2.10 semi-trasparent property box in fullscreen mode
- Date: Wed, 5 Jan 2011 19:30:51 +0000 (UTC)
commit eee507beb921419b8a7dd7247187a65e7f048d9c
Author: Paolo Bacchilega <paobac src gnome org>
Date: Wed Jan 5 19:18:42 2011 +0100
Re-added the 2.10 semi-trasparent property box in fullscreen mode
The i key shows/hides the property box in fullscreen mode.
extensions/file_viewer/gth-file-viewer-page.c | 14 ++
extensions/gstreamer_tools/gth-media-viewer-page.c | 14 ++
extensions/image_viewer/gth-image-viewer-page.c | 184 ++++++++++++++++++++
gthumb/cairo-utils.c | 1 +
gthumb/gth-browser.c | 74 +++++++--
gthumb/gth-browser.h | 3 +
gthumb/gth-image-viewer.c | 53 ++++++
gthumb/gth-image-viewer.h | 4 +
gthumb/gth-viewer-page.c | 17 ++
gthumb/gth-viewer-page.h | 8 +
10 files changed, 358 insertions(+), 14 deletions(-)
---
diff --git a/extensions/file_viewer/gth-file-viewer-page.c b/extensions/file_viewer/gth-file-viewer-page.c
index 6befb78..7d1d031 100644
--- a/extensions/file_viewer/gth-file-viewer-page.c
+++ b/extensions/file_viewer/gth-file-viewer-page.c
@@ -304,6 +304,19 @@ gth_file_viewer_page_real_can_save (GthViewerPage *base)
static void
+gth_file_viewer_page_real_update_info (GthViewerPage *base,
+ GthFileData *file_data)
+{
+ GthFileViewerPage *self = GTH_FILE_VIEWER_PAGE (base);
+
+ if (! _g_file_equal (self->priv->file_data->file, file_data->file))
+ return;
+ _g_object_unref (self->priv->file_data);
+ self->priv->file_data = gth_file_data_dup (file_data);
+}
+
+
+static void
gth_file_viewer_page_finalize (GObject *obj)
{
GthFileViewerPage *self;
@@ -341,6 +354,7 @@ gth_viewer_page_interface_init (GthViewerPageIface *iface)
iface->show_pointer = gth_file_viewer_page_real_show_pointer;
iface->update_sensitivity = gth_file_viewer_page_real_update_sensitivity;
iface->can_save = gth_file_viewer_page_real_can_save;
+ iface->update_info = gth_file_viewer_page_real_update_info;
}
diff --git a/extensions/gstreamer_tools/gth-media-viewer-page.c b/extensions/gstreamer_tools/gth-media-viewer-page.c
index 402f0e1..9dfa057 100644
--- a/extensions/gstreamer_tools/gth-media-viewer-page.c
+++ b/extensions/gstreamer_tools/gth-media-viewer-page.c
@@ -1220,6 +1220,19 @@ gth_media_viewer_page_real_revert (GthViewerPage *base)
static void
+gth_media_viewer_page_real_update_info (GthViewerPage *base,
+ GthFileData *file_data)
+{
+ GthMediaViewerPage *self = GTH_MEDIA_VIEWER_PAGE (base);
+
+ if (! _g_file_equal (self->priv->file_data->file, file_data->file))
+ return;
+ _g_object_unref (self->priv->file_data);
+ self->priv->file_data = gth_file_data_dup (file_data);
+}
+
+
+static void
gth_media_viewer_page_finalize (GObject *obj)
{
GthMediaViewerPage *self;
@@ -1270,6 +1283,7 @@ gth_viewer_page_interface_init (GthViewerPageIface *iface)
iface->save = gth_media_viewer_page_real_save;
iface->save_as = gth_media_viewer_page_real_save_as;
iface->revert = gth_media_viewer_page_real_revert;
+ iface->update_info = gth_media_viewer_page_real_update_info;
}
diff --git a/extensions/image_viewer/gth-image-viewer-page.c b/extensions/image_viewer/gth-image-viewer-page.c
index 171f064..c6567a2 100644
--- a/extensions/image_viewer/gth-image-viewer-page.c
+++ b/extensions/image_viewer/gth-image-viewer-page.c
@@ -452,6 +452,153 @@ pref_viewer_shrink_wrap_changed (GConfClient *client,
static void
+paint_comment_over_image_func (GthImageViewer *image_viewer,
+ GdkEventExpose *event,
+ cairo_t *cr,
+ gpointer user_data)
+{
+ GthImageViewerPage *self = user_data;
+ GthFileData *file_data = self->priv->file_data;
+ GString *file_info;
+ char *comment;
+ const char *file_date;
+ const char *file_size;
+ int current_position;
+ int n_visibles;
+ int width;
+ int height;
+ GthMetadata *metadata;
+ PangoLayout *layout;
+ PangoAttrList *attr_list = NULL;
+ GError *error = NULL;
+ char *text;
+ static GdkPixbuf *icon = NULL;
+ int icon_width;
+ int icon_height;
+ int image_width;
+ int image_height;
+ const int x_padding = 10;
+ const int y_padding = 10;
+ int max_text_width;
+ PangoRectangle bounds;
+ int text_x;
+ int text_y;
+ int icon_x;
+ int icon_y;
+
+ file_info = g_string_new ("");
+
+ comment = gth_file_data_get_attribute_as_string (file_data, "general::description");
+ if (comment != NULL) {
+ g_string_append_printf (file_info, "<b>%s</b>\n\n", comment);
+ g_free (comment);
+ }
+
+ metadata = (GthMetadata *) g_file_info_get_attribute_object (file_data->info, "general::datetime");
+ if (metadata != NULL)
+ file_date = gth_metadata_get_formatted (metadata);
+ else
+ file_date = g_file_info_get_attribute_string (file_data->info, "gth::file::display-mtime");
+ file_size = g_file_info_get_attribute_string (file_data->info, "gth::file::display-size");
+
+ gth_browser_get_file_list_info (self->priv->browser, ¤t_position, &n_visibles);
+ gth_image_viewer_get_original_size (GTH_IMAGE_VIEWER (self->priv->viewer), &width, &height);
+
+ g_string_append_printf (file_info,
+ "<small><i>%s - %dx%d (%d%%) - %s</i>\n<tt>%d/%d - %s</tt></small>",
+ file_date,
+ width,
+ height,
+ (int) (gth_image_viewer_get_zoom (GTH_IMAGE_VIEWER (self->priv->viewer)) * 100),
+ file_size,
+ current_position + 1,
+ n_visibles,
+ g_file_info_get_attribute_string (file_data->info, "standard::display-name"));
+
+ layout = gtk_widget_create_pango_layout (GTK_WIDGET (self->priv->viewer), NULL);
+ pango_layout_set_wrap (layout, PANGO_WRAP_WORD);
+ pango_layout_set_font_description (layout, GTK_WIDGET (self->priv->viewer)->style->font_desc);
+ pango_layout_set_alignment (layout, PANGO_ALIGN_LEFT);
+
+ if (! pango_parse_markup (file_info->str,
+ -1,
+ 0,
+ &attr_list,
+ &text,
+ NULL,
+ &error))
+ {
+ g_warning ("Failed to set text from markup due to error parsing markup: %s\nThis is the text that caused the error: %s", error->message, file_info->str);
+ g_error_free (error);
+ g_object_unref (layout);
+ g_string_free (file_info, TRUE);
+ return;
+ }
+
+ pango_layout_set_attributes (layout, attr_list);
+ pango_layout_set_text (layout, text, strlen (text));
+
+ if (icon == NULL) {
+ GIcon *gicon;
+
+ gicon = g_themed_icon_new (GTK_STOCK_PROPERTIES);
+ icon = _g_icon_get_pixbuf (gicon, 24, NULL);
+
+ g_object_unref (gicon);
+ }
+ icon_width = gdk_pixbuf_get_width (icon);
+ icon_height = gdk_pixbuf_get_height (icon);
+
+ gdk_drawable_get_size (gtk_widget_get_window (self->priv->viewer), &image_width, &image_height);
+ max_text_width = ((image_width * 3 / 4) - icon_width - (x_padding * 3) - (x_padding * 2));
+
+ pango_layout_set_width (layout, max_text_width * PANGO_SCALE);
+ pango_layout_get_pixel_extents (layout, NULL, &bounds);
+
+ bounds.width += (2 * x_padding) + (icon_width + x_padding);
+ bounds.height = MIN (image_height - icon_height - (y_padding * 2), bounds.height + (2 * y_padding));
+ bounds.x = MAX ((image_width - bounds.width) / 2, 0);
+ bounds.y = MAX (image_height - bounds.height - (y_padding * 3), 0);
+
+ text_x = bounds.x + x_padding + icon_width + x_padding;
+ text_y = bounds.y + y_padding;
+ icon_x = bounds.x + x_padding;
+ icon_y = bounds.y + (bounds.height - icon_height) / 2;
+
+ cairo_save (cr);
+
+ /* background */
+
+ _cairo_draw_rounded_box (cr, bounds.x, bounds.y, bounds.width, bounds.height, 8.0);
+ cairo_set_source_rgba (cr, 0.94, 0.94, 0.94, 0.81);
+ cairo_fill (cr);
+ cairo_set_line_width (cr, 1.0);
+ cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
+ cairo_stroke (cr);
+
+ /* icon */
+
+ gdk_cairo_set_source_pixbuf (cr, icon, icon_x, icon_y);
+ cairo_rectangle (cr, icon_x, icon_y, icon_width, icon_height);
+ cairo_fill (cr);
+
+ /* text */
+
+ cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
+ pango_cairo_update_layout (cr, layout);
+ cairo_move_to (cr, text_x, text_y);
+ pango_cairo_show_layout (cr, layout);
+
+ cairo_restore (cr);
+
+ g_free (text);
+ pango_attr_list_unref (attr_list);
+ g_object_unref (layout);
+ g_string_free (file_info, TRUE);
+}
+
+
+static void
gth_image_viewer_page_real_activate (GthViewerPage *base,
GthBrowser *browser)
{
@@ -742,6 +889,7 @@ gth_image_viewer_page_real_fullscreen (GthViewerPage *base,
GthImageViewerPage *self;
self = (GthImageViewerPage *) base;
+
if (active) {
gth_image_navigator_set_scrollbars_visible (GTH_IMAGE_NAVIGATOR (self->priv->image_navigator), FALSE);
gth_image_viewer_set_black_background (GTH_IMAGE_VIEWER (self->priv->viewer), TRUE);
@@ -1055,6 +1203,40 @@ gth_image_viewer_page_real_revert (GthViewerPage *base)
static void
+gth_image_viewer_page_real_update_info (GthViewerPage *base,
+ GthFileData *file_data)
+{
+ GthImageViewerPage *self = GTH_IMAGE_VIEWER_PAGE (base);
+
+ if (! _g_file_equal (self->priv->file_data->file, file_data->file))
+ return;
+ _g_object_unref (self->priv->file_data);
+ self->priv->file_data = gth_file_data_dup (file_data);
+
+ if (self->priv->viewer == NULL)
+ return;
+
+ gth_image_viewer_update_view (GTH_IMAGE_VIEWER (self->priv->viewer));
+}
+
+
+static void
+gth_image_viewer_page_real_show_properties (GthViewerPage *base,
+ gboolean show)
+{
+ GthImageViewerPage *self;
+
+ self = GTH_IMAGE_VIEWER_PAGE (base);
+
+ if (show)
+ gth_image_viewer_add_painter (GTH_IMAGE_VIEWER (self->priv->viewer), paint_comment_over_image_func, self);
+ else
+ gth_image_viewer_remove_painter (GTH_IMAGE_VIEWER (self->priv->viewer), paint_comment_over_image_func, self);
+ gth_image_viewer_update_view (GTH_IMAGE_VIEWER (self->priv->viewer));
+}
+
+
+static void
gth_image_viewer_page_finalize (GObject *obj)
{
GthImageViewerPage *self;
@@ -1096,6 +1278,8 @@ gth_viewer_page_interface_init (GthViewerPageIface *iface)
iface->save = gth_image_viewer_page_real_save;
iface->save_as = gth_image_viewer_page_real_save_as;
iface->revert = gth_image_viewer_page_real_revert;
+ iface->update_info = gth_image_viewer_page_real_update_info;
+ iface->show_properties = gth_image_viewer_page_real_show_properties;
}
diff --git a/gthumb/cairo-utils.c b/gthumb/cairo-utils.c
index b37af37..5b72c29 100644
--- a/gthumb/cairo-utils.c
+++ b/gthumb/cairo-utils.c
@@ -144,6 +144,7 @@ _cairo_draw_rounded_box (cairo_t *cr,
cairo_rel_line_to (cr, - (w - (r * 2)), 0);
if (r > 0)
cairo_arc (cr, x + r, y + h - r, r, 0.5 * M_PI, 1.0 * M_PI);
+ cairo_rel_line_to (cr, 0, - (h - (r * 2)));
}
diff --git a/gthumb/gth-browser.c b/gthumb/gth-browser.c
index e713ce5..4f71c75 100644
--- a/gthumb/gth-browser.c
+++ b/gthumb/gth-browser.c
@@ -110,6 +110,7 @@ struct _GthBrowserPrivateData {
GList *viewer_pages;
GtkWidget *viewer_thumbnails_pane;
GtkWidget *viewer_sidebar_pane;
+ GtkWidget *viewer_sidebar_alignment;
GtkWidget *viewer_sidebar;
GtkWidget *viewer_container;
GtkWidget *viewer_toolbar;
@@ -135,6 +136,8 @@ struct _GthBrowserPrivateData {
GthFileData *location;
GthFileData *current_file;
GthFileSource *location_source;
+ int n_visibles;
+ int current_file_position;
GFile *monitor_location;
gboolean activity_ref;
GthIconCache *menu_icon_cache;
@@ -157,6 +160,7 @@ struct _GthBrowserPrivateData {
gboolean constructed;
guint selection_changed_event;
GthFileData *folder_popup_file_data;
+ gboolean properties_on_screen;
/* fulscreen */
@@ -477,8 +481,9 @@ _gth_browser_update_parent_list (GthBrowser *browser)
void
gth_browser_update_title (GthBrowser *browser)
{
- GString *title;
- const char *name = NULL;
+ GString *title;
+ const char *name = NULL;
+ GthFileStore *file_store;
title = g_string_new (NULL);
@@ -497,14 +502,18 @@ gth_browser_update_title (GthBrowser *browser)
else
g_string_append (title, _("gthumb"));
+ file_store = gth_browser_get_file_store (browser);
+ browser->priv->n_visibles = gth_file_store_n_visibles (file_store);
+ browser->priv->current_file_position = -1;
+
if (browser->priv->current_file != NULL) {
- GthFileStore *file_store;
- int pos;
+ int pos;
- file_store = gth_browser_get_file_store (browser);
pos = gth_file_store_get_pos (file_store, browser->priv->current_file->file);
- if (pos >= 0)
- g_string_append_printf (title, " (%d/%d)", pos + 1, gth_file_store_n_visibles (file_store));
+ if (pos >= 0) {
+ browser->priv->current_file_position = pos;
+ g_string_append_printf (title, " (%d/%d)", browser->priv->current_file_position + 1, browser->priv->n_visibles);
+ }
}
gtk_window_set_title (GTK_WINDOW (browser), title->str);
@@ -3907,9 +3916,12 @@ _gth_browser_construct (GthBrowser *browser)
gtk_widget_show (browser->priv->viewer_container);
gtk_paned_pack1 (GTK_PANED (browser->priv->viewer_sidebar_pane), browser->priv->viewer_container, TRUE, FALSE);
+ browser->priv->viewer_sidebar_alignment = gtk_alignment_new (0.0, 0.0, 1.0, 1.0);
browser->priv->viewer_sidebar = gth_sidebar_new ("file-tools");
gtk_widget_set_size_request (browser->priv->viewer_sidebar, DEF_VIEWER_SIDEBAR_WIDTH, -1);
- gtk_paned_pack2 (GTK_PANED (browser->priv->viewer_sidebar_pane), browser->priv->viewer_sidebar, FALSE, FALSE);
+ gtk_widget_show (browser->priv->viewer_sidebar);
+ gtk_container_add (GTK_CONTAINER (browser->priv->viewer_sidebar_alignment), browser->priv->viewer_sidebar);
+ gtk_paned_pack2 (GTK_PANED (browser->priv->viewer_sidebar_pane), browser->priv->viewer_sidebar_alignment, FALSE, FALSE);
browser->priv->thumbnail_list = gth_file_list_new ((viewer_thumbnails_orientation == GTK_ORIENTATION_HORIZONTAL) ? GTH_FILE_LIST_TYPE_H_SIDEBAR : GTH_FILE_LIST_TYPE_V_SIDEBAR, TRUE);
gth_file_list_set_caption (GTH_FILE_LIST (browser->priv->thumbnail_list), "none");
@@ -4557,6 +4569,18 @@ gth_browser_set_sort_order (GthBrowser *browser,
void
+gth_browser_get_file_list_info (GthBrowser *browser,
+ int *current_position,
+ int *n_visibles)
+{
+ if (current_position != NULL)
+ *current_position = browser->priv->current_file_position;
+ if (n_visibles != NULL)
+ *n_visibles = browser->priv->n_visibles;
+}
+
+
+void
gth_browser_stop (GthBrowser *browser)
{
if (browser->priv->fullscreen)
@@ -4750,6 +4774,21 @@ gth_browser_viewer_scroll_event_cb (GthBrowser *browser,
}
+static void
+gth_browser_toggle_properties_on_screen (GthBrowser *browser)
+{
+ gboolean on_screen;
+
+ on_screen = browser->priv->fullscreen && (GTH_VIEWER_PAGE_GET_INTERFACE (browser->priv->viewer_page)->show_properties != NULL);
+ if (on_screen) {
+ browser->priv->properties_on_screen = ! browser->priv->properties_on_screen;
+ gth_viewer_page_show_properties (browser->priv->viewer_page, browser->priv->properties_on_screen);
+ }
+ else
+ gth_browser_show_viewer_properties (browser, ! _gth_browser_get_action_active (browser, "Viewer_Properties"));
+}
+
+
gboolean
gth_browser_viewer_key_press_cb (GthBrowser *browser,
GdkEventKey *event)
@@ -4784,7 +4823,7 @@ gth_browser_viewer_key_press_cb (GthBrowser *browser,
return TRUE;
case GDK_i:
- gth_browser_show_viewer_properties (GTH_BROWSER (browser), ! _gth_browser_get_action_active (browser, "Viewer_Properties"));
+ gth_browser_toggle_properties_on_screen (GTH_BROWSER (browser));
return TRUE;
case GDK_f:
@@ -5148,6 +5187,8 @@ file_metadata_ready_cb (GList *files,
if (gth_window_get_current_page (GTH_WINDOW (browser)) == GTH_BROWSER_PAGE_VIEWER)
_gth_browser_make_file_visible (browser, browser->priv->current_file);
gth_browser_update_sensitivity (browser);
+ if (browser->priv->viewer_page != NULL)
+ gth_viewer_page_update_info (browser->priv->viewer_page, browser->priv->current_file);
if (browser->priv->location == NULL) {
GFile *parent;
@@ -5354,14 +5395,13 @@ gth_browser_show_viewer_properties (GthBrowser *browser,
if (show) {
_gth_browser_set_action_active (browser, "Viewer_Tools", FALSE);
- gtk_widget_show (browser->priv->viewer_sidebar);
+ gtk_widget_show (browser->priv->viewer_sidebar_alignment);
gth_sidebar_show_properties (GTH_SIDEBAR (browser->priv->viewer_sidebar));
}
else
- gtk_widget_hide (browser->priv->viewer_sidebar);
+ gtk_widget_hide (browser->priv->viewer_sidebar_alignment);
}
-
void
gth_browser_show_viewer_tools (GthBrowser *browser,
gboolean show)
@@ -5370,11 +5410,11 @@ gth_browser_show_viewer_tools (GthBrowser *browser,
if (show) {
_gth_browser_set_action_active (browser, "Viewer_Properties", FALSE);
- gtk_widget_show (browser->priv->viewer_sidebar);
+ gtk_widget_show (browser->priv->viewer_sidebar_alignment);
gth_sidebar_show_tools (GTH_SIDEBAR (browser->priv->viewer_sidebar));
}
else
- gtk_widget_hide (browser->priv->viewer_sidebar);
+ gtk_widget_hide (browser->priv->viewer_sidebar_alignment);
}
@@ -5701,12 +5741,16 @@ fullscreen_motion_notify_event_cb (GtkWidget *widget,
{
if (! gtk_widget_get_visible (browser->priv->fullscreen_toolbar)) {
GList *scan;
+ int fullscreen_toolbar_height;
for (scan = browser->priv->fullscreen_controls; scan; scan = scan->next)
gtk_widget_show ((GtkWidget *) scan->data);
if (browser->priv->viewer_page != NULL)
gth_viewer_page_show_pointer (GTH_VIEWER_PAGE (browser->priv->viewer_page), TRUE);
+
+ gtk_window_get_size (GTK_WINDOW (browser->priv->fullscreen_toolbar), NULL, &fullscreen_toolbar_height);
+ gtk_alignment_set_padding (GTK_ALIGNMENT (browser->priv->viewer_sidebar_alignment), fullscreen_toolbar_height + 6, 0, 0, 0);
}
}
@@ -5800,6 +5844,8 @@ gth_browser_unfullscreen (GthBrowser *browser)
g_list_free (browser->priv->fullscreen_controls);
browser->priv->fullscreen_controls = NULL;
+ gtk_alignment_set_padding (GTK_ALIGNMENT (browser->priv->viewer_sidebar_alignment), 0, 0, 0, 0);
+
gth_browser_update_sensitivity (browser);
}
diff --git a/gthumb/gth-browser.h b/gthumb/gth-browser.h
index 6f36519..11c4632 100644
--- a/gthumb/gth-browser.h
+++ b/gthumb/gth-browser.h
@@ -115,6 +115,9 @@ void gth_browser_get_sort_order (GthBrowser *browser,
void gth_browser_set_sort_order (GthBrowser *browser,
GthFileDataSort *sort_type,
gboolean inverse);
+void gth_browser_get_file_list_info (GthBrowser *browser,
+ int *current_position,
+ int *n_visibles);
void gth_browser_stop (GthBrowser *browser);
void gth_browser_reload (GthBrowser *browser);
void gth_browser_exec_task (GthBrowser *browser,
diff --git a/gthumb/gth-image-viewer.c b/gthumb/gth-image-viewer.c
index 99a518f..b596912 100644
--- a/gthumb/gth-image-viewer.c
+++ b/gthumb/gth-image-viewer.c
@@ -988,6 +988,19 @@ scroll_to (GthImageViewer *self,
self->x_offset = *x_offset;
self->y_offset = *y_offset;
+ if (self->priv->painters != NULL) {
+ GdkRectangle area;
+
+ area.x = 0;
+ area.y = 0;
+ area.width = allocation.width;
+ area.height = allocation.height;
+ gdk_window_invalidate_rect (drawable, &area, TRUE);
+ gdk_window_process_updates (drawable, TRUE);
+
+ return;
+ }
+
/* move without invalidating the frame */
{
@@ -1809,10 +1822,24 @@ gth_image_viewer_add_painter (GthImageViewer *self,
GthImageViewerPaintFunc func,
gpointer user_data)
{
+ GList *link;
+ GList *scan;
PainterData *painter_data;
g_return_if_fail (self != NULL);
+ link = NULL;
+ for (scan = self->priv->painters; scan; scan = scan->next) {
+ PainterData *painter_data = scan->data;
+ if ((painter_data->func == func) && (painter_data->user_data == user_data)) {
+ link = scan;
+ break;
+ }
+ }
+
+ if (link != NULL)
+ return;
+
painter_data = g_new0 (PainterData, 1);
painter_data->func = func;
painter_data->user_data = user_data;
@@ -1820,6 +1847,32 @@ gth_image_viewer_add_painter (GthImageViewer *self,
}
+void
+gth_image_viewer_remove_painter (GthImageViewer *self,
+ GthImageViewerPaintFunc func,
+ gpointer user_data)
+{
+ GList *link;
+ GList *scan;
+
+ link = NULL;
+ for (scan = self->priv->painters; scan; scan = scan->next) {
+ PainterData *painter_data = scan->data;
+ if ((painter_data->func == func) && (painter_data->user_data == user_data)) {
+ link = scan;
+ break;
+ }
+ }
+
+ if (link == NULL)
+ return;
+
+ self->priv->painters = g_list_remove_link (self->priv->painters, link);
+ painter_data_free (link->data);
+ g_list_free (link);
+}
+
+
int
gth_image_viewer_get_image_width (GthImageViewer *self)
{
diff --git a/gthumb/gth-image-viewer.h b/gthumb/gth-image-viewer.h
index 155a04c..e8210e4 100644
--- a/gthumb/gth-image-viewer.h
+++ b/gthumb/gth-image-viewer.h
@@ -172,6 +172,10 @@ void gth_image_viewer_add_painter (GthImageViewer *vi
GthImageViewerPaintFunc
func,
gpointer user_data);
+void gth_image_viewer_remove_painter (GthImageViewer *viewer,
+ GthImageViewerPaintFunc
+ func,
+ gpointer user_data);
/* image info. */
diff --git a/gthumb/gth-viewer-page.c b/gthumb/gth-viewer-page.c
index 4cc9c94..72fc2e1 100644
--- a/gthumb/gth-viewer-page.c
+++ b/gthumb/gth-viewer-page.c
@@ -193,6 +193,23 @@ gth_viewer_page_revert (GthViewerPage *self)
void
+gth_viewer_page_update_info (GthViewerPage *self,
+ GthFileData *file_data)
+{
+ GTH_VIEWER_PAGE_GET_INTERFACE (self)->update_info (self, file_data);
+}
+
+
+void
+gth_viewer_page_show_properties (GthViewerPage *self,
+ gboolean show)
+{
+ if (GTH_VIEWER_PAGE_GET_INTERFACE (self)->show_properties != NULL)
+ GTH_VIEWER_PAGE_GET_INTERFACE (self)->show_properties (self, show);
+}
+
+
+void
gth_viewer_page_file_loaded (GthViewerPage *self,
GthFileData *file_data,
gboolean success)
diff --git a/gthumb/gth-viewer-page.h b/gthumb/gth-viewer-page.h
index 70611d2..e9eef08 100644
--- a/gthumb/gth-viewer-page.h
+++ b/gthumb/gth-viewer-page.h
@@ -70,6 +70,10 @@ struct _GthViewerPageIface {
FileSavedFunc func,
gpointer data);
void (*revert) (GthViewerPage *self);
+ void (*update_info) (GthViewerPage *self,
+ GthFileData *file_data);
+ void (*show_properties) (GthViewerPage *self,
+ gboolean show);
/*< signals >*/
@@ -103,6 +107,10 @@ void gth_viewer_page_save_as (GthViewerPage *self,
FileSavedFunc func,
gpointer data);
void gth_viewer_page_revert (GthViewerPage *self);
+void gth_viewer_page_update_info (GthViewerPage *self,
+ GthFileData *file_data);
+void gth_viewer_page_show_properties (GthViewerPage *self,
+ gboolean show);
void gth_viewer_page_file_loaded (GthViewerPage *self,
GthFileData *file_data,
gboolean success);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]