[Xfce4-commits] <postler:master> Implement a message part pane beside the content
Christian Dywan
noreply at xfce.org
Fri Jun 4 23:28:04 CEST 2010
Updating branch refs/heads/master
to b295c4e6dfd9229c63ddd234b508e6141c93efe6 (commit)
from c266328fcee3b82380f82d7a8eebd56438589625 (commit)
commit b295c4e6dfd9229c63ddd234b508e6141c93efe6
Author: Christian Dywan <christian at twotoasts.de>
Date: Fri Jun 4 22:56:50 2010 +0200
Implement a message part pane beside the content
postler/postler-bureau.vala | 50 ++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 49 insertions(+), 1 deletions(-)
diff --git a/postler/postler-bureau.vala b/postler/postler-bureau.vala
index c7dbd5a..e27c334 100644
--- a/postler/postler-bureau.vala
+++ b/postler/postler-bureau.vala
@@ -21,6 +21,7 @@ public class Postler.Bureau : Gtk.Window {
Postler.Folders folders;
Postler.Messages messages;
Postler.Content content;
+ Gtk.VBox message_parts;
const string ui_markup = """
<ui>
@@ -169,6 +170,24 @@ public class Postler.Bureau : Gtk.Window {
false }
};
+ static string icon_name_for_mime_type (string mime_type, Gtk.Widget widget) {
+ var icon_theme = Gtk.IconTheme.get_for_screen (widget.get_screen ());
+ var parts = mime_type.split ("/", 2);
+ string icon_name = parts[0] + "-" + parts[1];
+ if (icon_theme.has_icon (icon_name))
+ return icon_name;
+ icon_name = "gnome-mime-" + parts[0] + "-" + parts[1];
+ if (icon_theme.has_icon (icon_name))
+ return icon_name;
+ icon_name = parts[0] + "-x-generic";
+ if (icon_theme.has_icon (icon_name))
+ return icon_name;
+ icon_name = "gnome-mime-" + parts[0] + "-x-generic";
+ if (icon_theme.has_icon (icon_name))
+ return icon_name;
+ return "application-x-executable";
+ }
+
public Bureau () {
GLib.Object (icon_name: STOCK_INTERNET_MAIL,
title: GLib.Environment.get_application_name ());
@@ -277,9 +296,38 @@ public class Postler.Bureau : Gtk.Window {
bool state = content.last_location != null;
actions.get_action ("ViewSource").sensitive = state;
});
+ var content_box = new Gtk.HBox (false, 0);
+ vpaned.pack2 (content_box, false, true);
scrolled = new Postler.ScrolledWindow (content);
- vpaned.pack2 (scrolled, false, true);
+ content_box.pack_start (scrolled, true, true, 0);
+ message_parts = new Gtk.VBox (false, 0);
+ content.notify["n-parts"].connect ((object, pspec) => {
+ var scrollable = message_parts.parent.parent;
+ if (content.n_parts == 1) {
+ scrollable.hide ();
+ return;
+ }
+
+ var children = message_parts.get_children ();
+ foreach (var child in children)
+ child.destroy ();
+ var parts = content.get_parts ();
+ foreach (var part in parts) {
+ string icon_name = icon_name_for_mime_type (part, this);
+ var icon = new Gtk.Image.from_icon_name (icon_name,
+ Gtk.IconSize.BUTTON);
+ var button = new Gtk.Button ();
+ button.relief = Gtk.ReliefStyle.NONE;
+ button.add (icon);
+ button.set_tooltip_text (part);
+ message_parts.pack_start (button, false, false, 0);
+ }
+ scrollable.show_all ();
+ });
+ scrolled = new Postler.ScrolledWindow (message_parts);
+ content_box.pack_start (scrolled, false, false, 0);
shelf.show_all ();
+ scrolled.hide ();
folders.set_headers_visible (false);
messages.set_headers_visible (false);
More information about the Xfce4-commits
mailing list