[Quake2world-dev] r123 - pymp/trunk
pitillo at jdolan.dyndns.org
pitillo at jdolan.dyndns.org
Tue Jan 20 15:14:39 UTC 2009
Author: pitillo
Date: 2009-01-20 15:14:39 +0000 (Tue, 20 Jan 2009)
New Revision: 123
Modified:
pymp/trunk/playlist.py
Log:
Added a new implementation for the random option. Trying to keep track of played songs and respect all other options.
Modified: pymp/trunk/playlist.py
===================================================================
--- pymp/trunk/playlist.py 2009-01-19 23:43:43 UTC (rev 122)
+++ pymp/trunk/playlist.py 2009-01-20 15:14:39 UTC (rev 123)
@@ -35,7 +35,7 @@
#
class Playlist:
- pymp, view, current, counter, history = None, None, None, 1, []
+ pymp, view, current, counter, history, randomlist = None, None, None, 1, [], []
continuous, random, repeat = True, False, False
loadcount, loadcur = 0, 0
@@ -141,7 +141,7 @@
tid = self.view.get_model().get_value(it, COL_TID)
target = self.view.get_model().get_value(it, COL_TARGET)
title = self.view.get_model().get_value(it, COL_TITLE)
-
+
self.view.get_model().set(it, COL_WEIGHT_SET, True) #bold target
self.view.scroll_to_cell(path) #show target
@@ -170,18 +170,63 @@
it = model.get_iter_first()
else:
it = model.get_iter(self.path())
-
+ # assign it, if not it crashes because wasn't assigned
+ # may be it needs to be fixed better
+ # ind = int(model.get_string_from_iter(it))
if self.random: #disregard step, use random
step = random.randint(1, len(model))
+ ind = int(model.get_string_from_iter(it))
+ ind = (ind + step) % len(model)
+ while ind in self.randomlist: #check if was played
+ step = random.randint(1, len(model))
+ ind = int(model.get_string_from_iter(it))
+ ind = (ind + step) % len(model)
+
+ self.randomlist.append(ind) #add it to the random list
+
+ if (len(self.randomlist) == len(model)) and not self.repeat:
+ self.randomlist = [] #clean all
+ self.current = None
+ self.history = []
+ try: #unbold current target in list
+ it = self.view.get_model().get_iter(self.path())
+ self.view.get_model().set(it, COL_WEIGHT_SET, False)
+ except StandardError:
+ pass
+ return self.stop(None, None)
+
+ if (len(self.randomlist) == len(model)) and self.repeat:
+ self.randomlist = [] #clean all
+ self.history = []
+ if not self.current: #jump from beginning
+ it = model.get_iter_first()
+ else:
+ it = model.get_iter(self.path())
+ ind = int(model.get_string_from_iter(it))
+ ind = (ind + step) % len(model)
+ it = model.get_iter(str(ind))
+ path = model.get_path(it) #resolve path
+ return self.play(path, log, event)
+
+ it = model.get_iter(str(ind))
+ path = model.get_path(it) #resolve path
+ return self.play(path, log, event)
+ if not self.continuous:
+ return self.stop(None, None)
+
+ if self.exhausted() and not self.repeat:
+ self.current = None
+ self.history = []
+ return self.stop(None, None)
+
ind = int(model.get_string_from_iter(it))
- ind = (ind + step) % len(model)
-
+ ind = (ind + step) % len(model)
it = model.get_iter(str(ind))
path = model.get_path(it) #resolve path
return self.play(path, log, event)
-
+
#
# Stops the current mplayer job and prevents a jump.
#
@@ -194,7 +239,7 @@
self.view.get_model().set(it, COL_WEIGHT_SET, False)
except StandardError:
pass
-
+
self.pymp.window.set_title(self.pymp.versionString)
return True
@@ -216,6 +261,10 @@
if tid not in self.history and tid is not self.current:
return False
+ if self.randomlist:
+ if tid not in self.randomlist and tid is not self.current:
+ return False
+
it = model.iter_next(it)
return True
@@ -488,6 +537,7 @@
self.stop(None, None)
self.current = None
self.history = []
+ self.randomlist = []
self.view.get_model().clear()
return True
More information about the Quake2World-dev
mailing list