[Xfce4-commits] <postler:master> Implement popup menu on folders and 'Empty Folder'
Christian Dywan
noreply at xfce.org
Sat May 29 00:52:01 CEST 2010
Updating branch refs/heads/master
to cd43a2592458e72bdd1bb5164fac4aee3e19b378 (commit)
from 0d33cc50b1d6fc8a893ab294ab21e58d328cf767 (commit)
commit cd43a2592458e72bdd1bb5164fac4aee3e19b378
Author: Christian Dywan <christian at twotoasts.de>
Date: Fri May 28 23:50:34 2010 +0200
Implement popup menu on folders and 'Empty Folder'
postler/postler-folders.vala | 52 +++++++++++++++++++++++++++++++++++++++++-
1 files changed, 51 insertions(+), 1 deletions(-)
diff --git a/postler/postler-folders.vala b/postler/postler-folders.vala
index ab94d2d..0b67497 100644
--- a/postler/postler-folders.vala
+++ b/postler/postler-folders.vala
@@ -123,10 +123,60 @@ public class Postler.Folders : Gtk.TreeView {
messages.clear ();
}
+ void empty_folder (Gtk.TreeIter iter) {
+ string location;
+ store.get (iter, Columns.LOCATION, out location, -1);
+ try {
+ string[] folders = { "cur", "new" };
+ foreach (var folder in folders) {
+ var folder_dir = File.new_for_path (location + "/" + folder);
+ var folder_enumerator = folder_dir.enumerate_children (
+ FILE_ATTRIBUTE_STANDARD_NAME, 0, null);
+ GLib.FileInfo info;
+ while ((info = folder_enumerator.next_file (null)) != null) {
+ var file = folder_dir.resolve_relative_path (info.get_name ());
+ file.delete (null);
+ }
+ }
+ messages.clear ();
+ }
+ catch (GLib.Error error) {
+ GLib.critical (_("Failed to empty folder \"%s\": %s"),
+ location, error.message);
+ }
+ }
+
+ override bool popup_menu () {
+ var menu = new Gtk.Menu ();
+ menu.deactivate.connect ((menu) => {
+ GLib.Idle.add (() => {menu.destroy (); return false; });
+ });
+
+ var menuitem = new Gtk.MenuItem.with_mnemonic (_("_Empty Folder"));
+ menuitem.activate.connect ((menuitem) => {
+ Gtk.TreeIter iter;
+ if (get_selection ().get_selected (null, out iter))
+ empty_folder (iter);
+ });
+ menu.append (menuitem);
+ menu.show_all ();
+
+ var event = Gtk.get_current_event ();
+ menu.attach_to_widget (this, (widget, menu) => { });
+ menu.popup (null, null, null, event.button.button, event.get_time ());
+ return true;
+ }
+
override bool button_release_event (Gdk.EventButton event) {
Gtk.TreeIter iter;
if (get_selection ().get_selected (null, out iter)) {
- select_folder (iter);
+ if (event.button == 3) {
+ /* popup_menu (); */
+ bool handled;
+ GLib.Signal.emit_by_name (this, "popup-menu", &handled);
+ }
+ else
+ select_folder (iter);
}
return base.button_press_event (event);
}
More information about the Xfce4-commits
mailing list