def __init__(self): fsui.LegacyDialog.__init__(self, None, "Create/Join Game") self.layout = fsui.VerticalLayout() self.layout.add_spacer(20) hor_layout = fsui.HorizontalLayout() self.layout.add(hor_layout, fill=True) hor_layout.add_spacer(20) self.text = fsui.TextField(self) self.text.activated.connect(self.on_ok_button) hor_layout.add(self.text, expand=True) hor_layout.add_spacer(20) self.layout.add_spacer(20) hor_layout = fsui.HorizontalLayout() self.layout.add(hor_layout, fill=True) hor_layout.add_spacer(20, expand=True) self.cancel_button = fsui.Button(self, " Cancel ") self.cancel_button.activated.connect(self.on_cancel_button) hor_layout.add(self.cancel_button) hor_layout.add_spacer(10) self.ok_button = fsui.Button(self, " Create/Join ") self.ok_button.activated.connect(self.on_ok_button) hor_layout.add(self.ok_button) hor_layout.add_spacer(20) self.layout.add_spacer(20) self.set_size(self.layout.get_min_size()) self.text.focus()
def __init__(self, parent): fsui.LegacyDialog.__init__(self, parent, "Choose Game") self.info = {} self.layout = fsui.VerticalLayout(padding=20) self.text = fsui.TextField(self) self.text.on_changed = self.on_text self.layout.add(self.text, fill=True) self.layout.add_spacer(20) self.view = GameListView(self) self.view.set_game_info = self.set_game_info self.view.set_min_width(600) self.view.set_min_height(300) self.layout.add(self.view, expand=True, fill=True) self.layout.add_spacer(20) self.link_field = fsui.TextField(self) self.layout.add(self.link_field, fill=True) self.layout.add_spacer(20) hlayout = fsui.HorizontalLayout() self.layout.add(hlayout, fill=True) hlayout.add_spacer(0, expand=True) self.cancel_button = fsui.Button(self, gettext("Cancel")) self.cancel_button.activated.connect(self.on_cancel_button) hlayout.add(self.cancel_button) hlayout.add_spacer(10) self.ok_button = fsui.Button(self, gettext("OK")) self.ok_button.activated.connect(self.on_ok_button) hlayout.add(self.ok_button) self.text.focus() self.set_size(self.layout.get_min_size()) self.center_on_parent()
def __init__(self, parent, fsgs): fsui.LegacyDialog.__init__(self, parent, gettext("Terms of Download")) self.fsgs = fsgs self.download_file = fsgs.config.get("download_file") self.download_terms = fsgs.config.get("download_terms") self.task = None self.layout = fsui.VerticalLayout() self.layout.set_padding(20, 20, 20, 20) self.icon_header = IconHeader( self, fsui.Icon("web-browser", "pkg:workspace"), gettext("Terms of Download"), gettext( "This game can be automatically downloaded if you " "accept the terms" ), ) self.layout.add(self.icon_header, fill=True, margin_bottom=20) self.label = fsui.MultiLineLabel(self, gettext("Loading...")) self.label.set_min_width(600) self.label.set_min_height(100) self.layout.add(self.label) hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True, margin_top=20) hori_layout.add_spacer(0, expand=True) self.reject_button = fsui.Button(self, gettext("Reject")) self.reject_button.activated.connect(self.on_reject_button) hori_layout.add(self.reject_button, margin_left=10) self.accept_button = fsui.Button(self, gettext("Accept")) self.accept_button.activated.connect(self.on_accept_button) hori_layout.add(self.accept_button, margin_left=10) self.accept_button.disable() self.reject_button.disable() self.task = DownloadTermsTask(self.download_terms) # self.task.progressed.connect(self.on_progress) self.task.failed.connect(self.on_failure) self.task.succeeded.connect(self.on_success) self.task.start() self.set_size(self.layout.get_min_size()) self.center_on_parent()
def __init__(self, parent, path, import_type): if import_type == self.AMIGA_FOREVER: title = gettext("Import From Amiga Forever CD/DVD") else: title = gettext("Import Kickstarts and ROMs") super().__init__(parent, title, maximizable=False) self.layout = fsui.VerticalLayout() self.layout.padding_left = 20 self.layout.padding_top = 20 self.layout.padding_right = 20 self.layout.padding_bottom = 20 self.text_area = fsui.TextArea(self, read_only=True) self.text_area.set_min_width(600) self.text_area.set_min_height(300) self.layout.add(self.text_area) hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True, margin_top=20) hori_layout.add_spacer(0, expand=True) self.close_button = fsui.Button(self, gettext("Close")) self.close_button.activated.connect(self.on_close_button) self.close_button.disable() hori_layout.add(self.close_button) self.line_count = 0 self.task = ImportTask(path, import_type) self.task.start() self.set_size(self.layout.get_min_size()) self.center_on_parent() fsui.call_later(TIMER_INTERVAL, self.on_timer)
def __init__(self, parent, task): fsui.Window.__init__( self, parent, task.get_task_name()) self.set_icon(fsui.Icon("tools", "pkg:workspace")) self.layout = fsui.VerticalLayout() self.layout.min_width = 500 self.layout.set_padding(20, 20, 20, 20) self.icon_header = IconHeader( self, fsui.Icon("tools", "pkg:workspace"), task.get_task_name(), "") self.layout.add(self.icon_header, fill=True, margin_bottom=20) hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True) self.created_label = fsui.Label(self, "") hori_layout.add(self.created_label, expand=True) hori_layout.add_spacer(20) self.abort_button = fsui.Button(self, gettext("Stop")) self.abort_button.activated.connect(self.on_abort_activated) hori_layout.add(self.abort_button) self.set_size(self.layout.get_min_size()) self.center_on_parent() self.task = task self.task.progressed.connect(self.on_progress) self.task.failed.connect(self.on_failure) self.task.succeeded.connect(self.close) self.task.stopped.connect(self.close) self.task.start()
def __init__(self, parent): super().__init__(parent) icon = fsui.Icon("fs-uae-launcher", "pkg:launcher") self.add_header(icon, "{} Launcher".format(fsgs.product)) if fsboot.get("fws") == "1": # We omit the appearance settings, since they have no effect # when running under the workspace environment. pass else: self.add_option(Option.LAUNCHER_THEME) self.add_option(Option.LAUNCHER_FONT_SIZE) self.add_option(Option.LAUNCHER_CLOSE_BUTTONS) self.add_section(gettext("Experimental Features")) # Netplay feature is now enabled by default # self.add_option(Option.NETPLAY_FEATURE) if not openretro: self.add_option(Option.PLATFORMS_FEATURE) # self.add_option(Option.LAUNCHER_CONFIG_FEATURE) # self.add_option(Option.LAUNCHER_SETUP_WIZARD_FEATURE) self.add_section(gettext("Maintenance")) label = fsui.MultiLineLabel( self, gettext( "Defragmenting the databases will improve performance " "by ensuring that tables and indices are stored contiguously " "on disk. It will also reclaim some storage space."), 640) self.layout.add(label, fill=True, margin_top=20) button = fsui.Button(self, gettext("Defragment Databases")) button.activated.connect(self.on_defragment_button) self.layout.add(button, margin_top=20)
def __init__(self, parent=None): print("RefreshWindow parent =", parent) title = gettext("Updating Database") super().__init__(parent, title, maximizable=False) self.set_icon(fsui.Icon("refresh", "pkg:workspace")) self.layout = fsui.VerticalLayout() self.layout.min_width = 500 self.layout.set_padding(20, 20, 20, 20) self.icon_header = IconHeader(self, fsui.Icon("refresh", "pkg:workspace"), gettext("Updating Database"), "") self.layout.add(self.icon_header, fill=True, margin_bottom=20) hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True) self.created_label = fsui.Label(self, "") hori_layout.add(self.created_label, expand=True) hori_layout.add_spacer(20) self.stop_button = fsui.Button(self, gettext("Stop")) self.stop_button.activated.connect(self.on_abort_activated) hori_layout.add(self.stop_button) self.set_size(self.layout.get_min_size()) self.center_on_parent() self.task = DatabaseRefreshTask() self.task.progressed.connect(self.on_progress) self.task.failed.connect(self.on_failure) self.task.succeeded.connect(self.close) self.task.stopped.connect(self.close) self.task.start()
def __init__(self, parent=None): title = gettext("Log Out from Your OAGD.net Account") super().__init__(parent, title, minimizable=False, maximizable=False) self.set_icon(fsui.Icon("password", "pkg:workspace")) self.layout = fsui.VerticalLayout() self.layout.set_padding(20, 20, 20, 20) heading_layout = fsui.HorizontalLayout() self.layout.add(heading_layout) heading_layout.add(fsui.ImageView( self, fsui.Image("workspace:res/48/password.png"))) heading_layout.add_spacer(20) heading_layout_2 = fsui.VerticalLayout() heading_layout.add( heading_layout_2, expand=True, fill=False, valign=0.5) heading_layout_2.add(fsui.HeadingLabel( self, gettext("Log Out from Your OAGD.net Account"))) heading_layout_2.add_spacer(2) heading_layout_2.add(fsui.Label( self, gettext("While logged out you will not get " "database updates"))) self.layout.add_spacer(20) hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True) self.created_label = fsui.Label(self, "") hori_layout.add(self.created_label, expand=True) hori_layout.add_spacer(20) self.logout_button = fsui.Button(self, gettext("Log Out")) # self.logout_button.disable() self.logout_button.activated.connect(self.on_logout_activated) hori_layout.add(self.logout_button)
def __init__(self, parent, import_type=0): fsui.Group.__init__(self, parent) self.type = import_type self.path = "" self.layout = fsui.VerticalLayout() if self.type == self.AMIGA_FOREVER: title = gettext("Import From Amiga Forever CD/DVD") else: title = gettext("Import Kickstarts and ROMs") label = fsui.HeadingLabel(self, title) self.layout.add(label, margin_bottom=10) icon_layout = fsui.HorizontalLayout() self.layout.add(icon_layout, fill=True) icon_layout.add_spacer(20) if self.type == self.AMIGA_FOREVER: image = fsui.Image("launcher:/data/amiga_forever_group.png") else: image = fsui.Image("launcher:/data/kickstart.png") self.image_view = fsui.ImageView(self, image) icon_layout.add(self.image_view, valign=0.0, margin_right=10) vert_layout = fsui.VerticalLayout() icon_layout.add(vert_layout, fill=True, expand=True) if self.type == self.AMIGA_FOREVER: text = gettext("If you own Amiga Forever, select the drive/folder " 'and click "{0}"').format(gettext("Import")) else: text = gettext("Select a folder containing Amiga kickstart files " 'and click "{0}"').format(gettext("Import")) label = fsui.Label(self, text) vert_layout.add(label, margin_bottom=10) hori_layout = fsui.HorizontalLayout() vert_layout.add(hori_layout, fill=True, margin=0) self.text_field = fsui.TextField(self, "", read_only=True) hori_layout.add(self.text_field, expand=True) self.browse_button = fsui.Button(self, gettext("Browse")) self.browse_button.activated.connect(self.on_browse) hori_layout.add(self.browse_button, margin_left=10) self.import_button = fsui.Button(self, gettext("Import")) self.import_button.activated.connect(self.on_import) self.import_button.set_enabled(False) hori_layout.add(self.import_button, margin_left=10)
def test_button(self): self.setup_dialog() button = fsui.Button(self.dialog) button.disable() button.enable() button.enable(False) button.enable(True) self.run_dialog()
def __init__(self, parent): fsui.Group.__init__(self, parent) self.layout = fsui.VerticalLayout() # self.layout.padding_left = 20 # self.layout.padding_right = 20 self.layout.add_spacer(20) self.label = fsui.HeadingLabel(self, "Edit Config") self.layout.add(self.label) self.layout.add_spacer(10) horlayout = fsui.HorizontalLayout() self.layout.add(horlayout, fill=True) self.game_button = fsui.Button(self, "Pick Game") self.game_button.activated.connect(self.on_game_button) horlayout.add(self.game_button, fill=True) horlayout.add_spacer(10) horlayout.add_spacer(0, expand=True) self.save_button = fsui.Button(self, "Save") self.save_button.activated.connect(self.on_save_button) horlayout.add(self.save_button, fill=True) self.layout.add_spacer(14) self.config_xml_ctrl = XMLControl(self) self.layout.add(self.config_xml_ctrl, fill=True, expand=True) self.layout.add_spacer(20) self.game_xml_ctrl = XMLControl(self) self.layout.add(self.game_xml_ctrl, fill=True, expand=True) self.layout.add_spacer(20) LauncherSettings.add_listener(self) LauncherConfig.add_listener(self)
def __init__(self, parent=None): title = gettext("OpenRetro Locker Uploader") super().__init__(parent, title) self.theme = WorkspaceTheme.instance() self.layout = fsui.VerticalLayout() self.set_icon(fsui.Icon("refresh", "pkg:workspace")) self.layout.min_width = 600 self.layout.set_padding(20, 20, 20, 20) self.icon_header = IconHeader( self, fsui.Icon("refresh", "pkg:workspace"), gettext("OpenRetro Locker Uploader"), gettext("Upload recognized Amiga files to your OpenRetro locker"), ) self.layout.add(self.icon_header, fill=True, margin_bottom=20) hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True) self.created_label = fsui.Label(self, "") hori_layout.add(self.created_label, expand=True) self.upload_button = fsui.Button(self, gettext("Upload")) self.upload_button.activated.connect(self.on_upload_activated) hori_layout.add(self.upload_button, margin_left=10) self.stop_button = fsui.Button(self, gettext("Stop")) self.stop_button.activated.connect(self.on_stop_activated) self.stop_button.disable() hori_layout.add(self.stop_button, margin_left=10) if self.window.theme.has_close_buttons: self.close_button = CloseButton(self) hori_layout.add(self.close_button, margin_left=10) else: self.close_button = None self.set_size(self.layout.get_min_size()) self.center_on_parent() self.task = None
def __init__(self, parent, title, task, *, gscontext): print("LaunchDialog parent =", parent) self.gscontext = gscontext self.has_parent = parent is not None self.no_gui = "--no-gui" in sys.argv super().__init__(parent, title, maximizable=False) self.layout = fsui.VerticalLayout() self.layout.add_spacer(400, 20) hor_layout = fsui.HorizontalLayout() self.layout.add(hor_layout, fill=True) hor_layout.padding_right = 20 hor_layout.add_spacer(20) image = fsui.Image("launcher:/data/fs_uae_group.png") self.image_view = fsui.ImageView(self, image) hor_layout.add(self.image_view, valign=0.0) hor_layout.add_spacer(20) ver_layout = fsui.VerticalLayout() hor_layout.add(ver_layout, fill=True, expand=True) self.title_label = fsui.HeadingLabel(self, title) ver_layout.add(self.title_label, fill=True) ver_layout.add_spacer(6) self.sub_title_label = fsui.Label(self, gettext("Preparing...")) ver_layout.add(self.sub_title_label, fill=True) self.layout.add_spacer(20) hor_layout = fsui.HorizontalLayout() self.layout.add(hor_layout, fill=True) hor_layout.add_spacer(20, expand=True) self.cancel_button = fsui.Button(self, gettext("Cancel")) self.cancel_button.activated.connect(self.on_cancel_button) hor_layout.add(self.cancel_button) hor_layout.add_spacer(20) self.layout.add_spacer(20) self.set_size(self.layout.get_min_size()) self.center_on_parent() self.was_closed = False self.task = task self.task.progressed.connect(self.on_progress) self.task.finished.connect(self.on_complete) self.task.failed.connect(self.on_error) self.closed.connect(self.__closed)
def __init__(self, parent): super().__init__(parent, paintable=True) self.set_min_height(40) self.set_background_color(fsui.Color(0xFF, 0xFF, 0xFF)) self.menu_button = fsui.Button(self, "=") self.minimize_button = fsui.Button(self, "_") self.minimize_button.activated.connect(self.on_minimize_button) self.maximize_button = fsui.Button(self, "^") self.maximize_button.activated.connect(self.on_maximize_button) self.close_button = fsui.Button(self, "X") self.close_button.activated.connect(self.on_close_button) self.layout = fsui.HorizontalLayout() self.layout.add(self.menu_button, fill=True) self.layout.add_spacer(0, expand=True) self.layout.add(self.minimize_button, fill=True) self.layout.add(self.maximize_button, fill=True) self.layout.add(self.close_button, fill=True) self.window_pos = (-1, -1) self.mouse_pos = (-1, -1)
def __init__(self, parent=None): title = gettext("OAGD.net Locker Uploader") super().__init__(parent, title, maximizable=False) self.set_icon(fsui.Icon("refresh", "pkg:workspace")) self.layout = fsui.VerticalLayout() self.layout.min_width = 600 self.layout.set_padding(20, 20, 20, 20) self.icon_header = IconHeader( self, fsui.Icon("refresh", "pkg:workspace"), gettext("OAGD.net Locker Uploader"), gettext("Upload recognized Amiga files to your OAGD.net locker")) self.layout.add(self.icon_header, fill=True, margin_bottom=20) hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True) self.created_label = fsui.Label(self, "") hori_layout.add(self.created_label, expand=True) self.upload_button = fsui.Button(self, gettext("Upload")) self.upload_button.activated.connect(self.on_upload_activated) hori_layout.add(self.upload_button, margin_left=10) self.stop_button = fsui.Button(self, gettext("Stop")) self.stop_button.activated.connect(self.on_stop_activated) self.stop_button.disable() hori_layout.add(self.stop_button, margin_left=10) # self.close_button = fsui.Button(self, gettext("Close")) # self.close_button.activated.connect(self.on_close_activated) # hori_layout.add(self.close_button, margin_left=10) self.set_size(self.layout.get_min_size()) self.center_on_parent() self.task = None
def __init__(self, parent, drives=2, cd_mode=False): fsui.Group.__init__(self, parent) self.layout = fsui.VerticalLayout() self.cd_mode = cd_mode self.num_drives = drives hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True) if cd_mode: title = gettext("CD-ROM Drive") drive_count_option = Option.CDROM_DRIVE_COUNT else: title = gettext("Floppy Drives") drive_count_option = Option.FLOPPY_DRIVE_COUNT self.label = fsui.HeadingLabel(self, title) hori_layout.add(self.label, margin=10) hori_layout.add_spacer(0, expand=True) hori_layout.add(ConfigWidgetFactory().create( self, drive_count_option, text=gettext("Drive Count")), fill=True, margin_right=20) self.multi_select_button = fsui.Button(self, gettext("Multi-Select...")) if self.cd_mode: self.multi_select_button.set_tooltip( gettext("Add Multiple CD-ROMs at Once")) else: self.multi_select_button.set_tooltip( gettext("Add Multiple Floppies at Once")) AmigaEnableBehavior(self.multi_select_button) self.multi_select_button.activated.connect(self.on_multi_select_button) hori_layout.add(self.multi_select_button, margin_right=10) self.layout.add_spacer(0) self.selectors = [] for i in range(drives): selector = FloppySelector(parent, i) if cd_mode: selector.set_cd_mode(True) self.selectors.append(selector) self.layout.add(selector, fill=True, margin=10, margin_bottom=0)
def __init__(self, parent): super().__init__(parent) icon = fsui.Icon("maintenance", "pkg:workspace") title = gettext("Maintenance") subtitle = gettext("Miscellaneous functions to optimize {name}").format( name="FS-UAE Launcher") self.add_header(icon, title, subtitle) label = fsui.MultiLineLabel(self, gettext( "Defragmenting the databases will improve performance " "by ensuring that tables and indices are stored contiguously " "on disk. It will also reclaim some storage space."), 640) self.layout.add(label, fill=True, margin_top=20) button = fsui.Button(self, gettext("Defragment Databases")) button.activated.connect(self.on_defragment_button) self.layout.add(button, margin_top=20)
def __init__(self, parent=None): title = gettext("Log Out from Your OpenRetro Account") super().__init__(parent, title, minimizable=False, maximizable=False) self.theme = WorkspaceTheme.instance() self.layout = fsui.VerticalLayout() self.set_icon(fsui.Icon("password", "pkg:workspace")) self.layout.set_padding(20, 20, 20, 20) heading_layout = fsui.HorizontalLayout() self.layout.add(heading_layout) heading_layout.add( fsui.ImageView(self, fsui.Image("workspace:/data/48/password.png"))) heading_layout.add_spacer(20) heading_layout_2 = fsui.VerticalLayout() heading_layout.add(heading_layout_2, expand=True, fill=False, valign=0.5) heading_layout_2.add( fsui.HeadingLabel(self, gettext("Log Out from Your OpenRetro Account"))) heading_layout_2.add_spacer(2) heading_layout_2.add( fsui.Label( self, gettext("While logged out you will not get " "database updates"), )) self.layout.add_spacer(20) hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True) self.created_label = fsui.Label(self, "") hori_layout.add(self.created_label, expand=True) hori_layout.add_spacer(20) self.logout_button = fsui.Button(self, gettext("Log Out")) # self.logout_button.set_enabled(False) self.logout_button.activated.connect(self.__logout_activated) hori_layout.add(self.logout_button) if self.window().theme.has_close_buttons: self.close_button = CloseButton(self) hori_layout.add(self.close_button, fill=True, margin_left=10)
def __init__(self, parent): ConfigPanel.__init__(self, parent) hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True) heading_label = fsui.HeadingLabel( self, gettext("Additional Configuration")) hori_layout.add(heading_label, margin=10) hori_layout.add_spacer(0, expand=True) self.custom_button = fsui.Button( self, gettext("Custom Configuration") + "...") self.custom_button.activated.connect(self.on_custom_button) hori_layout.add(self.custom_button, margin_right=10) self.layout.add_spacer(0) self.add_option(Option.CPU) self.add_option(Option.JIT_COMPILER) self.add_option(Option.FLOPPY_DRIVE_SPEED) self.add_option(Option.FLOPPY_DRIVE_VOLUME_EMPTY) self.add_option(Option.FREEZER_CARTRIDGE) self.add_option(Option.DONGLE_TYPE)
def test_button_with_label(self): self.setup_dialog() fsui.Button(self.dialog, "With Label") self.run_dialog()
def __init__(self, parent=None): title = gettext("HDF Disk Image Creator") super().__init__(parent, title=title) self.theme = WorkspaceTheme.instance() buttons, layout = fsui.DialogButtons.create_with_layout(self) if self.window.theme.has_close_buttons: buttons.create_close_button() self.dialog = None self.path = "" self.set_icon(fsui.Icon("hd-volume", "pkg:workspace")) layout.min_width = 500 self.icon_header = IconHeader( self, fsui.Icon("hd-volume", "pkg:workspace"), gettext("HDF Disk Image Creator"), gettext("Create a single-partition or partitionable hard " "drive image")) layout.add(self.icon_header, fill=True, margin_bottom=20) label = fsui.Label(self, gettext("Create disk image of type:")) layout.add(label) layout.add_spacer(6) self.list_view = fsui.ListView(self) self.list_view.set_min_width(560) self.list_view.set_min_height(60) icon = fsui.Image("workspace:res/16x16/hd-volume.png") self.list_view.add_item( gettext("HDF - Single Partition Hard Disk File"), icon) self.list_view.add_item( gettext("HDF - Partitionable Hard Drive Image (RDB)"), icon) layout.add(self.list_view, expand=True, fill=True) self.list_view.item_selected.connect(self.on_item_selected) layout.add_spacer(20) label = fsui.Label(self, gettext("Filename for the new disk image:")) layout.add(label) layout.add_spacer(6) hori_layout = fsui.HorizontalLayout() layout.add(hori_layout, fill=True) self.name_field = fsui.TextField( self, "", read_only=False) hori_layout.add(self.name_field, expand=True) text = gettext("Size:") label = fsui.Label(self, text) hori_layout.add(label, margin_left=20) self.size_field = fsui.TextField(self, "") self.size_field.set_min_width(60) hori_layout.add(self.size_field, expand=False, margin_left=10) text = gettext("MB") label = fsui.Label(self, text) hori_layout.add(label, margin_left=10) layout.add_spacer(20) label = fsui.Label(self, gettext("Save to directory:")) layout.add(label) layout.add_spacer(6) hori_layout = fsui.HorizontalLayout() layout.add(hori_layout, fill=True) self.dir_field = fsui.TextField(self, "", read_only=True) hori_layout.add(self.dir_field, expand=True) self.browse_button = fsui.Button(self, gettext("Browse")) self.browse_button.clicked.connect(self.on_browse_clicked) hori_layout.add(self.browse_button, margin_left=10) self.created_label = fsui.Label(self, "") layout.add(self.created_label, fill=True) # layout.add_spacer(20) # layout.add_spacer(20) # hori_layout = fsui.HorizontalLayout() # layout.add(hori_layout, fill=True) # self.created_label = fsui.Label(self, "") # hori_layout.add(self.created_label, expand=True) # hori_layout.add_spacer(20) self.create_button = fsui.Button(buttons, gettext("Create")) # self.create_button.activated.connect(self.on_create_clicked) self.create_button.clicked.connect(self.on_create_clicked) # hori_layout.add(self.create_button) buttons.add_button(self.create_button) self.list_view.select_item(0) self.update_name_suggestion()
def __init__(self, parent=None): print("LoginWindow, parent =", parent) super().__init__(parent, gettext("Log In to Your OAGD.net Account")) self.set_icon(fsui.Icon("password", "pkg:workspace")) self.theme = WorkspaceTheme.instance() self.layout = fsui.VerticalLayout() self.layout.set_padding(20, 20, 20, 20) heading_layout = fsui.HorizontalLayout() self.layout.add(heading_layout) heading_layout.add( fsui.ImageView(self, fsui.Image("workspace:res/48/password.png"))) heading_layout.add_spacer(20) heading_layout_2 = fsui.VerticalLayout() heading_layout.add(heading_layout_2, expand=True, fill=False, valign=0.5) heading_layout_2.add( fsui.HeadingLabel(self, gettext("Log In to Your OAGD.net Account"))) heading_layout_2.add_spacer(2) heading_layout_2.add( fsui.Label( self, gettext("Logging in will enable the online game database " "and more"))) self.username_field = fsui.TextField( self, app.settings["database_email"].strip()) self.password_field = fsui.PasswordField(self) if self.username_field.get_text(): self.password_field.focus() self.layout.add_spacer(20) hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True) label = fsui.Label(self, gettext("E-mail:")) label.set_min_width(100) hori_layout.add(label) hori_layout.add_spacer(20) # self.username_field.select_all() self.username_field.changed.connect(self.on_text_field_changed) self.username_field.activated.connect(self.on_username_activated) hori_layout.add(self.username_field, expand=True) self.layout.add_spacer(10) hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True) label = fsui.Label(self, gettext("Password:"******"Don't have an account already?")) hori_layout.add(label) hori_layout.add_spacer(20) label = fsui.URLLabel( self, gettext("Create an account now"), "https://oagd.net/user/register?referrer=fs-uae-launcher") hori_layout.add(label, expand=True) self.layout.add_spacer(6) hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True) label = fsui.Label(self, gettext("Forgot your password?")) hori_layout.add(label) hori_layout.add_spacer(20) self.reset_label = fsui.URLLabel( self, gettext("Reset password via e-mail"), "https://oagd.net/user/reset?referrer=fs-uae-launcher") hori_layout.add(self.reset_label, expand=True) self.layout.add_spacer(20) hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True) self.created_label = fsui.Label(self, "") hori_layout.add(self.created_label, expand=True) hori_layout.add_spacer(20) self.login_button = fsui.Button(self, gettext("Log In")) self.login_button.disable() self.login_button.activated.connect(self.on_login_activated) hori_layout.add(self.login_button) if self.window.theme.has_close_buttons: self.close_button = CloseButton(self) hori_layout.add(self.close_button, fill=True, margin_left=10) self.set_size(self.layout.get_min_size()) self.center_on_parent() if len(self.username_field.text()) == 0: self.username_field.focus() else: self.password_field.focus()
def __init__(self, parent=None): title = gettext("ADF Disk Image Creator") super().__init__(parent, title=title, maximizable=False) buttons, layout = fsui.DialogButtons.create_with_layout(self) # buttons.create_close_button() self.dialog = None self.path = "" self.set_icon(fsui.Icon("floppy", "pkg:workspace")) layout.min_width = 500 self.icon_header = IconHeader( self, fsui.Icon("floppy", "pkg:workspace"), gettext("ADF Disk Image Creator"), gettext("Create a blank or formatted ADF floppy disk image")) layout.add(self.icon_header, fill=True, margin_bottom=20) label = fsui.Label(self, gettext("Create disk image of type:")) layout.add(label) layout.add_spacer(6) self.list_view = fsui.ListView(self) self.list_view.set_min_width(560) self.list_view.set_min_height(60) icon = fsui.Image("workspace:res/16/floppy.png") self.list_view.add_item(gettext("ADF - Standard Floppy Disk Image"), icon) self.list_view.add_item( gettext("ADF - Extended Floppy Disk Image (MFM Encoded)"), icon) layout.add(self.list_view, expand=True, fill=True) # self.list_view.on_select_item = self.on_select_item self.list_view.item_selected.connect(self.on_item_selected) layout.add_spacer(20) label = fsui.Label(self, gettext("Filename for the new disk image:")) layout.add(label) layout.add_spacer(6) hori_layout = fsui.HorizontalLayout() layout.add(hori_layout, fill=True) self.name_field = fsui.TextField(self, "", read_only=False) hori_layout.add(self.name_field, expand=True) text = gettext("Size:") label = fsui.Label(self, text) hori_layout.add(label, margin_left=20) self.size_field = fsui.TextField(self, "") self.size_field.set_min_width(60) hori_layout.add(self.size_field, expand=False, margin_left=10) text = gettext("MB") label = fsui.Label(self, text) hori_layout.add(label, margin_left=10) layout.add_spacer(20) label = fsui.Label(self, gettext("Save to directory:")) layout.add(label) layout.add_spacer(6) hori_layout = fsui.HorizontalLayout() layout.add(hori_layout, fill=True) self.dir_field = fsui.TextField(self, "", read_only=True) hori_layout.add(self.dir_field, expand=True) self.browse_button = fsui.Button(self, gettext("Browse")) self.browse_button.clicked.connect(self.on_browse_clicked) hori_layout.add(self.browse_button, margin_left=10) self.created_label = fsui.Label(self, "") layout.add(self.created_label, fill=True) # layout.add_spacer(20) # layout.add_spacer(20) # hori_layout = fsui.HorizontalLayout() # layout.add(hori_layout, fill=True) # self.created_label = fsui.Label(self, "") # hori_layout.add(self.created_label, expand=True) # hori_layout.add_spacer(20) self.create_button = fsui.Button(buttons, gettext("Create")) # self.create_button.activated.connect(self.on_create_clicked) self.create_button.clicked.connect(self.on_create_clicked) # hori_layout.add(self.create_button) buttons.add_button(self.create_button) self.list_view.select_item(0) self.update_name_suggestion()
def __init__(self, parent, index=0): PagedDialog.__init__( self, parent, "{} - {} Launcher".format(gettext("Settings"), fsgs.product)) # FIXME: remove this once the dialog uses Window as base class # self.setAttribute(Qt.WA_DeleteOnClose, True) # self.add_page( # # gettext("Appearance"), LanguageSettingsPage, # gettext("Language"), LanguageSettingsPage, # fsui.Icon("language-settings", "pkg:workspace")) self.add_page(gettext("Common"), LanguageSettingsPage, fsui.Icon("language-settings", "pkg:workspace"), bold=True) self.add_page(gettext("Controllers"), JoystickSettingsPage, fsui.Icon("gamepad", "pkg:workspace")) self.add_page(gettext("Plugins"), PluginsSettingsPage, fsui.Icon("settings", "pkg:workspace")) self.add_page(gettext("Directories"), DirectoriesSettingsPage, fsui.Icon("folder", "pkg:launcher")) self.add_page(gettext("Advanced"), AdvancedSettingsPage, fsui.Icon("settings", "pkg:workspace")) self.add_page("FS-UAE", FSUAESettingsPage, fsui.Icon("fs-uae", "pkg:launcher"), bold=True) self.add_page(gettext("Keyboard"), KeyboardSettingsPage, fsui.Icon("keyboard-settings", "pkg:workspace")) self.add_page(gettext("Mouse"), MouseSettingsPage, fsui.Icon("mouse-settings", "pkg:workspace")) self.add_page(gettext("Audio"), AudioSettingsPage, fsui.Icon("audio-settings", "pkg:workspace")) self.add_page(gettext("Video"), VideoSettingsPage, fsui.Icon("video-settings", "pkg:workspace")) self.add_page(gettext("Advanced Video"), AdvancedVideoSettingsPage, fsui.Icon("video-settings", "pkg:workspace")) # self.add_page( # gettext("Synchronization"), VideoSyncSettingsPage, # fsui.Icon("video-settings", "pkg:workspace")) # self.add_page( # gettext("Filters & Scaling"), FilterSettingsPage, # fsui.Icon("video-settings", "pkg:workspace")) # self.add_page(gettext("OpenGL Settings"), OpenGLSettingsPage) # if Settings.get("database_feature") == "1": # self.add_page( # gettext("Logging"), LoggingSettingsPage, # fsui.Icon("settings", "pkg:workspace")) self.add_page("{} Launcher".format(fsgs.product), LauncherSettingsPage, fsui.Icon("fs-uae-launcher", "pkg:launcher"), bold=True) self.add_page(gettext("File Database"), ScanSettingsPage, fsui.Icon("indexing-settings", "pkg:workspace")) self.add_page(gettext("Game Database"), GameDatabaseSettingsPage, fsui.Icon("database-settings", "pkg:workspace")) if fsgs.openretro or settings.get(Option.PLATFORMS_FEATURE) == "1": self.add_page(gettext("Game Platforms"), GamePlatformsSettingsPage, fsui.Icon("database-settings", "pkg:workspace")) # self.add_page(gettext("Custom Settings"), CustomSettingsPage) if LauncherSettings.get(Option.NETPLAY_FEATURE) != "0": self.add_page(gettext("Net Play"), NetplaySettingsPage, fsui.Icon("netplay-settings", "pkg:workspace")) self.add_page("WHDLoad", WHDLoadSettingsPage, fsui.Icon("hd", "pkg:launcher")) # self.add_page( # gettext("Experimental Features"), ExperimentalFeaturesPage, # fsui.Icon("settings", "pkg:workspace")) # self.add_page( # gettext("Maintenance"), MaintenanceSettingsPage, # fsui.Icon("maintenance", "pkg:workspace")) self.add_page("{} Arcade".format(fsgs.product), ArcadeSettingsPage, fsui.Icon("fs-uae-arcade", "pkg:launcher"), bold=True) # Old texts # gettext("Video Synchronization") # gettext("Synchronization") gettext("Advanced") last_index = self.get_page_index_by_title( LauncherSettings.get("last_settings_page")) index = last_index or index self.list_view.set_index(index) defaults_button = fsui.Button(self, gettext("Reset to Defaults")) defaults_button.activated.connect(self.__defaults_activated) self.button_layout.insert(0, defaults_button, fill=True) defaults_label = fsui.Label( self, gettext("Choices marked with (*) is the default setting")) self.button_layout.insert(1, defaults_label, margin_left=20) self.set_size((940, 560)) # self.center_on_parent() self.closed.connect(self.__closed) self.page_changed.connect(self.__page_changed)
def __init__(self, parent, device_name): title = gettext("Configure {device_name}").format( device_name=device_name) super().__init__(parent, title=title, minimizable=False, maximizable=False, separator=False) self.layout = fsui.VerticalLayout() self.image = fsui.Image("workspace:res/gamepad-config.png") self.joystick_panel = fsui.ImageView(self, self.image) self.layout.add(self.joystick_panel) if Skin.fws(): from workspace.ui import TitleSeparator separator = TitleSeparator(self) self.layout.add(separator, fill=True) panel = fsui.Panel(self) self.layout.add(panel, fill=True) panel.layout = fsui.HorizontalLayout() panel.layout.padding = 20 self.device_type_ids = [ "", "gamepad", "joystick", # "flightstick", "other", ] self.device_type_labels = [ gettext("Choose Type"), gettext("Gamepad"), gettext("Digital Joystick"), # gettext("Flight Stick"), gettext("Other Device"), ] self.type_field = fsui.Choice(panel, self.device_type_labels) self.type_field.changed.connect(self.on_change) panel.layout.add(self.type_field) panel.layout.add(fsui.PlainLabel(panel, gettext("Make:")), margin_left=20) self.make_field = fsui.TextField(panel) self.make_field.set_min_width(140) self.make_field.changed.connect(self.on_change) panel.layout.add(self.make_field, margin_left=10) panel.layout.add(fsui.PlainLabel(panel, gettext("Model:")), margin_left=20) self.model_field = fsui.TextField(panel) self.model_field.changed.connect(self.on_change) panel.layout.add(self.model_field, expand=True, margin_left=10) self.save_button = fsui.Button(panel, gettext("Save")) self.save_button.activated.connect(self.on_save_button) panel.layout.add(self.save_button, margin_left=20) # self.close_button = fsui.Button(panel, gettext("Close")) # self.close_button.activated.connect(self.on_close_button) # panel.layout.add(self.close_button, margin_left=10) self.device_name = device_name existing_config = self.read_existing_config() self.button_panels = [] for x, y, direction, name in BUTTONS: b = MappingButton(self.joystick_panel, (x, y + 4), direction, name) self.button_panels.append(b) if name in existing_config: b.event_name = existing_config[name] self.save_button.disable() self.set_size(self.layout.get_min_size()) self.center_on_parent() self.stopped = False self.current_state = {} self.initial_state = {} self.map_key_name = None fsui.call_later(100, self.on_timer_callback) thread = threading.Thread(target=event_thread, name="JoystickConfigEventThread", args=( self.device_name, weakref.ref(self), )) thread.start()
def __init__(self, parent, fsgc): self.fsgc = fsgc super().__init__(parent) self.layout = fsui.VerticalLayout() hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True) heading_label = fsui.HeadingLabel(self, gettext("Settings")) hori_layout.add(heading_label, margin=10) hori_layout.add_spacer(0, expand=True) settings_button = IconButton(self, "16x16/more.png") settings_button.activated.connect(self.on_settings_button) hori_layout.add(settings_button, margin_right=10) self.layout.add_spacer(0) # button = fsui.Button(self, "Platform Settings") # button.activated.connect(self.on_platform_settings_button) # self.layout.add(button, margin=10, fill=True) # self.add_option(Option.KEEP_ASPECT, text=gettext("Keep Aspect"), # platforms=AMIGA_PLATFORMS) self.add_option(Option.SCALE, text=None, enable=SCALING) self.add_option(Option.STRETCH, text=None, enable=STRETCHING) self.add_option(Option.BEZEL, text=None, enable=BEZEL) self.add_option(Option.EFFECT, text=None, enable=EFFECTS) self.add_option(Option.ZOOM, text=None, platforms=AMIGA_PLATFORMS) self.add_option(Option.BORDER, text=None, platforms=BORDER) # self.add_option(Option.SMOOTHING, text=None, platforms=SMOOTHING) # self.add_option(Option.CROP, text=None, platforms=CROPPING) # if fsgc.settings[Option.DEVELOPER_MODE] == "1": # pass # # self.add_option(Option.ZXS_DRIVER, [Platform.ZXS]) # # self.add_option(Option.DOS_EMULATOR, [Platform.DOS]) # self.add_option(Option.NES_EMULATOR, [Platform.NES]) self.add_option(Option.AUTO_LOAD, [Platform.DOS, Platform.ZXS]) self.add_option(Option.AUTO_QUIT, [Platform.DOS]) self.add_option(Option.TURBO_LOAD, [Platform.ZXS]) # self.add_option(Option.FRAME, text=None, platforms=BEZEL) # self.add_option(Option.BEZEL, text=None, platforms=BEZEL) # self.add_option(Option.CHEATS, platforms=CHEATS) quick_settings = fsgc.settings[Option.QUICK_SETTINGS_OPTIONS] for option in quick_settings.split(","): option = option.strip().lower() if "[" in option: # For future use of e.g.: # option1[platform1,platform2],option2[platform,...] option, platforms = option.split("[", 1) else: platforms = [] if option in options: try: self.add_option(option) except Exception: print("Error adding quick setting") traceback.print_exc() self.layout.add_spacer(expand=True) hori_layout = fsui.HorizontalLayout() hori_layout.add_spacer(expand=True) self.platform_settings_button = fsui.Button(self, "Platform Settings") self.platform_settings_button.activated.connect( self.on_platform_settings_button) hori_layout.add(self.platform_settings_button, margin=10) self.layout.add(hori_layout, fill=True) hori_layout = fsui.HorizontalLayout() hori_layout.add_spacer(expand=True) self.video_sync_checkbox = VideoSyncCheckBox(self) hori_layout.add(self.video_sync_checkbox, margin_right=10) self.layout.add(hori_layout, fill=True) self.monitor_button = MonitorButton(self) hori_layout.add(self.monitor_button, fill=True, margin_right=10) self.fullscreen_mode_button = FullscreenModeButton(self) hori_layout.add(self.fullscreen_mode_button, fill=True, margin_right=10) self.layout.add_spacer(10) ConfigBehavior(self, [Option.PLATFORM]) SettingsBehavior(self, [Option.G_SYNC])
def __init__(self, parent, minimal=False, interactive=True, scan_for_files=True): super().__init__(parent, gettext("Update File Database")) buttons, layout = fsui.DialogButtons.create_with_layout(self) buttons.create_close_button() self.layout.add_spacer(640, 0) self.interactive = interactive self.scan_for_files = scan_for_files self.update_game_database = False # self.update_game_database = True if not minimal: self.scan_kickstart_group = ScanKickstartGroup(self) layout.add(self.scan_kickstart_group, fill=True) layout.add_spacer(20) label = fsui.HeadingLabel( self, gettext("Scan for Kickstarts, Files and Configurations")) layout.add(label, margin_bottom=10) self.scan_paths_group = ScanPathsGroup(self) layout.add(self.scan_paths_group, fill=True, margin=0) layout.add_spacer(20) self.scan_progress_group = ScanProgressGroup(self) layout.add(self.scan_progress_group, fill=True) # layout.add_spacer(20) # layout.add_spacer(20) # hor_layout = fsui.HorizontalLayout() # layout.add(hor_layout, fill=True) # hor_layout.add_spacer(10, expand=True) if interactive: self.scan_button = buttons.add_button( fsui.Button(buttons, gettext("Scan"))) # self.scan_button = fsui.Button(self, _("Scan")) # hor_layout.add(self.scan_button) # hor_layout.add_spacer(10) self.scan_button.activated.connect(self.on_scan_button) else: self.scan_button = None # self.stop_button = fsui.Button(self, _("Abort")) # hor_layout.add(self.stop_button) self.stop_button = buttons.add_button( fsui.Button(buttons, gettext("Stop"))) self.stop_button.activated.connect(self.on_stop_button) # layout.add_spacer(10) # self.set_size(layout.get_min_size()) # self.center_on_parent() self.old_title = "" self.old_status = "" self.has_started_scan = False self.timer = fsui.IntervalTimer(TIMER_INTERVAL) self.timer.activated.connect(self.on_timer) self.closed.connect(self.timer.stop) if not self.interactive: self.start_scan()
def __init__(self, parent, drives=2, cd_mode=False, removable_media=False): super().__init__(parent) self.layout = fsui.VerticalLayout() self.cd_mode = cd_mode self.num_drives = drives hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True) self.mode = self.FLOPPY_MODE if cd_mode: self.mode = self.CD_MODE if self.mode == self.CD_MODE: title = gettext("CD-ROM Drive") drive_count_option = Option.CDROM_DRIVE_COUNT behavior_class = CDEnableBehavior elif self.mode == self.TAPE_MODE: title = gettext("Tape Drive") drive_count_option = None behavior_class = None elif self.mode == self.CARTRIDGE_MODE: title = gettext("Cartridge") drive_count_option = None behavior_class = None else: title = gettext("Floppy Drives") drive_count_option = Option.FLOPPY_DRIVE_COUNT behavior_class = FloppyEnableBehavior if removable_media: # Removable media group will change type dynamically behavior_class = None self.label = fsui.HeadingLabel(self, title) hori_layout.add(self.label, margin=10) hori_layout.add_spacer(0, expand=True) if drive_count_option and not removable_media: # FIXME: Drive count option does not work on the main page when # changing to CD mode. Workaround for now is to not include it. hori_layout.add( ConfigWidgetFactory().create( self, drive_count_option, text=gettext("Drive count"), platforms=AMIGA_PLATFORMS, ), fill=True, margin_right=20, ) self.multi_select_button = fsui.Button(self, gettext("Multi-select...")) if self.cd_mode: self.multi_select_button.set_tooltip( gettext("Add multiple CD-ROMs at once")) else: self.multi_select_button.set_tooltip( gettext("Add multiple floppies at once")) if behavior_class: behavior_class(self.multi_select_button) self.multi_select_button.activated.connect(self.on_multi_select_button) hori_layout.add(self.multi_select_button, margin_right=10) self.layout.add_spacer(0) self.selectors = [] for i in range(drives): selector = FloppySelector(self, i, show_path=not removable_media) if behavior_class: behavior_class(selector) selector.set_mode(self.mode) self.selectors.append(selector) self.layout.add(selector, fill=True, margin=10, margin_bottom=0)
def __init__(self, parent, fsgs): fsui.Window.__init__(self, parent, gettext("Download Game Manually")) self.fsgs = fsgs self.download_page = fsgs.config.get("download_page") self.download_notice = fsgs.config.get("download_notice") self.task = None self.layout = fsui.VerticalLayout() self.layout.set_padding(20, 20, 20, 20) self.icon_header = IconHeader( self, fsui.Icon("web-browser", "pkg:workspace"), gettext("Download Game Manually"), gettext("This game must be downloaded before you can play it")) self.layout.add(self.icon_header, fill=True, margin_bottom=20) label = fsui.HeadingLabel( self, gettext("Please open the following web page and download the " "game from there:")) label.set_min_width(500) self.layout.add(label) hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True, margin_top=10) hori_layout.add( fsui.ImageView(self, fsui.Image("launcher:res/16x16/world_link.png"))) label = fsui.URLLabel(self, self.download_page, self.download_page) hori_layout.add(label, margin_left=6) if self.download_notice: label = fsui.MultiLineLabel(self, self.download_notice) label.set_min_width(500) self.layout.add(label, margin_top=20) label = fsui.HeadingLabel( self, gettext("Download to the following directory, and then " "click '{0}':".format(gettext("Scan Downloads")))) label.set_min_width(500) self.layout.add(label, margin_top=20) hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True, margin_top=10) hori_layout.add( fsui.ImageView(self, fsui.Image("launcher:res/16x16/folder.png"))) label = fsui.Label(self, FSGSDirectories.ensure_downloads_dir()) hori_layout.add(label, margin_left=6) hori_layout = fsui.HorizontalLayout() self.layout.add(hori_layout, fill=True, margin_top=20) self.status_label = fsui.Label(self, "") hori_layout.add(self.status_label, expand=True) self.scan_button = fsui.Button(self, gettext("Scan Downloads")) self.scan_button.activated.connect(self.on_scan_files) hori_layout.add(self.scan_button, margin_left=20) self.close_button = fsui.Button(self, gettext("Close")) self.close_button.activated.connect(self.on_close) hori_layout.add(self.close_button, margin_left=10) self.set_size(self.layout.get_min_size()) self.center_on_parent()