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 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 prepare(self): print("LaunchHandler.prepare") if not self.temp_dir: self.temp_dir = tempfile.mkdtemp(prefix="fs-uae-") print("temp dir", self.temp_dir) self.config["floppies_dir"] = self.temp_dir print("state dir", self.get_state_dir()) self.config["state_dir"] = self.get_state_dir() self.config["save_states_dir"] = "" self.config["floppy_overlays_dir"] = "" self.config["flash_memory_dir"] = "" # FIXME: Document or change. Tests needs to be able to disable # saving changes or otherwise be able to start with a clean slate. # FIXME: Change handler is disabled for now # if self.config.get("__save_dir", "") == "0": # pass # else: # self.change_handler = GameChangeHandler(self.temp_dir) self.config["cdroms_dir"] = FSGSDirectories.get_cdroms_dir() self.config[ "configurations_dir" ] = FSGSDirectories.get_configurations_dir() self.config["controllers_dir"] = FSGSDirectories.get_controllers_dir() self.config["hard_drives_dir"] = FSGSDirectories.get_hard_drives_dir() self.config["kickstarts_dir"] = FSGSDirectories.get_kickstarts_dir() self.config["save_states_dir"] = FSGSDirectories.get_save_states_dir() self.config["themes_dir"] = FSGSDirectories.get_themes_dir() # self.prepare_roms() if self.stop_flag: return self.prepare_floppies() if self.stop_flag: return self.prepare_cdroms() if self.stop_flag: return # self.prepare_hard_drives() if self.stop_flag: return # self.copy_hd_files() if self.stop_flag: return self.init_changes() if self.stop_flag: return self.prepare_theme() if self.stop_flag: return self.prepare_extra_settings()
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 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 fix_loaded_config(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()