[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 () |