Пример #1
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent,
                                                 "Machine configuration", 6, 4,
                                                 "Set and reboot")

        row = 0
        self.machines = table_add_radio_rows(table, row, "Machine:",
                                             config.get_machine_types(),
                                             self._machine_cb)
        row += 1

        self.dsps = table_add_radio_rows(table, row, "DSP type:",
                                         config.get_dsp_types())
        row += 1

        # start next table column
        row = 0
        table_set_col_offset(table, 2)
        self.monitors = table_add_radio_rows(table, row, "Monitor:",
                                             config.get_monitor_types())
        row += 1

        self.clocks = table_add_radio_rows(table, row, "CPU clock:",
                                           config.get_cpuclock_types())
        row += 1

        # fullspan at bottom
        fullspan = True

        combo = gtk.combo_box_new_text()
        for text in config.get_cpulevel_types():
            combo.append_text(text)
        self.cpulevel = table_add_widget_row(table, row, "CPU type:", combo,
                                             fullspan)
        row += 1

        combo = gtk.combo_box_new_text()
        for text in config.get_memory_names():
            combo.append_text(text)
        self.memory = table_add_widget_row(table, row, "Memory:", combo,
                                           fullspan)
        row += 1

        label = "TOS image:"
        fsel = self._fsel(label, gtk.FILE_CHOOSER_ACTION_OPEN)
        self.tos = table_add_widget_row(table, row, label, fsel, fullspan)
        row += 1

        vbox = gtk.VBox()
        self.compatible = gtk.CheckButton("Compatible CPU")
        self.rtc = gtk.CheckButton("Real-time clock")
        self.timerd = gtk.CheckButton("Patch Timer-D")
        vbox.add(self.compatible)
        vbox.add(self.timerd)
        vbox.add(self.rtc)
        table_add_widget_row(table, row, "Misc.:", vbox, fullspan)
        row += 1

        table.show_all()
Пример #2
0
 def __init__(self, parent):
     table, self.dialog = create_table_dialog(parent, "Save from memory", 3, 2)
     self.file = FselEntry(self.dialog)
     table_add_widget_row(table, 0, "File name:", self.file.get_container())
     self.address = table_add_entry_row(table, 1, "Save address:", 6)
     self.address.connect("activate", dialog_apply_cb, self.dialog)
     self.length = table_add_entry_row(table, 2, "Number of bytes:", 6)
     self.length.connect("activate", dialog_apply_cb, self.dialog)
Пример #3
0
 def __init__(self, parent):
     table, self.dialog = create_table_dialog(parent, "Save from memory", 3, 2)
     self.file = FselEntry(self.dialog)
     table_add_widget_row(table, 0, "File name:", self.file.get_container())
     self.address = table_add_entry_row(table, 1, "Save address:", 6)
     self.address.connect("activate", dialog_apply_cb, self.dialog)
     self.length = table_add_entry_row(table, 2, "Number of bytes:", 6)
     self.length.connect("activate", dialog_apply_cb, self.dialog)
Пример #4
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent, "Machine configuration", 6, 4, "Set and reboot")
        
        row = 0
        self.machines = table_add_radio_rows(table, row, "Machine:",
                        config.get_machine_types(), self._machine_cb)
        row += 1

        self.dsps = table_add_radio_rows(table, row, "DSP type:", config.get_dsp_types())
        row += 1

        # start next table column
        row = 0
        table_set_col_offset(table, 2)
        self.monitors = table_add_radio_rows(table, row, "Monitor:", config.get_monitor_types())
        row += 1

        self.clocks = table_add_radio_rows(table, row, "CPU clock:", config.get_cpuclock_types())
        row += 1

        # fullspan at bottom
        fullspan = True

        combo = gtk.combo_box_new_text()
        for text in config.get_cpulevel_types():
            combo.append_text(text)
        self.cpulevel = table_add_widget_row(table, row, "CPU type:", combo, fullspan)
        row += 1

        combo = gtk.combo_box_new_text()
        for text in config.get_memory_names():
            combo.append_text(text)
        self.memory = table_add_widget_row(table, row, "Memory:", combo, fullspan)
        row += 1
        
        label = "TOS image:"
        fsel = self._fsel(label, gtk.FILE_CHOOSER_ACTION_OPEN)
        self.tos = table_add_widget_row(table, row, label, fsel, fullspan)
        row += 1

        vbox = gtk.VBox()
        self.compatible = gtk.CheckButton("Compatible CPU")
        self.rtc = gtk.CheckButton("Real-time clock")
        self.timerd = gtk.CheckButton("Patch Timer-D")
        self.compatible.set_tooltip_text("Needed for overscan and other timing sensitive things to work correctly")
        self.rtc.set_tooltip_text("Some rare games and demos don't work with this")
        self.timerd.set_tooltip_text("Improves ST/STE emulation performance, but some rare demos/games don't work with this")
        vbox.add(self.compatible)
        vbox.add(self.timerd)
        vbox.add(self.rtc)
        table_add_widget_row(table, row, "Misc.:", vbox, fullspan)
        row += 1

        table.show_all()
Пример #5
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent, "Floppy images",
                                                 4, 2)
        factory = FselAndEjectFactory()

        row = 0
        self.floppy = []
        path = config.get_floppydir()
        for drive in ("A", "B"):
            label = "Disk %c image:" % drive
            fname = config.get_floppy(row)
            fsel, box = factory.get(label, path, fname,
                                    gtk.FILE_CHOOSER_ACTION_OPEN)
            table_add_widget_row(table, row, label, box)
            self.floppy.append(fsel)
            row += 1

        protect = gtk.combo_box_new_text()
        for text in config.get_protection_types():
            protect.append_text(text)
        protect.set_active(config.get_floppy_protection())
        protect.set_tooltip_text("Write protect floppy image contents")
        table_add_widget_row(table, row, "Write protection:", protect)
        row += 1

        ds = gtk.CheckButton("Double sided drives")
        ds.set_active(config.get_doublesided())
        ds.set_tooltip_text(
            "Whether drives are double or single sided. Can affect behavior of some games"
        )
        table_add_widget_row(table, row, None, ds)
        row += 1

        driveb = gtk.CheckButton("Drive B connected")
        driveb.set_active(config.get_floppy_drives()[1])
        driveb.set_tooltip_text(
            "Wheter drive B is connected. Can affect behavior of some demos & games"
        )
        table_add_widget_row(table, row, None, driveb)
        row += 1

        fastfdc = gtk.CheckButton("Fast floppy access")
        fastfdc.set_active(config.get_fastfdc())
        fastfdc.set_tooltip_text(
            "Can cause incompatibilities with some games/demos")
        table_add_widget_row(table, row, None, fastfdc)

        table.show_all()

        self.protect = protect
        self.fastfdc = fastfdc
        self.driveb = driveb
        self.ds = ds
Пример #6
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent, "Floppy images",
                                                 4, 2)
        factory = FselAndEjectFactory()

        row = 0
        self.floppy = []
        path = config.get_floppydir()
        for drive in ("A", "B"):
            label = "Disk %c image:" % drive
            fname = config.get_floppy(row)
            fsel, box = factory.get(label, path, fname,
                                    Gtk.FileChooserAction.OPEN)
            table_add_widget_row(table, row, 0, label, box)
            self.floppy.append(fsel)
            row += 1

        protect = table_add_combo_row(table, row, 0, "Write protection:",
                                      config.get_protection_types())
        protect.set_tooltip_text("Write protect floppy image contents")
        protect.set_active(config.get_floppy_protection())
        row += 1

        vbox = Gtk.VBox()
        ds = Gtk.CheckButton("Double sided drives")
        ds.set_tooltip_text(
            "Whether drives are double or single sided. Can affect behavior of some games"
        )
        ds.set_active(config.get_doublesided())
        vbox.add(ds)

        driveb = Gtk.CheckButton("Drive B connected")
        driveb.set_tooltip_text(
            "Whether drive B is connected. Can affect behavior of some demos & games"
        )
        driveb.set_active(config.get_floppy_drives()[1])
        vbox.add(driveb)

        fastfdc = Gtk.CheckButton("Fast floppy access")
        fastfdc.set_tooltip_text(
            "Can cause incompatibilities with some games/demos")
        fastfdc.set_active(config.get_fastfdc())
        vbox.add(fastfdc)

        table_add_widget_row(table, row, 0, None, vbox)
        row += 1

        table.show_all()

        self.protect = protect
        self.fastfdc = fastfdc
        self.driveb = driveb
        self.ds = ds
Пример #7
0
 def _create_dialog(self, config):
     paths = config.get_paths()
     table, self.dialog = create_table_dialog(self.parent, "File path settings", len(paths), 2)
     paths.sort()
     row = 0
     self.paths = []
     for (key, path, label) in paths:
         fsel = FselEntry(self.dialog, self._validate_fname, key)
         fsel.set_filename(path)
         self.paths.append((key, fsel))
         table_add_widget_row(table, row, label, fsel.get_container())
         row += 1
     table.show_all()
Пример #8
0
 def _create_dialog(self, config):
     paths = config.get_paths()
     table, self.dialog = create_table_dialog(self.parent, "File path settings", len(paths), 2)
     paths.sort()
     row = 0
     self.paths = []
     for (key, path, label) in paths:
         fsel = FselEntry(self.dialog, self._validate_fname, key)
         fsel.set_filename(path)
         self.paths.append((key, fsel))
         table_add_widget_row(table, row, label, fsel.get_container())
         row += 1
     table.show_all()
Пример #9
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent, "Machine configuration", 6, 4, "Set and reboot")
        
        row = 0
        self.machines = table_add_radio_rows(table, row, "Machine:",
                        config.get_machine_types(), self._machine_cb)
        row += 1

        self.dsps = table_add_radio_rows(table, row, "DSP type:", config.get_dsp_types())
        row += 1

        # start next table column
        row = 0
        table_set_col_offset(table, 2)
        self.monitors = table_add_radio_rows(table, row, "Monitor:", config.get_monitor_types())
        row += 1

        self.clocks = table_add_radio_rows(table, row, "CPU clock:", config.get_cpuclock_types())
        row += 1

        # fullspan at bottom
        fullspan = True

        combo = gtk.combo_box_new_text()
        for text in config.get_cpulevel_types():
            combo.append_text(text)
        self.cpulevel = table_add_widget_row(table, row, "CPU type:", combo, fullspan)
        row += 1

        combo = gtk.combo_box_new_text()
        for text in config.get_memory_names():
            combo.append_text(text)
        self.memory = table_add_widget_row(table, row, "Memory:", combo, fullspan)
        row += 1
        
        label = "TOS image:"
        fsel = self._fsel(label, gtk.FILE_CHOOSER_ACTION_OPEN)
        self.tos = table_add_widget_row(table, row, label, fsel, fullspan)
        row += 1

        vbox = gtk.VBox()
        self.compatible = gtk.CheckButton("Compatible CPU")
        self.rtc = gtk.CheckButton("Real-time clock")
        self.timerd = gtk.CheckButton("Patch Timer-D")
        vbox.add(self.compatible)
        vbox.add(self.timerd)
        vbox.add(self.rtc)
        table_add_widget_row(table, row, "Misc.:", vbox, fullspan)
        row += 1

        table.show_all()
Пример #10
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent, "Sound settings",
                                                 6, 2, "Apply")
        row = 0

        col = 1
        fullspan = True
        self.enabled = table_add_widget_row(table, row, col, None,
                                            Gtk.CheckButton("Sound enabled"),
                                            fullspan)
        row += 1

        col = 0
        self.hz = table_add_combo_row(table, row, col, "Sound frequency:",
                                      config.get_sound_values())
        row += 1

        self.ymmixer = table_add_combo_row(table, row, col,
                                           "YM mixing method:",
                                           config.get_ymmixer_types())
        self.ymmixer.set_tooltip_text("Which method is used to mix YM voices")
        row += 1

        bufsize = Gtk.Scale.new_with_range(Gtk.Orientation.HORIZONTAL, 0, 100,
                                           10)
        for pos in ((0, "auto"), (10, "min"), (100, "max")):
            bufsize.add_mark(pos[0], Gtk.PositionType.BOTTOM, pos[1])
        bufsize.set_tooltip_text(
            "SDL sound buffer size in ms. 0 = use default value. In some situations, SDL default may cause large (~0.5s) sound delay at lower frequency.  If you have this problem, try with e.g. 20 ms, otherwise keep at 0."
        )
        bufsize.set_digits(0)
        self.bufsize = table_add_widget_row(table, row, col,
                                            "Sound buffer size:", bufsize)
        row += 1

        vbox = Gtk.VBox()
        self.sync = Gtk.CheckButton("Emulation speed synched to sound output")
        self.sync.set_tooltip_text(
            "Constantly adjust emulation screen update rate to match sound output. Can help if you suffer from sound buffer under/overflow."
        )
        vbox.add(self.sync)

        self.mic = Gtk.CheckButton("Enable (Falcon) microphone")
        vbox.add(self.mic)

        col = 1
        table_add_widget_row(table, row, col, None, vbox, fullspan)
        row += 1

        table.show_all()
Пример #11
0
 def __init__(self, parent):
     chooser = gtk.FileChooserButton('Select a File')
     chooser.set_local_only(True)  # Hatari cannot access URIs
     chooser.set_width_chars(12)
     table, self.dialog = create_table_dialog(parent, "Load to memory", 2, 2)
     self.file = table_add_widget_row(table, 0, "File name:", chooser)
     self.address = table_add_entry_row(table, 1, "Load address:", 6)
     self.address.connect("activate", dialog_apply_cb, self.dialog)
Пример #12
0
 def __init__(self, parent):
     chooser = gtk.FileChooserButton('Select a File')
     chooser.set_local_only(True)  # Hatari cannot access URIs
     chooser.set_width_chars(12)
     table, self.dialog = create_table_dialog(parent, "Load to memory", 2, 2)
     self.file = table_add_widget_row(table, 0, "File name:", chooser)
     self.address = table_add_entry_row(table, 1, "Load address:", 6)
     self.address.connect("activate", dialog_apply_cb, self.dialog)
Пример #13
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent, "Floppy images", 4, 2)
        factory = FselAndEjectFactory()

        row = 0
        self.floppy = []
        path = config.get_floppydir()
        for drive in ("A", "B"):
            label = "Disk %c image:" % drive
            fname = config.get_floppy(row)
            fsel, box = factory.get(label, path, fname, gtk.FILE_CHOOSER_ACTION_OPEN)
            table_add_widget_row(table, row, label, box)
            self.floppy.append(fsel)
            row += 1

        protect = gtk.combo_box_new_text()
        for text in config.get_protection_types():
            protect.append_text(text)
        protect.set_active(config.get_floppy_protection())
        protect.set_tooltip_text("Write protect floppy image contents")
        table_add_widget_row(table, row, "Write protection:", protect)
        row += 1

        ds = gtk.CheckButton("Double sided drives")
        ds.set_active(config.get_doublesided())
        ds.set_tooltip_text("Whether drives are double or single sided. Can affect behavior of some games")
        table_add_widget_row(table, row, None, ds)
        row += 1
        
        driveb = gtk.CheckButton("Drive B connected")
        driveb.set_active(config.get_floppy_drives()[1])
        driveb.set_tooltip_text("Wheter drive B is connected. Can affect behavior of some demos & games")
        table_add_widget_row(table, row, None, driveb)
        row += 1

        fastfdc = gtk.CheckButton("Fast floppy access")
        fastfdc.set_active(config.get_fastfdc())
        fastfdc.set_tooltip_text("Can cause incompatibilities with some games/demos")
        table_add_widget_row(table, row, None, fastfdc)

        table.show_all()

        self.protect = protect
        self.fastfdc = fastfdc
        self.driveb = driveb
        self.ds = ds
Пример #14
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent, "Hard disks", 4,
                                                 4, "Set and reboot")
        factory = FselAndEjectFactory()

        row = 0
        label = "ASCI HD image:"
        path = config.get_acsi_image()
        fsel, box = factory.get(label, None, path,
                                gtk.FILE_CHOOSER_ACTION_OPEN)
        table_add_widget_row(table, row, label, box, True)
        self.acsi = fsel
        row += 1

        label = "IDE HD master image:"
        path = config.get_idemaster_image()
        fsel, box = factory.get(label, None, path,
                                gtk.FILE_CHOOSER_ACTION_OPEN)
        table_add_widget_row(table, row, label, box, True)
        self.idemaster = fsel
        row += 1

        label = "IDE HD slave image:"
        path = config.get_ideslave_image()
        fsel, box = factory.get(label, None, path,
                                gtk.FILE_CHOOSER_ACTION_OPEN)
        table_add_widget_row(table, row, label, box, True)
        self.ideslave = fsel
        row += 1

        label = "GEMDOS drive directory:"
        path = config.get_gemdos_dir()
        fsel, box = factory.get(label, None, path,
                                gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
        table_add_widget_row(table, row, label, box, True)
        self.gemdos = fsel
        row += 1

        protect = gtk.combo_box_new_text()
        for text in config.get_protection_types():
            protect.append_text(text)
        protect.set_tooltip_text("Write protect GEMDOS drive contents")
        table_add_widget_row(table, row, "Write protection:", protect)
        self.protect = protect

        table.show_all()
Пример #15
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent, "Hard disks", 4, 4, "Set and reboot")
        factory = FselAndEjectFactory()

        row = 0
        label = "ASCI HD image:"
        path = config.get_acsi_image()
        fsel, box = factory.get(label, None, path, gtk.FILE_CHOOSER_ACTION_OPEN)
        table_add_widget_row(table, row, label, box, True)
        self.acsi = fsel
        row += 1

        label = "IDE HD master image:"
        path = config.get_idemaster_image()
        fsel, box = factory.get(label, None, path, gtk.FILE_CHOOSER_ACTION_OPEN)
        table_add_widget_row(table, row, label, box, True)
        self.idemaster = fsel
        row += 1

        label = "IDE HD slave image:"
        path = config.get_ideslave_image()
        fsel, box = factory.get(label, None, path, gtk.FILE_CHOOSER_ACTION_OPEN)
        table_add_widget_row(table, row, label, box, True)
        self.ideslave = fsel
        row += 1
        
        label = "GEMDOS drive directory:"
        path = config.get_gemdos_dir()
        fsel, box = factory.get(label, None, path, gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
        table_add_widget_row(table, row, label, box, True)
        self.gemdos = fsel
        row += 1

        protect = gtk.combo_box_new_text()
        for text in config.get_protection_types():
            protect.append_text(text)
        protect.set_tooltip_text("Write protect GEMDOS drive contents")
        table_add_widget_row(table, row, "Write protection:", protect)
        self.protect = protect

        table.show_all()
Пример #16
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent, "Floppy images", 4, 2)
        factory = FselAndEjectFactory()

        row = 0
        self.floppy = []
        path = config.get_floppydir()
        for drive in ("A", "B"):
            label = "Disk %c:" % drive
            fname = config.get_floppy(row)
            fsel, box = factory.get(label, path, fname, gtk.FILE_CHOOSER_ACTION_OPEN)
            table_add_widget_row(table, row, label, box)
            self.floppy.append(fsel)
            row += 1

        protect = gtk.combo_box_new_text()
        for text in config.get_protection_types():
            protect.append_text(text)
        protect.set_active(config.get_floppy_protection())
        protect.set_tooltip_text("Write protect floppy image contents")
        table_add_widget_row(table, row, "Write protection:", protect)

        row += 1
        fastfdc = gtk.CheckButton("Fast floppy access")
        fastfdc.set_active(config.get_fastfdc())
        fastfdc.set_tooltip_text("Can cause incompatibilities with some games/demos")
        table_add_widget_row(table, row, None, fastfdc)

        table.show_all()

        self.protect = protect
        self.fastfdc = fastfdc
Пример #17
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent, "Floppy images",
                                                 4, 2)
        factory = FselAndEjectFactory()

        row = 0
        self.floppy = []
        path = config.get_floppydir()
        for drive in ("A", "B"):
            label = "Disk %c:" % drive
            fname = config.get_floppy(row)
            fsel, box = factory.get(label, path, fname,
                                    gtk.FILE_CHOOSER_ACTION_OPEN)
            table_add_widget_row(table, row, label, box)
            self.floppy.append(fsel)
            row += 1

        protect = gtk.combo_box_new_text()
        for text in config.get_protection_types():
            protect.append_text(text)
        protect.set_active(config.get_floppy_protection())
        protect.set_tooltip_text("Write protect floppy image contents")
        table_add_widget_row(table, row, "Write protection:", protect)

        row += 1
        slowfdc = gtk.CheckButton("Slow floppy access")
        slowfdc.set_active(config.get_slowfdc())
        slowfdc.set_tooltip_text("May be required by some rare game/demo")
        table_add_widget_row(table, row, None, slowfdc)

        table.show_all()

        self.protect = protect
        self.slowfdc = slowfdc
Пример #18
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent, "Joystick settings", 9, 2)
        
        joy = 0
        self.joy = []
        joytypes = config.get_joystick_types()
        for label in config.get_joystick_names():
            combo = gtk.combo_box_new_text()
            for text in joytypes:
                combo.append_text(text)
            combo.set_active(config.get_joystick(joy))
            widget = table_add_widget_row(table, joy, "%s:" % label, combo)
            self.joy.append(widget)
            joy += 1

        table.show_all()
Пример #19
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent, "Joystick settings", 9, 2)
        
        joy = 0
        self.joy = []
        joytypes = config.get_joystick_types()
        for label in config.get_joystick_names():
            combo = gtk.combo_box_new_text()
            for text in joytypes:
                combo.append_text(text)
            combo.set_active(config.get_joystick(joy))
            widget = table_add_widget_row(table, joy, "%s:" % label, combo)
            self.joy.append(widget)
            joy += 1

        table.show_all()
Пример #20
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent, "Floppy images",
                                                 4, 2)

        row = 0
        self.floppy = []
        path = config.get_floppydir()
        for drive in ("A", "B"):
            label = "Disk %c:" % drive
            fsel = gtk.FileChooserButton(label)
            # Hatari cannot access URIs
            fsel.set_local_only(True)
            fsel.set_width_chars(12)
            filename = config.get_floppy(row)
            if filename:
                fsel.set_filename(filename)
            elif path:
                fsel.set_current_folder(path)
            self.floppy.append(fsel)

            eject = create_button("Eject", self._eject, fsel)
            box = gtk.HBox()
            box.pack_start(fsel)
            box.pack_start(eject, False, False)
            table_add_widget_row(table, row, label, box)
            row += 1

        tips = gtk.Tooltips()

        protect = gtk.combo_box_new_text()
        for text in config.get_protection_types():
            protect.append_text(text)
        protect.set_active(config.get_floppy_protection())
        tips.set_tip(protect, "Write protect floppy image contents")
        table_add_widget_row(table, row, "Write protection:", protect)

        row += 1
        slowfdc = gtk.CheckButton("Slow floppy access")
        slowfdc.set_active(config.get_slowfdc())
        tips.set_tip(slowfdc, "May be required by some rare game/demo")
        table_add_widget_row(table, row, None, slowfdc)

        table.show_all()

        self.protect = protect
        self.slowfdc = slowfdc
Пример #21
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent, "Hard disks", 4,
                                                 2, "Set and reboot")
        factory = FselAndEjectFactory()

        row = 0
        label = "ASCI HD image:"
        path = config.get_acsi_image()
        fsel, box = factory.get(label, None, path, Gtk.FileChooserAction.OPEN)
        table_add_widget_row(table, row, 0, label, box, True)
        self.acsi = fsel
        row += 1

        label = "IDE HD master image:"
        path = config.get_idemaster_image()
        fsel, box = factory.get(label, None, path, Gtk.FileChooserAction.OPEN)
        table_add_widget_row(table, row, 0, label, box, True)
        self.idemaster = fsel
        row += 1

        label = "IDE HD slave image:"
        path = config.get_ideslave_image()
        fsel, box = factory.get(label, None, path, Gtk.FileChooserAction.OPEN)
        table_add_widget_row(table, row, 0, label, box, True)
        self.ideslave = fsel
        row += 1

        table_add_widget_row(table, row, 0, " ", Gtk.HSeparator(), True)
        row += 1

        label = "GEMDOS drive directory:"
        path = config.get_hd_dir()
        fsel, box = factory.get(label, None, path,
                                Gtk.FileChooserAction.SELECT_FOLDER)
        table_add_widget_row(table, row, 0, label, box, True)
        self.hddir = fsel
        row += 1

        hddrive = table_add_combo_row(table, row, 0, "GEMDOS HD drive:",
                                      config.get_hd_drives())
        hddrive.set_tooltip_text(
            "Whether GEMDOS HD emulation uses fixed drive letter, or first free drive letter after ASCI & IDE drives (detection unreliable)"
        )
        self.hddrive = hddrive
        row += 1

        protect = table_add_combo_row(table, row, 0, "Write protection:",
                                      config.get_protection_types())
        protect.set_tooltip_text(
            "Whether/how to write protect (GEMDOS HD) emulation files, 'auto' means using host files' own properties"
        )
        self.protect = protect
        row += 1

        lower = table_add_combo_row(table, row, 0, "File names:",
                                    config.get_hd_cases())
        lower.set_tooltip_text(
            "What to do with names of files created by Atari programs through GEMDOS HD emulation"
        )
        self.lower = lower

        table.show_all()
Пример #22
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent,
                                                 "Display settings", 9, 2)

        row = 0
        col = 0
        self.skip = table_add_combo_row(table, row, col, "Frameskip:",
                                        config.get_frameskip_names())
        self.skip.set_tooltip_text(
            "Set how many frames are skipped to speed up emulation")
        row += 1

        self.slow = table_add_combo_row(table, row, col, "Slowdown:",
                                        config.get_slowdown_names())
        self.slow.set_tooltip_text(
            "VBL wait multiplier to slow down emulation. Breaks sound and large enough slowdown causes mouse clicks not to work."
        )
        row += 1

        topw, toph = config.get_desktop_size()
        maxw = Gtk.Scale.new_with_range(Gtk.Orientation.HORIZONTAL, 320, topw,
                                        8)
        maxh = Gtk.Scale.new_with_range(Gtk.Orientation.HORIZONTAL, 200, toph,
                                        8)
        maxw.set_tooltip_text("Preferred/maximum zoomed width")
        maxh.set_tooltip_text("Preferred/maximum zoomed height")
        maxw.set_digits(0)
        maxh.set_digits(0)

        self.maxw = table_add_widget_row(table, row, col, "Max zoom width:",
                                         maxw)
        row += 1
        self.maxh = table_add_widget_row(table, row, col, "Max zoom height:",
                                         maxh)
        row += 1

        vbox = Gtk.VBox()
        force_max = Gtk.CheckButton("Force max resolution (Falcon)")
        force_max.set_tooltip_text(
            "Force maximum resolution to help recording videos of demos which do resolution changes"
        )
        self.force_max = force_max
        vbox.add(force_max)

        desktop = Gtk.CheckButton("Keep desktop resolution (scales)")
        desktop.set_tooltip_text(
            "Keep screen resolution in fullscreen. Avoids potential monitor res switch delay & resulting sound skips"
        )
        self.desktop = desktop
        vbox.add(desktop)

        borders = Gtk.CheckButton("Atari screen borders")
        borders.set_tooltip_text(
            "Show overscan borders in ST/STE low/mid-rez and in Falcon color resolutions. Visible border area is affected by max zoom size"
        )
        self.borders = borders
        vbox.add(borders)

        led = Gtk.CheckButton("Show overlay led")
        led.set_tooltip_text(
            "Show overlay drive led when statusbar is not visible")
        self.led = led
        vbox.add(led)

        statusbar = Gtk.CheckButton("Show statusbar")
        statusbar.set_tooltip_text(
            "Show statusbar with TOS and machine info, disk leds etc")
        self.statusbar = statusbar
        vbox.add(statusbar)

        crop = Gtk.CheckButton("Remove statusbar from screen capture")
        crop.set_tooltip_text(
            "Crop statusbar from screenshots and video recordings")
        self.crop = crop
        vbox.add(crop)

        table_add_widget_row(table, row, col, None, vbox)
        table.show_all()
Пример #23
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent, "Hard disks", 4, 4, "Set and reboot")
        factory = FselAndEjectFactory()

        row = 0
        label = "ASCI HD image:"
        path = config.get_acsi_image()
        fsel, box = factory.get(label, None, path, gtk.FILE_CHOOSER_ACTION_OPEN)
        table_add_widget_row(table, row, label, box, True)
        self.acsi = fsel
        row += 1

        label = "IDE HD master image:"
        path = config.get_idemaster_image()
        fsel, box = factory.get(label, None, path, gtk.FILE_CHOOSER_ACTION_OPEN)
        table_add_widget_row(table, row, label, box, True)
        self.idemaster = fsel
        row += 1

        label = "IDE HD slave image:"
        path = config.get_ideslave_image()
        fsel, box = factory.get(label, None, path, gtk.FILE_CHOOSER_ACTION_OPEN)
        table_add_widget_row(table, row, label, box, True)
        self.ideslave = fsel
        row += 1
        
        label = "GEMDOS drive directory:"
        path = config.get_gemdos_dir()
        fsel, box = factory.get(label, None, path, gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
        table_add_widget_row(table, row, label, box, True)
        self.gemdos = fsel
        row += 1

        protect = gtk.combo_box_new_text()
        for text in config.get_protection_types():
            protect.append_text(text)
        protect.set_tooltip_text("Whether/how to write protect (GEMDOS HD) emulation files, 'auto' means using host files' own properties")
        table_add_widget_row(table, row, "Write protection:", protect)
        self.protect = protect
        row += 1
        
        lower = gtk.combo_box_new_text()
        for text in config.get_hd_cases():
            lower.append_text(text)
        lower.set_tooltip_text("What to do with names of files created by Atari programs through GEMDOS HD emulation")
        table_add_widget_row(table, row, "File names:", lower)
        self.lower = lower

        table.show_all()
Пример #24
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent,
                                                 "Machine configuration", 6, 2,
                                                 "Set and reboot")

        # option for non-combos
        fullspan = True
        col = 0
        row = 0
        types = config.get_machine_types()
        self.machine = table_add_combo_row(table, row, col, "Machine:", types,
                                           self._machine_cb, types)
        row += 1

        vbox1 = Gtk.VBox()
        self.blitter = Gtk.CheckButton("Blitter (ST only)")
        self.blitter.set_tooltip_text(
            "Whether to emulate add-on Blitter chip for ST")
        self.timerd = Gtk.CheckButton("Patch Timer-D")
        self.timerd.set_tooltip_text(
            "Improves ST/STE emulation performance, but some rare demos/games do not work with this"
        )
        vbox1.add(self.blitter)
        vbox1.add(self.timerd)
        table_add_widget_row(table, row, col, "Misc:", vbox1, fullspan)
        row += 1

        self.cpulevel = table_add_combo_row(table, row, col, "CPU type:",
                                            config.get_cpulevel_types())
        row += 1

        vbox2 = Gtk.VBox()
        self.compatible = Gtk.CheckButton("Prefetch emulation")
        self.compatible.set_tooltip_text(
            "Needed for overscan and other timing sensitive things to work correctly. Uses more host CPU"
        )
        self.exact = Gtk.CheckButton("Cycle exact with cache emulation")
        self.exact.set_tooltip_text(
            "Cycle exactness increases emulation accuracy and 680x0 cache emulation increases emulated code performance, but requires significantly more host CPU"
        )
        self.mmu = Gtk.CheckButton("MMU emulation")
        vbox2.add(self.compatible)
        vbox2.add(self.exact)
        vbox2.add(self.mmu)
        table_add_widget_row(table, row, col, None, vbox2, fullspan)
        row += 1

        self.clocks = table_add_combo_row(table, row, col, "CPU clock:",
                                          config.get_cpuclock_types())
        row += 1

        self.fpu = table_add_combo_row(table, row, col, "FPU type:",
                                       config.get_fpu_types())
        row += 1

        self.softfp = Gtk.CheckButton("Accurate FPU emulation")
        self.softfp.set_tooltip_text(
            "Emulate FPU in software instead of using host FPU.  Uses more host CPU"
        )
        table_add_widget_row(table, row, col, None, self.softfp, fullspan)
        row += 1

        self.dsp = table_add_combo_row(table, row, col, "DSP type:",
                                       config.get_dsp_types())
        self.dsp.set_tooltip_text(
            "Disable DSP to improve Hatari performance significantly for Falcon programs that work (also) without it.  Some programs using DSP unconditionally, may work with dummy mode (and just lack e.g. sound)."
        )
        row += 1

        self.monitors = table_add_combo_row(table, row, col, "Monitor:",
                                            config.get_monitor_types())
        row += 1

        self.memory = table_add_combo_row(table, row, col, "Memory:",
                                          config.get_memory_names())
        row += 1

        # use next table column
        col = 2

        ttram = Gtk.Scale.new_with_range(Gtk.Orientation.HORIZONTAL, 0, 1024,
                                         4)
        ttram.set_digits(0)
        ttram.set_tooltip_text(
            "TT-RAM needs Falcon/TT and requires 32-bit addressing.  0 = disabled, 24-bit addressing."
        )
        self.ttram = table_add_widget_row(table, row, col, "TT-RAM:", ttram,
                                          fullspan)
        row += 1

        label = "TOS image:"
        fsel = self._fsel(label, Gtk.FileChooserAction.OPEN)
        self.tos = table_add_widget_row(table, row, col, label, fsel, fullspan)
        row += 1

        table.show_all()
Пример #25
0
    def _create_dialog(self, config):
        table, self.dialog = create_table_dialog(self.parent,
                                                 "Machine configuration", 6, 4,
                                                 "Set and reboot")

        col = 0
        row = 0
        self.machines = table_add_radio_rows(table, row, col, "Machine:",
                                             config.get_machine_types(),
                                             self._machine_cb)
        row += 1

        self.dsps = table_add_radio_rows(table, row, col, "DSP type:",
                                         config.get_dsp_types())
        row += 1

        # start next table column
        col = 2
        row = 0
        self.monitors = table_add_radio_rows(table, row, col, "Monitor:",
                                             config.get_monitor_types())
        row += 1

        self.clocks = table_add_radio_rows(table, row, col, "CPU clock:",
                                           config.get_cpuclock_types())
        row += 1

        # fullspan at bottom
        fullspan = True

        combo = Gtk.ComboBoxText()
        for text in config.get_cpulevel_types():
            combo.append_text(text)
        self.cpulevel = table_add_widget_row(table, row, col, "CPU type:",
                                             combo, fullspan)
        row += 1

        combo = Gtk.ComboBoxText()
        for text in config.get_memory_names():
            combo.append_text(text)
        self.memory = table_add_widget_row(table, row, col, "Memory:", combo,
                                           fullspan)
        row += 1

        ttram = Gtk.Scale.new_with_range(Gtk.Orientation.HORIZONTAL, 0, 512, 4)
        ttram.set_digits(0)
        ttram.set_tooltip_text(
            "TT-RAM needs Falcon/TT with WinUAE CPU core and implies 32-bit addressing.  0 = disabled, 24-bit addressing."
        )
        self.ttram = table_add_widget_row(table, row, col, "TT-RAM", ttram,
                                          fullspan)
        row += 1

        label = "TOS image:"
        fsel = self._fsel(label, Gtk.FileChooserAction.OPEN)
        self.tos = table_add_widget_row(table, row, col, label, fsel, fullspan)
        row += 1

        vbox = Gtk.VBox()
        self.compatible = Gtk.CheckButton("Compatible CPU")
        self.timerd = Gtk.CheckButton("Patch Timer-D")
        self.compatible.set_tooltip_text(
            "Needed for overscan and other timing sensitive things to work correctly"
        )
        self.timerd.set_tooltip_text(
            "Improves ST/STE emulation performance, but some rare demos/games don't work with this"
        )
        vbox.add(self.compatible)
        vbox.add(self.timerd)
        table_add_widget_row(table, row, col, "Misc.:", vbox, fullspan)
        row += 1

        table.show_all()