default filter menu, (to be extended by plugins)

This commit is contained in:
Martijn Voncken 2008-08-25 19:48:09 +00:00
parent 8899bec6c3
commit 9c0f855736
2 changed files with 102 additions and 19 deletions

View File

@ -34,6 +34,7 @@
import gtk
import gtk.glade
import pkg_resources
import deluge.component as component
import deluge.common
@ -63,6 +64,17 @@ class FilterTreeView(component.Component):
self.label_view = gtk.TreeView()
self.sidebar.add_tab(self.label_view, "filters", _("Filters"))
#menu
glade_menu = gtk.glade.XML(pkg_resources.resource_filename("deluge.ui.gtkui",
"glade/filtertree_menu.glade"))
self.menu = glade_menu.get_widget("filtertree_menu")
glade_menu.signal_autoconnect({
"select_all": self.on_select_all,
"pause_all": self.on_pause_all,
"resume_all": self.on_resume_all
})
self.default_menu_items = self.menu.get_children()
# Create the liststore
#cat,value,count , pixmap , visible
@ -207,34 +219,49 @@ class FilterTreeView(component.Component):
return
path = path[0]
cat = self.model_filter[path][0]
if event.button == 1:
# Prevent selecting a category label
if cat == "cat":
return True
elif event.button == 3:
if cat == "cat":
# XXX: Show the pop-up menu
# Do not select the row
return True
"""
# We only care about right-clicks
if event.button == 3:
#assign current cat, value to self:
x, y = event.get_coords()
path = self.label_view.get_path_at_pos(int(x), int(y))
if not path:
return
row = self.model_filter.get_iter(path[0])
cat = self.model_filter.get_value(row, 0)
value = self.model_filter.get_value(row, 1)
count = self.model_filter.get_value(row, 2)
self.cat = self.model_filter.get_value(row, 0)
self.value = self.model_filter.get_value(row, 1)
self.count = self.model_filter.get_value(row, 2)
#log.debug("right-click->cat='%s',value='%s'", cat ,value)
#Show the pop-up menu
self.set_menu_sensitivity()
self.menu.popup(None, None, None, event.button, event.time)
if cat == "cat":
# Do not select the row
return True
if cat == "label":
self.show_label_menu(value, count, event)
elif (cat == "cat" and value == "Label"): #add button on root node.
self.show_label_menu(None, 0, event)
"""
def set_menu_sensitivity(self):
#select-all/pause/resume
sensitive = (self.cat != "cat")
for item in self.default_menu_items:
item.set_sensitive(sensitive)
def select_all(self):
"for use in popup menu"
component.get("TorrentView").treeview.get_selection().select_all()
def on_select_all(self, event):
self.select_all()
def on_pause_all(self, event):
self.select_all()
func = getattr(component.get("MenuBar"), "on_menuitem_%s_activate" % "pause")
func(event)
def on_resume_all(self, event):
self.select_all()
func = getattr(component.get("MenuBar"), "on_menuitem_%s_activate" % "resume")
func(event)

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
<!--*- mode: xml -*-->
<glade-interface>
<widget class="GtkMenu" id="filtertree_menu">
<property name="visible">True</property>
<child>
<widget class="GtkImageMenuItem" id="select_all">
<property name="visible">True</property>
<property name="label" translatable="yes">Select All</property>
<property name="use_underline">True</property>
<signal name="activate" handler="select_all"/>
<child internal-child="image">
<widget class="GtkImage" id="image22">
<property name="visible">True</property>
<property name="stock">gtk-select-all</property>
<property name="icon_size">1</property>
</widget>
</child>
</widget>
</child>
<child>
<widget class="GtkImageMenuItem" id="menuitem_pause">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label">_Pause</property>
<property name="use_underline">True</property>
<signal name="activate" handler="pause_all"/>
<child internal-child="image">
<widget class="GtkImage" id="menu-item-image22">
<property name="stock">gtk-media-pause</property>
<property name="icon_size">1</property>
</widget>
</child>
</widget>
</child>
<child>
<widget class="GtkImageMenuItem" id="menuitem_resume">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="tooltip" translatable="yes">Resume selected torrents.</property>
<property name="label" translatable="yes">Resu_me</property>
<property name="use_underline">True</property>
<signal name="activate" handler="resume_all"/>
<child internal-child="image">
<widget class="GtkImage" id="menu-item-image23">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="stock">gtk-media-play</property>
<property name="icon_size">1</property>
</widget>
</child>
</widget>
</child>
</widget>
</glade-interface>