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