def app_main(): FSGSDirectories.initialize() Settings.instance().verbose = False Settings.instance().load() print("base_dir", FSGSDirectories.get_base_dir()) print("cache_dir", FSGSDirectories.get_cache_dir()) print("cdroms_dir", FSGSDirectories.get_cdroms_dir()) print("configurations_dir", FSGSDirectories.get_configurations_dir()) print("controllers_dir", FSGSDirectories.get_controllers_dir()) print("covers_dir", FSGSDirectories.get_covers_dir()) print("data_dir", FSGSDirectories.get_data_dir()) print("downloads_dir", FSGSDirectories.downloads_dir()) print("floppies_dir", FSGSDirectories.get_floppies_dir()) print("hard_drives_dir", FSGSDirectories.get_hard_drives_dir()) # print("images_dir", FSGSDirectories.get_images_dir()) print("kickstarts_dir", FSGSDirectories.get_kickstarts_dir()) print("launcher_dir", FSGSDirectories.get_launcher_dir()) print("logs_dir", FSGSDirectories.get_logs_dir()) print("plugins_dir", FSGSDirectories.get_plugins_dir()) # print("portable_dir", FSGSDirectories.portable_dir()) print("save_states_dir", FSGSDirectories.get_save_states_dir()) print("screenshots_dir", FSGSDirectories.get_screenshots_dir()) print("screenshots_output_dir =", FSGSDirectories.screenshots_output_dir()) print("themes_dir", FSGSDirectories.get_themes_dir()) print("titles_dir", FSGSDirectories.get_titles_dir())
def on_browse_button(self, extended=False): default_dir = FSGSDirectories.get_kickstarts_dir() if extended: title = gettext("Choose Extended ROM") key = "kickstart_ext_file" else: title = gettext("Choose Kickstart ROM") key = "kickstart_file" dialog = LauncherFilePicker(self.get_window(), title, "rom", LauncherConfig.get(key)) if not dialog.show_modal(): return path = dialog.get_path() checksum_tool = ChecksumTool(self.get_window()) sha1 = checksum_tool.checksum_rom(path) dir_path, file = os.path.split(path) if extended: self.ext_text_field.set_text(file) else: self.text_field.set_text(file) if os.path.normcase(os.path.normpath(dir_path)) == \ os.path.normcase(os.path.normpath(default_dir)): path = file if extended: LauncherConfig.set_multiple([("kickstart_ext_file", path), ("x_kickstart_ext_file", path), ("x_kickstart_ext_file_sha1", sha1)]) else: LauncherConfig.set_multiple([("kickstart_file", path), ("x_kickstart_file", path), ("x_kickstart_file_sha1", sha1)])
def app_main(): FSGSDirectories.initialize() Settings.instance().load() print("") print("Directories:") print("* base_dir =", FSGSDirectories.get_base_dir()) print("* cache_dir =", FSGSDirectories.get_cache_dir()) print("* cdroms_dir =", FSGSDirectories.get_cdroms_dir()) print("* configurations_dir =", FSGSDirectories.get_configurations_dir()) print("* controllers_dir =", FSGSDirectories.get_controllers_dir()) print("* covers_dir =", FSGSDirectories.get_covers_dir()) print("* data_dir =", FSGSDirectories.get_data_dir()) print("* downloads_dir =", FSGSDirectories.downloads_dir()) print("* floppies_dir =", FSGSDirectories.get_floppies_dir()) print("* hard_drives_dir =", FSGSDirectories.get_hard_drives_dir()) # print("* images_dir =", FSGSDirectories.get_images_dir()) print("* kickstarts_dir =", FSGSDirectories.get_kickstarts_dir()) print("* launcher_dir =", FSGSDirectories.get_launcher_dir()) print("* logs_dir =", FSGSDirectories.get_logs_dir()) print("* plugins_dir =", FSGSDirectories.get_plugins_dir()) # print("* portable_dir =", FSGSDirectories.portable_dir()) print("* save_states_dir =", FSGSDirectories.get_save_states_dir()) print("* screenshots_dir =", FSGSDirectories.get_screenshots_dir()) print("* screenshots_output_dir =", FSGSDirectories.screenshots_output_dir()) print("* themes_dir =", FSGSDirectories.get_themes_dir()) print("* titles_dir =", FSGSDirectories.get_titles_dir()) print("* whdload_dir =", FSGSDirectories.get_whdload_dir()) print("")
def app_main(): FSGSDirectories.initialize() Settings.instance().load() print("") print("Directories:") print("* base_dir =", FSGSDirectories.get_base_dir()) print("* cache_dir =", FSGSDirectories.get_cache_dir()) print("* cdroms_dir =", FSGSDirectories.get_cdroms_dir()) print("* configurations_dir =", FSGSDirectories.get_configurations_dir()) print("* controllers_dir =", FSGSDirectories.get_controllers_dir()) print("* covers_dir =", FSGSDirectories.get_covers_dir()) print("* data_dir =", FSGSDirectories.get_data_dir()) print("* downloads_dir =", FSGSDirectories.downloads_dir()) print("* floppies_dir =", FSGSDirectories.get_floppies_dir()) print("* hard_drives_dir =", FSGSDirectories.get_hard_drives_dir()) # print("* images_dir =", FSGSDirectories.get_images_dir()) print("* kickstarts_dir =", FSGSDirectories.get_kickstarts_dir()) print("* launcher_dir =", FSGSDirectories.get_launcher_dir()) print("* logs_dir =", FSGSDirectories.get_logs_dir()) print("* plugins_dir =", FSGSDirectories.get_plugins_dir()) # print("* portable_dir =", FSGSDirectories.portable_dir()) print("* save_states_dir =", FSGSDirectories.get_save_states_dir()) print("* screenshots_dir =", FSGSDirectories.get_screenshots_dir()) print("* screenshots_output_dir =", FSGSDirectories.screenshots_output_dir()) print("* themes_dir =", FSGSDirectories.get_themes_dir()) print("* titles_dir =", FSGSDirectories.get_titles_dir()) print("* whdload_dir =", FSGSDirectories.get_whdload_dir()) print("")
def get_default_directory(self, type): if type == "floppy": return FSGSDirectories.get_floppies_dir() elif type == "cd": return FSGSDirectories.get_cdroms_dir() elif type == "hd": return FSGSDirectories.get_hard_drives_dir() elif type == "rom": return FSGSDirectories.get_kickstarts_dir() raise Exception("unknown file dialog type")
def get_default_directory(media_type): if media_type == "floppy": return FSGSDirectories.get_floppies_dir() elif media_type == "cd": return FSGSDirectories.get_cdroms_dir() elif media_type == "hd": return FSGSDirectories.get_hard_drives_dir() elif media_type == "rom": return FSGSDirectories.get_kickstarts_dir() # FIXME: Return new Media directory instead return FSGSDirectories.get_base_dir()
def get_default_directory(media_type): if media_type == "floppy": return FSGSDirectories.get_floppies_dir() elif media_type == "cd": return FSGSDirectories.get_cdroms_dir() elif media_type == "hd": return FSGSDirectories.get_hard_drives_dir() elif media_type == "rom": return FSGSDirectories.get_kickstarts_dir() # FIXME: Return new Media directory instead return FSGSDirectories.get_base_dir()
def get_search_path(cls): paths = FSGSDirectories.get_default_search_path() search_path = LauncherSettings.get("search_path") for p in search_path.split(";"): p = p.strip() if not p: continue elif p[0] == "-": p = p[1:] if p in paths: paths.remove(p) else: if p not in paths: paths.append(p) # The Configurations dir is always scanned on startup (whenever # modification time has changed). If we don't include it here too # always, the result will be that the configs sometimes appear (on # startup) and disappear (on scan). if not FSGSDirectories.get_configurations_dir() in paths: paths.append(FSGSDirectories.get_configurations_dir()) # Likewise, we force the Kickstarts directory to always be scanned. if not FSGSDirectories.get_kickstarts_dir() in paths: paths.append(FSGSDirectories.get_kickstarts_dir()) return paths
def kickstart_startup_scan(cls): if cls._kickstart_scanned: return cls._kickstart_scanned = True print("kickstart_startup_scan") kickstarts_dir = FSGSDirectories.get_kickstarts_dir() if LauncherSettings.get( "kickstarts_dir_mtime" ) == cls.get_dir_mtime_str(kickstarts_dir): print("... mtime not changed") else: file_database = FileDatabase.get_instance() print("... database.find_local_roms") local_roms = file_database.find_local_roms() print("... walk kickstarts_dir") for dir_path, dir_names, file_names in os.walk(kickstarts_dir): for file_name in file_names: if not file_name.lower().endswith( ".rom" ) and not file_name.lower().endswith(".bin"): continue path = Paths.join(dir_path, file_name) if path in local_roms: local_roms[path] = None # already exists in database continue print("[startup] adding kickstart", path) ROMManager.add_rom_to_database(path, file_database) print(local_roms) for path, file_id in local_roms.items(): if file_id is not None: print("[startup] removing kickstart", path) file_database.delete_file(id=file_id) print("... commit") file_database.commit() LauncherSettings.set( "kickstarts_dir_mtime", cls.get_dir_mtime_str(kickstarts_dir) ) amiga = Amiga.get_model_config("A500") for sha1 in amiga["kickstarts"]: if fsgs.file.find_by_sha1(sha1=sha1): break else: file_database = FileDatabase.get_instance() cls.amiga_forever_kickstart_scan() file_database.commit()
def kickstart_startup_scan(cls): if cls._kickstart_scanned: return cls._kickstart_scanned = True print("kickstart_startup_scan") kickstarts_dir = FSGSDirectories.get_kickstarts_dir() if LauncherSettings.get("kickstarts_dir_mtime") == \ cls.get_dir_mtime_str(kickstarts_dir): print("... mtime not changed") else: file_database = FileDatabase.get_instance() print("... database.find_local_roms") local_roms = file_database.find_local_roms() print("... walk kickstarts_dir") for dir_path, dir_names, file_names in os.walk(kickstarts_dir): for file_name in file_names: if not file_name.lower().endswith(".rom") and not \ file_name.lower().endswith(".bin"): continue path = Paths.join(dir_path, file_name) if path in local_roms: local_roms[path] = None # already exists in database continue print("[startup] adding kickstart", path) ROMManager.add_rom_to_database(path, file_database) print(local_roms) for path, file_id in local_roms.items(): if file_id is not None: print("[startup] removing kickstart", path) file_database.delete_file(id=file_id) print("... commit") file_database.commit() LauncherSettings.set( "kickstarts_dir_mtime", cls.get_dir_mtime_str(kickstarts_dir)) amiga = Amiga.get_model_config("A500") for sha1 in amiga["kickstarts"]: if fsgs.file.find_by_sha1(sha1=sha1): break else: file_database = FileDatabase.get_instance() cls.amiga_forever_kickstart_scan() file_database.commit()
def on_browse_button(self, extended=False): default_dir = FSGSDirectories.get_kickstarts_dir() if extended: title = gettext("Choose Extended ROM") key = "kickstart_ext_file" else: title = gettext("Choose Kickstart ROM") key = "kickstart_file" dialog = LauncherFilePicker( self.get_window(), title, "rom", LauncherConfig.get(key) ) if not dialog.show_modal(): return path = dialog.get_path() checksum_tool = ChecksumTool(self.get_window()) sha1 = checksum_tool.checksum_rom(path) dir_path, file = os.path.split(path) if extended: self.ext_text_field.set_text(file) else: self.text_field.set_text(file) if os.path.normcase(os.path.normpath(dir_path)) == os.path.normcase( os.path.normpath(default_dir) ): path = file if extended: LauncherConfig.set_multiple( [ ("kickstart_ext_file", path), ("x_kickstart_ext_file", path), ("x_kickstart_ext_file_sha1", sha1), ] ) else: LauncherConfig.set_multiple( [ ("kickstart_file", path), ("x_kickstart_file", path), ("x_kickstart_file_sha1", sha1), ] )
def fix_loaded_config(cls, config): print("[CONFIG] Fix loaded config") # cls.fix_joystick_ports(config) # FIXME: parent checksum_tool = ChecksumTool(None) def fix_file_checksum(sha1_key, key, base_dir, is_rom=False): path = config.get(key, "") # hack to synchronize URLs # print(repr(path)) if path.startswith("http://") or path.startswith("https://"): sha1 = path config[sha1_key] = sha1 return path = Paths.expand_path(path) sha1 = config.get(sha1_key, "") if not path: return if sha1: # assuming sha1 is correct return if not os.path.exists(path): print(repr(path), "does not exist") path = os.path.join(base_dir, path) if not os.path.exists(path): print(repr(path), "does not exist") return if os.path.isdir(path): # could set a fake checksum here or something, to indicate # that it isn't supposed to be set.. return print("checksumming", repr(path)) size = os.path.getsize(path) if size > 64 * 1024 * 1024: # not checksumming large files right now print("not checksumming large file") return if is_rom: sha1 = checksum_tool.checksum_rom(path) else: sha1 = checksum_tool.checksum(path) config[sha1_key] = sha1 for i in range(Amiga.MAX_FLOPPY_DRIVES): fix_file_checksum( "x_floppy_drive_{0}_sha1".format(i), "floppy_drive_{0}".format(i), FSGSDirectories.get_floppies_dir(), ) for i in range(Amiga.MAX_FLOPPY_IMAGES): fix_file_checksum( "x_floppy_image_{0}_sha1".format(i), "floppy_image_{0}".format(i), FSGSDirectories.get_floppies_dir(), ) for i in range(Amiga.MAX_CDROM_DRIVES): fix_file_checksum( "x_cdrom_drive_{0}_sha1".format(i), "cdrom_drive_{0}".format(i), FSGSDirectories.get_cdroms_dir(), ) for i in range(Amiga.MAX_CDROM_IMAGES): fix_file_checksum( "x_cdrom_image_{0}_sha1".format(i), "cdrom_image_{0}".format(i), FSGSDirectories.get_cdroms_dir(), ) for i in range(Amiga.MAX_HARD_DRIVES): fix_file_checksum( "x_hard_drive_{0}_sha1".format(i), "hard_drive_{0}".format(i), FSGSDirectories.get_hard_drives_dir(), ) # FIXME: need to handle checksums for Cloanto here fix_file_checksum( "x_kickstart_file_sha1", "x_kickstart_file", FSGSDirectories.get_kickstarts_dir(), is_rom=True, ) fix_file_checksum( "x_kickstart_ext_file_sha1", "x_kickstart_ext_file", FSGSDirectories.get_kickstarts_dir(), is_rom=True, ) # Convert uaegfx_card to new graphics_card option uae_gfx_card = config.get(Option.UAEGFX_CARD, "") if uae_gfx_card: if uae_gfx_card == "1": if not config.get(Option.GRAPHICS_CARD, ""): config[Option.GRAPHICS_CARD] = "uaegfx" del config[Option.UAEGFX_CARD] # FIXME: Set changed! config["__changed"] = "1"
def get_kickstarts_dir(self): # FIXME: dependency loop return FSGSDirectories.get_kickstarts_dir()
def get_kickstarts_dir(self): # FIXME: dependency loop return FSGSDirectories.get_kickstarts_dir()
def fix_loaded_config(cls, config): print("[CONFIG] Fix loaded config") # cls.fix_joystick_ports(config) # FIXME: parent checksum_tool = ChecksumTool(None) def fix_file_checksum(sha1_key, key, base_dir, is_rom=False): path = config.get(key, "") # hack to synchronize URLs # print(repr(path)) if path.startswith("http://") or path.startswith("https://"): sha1 = path config[sha1_key] = sha1 return path = Paths.expand_path(path) sha1 = config.get(sha1_key, "") if not path: return if sha1: # assuming sha1 is correct return if not os.path.exists(path): print(repr(path), "does not exist") path = os.path.join(base_dir, path) if not os.path.exists(path): print(repr(path), "does not exist") return if os.path.isdir(path): # could set a fake checksum here or something, to indicate # that it isn't supposed to be set.. return print("checksumming", repr(path)) size = os.path.getsize(path) if size > 64 * 1024 * 1024: # not checksumming large files right now print("not checksumming large file") return if is_rom: sha1 = checksum_tool.checksum_rom(path) else: sha1 = checksum_tool.checksum(path) config[sha1_key] = sha1 for i in range(Amiga.MAX_FLOPPY_DRIVES): fix_file_checksum( "x_floppy_drive_{0}_sha1".format(i), "floppy_drive_{0}".format(i), FSGSDirectories.get_floppies_dir()) for i in range(Amiga.MAX_FLOPPY_IMAGES): fix_file_checksum( "x_floppy_image_{0}_sha1".format(i), "floppy_image_{0}".format(i), FSGSDirectories.get_floppies_dir()) for i in range(Amiga.MAX_CDROM_DRIVES): fix_file_checksum( "x_cdrom_drive_{0}_sha1".format(i), "cdrom_drive_{0}".format(i), FSGSDirectories.get_cdroms_dir()) for i in range(Amiga.MAX_CDROM_IMAGES): fix_file_checksum( "x_cdrom_image_{0}_sha1".format(i), "cdrom_image_{0}".format(i), FSGSDirectories.get_cdroms_dir()) for i in range(Amiga.MAX_HARD_DRIVES): fix_file_checksum( "x_hard_drive_{0}_sha1".format(i), "hard_drive_{0}".format(i), FSGSDirectories.get_hard_drives_dir()) # FIXME: need to handle checksums for Cloanto here fix_file_checksum( "x_kickstart_file_sha1", "x_kickstart_file", FSGSDirectories.get_kickstarts_dir(), is_rom=True) fix_file_checksum( "x_kickstart_ext_file_sha1", "x_kickstart_ext_file", FSGSDirectories.get_kickstarts_dir(), is_rom=True) # Convert uaegfx_card to new graphics_card option uae_gfx_card = config.get(Option.UAEGFX_CARD, "") if uae_gfx_card: if uae_gfx_card == "1": if not config.get(Option.GRAPHICS_CARD, ""): config[Option.GRAPHICS_CARD] = "uaegfx" del config[Option.UAEGFX_CARD] # FIXME: Set changed! config["__changed"] = "1"
def import_amiga_forever(self): return self.copy_roms(os.path.join( self.path, "Amiga Files", "Shared", "rom"), FSGSDirectories.get_kickstarts_dir())
def import_roms(self): return self.copy_roms(self.path, FSGSDirectories.get_kickstarts_dir())
def import_amiga_forever(self): return self.copy_roms(os.path.join( self.path, "Amiga Files", "Shared", "rom"), FSGSDirectories.get_kickstarts_dir())
def import_roms(self): return self.copy_roms(self.path, FSGSDirectories.get_kickstarts_dir())