def install(self, db_game): installers = fetch_script(db_game["slug"]) if not installers: logger.warning("No installer for %s", db_game["slug"]) return application = Gio.Application.get_default() application.show_installer_window(installers)
def get_installers_from_api(self, appid): """Query the lutris API for an appid and get existing installers for the service""" lutris_games = api.get_api_games([appid], service=self.id) service_installers = [] if lutris_games: lutris_game = lutris_games[0] installers = fetch_script(lutris_game["slug"]) for installer in installers: if self.matcher in installer["version"].lower(): service_installers.append(installer) return service_installers
def install(self, db_game): if isinstance(db_game, dict): slug = db_game["slug"] else: slug = db_game installers = fetch_script(slug) if not installers: logger.warning("No installer for %s", slug) return application = Gio.Application.get_default() application.show_installer_window(installers)
def install(self, db_game): appid = db_game["appid"] logger.debug("Installing %s from service %s", appid, self.id) lutris_games = api.get_api_games([appid], service=self.id) service_installers = [] if lutris_games: lutris_game = lutris_games[0] installers = fetch_script(lutris_game["slug"]) for installer in installers: if self.matcher in installer["version"].lower(): service_installers.append(installer) if not service_installers: installer = self.generate_installer(db_game) if installer: service_installers.append(installer) if service_installers: application = Gio.Application.get_default() application.show_installer_window(service_installers, service=self, appid=appid)
def __init__(self, game_ref, parent=None): Gtk.Window.__init__(self) self.interpreter = None self.selected_directory = None # Latest directory chosen by user self.parent = parent self.game_ref = game_ref # Dialog properties self.set_size_request(600, 480) self.set_default_size(600, 480) self.set_position(Gtk.WindowPosition.CENTER) self.set_resizable(False) self.vbox = Gtk.VBox() self.add(self.vbox) # Default signals self.connect('destroy', self.on_destroy) # GUI Setup # Title label self.title_label = Gtk.Label() self.vbox.pack_start(self.title_label, False, False, 20) self.status_label = Gtk.Label() self.status_label.set_max_width_chars(80) self.status_label.set_property('wrap', True) self.status_label.set_selectable(True) self.vbox.pack_start(self.status_label, False, False, 15) # Main widget box self.widget_box = Gtk.VBox() self.widget_box.set_margin_right(25) self.widget_box.set_margin_left(25) self.vbox.pack_start(self.widget_box, True, True, 15) self.location_entry = None # Separator self.vbox.pack_start(Gtk.HSeparator(), False, False, 0) # Buttons action_buttons_alignment = Gtk.Alignment.new(0.95, 0, 0.15, 0) self.action_buttons = Gtk.HBox() action_buttons_alignment.add(self.action_buttons) self.vbox.pack_start(action_buttons_alignment, False, True, 20) self.install_button = Gtk.Button(label='Install') self.install_button.connect('clicked', self.on_install_clicked) self.action_buttons.add(self.install_button) self.continue_button = Gtk.Button(label='Continue') self.continue_button.set_margin_left(20) self.continue_handler = None self.action_buttons.add(self.continue_button) self.play_button = Gtk.Button(label="Launch game") self.play_button.set_margin_left(20) self.play_button.connect('clicked', self.launch_game) self.action_buttons.add(self.play_button) self.close_button = Gtk.Button(label="Close") self.close_button.set_margin_left(20) self.close_button.connect('clicked', self.close) self.action_buttons.add(self.close_button) if os.path.isfile(game_ref): # local script logger.debug("Opening script: %s", game_ref) self.scripts = yaml.safe_load(open(game_ref, 'r').read()) else: self.scripts = installer.fetch_script(self, game_ref) if not self.scripts: self.destroy() return if not isinstance(self.scripts, list): self.scripts = [self.scripts] self.show_all() self.close_button.hide() self.play_button.hide() self.install_button.hide() self.choose_installer()
def __init__(self, game_ref, parent=None): Gtk.Window.__init__(self) self.interpreter = None self.selected_directory = None # Latest directory chosen by user self.parent = parent self.game_ref = game_ref # Dialog properties self.set_size_request(600, 480) self.set_default_size(600, 480) self.set_position(Gtk.WindowPosition.CENTER) self.set_resizable(False) self.vbox = Gtk.VBox() self.add(self.vbox) # Default signals self.connect('destroy', self.on_destroy) # GUI Setup # Title label self.title_label = Gtk.Label() self.vbox.pack_start(self.title_label, False, False, 20) self.status_label = Gtk.Label() self.status_label.set_max_width_chars(80) self.status_label.set_property('wrap', True) self.status_label.set_selectable(True) self.vbox.pack_start(self.status_label, False, False, 15) # Main widget box self.widget_box = Gtk.VBox() self.widget_box.set_margin_right(25) self.widget_box.set_margin_left(25) self.vbox.pack_start(self.widget_box, True, True, 15) self.location_entry = None # Separator self.vbox.pack_start(Gtk.HSeparator(), False, False, 0) # Buttons action_buttons_alignment = Gtk.Alignment.new(0.95, 0, 0.15, 0) self.action_buttons = Gtk.HBox() action_buttons_alignment.add(self.action_buttons) self.vbox.pack_start(action_buttons_alignment, False, True, 20) self.install_button = Gtk.Button(label='Install') self.install_button.connect('clicked', self.on_install_clicked) self.action_buttons.add(self.install_button) self.continue_button = Gtk.Button(label='Continue') self.continue_button.set_margin_left(20) self.continue_handler = None self.action_buttons.add(self.continue_button) self.play_button = Gtk.Button(label="Launch game") self.play_button.set_margin_left(20) self.play_button.connect('clicked', self.launch_game) self.action_buttons.add(self.play_button) self.close_button = Gtk.Button(label="Close") self.close_button.set_margin_left(20) self.close_button.connect('clicked', self.close) self.action_buttons.add(self.close_button) if os.path.isfile(game_ref): # local script logger.debug("Opening script: %s", game_ref) self.scripts = yaml.safe_load(open(game_ref, 'r').read()) else: self.scripts = installer.fetch_script(self, game_ref) if not self.scripts: raise installer.ScriptingError("Failed to get installer script") if not isinstance(self.scripts, list): self.scripts = [self.scripts] self.show_all() self.close_button.hide() self.play_button.hide() self.install_button.hide() self.choose_installer()