[Ap-python-commits] python/aptk Makefile.am,1.4,1.5 __init__.py,1.3,1.4 misc.py,1.6,1.7 playlist.py,
Status: Beta
Brought to you by:
sjah
|
From: <sj...@us...> - 2002-08-16 05:36:18
|
Update of /cvsroot/ap-python/python/aptk
In directory usw-pr-cvs1:/tmp/cvs-serv23194/aptk
Modified Files:
Makefile.am __init__.py misc.py playlist.py
Log Message:
aptk.misc.Button could be created from stock. More i18n. Add sort dialog.
Index: Makefile.am
===================================================================
RCS file: /cvsroot/ap-python/python/aptk/Makefile.am,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** Makefile.am 21 Jul 2002 18:15:43 -0000 1.4
--- Makefile.am 16 Aug 2002 05:36:11 -0000 1.5
***************
*** 1,8 ****
EXTRA_DIST = control.py info.py __init__.py misc.py pan.py position.py\
! speed.py volume.py playlist.py
if ENABLE_APTK
aptk_DATA = $(EXTRA_DIST) control.pyc info.pyc __init__.pyc misc.pyc\
! pan.pyc position.pyc speed.pyc volume.pyc playlist.pyc
aptkdir = @PY_MOD_DIR@/aptk
endif
--- 1,9 ----
EXTRA_DIST = control.py info.py __init__.py misc.py pan.py position.py\
! speed.py volume.py playlist.py language.py
if ENABLE_APTK
aptk_DATA = $(EXTRA_DIST) control.pyc info.pyc __init__.pyc misc.pyc\
! pan.pyc position.pyc speed.pyc volume.pyc playlist.pyc\
! language.pyc
aptkdir = @PY_MOD_DIR@/aptk
endif
Index: __init__.py
===================================================================
RCS file: /cvsroot/ap-python/python/aptk/__init__.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** __init__.py 16 Jul 2002 17:08:45 -0000 1.3
--- __init__.py 16 Aug 2002 05:36:11 -0000 1.4
***************
*** 34,35 ****
--- 34,36 ----
import info
import playlist
+ import language
Index: misc.py
===================================================================
RCS file: /cvsroot/ap-python/python/aptk/misc.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** misc.py 28 Jul 2002 13:45:46 -0000 1.6
--- misc.py 16 Aug 2002 05:36:11 -0000 1.7
***************
*** 91,94 ****
--- 91,96 ----
('**.button.label', ''),
('**.button.file', None),
+ ('**.button.stock', None),
+ ('**.button.size', gtk.ICON_SIZE_MENU)
])
***************
*** 104,110 ****
label = prop.get_value (prefix + ".label")
relief = prop.get_value (prefix + ".relief")
!
# Create button
! if not file:
gtk.Button.__init__ (self, label)
else:
--- 106,114 ----
label = prop.get_value (prefix + ".label")
relief = prop.get_value (prefix + ".relief")
! stock = prop.get_value (prefix + ".stock")
! size = prop.get_value (prefix + ".size")
!
# Create button
! if not file and not stock:
gtk.Button.__init__ (self, label)
else:
***************
*** 119,122 ****
--- 123,131 ----
image = gtk.Image ()
image.set_from_file (file)
+ self.add (image)
+ image.show ()
+ elif stock:
+ image = gtk.Image ()
+ image.set_from_stock (stock, size)
self.add (image)
image.show ()
Index: playlist.py
===================================================================
RCS file: /cvsroot/ap-python/python/aptk/playlist.py,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** playlist.py 28 Jul 2002 13:45:46 -0000 1.12
--- playlist.py 16 Aug 2002 05:36:11 -0000 1.13
***************
*** 24,32 ****
__license__ = "GNU"
! import gtk, aptk, gobject, locale
gdk = gtk.gdk
- # TODO: Make this code more simple and faster!!!
-
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
class List (gtk.ScrolledWindow):
--- 24,30 ----
__license__ = "GNU"
! import gtk, aptk, gobject, locale, aptk.language
gdk = gtk.gdk
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
class List (gtk.ScrolledWindow):
***************
*** 34,46 ****
('**.list.columns', ('current', 'playtime', 'track', 'title', 'album',
'artist', 'year', 'genre')),
! ('**.list.playtime.label', 'Playtime'),
! ('**.list.year.label', 'Year'),
! ('**.list.track.label', 'Track'),
! ('**.list.title.label', 'Title'),
! ('**.list.album.label', 'Album'),
! ('**.list.artist.label', 'Artist'),
! ('**.list.genre.label', 'Genre'),
! ('**.list.comment.label', 'Comment'),
! ('**.list.filename.label', 'Filename'),
('**.list.current.label', ''),
('**.list.mark.label', '-->'),
--- 32,44 ----
('**.list.columns', ('current', 'playtime', 'track', 'title', 'album',
'artist', 'year', 'genre')),
! ('**.list.playtime.label', aptk.language.tr ('Playtime')),
! ('**.list.year.label', aptk.language.tr ('Year')),
! ('**.list.track.label', aptk.language.tr ('Track')),
! ('**.list.title.label', aptk.language.tr ('Title')),
! ('**.list.album.label', aptk.language.tr ('Album')),
! ('**.list.artist.label', aptk.language.tr ('Artist')),
! ('**.list.genre.label', aptk.language.tr ('Genre')),
! ('**.list.comment.label', aptk.language.tr ('Comment')),
! ('**.list.filename.label', aptk.language.tr ('Filename')),
('**.list.current.label', ''),
('**.list.mark.label', '-->'),
***************
*** 238,243 ****
# Defualt properties
__properties = aptk.misc.WidgetProperties ([
! ('**.clear.button.label', 'Clear'),
! ('**.clear.warning', 'Do you want to clear playlist?'),
('**.clear.confirm', 1)
])
--- 236,241 ----
# Defualt properties
__properties = aptk.misc.WidgetProperties ([
! ('**.clear.button.label', aptk.language.tr ('Clear')),
! ('**.clear.warning', aptk.language.tr ('Do you want to clear playlist?')),
('**.clear.confirm', 1)
])
***************
*** 288,293 ****
# Defualt properties
__properties = aptk.misc.WidgetProperties ([
! ('**.remove.button.label', 'Remove'),
! ('**.remove.warning', 'Do you want to remove selected items from the playlist?'),
('**.remove.confirm', 1)
])
--- 286,293 ----
# Defualt properties
__properties = aptk.misc.WidgetProperties ([
! ('**.remove.button.label',
! aptk.language.tr ('Remove')),
! ('**.remove.warning',
! aptk.language.tr ('Do you want to remove selected items from the playlist?')),
('**.remove.confirm', 1)
])
***************
*** 343,346 ****
--- 343,512 ----
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+ class SortButton (aptk.misc.Button):
+ """Start playback.
+ """
+
+ # Defualt properties
+ __properties = aptk.misc.WidgetProperties ([
+ ('**.sort.button.label', aptk.language.tr ('Sort'))
+ ])
+
+ def __init__ (self, pl, prop = None, prefix = ""):
+ """Initializer."""
+
+ # Create new properties whth our defaults added
+ prop = prop and (prop + self.__properties) or self.__properties
+ prefix += ".sort"
+
+ # Call base contructor
+ aptk.misc.Button.__init__ (self, prop, prefix)
+
+ self.connect ("clicked", self.__gtkcb_clicked)
+ self.__pl = pl
+ self.__prop = prop
+ self.__prefix = prefix
+
+ def __gtkcb_clicked (self, w):
+ """Handler for clicked signal."""
+
+ d = SortDialog (self.__prop, self.__prefix)
+
+ while 1:
+ # Ask for sorting priority
+ rc = d.run ()
+
+ if rc == gtk.RESPONSE_CANCEL: break
+
+ # Clear if answer is Yes
+ gtk.threads_leave ()
+ self.__pl.sort (d.sequence)
+ gtk.threads_enter ()
+
+ if rc != gtk.RESPONSE_APPLY: break
+
+ d.destroy ()
+
+ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+ class SortDialog (gtk.Dialog):
+ # Defualt properties
+ __properties = aptk.misc.WidgetProperties ([
+ ('**.dialog.list.field.label', aptk.language.tr ('Sorting field')),
+ ('**.dialog.sequence', 'AyLNTFGPC'),
+ ('**.dialog.title', aptk.language.tr ('Sorting priorities')),
+ ('**.dialog.list.playtime', aptk.language.tr ('Playtime')),
+ ('**.dialog.list.year', aptk.language.tr ('Year')),
+ ('**.dialog.list.track', aptk.language.tr ('Track')),
+ ('**.dialog.list.title', aptk.language.tr ('Title')),
+ ('**.dialog.list.album', aptk.language.tr ('Album')),
+ ('**.dialog.list.artist', aptk.language.tr ('Artist')),
+ ('**.dialog.list.genre', aptk.language.tr ('Genre')),
+ ('**.dialog.list.comment', aptk.language.tr ('Comment')),
+ ('**.dialog.list.filename', aptk.language.tr ('Filename'))
+ ])
+
+ __chars = {
+ 'a' : ("artist", gtk.TRUE),
+ 'A' : ("artist", gtk.FALSE),
+ 'l' : ("album", gtk.TRUE),
+ 'L' : ("album", gtk.FALSE),
+ 'y' : ("year", gtk.TRUE),
+ 'Y' : ("year", gtk.FALSE),
+ 'n' : ("track", gtk.TRUE),
+ "N" : ("track", gtk.FALSE),
+ "t" : ("title", gtk.TRUE),
+ "T" : ("title", gtk.FALSE),
+ "f" : ("filename", gtk.TRUE),
+ "F" : ("filename", gtk.FALSE),
+ "g" : ("genre", gtk.TRUE),
+ "G" : ("genre", gtk.FALSE),
+ "p" : ("playtime", gtk.TRUE),
+ "P" : ("playtime", gtk.FALSE),
+ "c" : ("comment", gtk.TRUE),
+ "C" : ("comment", gtk.FALSE)
+ }
+
+ def __init__ (self, prop = None, prefix = ""):
+ """Initializer."""
+
+ # Create new properties whth our defaults added
+ prop = prop and (prop + self.__properties) or self.__properties
+ prefix += ".dialog"
+
+ # Properties
+ field_column_label = prop.get_value (prefix + ".list.field.label")
+ self.sequence = prop.get_value (prefix + ".sequence")
+ title = prop.get_value (prefix + '.title')
+
+ # Init base class
+ gtk.Dialog.__init__ (self,
+ title,
+ None,
+ gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
+ (gtk.STOCK_OK, gtk.RESPONSE_OK,
+ gtk.STOCK_APPLY, gtk.RESPONSE_APPLY,
+ gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
+
+ self.vbox.set_border_width (4)
+
+ # List - - - - -
+ w = gtk.ScrolledWindow ()
+ self.vbox.add (w)
+ w.set_policy (gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ w.show ()
+
+ # Store
+ self.__store = gtk.ListStore (gobject.TYPE_BOOLEAN, gobject.TYPE_STRING)
+
+ # Treeview
+ self.__treeview = gtk.TreeView (self.__store)
+ w.add (self.__treeview)
+ self.__treeview.show ()
+ self.__treeview.set_reorderable (gtk.TRUE)
+
+ # Columns
+ renderer = gtk.CellRendererToggle ()
+ column = gtk.TreeViewColumn ('', renderer, active = 0)
+ self.__treeview.append_column (column)
+ renderer.connect ("toggled", self.__gtkcb_toggled)
+
+ image = gtk.Image ()
+ image.set_from_stock (gtk.STOCK_SORT_DESCENDING, gtk.ICON_SIZE_MENU)
+ column.set_widget (image)
+ image.show ()
+
+ renderer = gtk.CellRendererText ()
+ column = gtk.TreeViewColumn (field_column_label, renderer, text = 1)
+ self.__treeview.append_column (column)
+
+ # Add data to list
+ for t in self.sequence:
+ name, state = self.__chars [t]
+ name = prop.get_value (prefix + ".list." + name)
+
+ iter = self.__store.append ()
+ self.__store.set (iter, 1, name,
+ 0, state)
+
+ def __gtkcb_toggled (self, renderer, path):
+ """Gtk callback for a toggle column."""
+
+ index = int (path)
+ path = (index,)
+ row = self.__store [path]
+
+ # Get old value
+ value = row [0]
+
+ # set new value
+ row [0] = not value
+
+ # modify sequence
+ t = self.sequence [index]
+ if value:
+ self.sequence = self.sequence[:index] + t.upper () + self.sequence [index+1:]
+ else:
+ self.sequence = self.sequence[:index] + t.lower () + self.sequence [index+1:]
+
+ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
class _ButtonsBox:
"""Internal."""
***************
*** 352,361 ****
--- 518,531 ----
self.clear_button = ClearButton (pl, prop, prefix)
self.remove_button = RemoveButton (pl, list, prop, prefix)
+ self.sort_button = SortButton (pl, prop, prefix)
# Pack buttons
+ self.pack_start (self.sort_button, expand = gtk.FALSE)
+
self.pack_end (self.clear_button, expand = gtk.FALSE)
self.pack_end (self.remove_button, expand = gtk.FALSE)
# Show these buttons
+ self.sort_button.show ()
self.remove_button.show ()
self.clear_button.show ()
|