mirror of
https://github.com/lutris/lutris
synced 2024-10-02 22:14:23 +00:00
Merge branch 'master' of https://github.com/lutris/lutris into next
This commit is contained in:
commit
c844573138
|
@ -64,14 +64,10 @@ class LutrisWindow(object):
|
|||
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'
|
||||
filter_installed = filter_installed_setting == 'true'
|
||||
show_installed_games_menuitem = self.builder.get_object(
|
||||
'filter_installed'
|
||||
)
|
||||
show_installed_games_menuitem.set_active(filter_installed)
|
||||
filter_installed = \
|
||||
settings.read_setting('filter_installed') == 'true'
|
||||
self.sidebar_visible = \
|
||||
settings.read_setting('sidebar_visible') in ['true', None]
|
||||
|
||||
# Load view
|
||||
logger.debug("Loading view")
|
||||
|
@ -82,10 +78,16 @@ class LutrisWindow(object):
|
|||
self.main_box = self.builder.get_object('main_box')
|
||||
self.splash_box = self.builder.get_object('splash_box')
|
||||
# View menu
|
||||
installed_games_only_menuitem =\
|
||||
self.builder.get_object('filter_installed')
|
||||
installed_games_only_menuitem.set_active(filter_installed)
|
||||
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')
|
||||
sidebar_menuitem = self.builder.get_object('sidebar_menuitem')
|
||||
sidebar_menuitem.set_active(self.sidebar_visible)
|
||||
|
||||
# View buttons
|
||||
self.grid_view_btn = self.builder.get_object('switch_grid_view_btn')
|
||||
self.grid_view_btn.set_active(view_type == 'grid')
|
||||
|
@ -145,6 +147,8 @@ class LutrisWindow(object):
|
|||
self.window = self.builder.get_object("window")
|
||||
self.window.resize_to_geometry(width, height)
|
||||
self.window.show_all()
|
||||
if not self.sidebar_visible:
|
||||
self.sidebar_viewport.hide()
|
||||
self.builder.connect_signals(self)
|
||||
self.connect_signals()
|
||||
|
||||
|
@ -187,7 +191,6 @@ class LutrisWindow(object):
|
|||
self.view.connect("game-activated", self.on_game_run)
|
||||
self.view.connect("game-selected", self.game_selection_changed)
|
||||
self.window.connect("configure-event", self.on_resize)
|
||||
self.window.connect("key-press-event", self.on_keypress)
|
||||
|
||||
def get_view_type(self):
|
||||
view_type = settings.read_setting('view_type')
|
||||
|
@ -215,7 +218,8 @@ class LutrisWindow(object):
|
|||
else:
|
||||
self.splash_box.hide()
|
||||
self.games_scrollwindow.show()
|
||||
self.sidebar_viewport.show()
|
||||
if self.sidebar_visible:
|
||||
self.sidebar_viewport.show()
|
||||
|
||||
def switch_view(self, view_type):
|
||||
"""Switch between grid view and list view."""
|
||||
|
@ -454,10 +458,6 @@ class LutrisWindow(object):
|
|||
display.set_cursor('wait', self.window.get_window())
|
||||
InstallerDialog(game_ref, self)
|
||||
|
||||
def on_keypress(self, widget, event):
|
||||
if event.keyval == Gdk.KEY_F9:
|
||||
self.toggle_sidebar()
|
||||
|
||||
def game_selection_changed(self, _widget):
|
||||
# Emulate double click to workaround GTK bug #484640
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=484640
|
||||
|
@ -612,11 +612,14 @@ class LutrisWindow(object):
|
|||
game = Game(self.view.selected_game)
|
||||
shortcuts.remove_launcher(game.slug, game.id, desktop=True)
|
||||
|
||||
def toggle_sidebar(self):
|
||||
if self.sidebar_viewport.is_visible():
|
||||
def toggle_sidebar(self, _widget=None):
|
||||
if self.sidebar_visible:
|
||||
self.sidebar_viewport.hide()
|
||||
settings.write_setting('sidebar_visible', 'false')
|
||||
else:
|
||||
self.sidebar_viewport.show()
|
||||
settings.write_setting('sidebar_visible', 'true')
|
||||
self.sidebar_visible = not self.sidebar_visible
|
||||
|
||||
def on_sidebar_changed(self, widget):
|
||||
self.view.game_store.filter_runner = widget.get_selected_runner()
|
||||
|
|
|
@ -580,13 +580,16 @@ class ScriptInterpreter(Commands):
|
|||
self.target_path = self._get_steam_game_path()
|
||||
|
||||
def _get_steam_runner(self, runner_class=None):
|
||||
if not runner_class:
|
||||
if runner_class is None:
|
||||
if self.runner == 'steam':
|
||||
runner_class = steam.steam
|
||||
elif self.runner == 'winesteam':
|
||||
runner_class = winesteam.winesteam
|
||||
else:
|
||||
raise ScriptingError('Missing Steam platform')
|
||||
elif self.steam_data['is_game_files']:
|
||||
if self.steam_data['platform'] == 'windows':
|
||||
runner_class = winesteam.winesteam
|
||||
else:
|
||||
runner_class = steam.steam
|
||||
return runner_class()
|
||||
|
||||
def _monitor_steam_game_install(self):
|
||||
|
|
|
@ -191,6 +191,18 @@ class steam(Runner):
|
|||
if not check_shutdown(winesteam.is_running, 5):
|
||||
logger.error("Failed to shut down Wine Steam :(")
|
||||
return False
|
||||
|
||||
primusrun = self.system_config.get('primusrun')
|
||||
if primusrun and system.find_executable('primusrun'):
|
||||
if is_running():
|
||||
logger.info("Waiting for Steam shutdown...")
|
||||
shutdown()
|
||||
if not check_shutdown(is_running):
|
||||
logger.info("Steam does not shut down, killing it...")
|
||||
kill()
|
||||
if not check_shutdown(is_running, 5):
|
||||
logger.error("Failed to shut down Steam :(")
|
||||
return False
|
||||
return True
|
||||
|
||||
def play(self):
|
||||
|
|
|
@ -2,6 +2,7 @@ import os
|
|||
import time
|
||||
from lutris.util.log import logger
|
||||
from collections import OrderedDict
|
||||
from lutris.util.system import fix_path_case
|
||||
|
||||
|
||||
APP_STATE_FLAGS = [
|
||||
|
@ -121,8 +122,9 @@ def get_path_from_appmanifest(steamapps_path, appid):
|
|||
if not config:
|
||||
return
|
||||
installdir = config.get('AppState', {}).get('installdir')
|
||||
install_path = os.path.join(steamapps_path, "common", installdir)
|
||||
if installdir and os.path.exists(install_path):
|
||||
install_path = fix_path_case(os.path.join(steamapps_path, "common",
|
||||
installdir))
|
||||
if install_path and os.path.exists(install_path):
|
||||
return install_path
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.18.3 -->
|
||||
<!-- Generated with glade 3.16.1 -->
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.10"/>
|
||||
<!-- interface-local-resource-path ../media -->
|
||||
|
@ -208,6 +208,22 @@
|
|||
<object class="GtkMenu" id="view_menu">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkCheckMenuItem" id="filter_installed">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">I_nstalled games only</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="toggled" handler="on_show_installed_games_toggled" swapped="no"/>
|
||||
<accelerator key="h" signal="activate" modifiers="GDK_CONTROL_MASK"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSeparatorMenuItem" id="separatormenuitem3">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioMenuItem" id="gridview_menuitem">
|
||||
<property name="visible">True</property>
|
||||
|
@ -292,12 +308,14 @@
|
|||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkCheckMenuItem" id="filter_installed">
|
||||
<object class="GtkCheckMenuItem" id="sidebar_menuitem">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">I_nstalled games only</property>
|
||||
<property name="label" translatable="yes">_Side panel</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="toggled" handler="on_show_installed_games_toggled" swapped="no"/>
|
||||
<property name="active">True</property>
|
||||
<signal name="toggled" handler="toggle_sidebar" swapped="no"/>
|
||||
<accelerator key="F9" signal="activate"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
@ -771,11 +789,11 @@
|
|||
<object class="GtkLabel" id="status_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="xpad">5</property>
|
||||
<property name="ypad">5</property>
|
||||
<property name="label" translatable="yes">Lutris</property>
|
||||
<property name="lines">1</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
|
@ -787,8 +805,8 @@
|
|||
<object class="GtkLabel" id="connection_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">label</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">label</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
|
|
Loading…
Reference in a new issue