def __init__(self, song, songDb, errorNotifyCallback=None, doneCallback=None): """The first parameter, song, may be either a pykdb.SongStruct instance, or it may be a filename. """ pykPlayer.__init__(self, song, songDb, errorNotifyCallback, doneCallback) self.Movie = None manager.setCpuSpeed('mpg') manager.InitPlayer(self) # Close the audio and the display manager.CloseAudio() manager.CloseDisplay() manager.CloseCPUControl() self.procReturnCode = None self.proc = None
def start(self): self.appStart = pygame.time.get_ticks() self.heldStartTicks = self.appStart manager.OpenCPUControl() manager.setCpuSpeed('startup') self.numSongInfoLines = 1 self.setupSplashScreen() manager.InitPlayer(self) self.setupScrollWindow() self.screenDirty = True needsSave = False if manager.options.scan_dir: # Replace the old scan list. self.songDb.Settings.FolderList = [manager.options.scan_dir] needsSave = True if manager.options.scan_dirs: # Add one or more new directories to the list. self.songDb.Settings.FolderList += manager.options.scan_dirs needsSave = True if manager.options.scan: # Re-scan the files. self.songDb.BuildSearchDatabase(pykdb.AppYielder(), MiniBusyCancelDialog(self)) needsSave = True else: # Read the existing database. self.songDb.LoadDatabase(self.errorPopupCallback) if needsSave: self.songDb.SaveSettings() self.songDb.SaveDatabase() if not self.songDb.FullSongList: # No files. self.errorPopupCallback("No songs in catalog.") return if manager.options.validate: manager.ValidateDatabase(self.songDb) return if self.songDb.GotTitles: self.numSongInfoLines += 1 if self.songDb.GotArtists: self.numSongInfoLines += 1 self.setupScrollWindow() self.readMarkedSongs() if self.songDb.GotTitles: self.songDb.SelectSort('title') elif self.songDb.GotArtists: self.songDb.SelectSort('artist') else: self.songDb.SelectSort('filename') self.currentRow = 0 self.searchString = '' self.heldKey = None self.heldStartTicks = 0 self.heldRepeat = 0 manager.setCpuSpeed('wait') # Now that we've finished loading, wait up a second and give # the user a chance to view the splash screen, in case we # loaded too fast. if self.splashStart != None: splashTime = pygame.time.get_ticks() - self.splashStart remainingTime = 2500 - splashTime if remainingTime > 0: pygame.time.wait(remainingTime) self.running = True manager.setCpuSpeed('menu_fast') self.heldStartTicks = pygame.time.get_ticks() while self.running: manager.Poll() self.writeMarkedSongs() manager.CloseDisplay()