Changeset 28
- Timestamp:
- 02/20/06 20:07:53 (3 years ago)
- Files:
-
- trunk/Makefile.in (modified) (1 diff)
- trunk/src/audio_control.py (modified) (2 diffs)
- trunk/src/mesk/audio_source.py (modified) (3 diffs)
- trunk/src/mesk/log.py (added)
- trunk/src/mesk/playlist.py (modified) (3 diffs)
- trunk/src/mesk/utils.py (modified) (1 diff)
- trunk/src/playlist_control.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/Makefile.in
r15 r28 155 155 156 156 sloccount: 157 sloccount ./src ./bin158 sloccount --cached --details ./src ./bin157 sloccount ./src 158 sloccount --cached --details ./src 159 159 160 160 test-env-clean: trunk/src/audio_control.py
r27 r28 271 271 elif arg_value('prev'): 272 272 src = self._playlist.get_prev() 273 elif arg_value ['absolute']is not None:274 # TODO: absolute index275 pass273 elif arg_value('absolute') is not None: 274 i = arg_value('absolute') 275 self._playlist.set_curr_index(i) 276 276 new = self._playlist.get_curr_index() 277 277 if new is None: … … 286 286 def _set_source(self, src): 287 287 if src.audio_file: 288 self._set_track_scale(0, upper = src.audio_ file.getPlayTime())288 self._set_track_scale(0, upper = src.audio_info.time_secs) 289 289 290 290 uri = src.uri trunk/src/mesk/audio_source.py
r20 r28 21 21 from eyeD3 import Tag, Mp3AudioFile, TagException 22 22 23 class AudioInfo: 24 time_secs = None 25 size_bytes = None 26 23 27 class AudioSource: 24 28 def __init__(self, uri): 25 29 self.uri = uri 26 30 self.tag = None 31 self.audio_info = AudioInfo() 27 32 28 33 class FileAudioSource(AudioSource): … … 37 42 try: 38 43 self.audio_file = Mp3AudioFile(self.uri) 44 self.audio_info.time_secs = self.audio_file.getPlayTime() 45 self.audio_info.size_bytes = self.audio_file.getSize() 39 46 self.tag = self.audio_file.tag 40 47 except TagException, ex: … … 47 54 48 55 class UrlAudioSource(AudioSource): 56 # TODO 49 57 def __init__(self, url): 50 58 AudioSource.__init__(self, url) trunk/src/mesk/playlist.py
r27 r28 18 18 # $Id$ 19 19 ################################################################################ 20 import os.path20 import sys, os.path 21 21 import random 22 22 import audio_source … … 41 41 continue 42 42 path = os.path.realpath(os.path.abspath(line)) 43 src = audio_source.FileAudioSource(path) 44 pl.append(src) 43 try: 44 src = audio_source.FileAudioSource(path) 45 pl.append(src) 46 except Exception, ex: 47 print >> sys.stderr, "Error loading %s" % path 45 48 fp.close() 46 49 … … 122 125 return self._curr_idx 123 126 127 def set_curr_index(self, idx): 128 # Test the index 129 curr = self._list[idx] 130 self._curr_idx = idx 131 124 132 def get_next_index(self): 125 133 next = self._curr_idx + 1 trunk/src/mesk/utils.py
r24 r28 19 19 ################################################################################ 20 20 21 import common.i18n 22 _ = common.i18n._ 23 21 24 def format_track_time(secs): 22 hours = secs / 3600 ;23 mins = (secs % 3600) / 60 ;24 secs = (secs % 3600) % 60 ;25 tstr = "%02d:%02d" % (mins, secs) ;25 hours = secs / 3600 26 mins = (secs % 3600) / 60 27 secs = (secs % 3600) % 60 28 tstr = "%02d:%02d" % (mins, secs) 26 29 if hours: 27 tstr = "%02d:%s" % (hours, tstr); 28 return tstr; 30 tstr = "%02d:%s" % (hours, tstr) 31 return tstr 32 33 KB_BYTES = 1024 34 MB_BYTES = 1048576 35 GB_BYTES = 1073741824 36 KB_UNIT = _('KB') 37 MB_UNIT = _('MB') 38 GB_UNIT = _('GB') 39 40 def format_size(sz): 41 unit = _('Bytes') 42 if sz >= GB_BYTES: 43 sz = float(sz) / float(GB_BYTES) 44 unit = GB_UNIT 45 elif sz >= MB_BYTES: 46 sz = float(sz) / float(MB_BYTES) 47 unit = MB_UNIT 48 elif sz >= KB_BYTES: 49 sz = float(sz) / float(KB_BYTES) 50 unit = KB_UNIT 51 return "%.2f %s" % (sz, unit) 52 53 def format_time_delta(td): 54 days = td.days 55 hours = td.seconds / 3600 56 mins = (td.seconds % 3600) / 60 57 secs = (td.seconds % 3600) % 60 58 tstr = "%02d:%02d:%02d" % (hours, mins, secs) 59 if days: 60 tstr = "%d days %s" % (days, tstr) 61 return tstr trunk/src/playlist_control.py
r27 r28 19 19 ################################################################################ 20 20 import os 21 import datetime 21 22 import gobject, gtk, gtk.gdk, gtk.glade 22 23 … … 27 28 28 29 class PlaylistControl(gobject.GObject): 29 30 30 31 def __init__(self, name, playlist, audio_control): 31 32 self.name = name … … 33 34 self._playlist = None 34 35 self._audio_control = audio_control 36 37 # Playlist stats 38 self._list_len = 0 39 self._list_bytes = long(0) 40 self._list_secs = long(0) 35 41 36 42 # Setup tab label … … 109 115 self._playlist.get_next_index()) 110 116 117 self._update_playlist_stats() 118 111 119 def get_playlist(self): 112 120 # NOTE: Treat as read-only (for now) … … 115 123 def _on_playlist_view_row_activated(self, treeview, path, view_col): 116 124 row = path[0] 117 print "row:", row 125 self._audio_control.stop() 126 self._audio_control._enqueue_source({'absolute': row}) 127 self._audio_control.play() 118 128 119 129 def _on_audio_playing(self, audio_control): … … 142 152 model_iter = self._pl_model.get_iter(row) 143 153 self._pl_model.set_value(model_iter, self.COL_STATUS_IMG, stock_id) 154 155 def _update_playlist_stats(self, count_inc = None, size_bytes_inc = None, 156 time_secs_inc = None): 157 if count_inc is None and size_bytes_inc is None and \ 158 time_secs_inc is None: 159 self._list_len = len(self._playlist) 160 self._list_bytes = long(0) 161 self._list_secs = long(0) 162 163 for src in self._playlist: 164 if src.audio_info.time_secs is not None: 165 self._list_secs += src.audio_info.time_secs 166 if src.audio_info.size_bytes is not None: 167 self._list_bytes += src.audio_info.size_bytes 168 else: 169 if count_inc: 170 self._list_len += count_inc 171 if size_bytes_inc: 172 self._size_bytes += size_bytes_inc 173 if time_secs_inc: 174 self._times_secs += time_secs_inc 175 176 delta = datetime.timedelta(seconds = self._list_secs); 177 label = self.widget_xml.get_widget('playlist_stats_label') 178 label.set_text("%d %s [%s] - %s" % \ 179 (self._list_len, _('tracks'), 180 mesk.utils.format_size(self._list_bytes), 181 mesk.utils.format_time_delta(delta))) 182 #self.pl_stats_label.adjustSize();
