def on_add_button(self): existing_items = self.create_list() default_dir = FSGSDirectories.get_floppies_dir() if self.cd_mode: dialog = LauncherFilePicker(self.get_window(), gettext("Select Multiple CD-ROMs"), "cd", multiple=True) else: dialog = LauncherFilePicker(self.get_window(), gettext("Select Multiple Floppies"), "floppy", multiple=True) if not dialog.show_modal(): print("dialog.show returned false") return print("dialog.show returned true") paths = dialog.get_paths() paths.sort() print(paths) checksum_tool = ChecksumTool(self.get_window()) for i, path in enumerate(paths): sha1 = checksum_tool.checksum(path) path = Paths.contract_path(path, default_dir) dir_path, file = os.path.split(path) if os.path.normcase(os.path.normpath(dir_path)) == \ os.path.normcase(os.path.normpath(default_dir)): path = file existing_items.append((path, sha1)) self.set_new_config(existing_items)
def insert_multiple_floppies(self, insert_paths): paths = [] for path in insert_paths: embedded_files = [] if path.endswith(".zip"): archive = Archive(path) files = archive.list_files() for file in files: name, ext = os.path.splitext(file) # FIXME: get list of floppy extensions from a central # place if ext in [".adf", ".ipf"]: embedded_files.append(file) if len(embedded_files) > 0: embedded_files.sort() print("found embedded floppy images:") print(embedded_files) for file in embedded_files: paths.append(file) else: paths.append(path) default_dir = FSGSDirectories.get_floppies_dir() checksum_tool = ChecksumTool() for i, path in enumerate(paths): sha1 = checksum_tool.checksum(path) path = Paths.contract_path(path, default_dir) if i < 4: self.set_config( [ ("floppy_drive_{0}".format(i), path), ("x_floppy_drive_{0}_sha1".format(i), sha1), ] ) self.set_config( [ ("floppy_image_{0}".format(i), path), ("x_floppy_image_{0}_sha1".format(i), sha1), ] ) # blank the rest of the drives for i in range(len(paths), 4): self.set_config( [ ("floppy_drive_{0}".format(i), ""), ("x_floppy_drive_{0}_sha1".format(i), ""), ] ) # blank the rest of the image list for i in range(len(paths), 20): self.set_config( [ ("floppy_image_{0}".format(i), ""), ("x_floppy_image_{0}_sha1".format(i), ""), ] )
def multi_select(cls, parent=None): default_dir = FSGSDirectories.get_floppies_dir() dialog = LauncherFilePicker(parent, gettext("Select Multiple Floppies"), "floppy", multiple=True) if not dialog.show_modal(): return original_paths = dialog.get_paths() original_paths.sort() paths = [] for path in original_paths: path = Paths.get_real_case(path) embedded_files = [] if path.endswith(".zip"): archive = Archive(path) files = archive.list_files() for file in files: name, ext = os.path.splitext(file) # FIXME: get list of floppy extensions from a central # place if ext in [".adf", ".ipf"]: embedded_files.append(file) if len(embedded_files) > 0: embedded_files.sort() print("found embedded floppy images:") print(embedded_files) for file in embedded_files: paths.append(file) else: paths.append(path) checksum_tool = ChecksumTool(parent) for i, path in enumerate(paths): sha1 = checksum_tool.checksum(path) path = Paths.contract_path(path, default_dir, force_real_case=False) if i < 4: LauncherConfig.set_multiple([ ("floppy_drive_{0}".format(i), path), ("x_floppy_drive_{0}_sha1".format(i), sha1) ]) LauncherConfig.set_multiple([("floppy_image_{0}".format(i), path), ("x_floppy_image_{0}_sha1".format(i), sha1)]) # blank the rest of the drives for i in range(len(paths), 4): LauncherConfig.set_multiple([("floppy_drive_{0}".format(i), ""), ("x_floppy_drive_{0}_sha1".format(i), "")]) # blank the rest of the image list for i in range(len(paths), 20): LauncherConfig.set_multiple([("floppy_image_{0}".format(i), ""), ("x_floppy_image_{0}_sha1".format(i), "")])
def browse(self, dir_mode): default_dir = FSGSDirectories.get_hard_drives_dir() dialog = LauncherFilePicker( self.get_window(), gettext("Choose Hard Drive"), "hd", LauncherConfig.get(self.config_key), dir_mode=dir_mode, ) if not dialog.show_modal(): dialog.destroy() return path = dialog.get_path() dialog.destroy() checksum_tool = ChecksumTool(self.get_window()) sha1 = "" if dir_mode: print("not calculating HD checksums for directories") else: size = os.path.getsize(path) if size < 64 * 1024 * 1024: sha1 = checksum_tool.checksum(path) else: print("not calculating HD checksums HD files > 64MB") full_path = path # FIXME: use contract function dir_path, file = os.path.split(path) 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 self.text_field.set_text(path) values = [(self.config_key, path), (self.config_key_sha1, sha1)] if self.index == 0: # whdload_args = "" # dummy, ext = os.path.splitext(path) # if not dir_mode and ext.lower() in Archive.extensions: # try: # whdload_args = self.calculate_whdload_args(full_path) # except Exception: # traceback.print_exc() # values.append(("x_whdload_args", whdload_args)) values.extend( whdload.generate_config_for_archive( full_path, model_config=False ).items() ) LauncherConfig.set_multiple(values)
def insert_multiple_floppies(self, insert_paths): paths = [] for path in insert_paths: embedded_files = [] if path.endswith(".zip"): archive = Archive(path) files = archive.list_files() for file in files: name, ext = os.path.splitext(file) # FIXME: get list of floppy extensions from a central # place if ext in [".adf", ".ipf"]: embedded_files.append(file) if len(embedded_files) > 0: embedded_files.sort() print("found embedded floppy images:") print(embedded_files) for file in embedded_files: paths.append(file) else: paths.append(path) default_dir = FSGSDirectories.get_floppies_dir() checksum_tool = ChecksumTool() for i, path in enumerate(paths): sha1 = checksum_tool.checksum(path) path = Paths.contract_path(path, default_dir) if i < 4: self.set_config([ ("floppy_drive_{0}".format(i), path), ("x_floppy_drive_{0}_sha1".format(i), sha1), ]) self.set_config([ ("floppy_image_{0}".format(i), path), ("x_floppy_image_{0}_sha1".format(i), sha1), ]) # blank the rest of the drives for i in range(len(paths), 4): self.set_config([ ("floppy_drive_{0}".format(i), ""), ("x_floppy_drive_{0}_sha1".format(i), ""), ]) # blank the rest of the image list for i in range(len(paths), 20): self.set_config([ ("floppy_image_{0}".format(i), ""), ("x_floppy_image_{0}_sha1".format(i), ""), ])
def browse(self, dir_mode): default_dir = FSGSDirectories.get_hard_drives_dir() dialog = LauncherFilePicker( self.get_window(), gettext("Choose Hard Drive"), "hd", LauncherConfig.get(self.config_key), dir_mode=dir_mode, ) if not dialog.show_modal(): dialog.destroy() return path = dialog.get_path() dialog.destroy() checksum_tool = ChecksumTool(self.get_window()) sha1 = "" if dir_mode: print("not calculating HD checksums for directories") else: size = os.path.getsize(path) if size < 64 * 1024 * 1024: sha1 = checksum_tool.checksum(path) else: print("not calculating HD checksums HD files > 64MB") full_path = path # FIXME: use contract function dir_path, file = os.path.split(path) 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 self.text_field.set_text(path) values = [(self.config_key, path), (self.config_key_sha1, sha1)] if self.index == 0: # whdload_args = "" # dummy, ext = os.path.splitext(path) # if not dir_mode and ext.lower() in Archive.extensions: # try: # whdload_args = self.calculate_whdload_args(full_path) # except Exception: # traceback.print_exc() # values.append(("x_whdload_args", whdload_args)) values.extend( whdload.generate_config_for_archive( full_path, model_config=False).items()) LauncherConfig.set_multiple(values)
def insert_floppy(self, drive, path, sha1=None): if sha1 is None: sha1 = ChecksumTool().checksum(path) default_dir = FSGSDirectories.get_floppies_dir() path = Paths.contract_path(path, default_dir) self.set_config([ ("floppy_drive_{0}".format(drive), path), ("x_floppy_drive_{0}_sha1".format(drive), sha1)])
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 on_add_button(self): existing_items = self.create_list() default_dir = FSGSDirectories.get_floppies_dir() if self.cd_mode: dialog = LauncherFilePicker( self.get_window(), gettext("Select Multiple CD-ROMs"), "cd", multiple=True, ) else: dialog = LauncherFilePicker( self.get_window(), gettext("Select Multiple Floppies"), "floppy", multiple=True, ) if not dialog.show_modal(): print("dialog.show returned false") return print("dialog.show returned true") paths = dialog.get_paths() paths.sort() print(paths) checksum_tool = ChecksumTool(self.get_window()) for i, path in enumerate(paths): sha1 = checksum_tool.checksum(path) path = Paths.contract_path(path, default_dir) dir_path, file = os.path.split(path) if os.path.normcase( os.path.normpath(dir_path) ) == os.path.normcase(os.path.normpath(default_dir)): path = file existing_items.append((path, sha1)) self.set_new_config(existing_items)
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 multi_select(cls, parent=None): default_dir = FSGSDirectories.get_floppies_dir() dialog = LauncherFilePicker( parent, gettext("Select Multiple Floppies"), "floppy", multiple=True, ) if not dialog.show_modal(): return original_paths = dialog.get_paths() original_paths.sort() paths = [] for path in original_paths: path = Paths.get_real_case(path) embedded_files = [] if path.endswith(".zip"): archive = Archive(path) files = archive.list_files() for file in files: name, ext = os.path.splitext(file) # FIXME: get list of floppy extensions from a central # place if ext in [".adf", ".ipf"]: embedded_files.append(file) if len(embedded_files) > 0: embedded_files.sort() print("found embedded floppy images:") print(embedded_files) for file in embedded_files: paths.append(file) else: paths.append(path) checksum_tool = ChecksumTool(parent) for i, path in enumerate(paths): sha1 = checksum_tool.checksum(path) path = Paths.contract_path( path, default_dir, force_real_case=False ) if i < 4: LauncherConfig.set_multiple( [ ("floppy_drive_{0}".format(i), path), ("x_floppy_drive_{0}_sha1".format(i), sha1), ] ) LauncherConfig.set_multiple( [ ("floppy_image_{0}".format(i), path), ("x_floppy_image_{0}_sha1".format(i), sha1), ] ) # blank the rest of the drives for i in range(len(paths), 4): LauncherConfig.set_multiple( [ ("floppy_drive_{0}".format(i), ""), ("x_floppy_drive_{0}_sha1".format(i), ""), ] ) # blank the rest of the image list for i in range(len(paths), 20): LauncherConfig.set_multiple( [ ("floppy_image_{0}".format(i), ""), ("x_floppy_image_{0}_sha1".format(i), ""), ] )