def loadImages1(self): # load dialog images dirname = os.path.join("images", "logos") for f in ( "joker07_40_774", "joker08_40_774", "joker07_50_774", "joker08_50_774", "joker11_100_774", "joker10_100", ): self.gimages.logos.append(self.dataloader.findImage(f, dirname)) if WIN_SYSTEM == 'win32': dirname = os.path.join('images', 'dialog', 'default') else: dirname = os.path.join('images', 'dialog', 'bluecurve') for f in ('error', 'info', 'question', 'warning'): fn = self.dataloader.findImage(f, dirname) im = loadImage(fn) MfxMessageDialog.img[f] = im # load button images if 0 and TOOLKIT == 'tk': dirname = os.path.join('images', 'buttons', 'bluecurve') for n, f in ( (_('&OK'), 'ok'), (_('&Cancel'), 'cancel'), (_('&New game'), 'new'), ): fn = self.dataloader.findImage(f, dirname) im = loadImage(fn) MfxDialog.button_img[n] = im
def loadImages4(self): # load all remaining images for k, v in self.gimages.__dict__.items(): if isinstance(v, list): for i in range(len(v)): if isinstance(v[i], str): v[i] = loadImage(v[i]) if self.intro.progress: self.intro.progress.update(step=1) self.gimages.__dict__[k] = tuple(v)
def loadImages3(self): # load treeview images SelectDialogTreeData.img = [] dirname = os.path.join('images', 'tree') for f in ('folder', 'openfolder', 'node', 'emptynode'): fn = self.dataloader.findImage(f, dirname) im = loadImage(fn) SelectDialogTreeData.img.append(im) # load htmlviewer images dirname = os.path.join('images', 'htmlviewer') fn = self.dataloader.findImage('disk', dirname) HTMLViewer.symbols_fn['disk'] = fn
def __loadCard(self, filename, check_w=1, check_h=1): ##print '__loadCard:', filename f = os.path.join(self.cs.dir, filename) if not os.path.exists(f): return None try: img = loadImage(file=f) except: return None w, h = img.width(), img.height() if self.CARDW < 0: self.CARDW, self.CARDH = w, h else: if (check_w and w != self.CARDW) or (check_h and h != self.CARDH): raise ValueError("Invalid size %dx%d of image %s" % (w, h, f)) return img
def __loadCard(self, filename, check_w=1, check_h=1): # print '__loadCard:', filename f = os.path.join(self.cs.dir, filename) if not os.path.exists(f): return None try: img = loadImage(file=f) except Exception: return None w, h = img.width(), img.height() if self.CARDW < 0: self.CARDW, self.CARDH = w, h else: if ((check_w and w != self.CARDW) or (check_h and h != self.CARDH)): raise ValueError("Invalid size %dx%d of image %s" % (w, h, f)) return img
def __loadCard(self, filename, check_w=1, check_h=1): # print '__loadCard:', filename f = os.path.join(self.cs.dir, filename) if not os.path.exists(f): print('card image path %s does not exist' % (f)) return None try: img = loadImage(file=f) except Exception: return None if TOOLKIT == 'kivy': w = img.texture.size[0] h = img.texture.size[1] else: w, h = img.width(), img.height() if self.CARDW < 0: self.CARDW, self.CARDH = w, h else: if ((check_w and w != self.CARDW) or (check_h and h != self.CARDH)): raise ValueError("Invalid size %dx%d of image %s" % (w, h, f)) return img
def __loadCard(self, filename, check_w=1, check_h=1): # print '__loadCard:', filename f = os.path.join(self.cs.dir, filename) if not os.path.exists(f): print_err('card image path %s does not exist' % f) return None try: img = loadImage(file=f) except Exception: return None if TOOLKIT == 'kivy': w = img.texture.size[0] h = img.texture.size[1] else: w, h = img.width(), img.height() if self.CARDW < 0: self.CARDW, self.CARDH = w, h else: if ((check_w and w != self.CARDW) or (check_h and h != self.CARDH)): raise ValueError("Invalid size %dx%d of image %s" % (w, h, f)) return img
def pysol_init(app, args): # init commandline options (undocumented) opts = parse_option(args) if not opts: return 1 sys.exit(1) opts, filename = opts if filename: app.commandline.loadgame = filename app.commandline.game = opts['game'] if opts['gameid'] is not None: try: app.commandline.gameid = int(opts['gameid']) except ValueError: print_err(_('invalid game id: ') + opts['gameid']) # try to create the config directory for d in ( app.dn.config, app.dn.savegames, os.path.join(app.dn.config, "music"), # os.path.join(app.dn.config, "screenshots"), os.path.join(app.dn.config, "tiles"), os.path.join(app.dn.config, "tiles", "stretch"), os.path.join(app.dn.config, "tiles", "save-aspect"), os.path.join(app.dn.config, "cardsets"), os.path.join(app.dn.config, "plugins"), ): if not os.path.exists(d): try: os.makedirs(d) except: traceback.print_exc() pass # init DataLoader f = os.path.join("html-src", "license.html") app.dataloader = DataLoader(args[0], f) # init toolkit 1) top = MfxRoot(className=TITLE) app.top = top app.top_bg = top.cget("bg") app.top_cursor = top.cget("cursor") # load options try: app.loadOptions() except: traceback.print_exc() pass # init toolkit 2) init_root_window(top, app) # prepare the progress bar app.loadImages1() if not app.progress_images: app.progress_images = (loadImage(app.gimages.logos[0]), loadImage(app.gimages.logos[1])) app.wm_withdraw() # create the progress bar title = _("Welcome to %s") % TITLE color = app.opt.colors['table'] if app.tabletile_index > 0: color = "#008200" app.intro.progress = PysolProgressBar(app, top, title=title, color=color, images=app.progress_images, norm=2.0) app.intro.progress.update(step=1) # init games database def progressCallback(*args): app.intro.progress.update(step=1) GAME_DB.setCallback(progressCallback) import pysollib.games if not opts['french-only']: import pysollib.games.ultra import pysollib.games.mahjongg import pysollib.games.special pysollib.games.special.no_use() # try to load plugins if not opts["noplugins"]: for dir in (os.path.join(app.dataloader.dir, "games"), os.path.join(app.dataloader.dir, "plugins"), app.dn.plugins): try: app.loadPlugins(dir) except: pass GAME_DB.setCallback(None) # init audio 1) app.audio = None sounds = { 'pss': PysolSoundServerModuleClient, 'pygame': PyGameAudioClient, 'oss': OSSAudioClient, 'win': Win32AudioClient } if opts["nosound"] or SOUND_MOD == 'none': app.audio = AbstractAudioClient() elif opts['sound-mod']: c = sounds[opts['sound-mod']] app.audio = c() elif SOUND_MOD == 'auto': for c in (PyGameAudioClient, PysolSoundServerModuleClient, OSSAudioClient, Win32AudioClient, AbstractAudioClient): try: app.audio = c() app.audio.startServer() app.audio.connectServer(app) except: pass else: # success break else: c = sounds[SOUND_MOD] app.audio = c() app.audio.startServer() app.audio.connectServer(app) # update sound_mode if isinstance(app.audio, PysolSoundServerModuleClient): app.opt.sound_mode = 1 else: app.opt.sound_mode = 0 # check games if len(app.gdb.getGamesIdSortedByName()) == 0: app.wm_withdraw() app.intro.progress.destroy() d = MfxMessageDialog(top, title=_("%s installation error") % TITLE, text=_(''' No games were found !!! Main data directory is: %s Please check your %s installation. ''') % (app.dataloader.dir, TITLE), bitmap="error", strings=(_("&Quit"), )) return 1 # init cardsets app.initCardsets() cardset = None c = app.opt.cardset.get(0) if c: cardset = app.cardset_manager.getByName(c[0]) if cardset and c[1]: cardset.updateCardback(backname=c[1]) if not cardset: cardset = app.cardset_manager.get(0) if app.cardset_manager.len() == 0 or not cardset: fatal_no_cardsets(app) return 3 # init tiles manager = app.tabletile_manager tile = Tile() tile.color = app.opt.colors['table'] tile.name = "None" tile.filename = None manager.register(tile) app.initTiles() if app.opt.tabletile_name: # and top.winfo_screendepth() > 8: for tile in manager.getAll(): if app.opt.tabletile_name == tile.basename: app.tabletile_index = tile.index break # init samples and music resources app.initSamples() app.initMusic() # init audio 2) if not app.audio.CAN_PLAY_SOUND: app.opt.sound = 0 app.audio.updateSettings() # start up the background music if app.audio.CAN_PLAY_MUSIC: music = app.music_manager.getAll() if music: app.music_playlist = list(music)[:] app.miscrandom.shuffle(app.music_playlist) if 1: for m in app.music_playlist: if m.name.lower() == "bye_for_now": app.music_playlist.remove(m) app.music_playlist.insert(0, m) break app.audio.playContinuousMusic(app.music_playlist) # prepare other images app.loadImages2() app.loadImages3() app.loadImages4() # load cardset progress = app.intro.progress if not app.loadCardset(cardset, progress=progress, update=1): for cardset in app.cardset_manager.getAll(): progress.reset() if app.loadCardset(cardset, progress=progress, update=1): break else: fatal_no_cardsets(app) return 3 # ok return 0
def pysol_init(app, args): # init commandline options (undocumented) opts = parse_option(args) if not opts: return 1 sys.exit(1) opts, filename = opts if filename: app.commandline.loadgame = filename app.commandline.deal = opts['deal'] app.commandline.game = opts['game'] if opts['gameid'] is not None: try: app.commandline.gameid = int(opts['gameid']) except ValueError: print_err(_('invalid game id: ') + opts['gameid']) # try to create the config directory for d in ( app.dn.config, app.dn.savegames, os.path.join(app.dn.config, "music"), # os.path.join(app.dn.config, "screenshots"), os.path.join(app.dn.config, "tiles"), os.path.join(app.dn.config, "tiles", "stretch"), os.path.join(app.dn.config, "tiles", "save-aspect"), os.path.join(app.dn.config, "cardsets"), os.path.join(app.dn.config, "plugins"), ): if not os.path.exists(d): try: os.makedirs(d) except Exception: traceback.print_exc() pass # init DataLoader f = os.path.join("html", "license.html") app.dataloader = DataLoader(args[0], f) # init toolkit 1) top = MfxRoot(className=TITLE) app.top = top app.top_bg = top.cget("bg") app.top_cursor = top.cget("cursor") # load options try: app.loadOptions() except Exception: traceback.print_exc() pass # init toolkit 2) init_root_window(top, app) # prepare the progress bar app.loadImages1() if not app.progress_images: app.progress_images = (loadImage(app.gimages.logos[0]), loadImage(app.gimages.logos[1])) app.wm_withdraw() # create the progress bar title = _("Welcome to %s") % TITLE color = app.opt.colors['table'] if app.tabletile_index > 0: color = "#008200" app.intro.progress = PysolProgressBar(app, top, title=title, color=color, images=app.progress_images, norm=2.0) app.intro.progress.update(step=1) # init games database def progressCallback(*args): app.intro.progress.update(step=1) GAME_DB.setCallback(progressCallback) import pysollib.games if not opts['french-only']: import pysollib.games.ultra import pysollib.games.mahjongg import pysollib.games.special pysollib.games.special.no_use() # try to load plugins if not opts["noplugins"]: for dir in (os.path.join(app.dataloader.dir, "games"), os.path.join(app.dataloader.dir, "plugins"), app.dn.plugins): try: app.loadPlugins(dir) except Exception: pass GAME_DB.setCallback(None) # init audio 1) app.audio = None sounds = {'pss': PysolSoundServerModuleClient, 'pygame': PyGameAudioClient, 'oss': OSSAudioClient, 'win': Win32AudioClient} if TOOLKIT == 'kivy': sounds['kivy'] = KivyAudioClient if opts["nosound"] or SOUND_MOD == 'none': app.audio = AbstractAudioClient() elif opts['sound-mod']: c = sounds[opts['sound-mod']] app.audio = c() elif SOUND_MOD == 'auto': snd = [] snd.append(PyGameAudioClient) if TOOLKIT == 'kivy': snd.append(KivyAudioClient) if pysolsoundserver: snd.append(PysolSoundServerModuleClient) snd.append(OSSAudioClient) snd.append(Win32AudioClient) snd.append(AbstractAudioClient) for c in snd: try: app.audio = c() app.audio.startServer() app.audio.connectServer(app) except Exception: pass else: # success break else: c = sounds[SOUND_MOD] app.audio = c() app.audio.startServer() app.audio.connectServer(app) # update sound_mode if isinstance(app.audio, PysolSoundServerModuleClient): app.opt.sound_mode = 1 else: app.opt.sound_mode = 0 # check games if len(app.gdb.getGamesIdSortedByName()) == 0: app.wm_withdraw() app.intro.progress.destroy() d = MfxMessageDialog(top, title=_("%s installation error") % TITLE, text=_(''' No games were found !!! Main data directory is: %s Please check your %s installation. ''') % (app.dataloader.dir, TITLE), bitmap="error", strings=(_("&Quit"),)) return 1 # init cardsets app.initCardsets() cardset = None c = app.opt.cardset.get(0) if c: cardset = app.cardset_manager.getByName(c[0]) if cardset and c[1]: cardset.updateCardback(backname=c[1]) if not cardset: cardset = app.cardset_manager.get(0) if app.cardset_manager.len() == 0 or not cardset: fatal_no_cardsets(app) return 3 # init tiles manager = app.tabletile_manager tile = Tile() tile.color = app.opt.colors['table'] tile.name = "None" tile.filename = None manager.register(tile) app.initTiles() if app.opt.tabletile_name: # and top.winfo_screendepth() > 8: for tile in manager.getAll(): if app.opt.tabletile_name == tile.basename: app.tabletile_index = tile.index break # init samples and music resources app.initSamples() app.initMusic() # init audio 2) if not app.audio.CAN_PLAY_SOUND: app.opt.sound = 0 app.audio.updateSettings() # start up the background music if app.audio.CAN_PLAY_MUSIC: music = app.music_manager.getAll() if music: app.music_playlist = list(music)[:] app.miscrandom.shuffle(app.music_playlist) if 1: for m in app.music_playlist: if m.name.lower() == "bye_for_now": app.music_playlist.remove(m) app.music_playlist.insert(0, m) break app.audio.playContinuousMusic(app.music_playlist) # prepare other images app.loadImages2() app.loadImages3() app.loadImages4() # load cardset progress = app.intro.progress if not app.loadCardset(cardset, progress=progress, update=1): for cardset in app.cardset_manager.getAll(): progress.reset() if app.loadCardset(cardset, progress=progress, update=1): break else: fatal_no_cardsets(app) return 3 # ok return 0