def complete_steam_install(self, dest, appid): self.parent.wait_for_user_action( "Steam will now install, press Ok when install is finished", self.on_winesteam_installed, appid ) steam_runner = winesteam.winesteam() async_call(steam_runner.install, None, dest)
def sync_library(self): def set_library_synced(result, error): self.set_status("Library synced") self.set_status("Syncing library") async_call(api.sync, async_call( self.sync_icons, set_library_synced, ), caller=self)
def sync_library(self): def set_library_synced(result, error): self.set_status("Library synced") self.switch_splash_screen() self.set_status("Syncing library") async_call( api.sync, lambda r, e: async_call(self.sync_icons, set_library_synced), caller=self)
def sync_library(self): def set_library_synced(result, error): self.set_status("Library synced") self.switch_splash_screen() self.set_status("Syncing library") async_call( api.sync, lambda r, e: async_call(self.sync_icons, set_library_synced), caller=self )
def on_synchronize_manually(self, *args): """Callback when Synchronize Library is activated.""" credentials = api.read_api_key() if credentials: # Is connected self.sync_library() else: sync = Sync() async_call( sync.sync_steam_local, lambda r, e: async_call(self.sync_icons, None), caller=self ) # Update Runtime async_call(runtime.update_runtime, None, self.set_status)
def install_steam_game(self, runner_class): steam_runner = runner_class() appid = self.steam_data['appid'] if not steam_runner.get_game_path_from_appid(appid): logger.debug("Installing steam game %s" % appid) # Here the user must wait for the game to finish installing, a # better way to handle this would be to poll StateFlags on the # game's config to check if the game has finished installing. self.parent.wait_for_user_action( "Steam will now download and install game %s, " "press Ok when it's finished" % appid, self.on_steam_game_installed, appid) steam_runner.appid = appid async_call(steam_runner.install_game, None, appid) else: self._append_steam_data_to_files(runner_class)
def install_steam_game(self, runner_class): steam_runner = runner_class() appid = self.steam_data['appid'] if not steam_runner.get_game_data_path(appid): logger.debug("Installing steam game %s" % appid) # Here the user must wait for the game to finish installing, a # better way to handle this would be to poll StateFlags on the # game's config to check if the game has finished installing. self.parent.wait_for_user_action( "Steam will now install game %s, " "press Ok when install is finished" % appid, self.on_steam_game_installed, appid ) steam_runner.appid = appid async_call(steam_runner.install_game, None, appid) else: self._append_steam_data_to_files(runner_class)
def _iter_commands(self, result=None, exception=None): if result == 'STOP': return self.parent.set_status("Installing game data") self.parent.add_spinner() commands = self.script.get('installer', []) if exception: self.parent.on_install_error(repr(exception)) elif self.current_command < len(commands): command = commands[self.current_command] self.current_command += 1 method, params = self._map_command(command) if isinstance(params, dict): status_text = params.pop("description", None) else: status_text = None if status_text: self.parent.set_status(status_text) async_call(method, self._iter_commands, params) else: self._finish_install()
def complete_steam_install(self, dest): winesteam_runner = winesteam.winesteam() async_call(winesteam_runner.install, self.on_winesteam_installed, dest)
def __init__(self): ui_filename = os.path.join(datapath.get(), 'ui', 'LutrisWindow.ui') if not os.path.exists(ui_filename): raise IOError('File %s not found' % ui_filename) # Currently running game self.running_game = None # Emulate double click to workaround GTK bug #484640 # https://bugzilla.gnome.org/show_bug.cgi?id=484640 self.game_selection_time = 0 self.game_launch_time = 0 self.last_selected_game = None self.builder = Gtk.Builder() self.builder.add_from_file(ui_filename) # load config width = int(settings.read_setting('width') or 800) height = int(settings.read_setting('height') or 600) self.window_size = (width, height) view_type = self.get_view_type() self.icon_type = self.get_icon_type(view_type) filter_installed_setting = settings.read_setting( 'filter_installed') or 'false' self.filter_installed = filter_installed_setting == 'true' show_installed_games_menuitem = self.builder.get_object( 'filter_installed') show_installed_games_menuitem.set_active(self.filter_installed) logger.debug("Getting game list") game_list = get_game_list(self.filter_installed) logger.debug("Switching view") self.view = load_view(view_type, game_list, icon_type=self.icon_type) logger.debug("Connecting signals") self.main_box = self.builder.get_object('main_box') self.splash_box = self.builder.get_object('splash_box') # View menu self.grid_view_menuitem = self.builder.get_object("gridview_menuitem") self.grid_view_menuitem.set_active(view_type == 'grid') self.list_view_menuitem = self.builder.get_object("listview_menuitem") self.list_view_menuitem.set_active(view_type == 'list') # View buttons self.grid_view_btn = self.builder.get_object('switch_grid_view_btn') self.grid_view_btn.set_active(view_type == 'grid') self.list_view_btn = self.builder.get_object('switch_list_view_btn') self.list_view_btn.set_active(view_type == 'list') # Icon type menu self.banner_small_menuitem = \ self.builder.get_object('banner_small_menuitem') self.banner_small_menuitem.set_active(self.icon_type == 'banner_small') self.banner_menuitem = self.builder.get_object('banner_menuitem') self.banner_menuitem.set_active(self.icon_type == 'banner') self.icon_menuitem = self.builder.get_object('icon_menuitem') self.icon_menuitem.set_active(self.icon_type == 'grid') self.search_entry = self.builder.get_object('search_entry') # Scroll window self.games_scrollwindow = self.builder.get_object('games_scrollwindow') self.games_scrollwindow.add(self.view) # Status bar self.status_label = self.builder.get_object('status_label') self.joystick_icons = [] # Buttons self.stop_button = self.builder.get_object('stop_button') self.stop_button.set_sensitive(False) self.delete_button = self.builder.get_object('delete_button') self.delete_button.set_sensitive(False) self.play_button = self.builder.get_object('play_button') self.play_button.set_sensitive(False) # Contextual menu menu_callbacks = [ ('play', self.on_game_clicked), ('install', self.on_game_clicked), ('add', self.add_manually), ('configure', self.edit_game_configuration), ('browse', self.on_browse_files), ('desktop-shortcut', self.create_desktop_shortcut), ('menu-shortcut', self.create_menu_shortcut), ('remove', self.on_remove_game), ] self.menu = ContextualMenu(menu_callbacks) self.view.contextual_menu = self.menu # Timer self.timer_id = GLib.timeout_add(2000, self.refresh_status) sidebar_paned = self.builder.get_object('sidebar_paned') sidebar_paned.set_position(150) sidebar_treeview = SidebarTreeView() sidebar_treeview.connect('cursor-changed', self.on_sidebar_changed) self.sidebar_viewport = self.builder.get_object('sidebar_viewport') self.sidebar_viewport.add(sidebar_treeview) # Window initialization self.window = self.builder.get_object("window") self.window.resize_to_geometry(width, height) self.window.show_all() self.builder.connect_signals(self) self.connect_signals() # XXX Hide PGA config menu item until it actually gets implemented pga_menuitem = self.builder.get_object('pga_menuitem') pga_menuitem.hide() self.switch_splash_screen() credentials = api.read_api_key() if credentials: self.on_connect_success(None, credentials) else: self.toggle_connection(False) sync = Sync() async_call(sync.sync_steam_local, lambda r, e: async_call(self.sync_icons, None), caller=self) # Update Lutris Runtime async_call(runtime.update_runtime, None)
def __init__(self): ui_filename = os.path.join( datapath.get(), 'ui', 'LutrisWindow.ui' ) if not os.path.exists(ui_filename): raise IOError('File %s not found' % ui_filename) self.builder = Gtk.Builder() self.builder.add_from_file(ui_filename) # load config width = int(settings.read_setting('width') or 800) height = int(settings.read_setting('height') or 600) self.window_size = (width, height) view_type = settings.read_setting('view_type') or 'icon' filter_installed_setting = settings.read_setting( 'filter_installed' ) or 'false' self.filter_installed = filter_installed_setting == 'true' show_installed_games_menuitem = self.builder.get_object( 'filter_installed' ) show_installed_games_menuitem.set_active(self.filter_installed) logger.debug("Getting game list") game_list = get_game_list(self.filter_installed) logger.debug("Switching view") self.view = switch_to_view(view_type, game_list) logger.debug("Connecting signals") self.icon_view_menuitem = self.builder.get_object("iconview_menuitem") self.icon_view_menuitem.set_active(view_type == 'icon') self.list_view_menuitem = self.builder.get_object("listview_menuitem") self.list_view_menuitem.set_active(view_type == 'list') self.icon_view_btn = self.builder.get_object('switch_grid_view_btn') self.icon_view_btn.set_active(view_type == 'icon') self.list_view_btn = self.builder.get_object('switch_list_view_btn') self.list_view_btn.set_active(view_type == 'list') # Scroll window self.games_scrollwindow = self.builder.get_object('games_scrollwindow') self.games_scrollwindow.add(self.view) #Status bar self.status_label = self.builder.get_object('status_label') self.joystick_icons = [] # Buttons self.stop_button = self.builder.get_object('stop_button') self.stop_button.set_sensitive(False) self.delete_button = self.builder.get_object('delete_button') self.delete_button.set_sensitive(False) self.play_button = self.builder.get_object('play_button') self.play_button.set_sensitive(False) #Contextual menu menu_callbacks = [ ('play', self.on_game_clicked), ('install', self.on_game_clicked), ('add', self.add_manually), ('configure', self.edit_game_configuration), ('desktop-shortcut', self.create_desktop_shortcut), ('menu-shortcut', self.create_menu_shortcut), ('uninstall', self.on_remove_game), ] self.menu = ContextualMenu(menu_callbacks) self.view.contextual_menu = self.menu #Timer self.timer_id = GLib.timeout_add(2000, self.refresh_status) self.window = self.builder.get_object("window") self.window.resize_to_geometry(width, height) self.window.show_all() self.builder.connect_signals(self) self.connect_signals() if api.read_api_key(): self.status_label.set_text("Connected to lutris.net") self.sync_library() else: async_call(self.sync_icons, None)
def __init__(self): ui_filename = os.path.join( datapath.get(), 'ui', 'LutrisWindow.ui' ) if not os.path.exists(ui_filename): raise IOError('File %s not found' % ui_filename) # Currently running game self.running_game = None # Emulate double click to workaround GTK bug #484640 # https://bugzilla.gnome.org/show_bug.cgi?id=484640 self.game_selection_time = 0 self.game_launch_time = 0 self.last_selected_game = None self.builder = Gtk.Builder() self.builder.add_from_file(ui_filename) # load config width = int(settings.read_setting('width') or 800) height = int(settings.read_setting('height') or 600) self.window_size = (width, height) view_type = self.get_view_type() self.icon_type = self.get_icon_type(view_type) filter_installed_setting = settings.read_setting( 'filter_installed' ) or 'false' self.filter_installed = filter_installed_setting == 'true' show_installed_games_menuitem = self.builder.get_object( 'filter_installed' ) show_installed_games_menuitem.set_active(self.filter_installed) logger.debug("Getting game list") game_list = get_game_list(self.filter_installed) logger.debug("Switching view") self.view = load_view(view_type, game_list, icon_type=self.icon_type) logger.debug("Connecting signals") self.main_box = self.builder.get_object('main_box') self.splash_box = self.builder.get_object('splash_box') # View menu self.grid_view_menuitem = self.builder.get_object("gridview_menuitem") self.grid_view_menuitem.set_active(view_type == 'grid') self.list_view_menuitem = self.builder.get_object("listview_menuitem") self.list_view_menuitem.set_active(view_type == 'list') # View buttons self.grid_view_btn = self.builder.get_object('switch_grid_view_btn') self.grid_view_btn.set_active(view_type == 'grid') self.list_view_btn = self.builder.get_object('switch_list_view_btn') self.list_view_btn.set_active(view_type == 'list') # Icon type menu self.banner_small_menuitem = \ self.builder.get_object('banner_small_menuitem') self.banner_small_menuitem.set_active(self.icon_type == 'banner_small') self.banner_menuitem = self.builder.get_object('banner_menuitem') self.banner_menuitem.set_active(self.icon_type == 'banner') self.icon_menuitem = self.builder.get_object('icon_menuitem') self.icon_menuitem.set_active(self.icon_type == 'grid') self.search_entry = self.builder.get_object('search_entry') # Scroll window self.games_scrollwindow = self.builder.get_object('games_scrollwindow') self.games_scrollwindow.add(self.view) # Status bar self.status_label = self.builder.get_object('status_label') self.joystick_icons = [] # Buttons self.stop_button = self.builder.get_object('stop_button') self.stop_button.set_sensitive(False) self.delete_button = self.builder.get_object('delete_button') self.delete_button.set_sensitive(False) self.play_button = self.builder.get_object('play_button') self.play_button.set_sensitive(False) # Contextual menu menu_callbacks = [ ('play', self.on_game_clicked), ('install', self.on_game_clicked), ('add', self.add_manually), ('configure', self.edit_game_configuration), ('browse', self.on_browse_files), ('desktop-shortcut', self.create_desktop_shortcut), ('menu-shortcut', self.create_menu_shortcut), ('remove', self.on_remove_game), ] self.menu = ContextualMenu(menu_callbacks) self.view.contextual_menu = self.menu # Timer self.timer_id = GLib.timeout_add(2000, self.refresh_status) # Window initialization self.window = self.builder.get_object("window") self.window.resize_to_geometry(width, height) self.window.show_all() self.builder.connect_signals(self) self.connect_signals() # XXX Hide PGA config menu item until it actually gets implemented pga_menuitem = self.builder.get_object('pga_menuitem') pga_menuitem.hide() self.switch_splash_screen() credentials = api.read_api_key() if credentials: self.on_connect_success(None, credentials) else: self.toggle_connection(False) sync = Sync() async_call( sync.sync_steam_local, lambda r, e: async_call(self.sync_icons, None), caller=self ) # Update Lutris Runtime async_call(runtime.update_runtime, None)
def __init__(self): ui_filename = os.path.join( settings.get_data_path(), 'ui', 'LutrisWindow.ui' ) if not os.path.exists(ui_filename): raise IOError('File %s not found' % ui_filename) self.builder = Gtk.Builder() self.builder.add_from_file(ui_filename) # load config width = int(settings.read_setting('width') or 800) height = int(settings.read_setting('height') or 600) self.window_size = (width, height) view_type = settings.read_setting('view_type') or 'icon' self.view = switch_to_view(view_type) view_menuitem = self.builder.get_object("iconview_menuitem") view_menuitem.set_active(view_type == 'icon') view_menuitem = self.builder.get_object("listview_menuitem") view_menuitem.set_active(view_type == 'list') switch_grid_view_btn = self.builder.get_object('switch_grid_view_btn') switch_grid_view_btn.set_active(view_type == 'icon') switch_list_view_btn = self.builder.get_object('switch_list_view_btn') switch_list_view_btn.set_active(view_type == 'list') # Scroll window self.games_scrollwindow = self.builder.get_object('games_scrollwindow') self.games_scrollwindow.add(self.view) #Status bar self.status_label = self.builder.get_object('status_label') self.joystick_icons = [] # Buttons self.stop_button = self.builder.get_object('stop_button') self.stop_button.set_sensitive(False) self.delete_button = self.builder.get_object('delete_button') self.delete_button.set_sensitive(False) self.play_button = self.builder.get_object('play_button') self.play_button.set_sensitive(False) #Contextual menu menu_actions = [ ('Play', self.on_game_clicked), ('Configure', self.edit_game_configuration), ('Create desktop shortcut', self.create_desktop_shortcut), ('Create global menu shortcut', self.create_menu_shortcut) ] self.menu = Gtk.Menu() for action in menu_actions: subitem = Gtk.ImageMenuItem(action[0]) subitem.connect('activate', action[1]) self.menu.append(subitem) self.menu.show_all() self.view.contextual_menu = self.menu #Timer self.timer_id = GLib.timeout_add(2000, self.refresh_status) self.window = self.builder.get_object("window") self.window.resize_to_geometry(width, height) self.window.show_all() self.builder.connect_signals(self) self.connect_signals() async_call(self.sync_db, None)