[Ap-python-commits] python/aptk playlist.py,1.8,1.9
Status: Beta
Brought to you by:
sjah
|
From: <sj...@us...> - 2002-07-26 14:33:02
|
Update of /cvsroot/ap-python/python/aptk
In directory usw-pr-cvs1:/tmp/cvs-serv2493/aptk
Modified Files:
playlist.py
Log Message:
Add buttons to playlist widget. Fix problem when aptk crashed on empty lists.
Index: playlist.py
===================================================================
RCS file: /cvsroot/ap-python/python/aptk/playlist.py,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** playlist.py 25 Jul 2002 16:19:30 -0000 1.8
--- playlist.py 26 Jul 2002 14:32:54 -0000 1.9
***************
*** 206,219 ****
self.__store.set (iter, self.__COLUMN_CURRENT, value)
! # Create value to mark new row
! value = self.__mark_pixbuf or self.__mark_label
! # Set
! self.__marked_path = (row, )
! iter = self.__store.get_iter (self.__marked_path)
! self.__store.set (iter, self.__COLUMN_CURRENT, value)
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
class PlaylistWindow (gtk.Window):
def __init__ (self, pl, prop = None, prefix = ""):
"""Initializer."""
--- 206,235 ----
self.__store.set (iter, self.__COLUMN_CURRENT, value)
! if row != -1:
! # Create value to mark new row
! value = self.__mark_pixbuf or self.__mark_label
! # Set
! self.__marked_path = (row, )
! iter = self.__store.get_iter (self.__marked_path)
! self.__store.set (iter, self.__COLUMN_CURRENT, value)
!
! def clear (self):
! """Clear list."""
!
! self.__store.clear ()
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
class PlaylistWindow (gtk.Window):
+ __properties = aptk.misc.WidgetProperties ([
+ ('*.playlist.clear.button.label', 'Clear'),
+ ('*.playlist.remove.button.label', 'Remove'),
+ ('*.playlist.add.button.label', 'Add'),
+ ('*.playlist.sort.button.label', 'Sort'),
+ ('*.playlist.load.button.label', 'Load'),
+ ('*.playlist.save.button.label', 'Save'),
+ ('*.playlist.clear.confirm', 'Do you want to clear playlist?')
+ ])
+
def __init__ (self, pl, prop = None, prefix = ""):
"""Initializer."""
***************
*** 224,241 ****
# Create new properties whth our defaults added
# prop = prop and (prop + self.__properties) or self.__properties
prefix += '.playlist'
# Init base class
gtk.Window.__init__ (self)
# Create and add list
self.__list = List (prop, prefix)
! self.add (self.__list)
self.__list.show ()
# Register this object as the playlist notifier
self.__pl.register (self)
# Connect signals
self.connect ("destroy", self.__gtkcb_destroy)
self.__list.get_treeview ().connect ("row-activated", self.__gtkcb_list_row_activated)
--- 240,299 ----
# Create new properties whth our defaults added
# prop = prop and (prop + self.__properties) or self.__properties
+ prop = prop and (prop + self.__properties) or self.__properties
prefix += '.playlist'
+ # Properties
+ self.__clear_confirm = prop.get_value (prefix + ".clear.confirm")
+
# Init base class
gtk.Window.__init__ (self)
+ self.set_border_width (2)
+
+ # VBOX
+ vbox = gtk.VBox ()
+ self.add (vbox)
+ vbox.show ()
+ vbox.set_spacing (6)
# Create and add list
self.__list = List (prop, prefix)
! vbox.pack_start (self.__list)
self.__list.show ()
+ # Create hbox for buttons
+ hbox = gtk.HBox ()
+ vbox.pack_end (hbox, expand = gtk.FALSE)
+ hbox.show ()
+
+ # Create buttons
+ self.add_button = aptk.misc.Button (prop, prefix + ".add")
+ hbox.pack_start (self.add_button, expand = gtk.FALSE)
+ self.add_button.show ()
+
+ self.remove_button = aptk.misc.Button (prop, prefix + ".remove")
+ hbox.pack_start (self.remove_button, expand = gtk.FALSE)
+ self.remove_button.show ()
+
+ self.sort_button = aptk.misc.Button (prop, prefix + ".sort")
+ hbox.pack_start (self.sort_button, expand = gtk.FALSE)
+ self.sort_button.show ()
+
+ self.clear_button = aptk.misc.Button (prop, prefix + ".clear")
+ hbox.pack_start (self.clear_button, expand = gtk.FALSE)
+ self.clear_button.show ()
+
+ self.load_button = aptk.misc.Button (prop, prefix + ".load")
+ hbox.pack_start (self.load_button, expand = gtk.FALSE)
+ self.load_button.show ()
+
+ self.save_button = aptk.misc.Button (prop, prefix + ".save")
+ hbox.pack_start (self.save_button, expand = gtk.FALSE)
+ self.save_button.show ()
+
# Register this object as the playlist notifier
self.__pl.register (self)
# Connect signals
+ self.clear_button.connect ("clicked", self.__gtkcb_clear_clicked)
self.connect ("destroy", self.__gtkcb_destroy)
self.__list.get_treeview ().connect ("row-activated", self.__gtkcb_list_row_activated)
***************
*** 286,289 ****
--- 344,359 ----
gdk.threads_leave ()
+ def cb_clear (self):
+ """Alsaplayer's callback."""
+
+ gdk.threads_enter ()
+ self.__list.clear ()
+ gdk.threads_leave ()
+
+ def cb_remove (self, start, end):
+ """Alsaplayer's callback."""
+
+ print "Remove: ", start, end
+
def __gtkcb_list_row_activated (self, tree, path, column):
"""Handler for a row activated signal."""
***************
*** 292,295 ****
--- 362,384 ----
self.__pl.play (path [0] + 1)
gdk.threads_enter ()
+
+ def __gtkcb_clear_clicked (self, w):
+ """Handler for clear button clicked signal."""
+
+ # Confirm this action
+ d = gtk.MessageDialog (self,
+ gtk.DIALOG_DESTROY_WITH_PARENT,
+ gtk.MESSAGE_QUESTION,
+ gtk.BUTTONS_YES_NO,
+ self.__clear_confirm)
+
+ rc = d.run ()
+ d.destroy ()
+
+ # Clear if answer is Yes
+ if rc == gtk.RESPONSE_YES:
+ gtk.threads_leave ()
+ self.__pl.clear ()
+ gtk.threads_enter ()
def __gtkcb_destroy (self, widget):
|