mirror of
https://github.com/lutris/lutris
synced 2024-10-07 08:19:07 +00:00
Split config dialog classes in modules
This commit is contained in:
parent
1186e51caf
commit
39645c0a4a
2
lutris/gui/config/__init__.py
Normal file
2
lutris/gui/config/__init__.py
Normal file
|
@ -0,0 +1,2 @@
|
|||
DIALOG_WIDTH = 780
|
||||
DIALOG_HEIGHT = 560
|
39
lutris/gui/config/add_game.py
Normal file
39
lutris/gui/config/add_game.py
Normal file
|
@ -0,0 +1,39 @@
|
|||
from lutris.config import LutrisConfig, TEMP_CONFIG, make_game_config_id
|
||||
from lutris.gui.widgets.dialogs import Dialog
|
||||
from lutris.gui.config.common import GameDialogCommon
|
||||
from lutris.gui.config import DIALOG_WIDTH, DIALOG_HEIGHT
|
||||
|
||||
|
||||
class AddGameDialog(Dialog, GameDialogCommon):
|
||||
"""Add game dialog class."""
|
||||
|
||||
def __init__(self, parent, game=None, runner=None, callback=None):
|
||||
super().__init__("Add a new game", parent=parent)
|
||||
self.game = game
|
||||
self.saved = False
|
||||
|
||||
self.set_default_size(DIALOG_WIDTH, DIALOG_HEIGHT)
|
||||
if game:
|
||||
self.runner_name = game.runner_name
|
||||
self.slug = game.slug
|
||||
else:
|
||||
self.runner_name = runner
|
||||
self.slug = None
|
||||
|
||||
self.game_config_id = self.get_config_id()
|
||||
self.lutris_config = LutrisConfig(
|
||||
runner_slug=self.runner_name,
|
||||
game_config_id=self.game_config_id,
|
||||
level="game",
|
||||
)
|
||||
self.build_notebook()
|
||||
self.build_tabs("game")
|
||||
self.build_action_area(self.on_save, callback)
|
||||
self.name_entry.grab_focus()
|
||||
self.show_all()
|
||||
|
||||
def get_config_id(self):
|
||||
"""For new games, create a special config type that won't be read
|
||||
from disk.
|
||||
"""
|
||||
return make_game_config_id(self.slug) if self.slug else TEMP_CONFIG
|
|
@ -1,14 +1,13 @@
|
|||
"""Shared config dialog stuff"""
|
||||
import os
|
||||
from gi.repository import Gtk, Pango
|
||||
|
||||
from lutris import runners, settings
|
||||
from lutris.config import LutrisConfig, TEMP_CONFIG, make_game_config_id
|
||||
from lutris.game import Game
|
||||
from lutris import gui
|
||||
from lutris.config import LutrisConfig, TEMP_CONFIG
|
||||
from lutris.gui.widgets.common import VBox, SlugEntry, NumberEntry, Label
|
||||
from lutris.gui.config_boxes import GameBox, RunnerBox, SystemBox
|
||||
from lutris.gui.dialogs import ErrorDialog
|
||||
from lutris.gui.widgets.common import VBox, SlugEntry, NumberEntry, Label
|
||||
from lutris.gui.widgets.dialogs import Dialog
|
||||
from lutris import runners, settings
|
||||
from lutris import gui
|
||||
from lutris.gui.widgets.utils import (
|
||||
get_pixbuf_for_game,
|
||||
get_pixbuf,
|
||||
|
@ -18,13 +17,18 @@ from lutris.gui.widgets.utils import (
|
|||
from lutris.util.strings import slugify
|
||||
from lutris.util import datapath, resources
|
||||
|
||||
DIALOG_WIDTH = 780
|
||||
DIALOG_HEIGHT = 560
|
||||
|
||||
|
||||
# pylint: disable=too-many-instance-attributes,missing-docstring
|
||||
class GameDialogCommon:
|
||||
"""Mixin for config dialogs"""
|
||||
no_runner_label = "Select a runner in the Game Info tab"
|
||||
|
||||
def __init__(self):
|
||||
self.notebook = None
|
||||
self.vbox = None
|
||||
self.name_entry = None
|
||||
self.runner_box = None
|
||||
|
||||
@staticmethod
|
||||
def build_scrolled_window(widget):
|
||||
scrolled_window = Gtk.ScrolledWindow()
|
||||
|
@ -456,101 +460,3 @@ class GameDialogCommon:
|
|||
raise ValueError("Unsupported image type %s", image_type)
|
||||
os.remove(dest_path)
|
||||
self._set_image(image_type)
|
||||
|
||||
|
||||
class AddGameDialog(Dialog, GameDialogCommon):
|
||||
"""Add game dialog class."""
|
||||
|
||||
def __init__(self, parent, game=None, runner=None, callback=None):
|
||||
super().__init__("Add a new game", parent=parent)
|
||||
self.game = game
|
||||
self.saved = False
|
||||
|
||||
self.set_default_size(DIALOG_WIDTH, DIALOG_HEIGHT)
|
||||
if game:
|
||||
self.runner_name = game.runner_name
|
||||
self.slug = game.slug
|
||||
else:
|
||||
self.runner_name = runner
|
||||
self.slug = None
|
||||
|
||||
self.game_config_id = self.get_config_id()
|
||||
self.lutris_config = LutrisConfig(
|
||||
runner_slug=self.runner_name,
|
||||
game_config_id=self.game_config_id,
|
||||
level="game",
|
||||
)
|
||||
self.build_notebook()
|
||||
self.build_tabs("game")
|
||||
self.build_action_area(self.on_save, callback)
|
||||
self.name_entry.grab_focus()
|
||||
self.show_all()
|
||||
|
||||
def get_config_id(self):
|
||||
"""For new games, create a special config type that won't be read
|
||||
from disk.
|
||||
"""
|
||||
return make_game_config_id(self.slug) if self.slug else TEMP_CONFIG
|
||||
|
||||
|
||||
class EditGameConfigDialog(Dialog, GameDialogCommon):
|
||||
"""Game config edit dialog."""
|
||||
|
||||
def __init__(self, parent, game, callback):
|
||||
super().__init__("Configure %s" % game.name, parent=parent)
|
||||
self.game = game
|
||||
self.lutris_config = game.config
|
||||
self.game_config_id = game.config.game_config_id
|
||||
self.slug = game.slug
|
||||
self.runner_name = game.runner_name
|
||||
|
||||
self.set_default_size(DIALOG_WIDTH, DIALOG_HEIGHT)
|
||||
|
||||
self.build_notebook()
|
||||
self.build_tabs("game")
|
||||
self.build_action_area(self.on_save, callback)
|
||||
self.show_all()
|
||||
|
||||
|
||||
class RunnerConfigDialog(Dialog, GameDialogCommon):
|
||||
"""Runner config edit dialog."""
|
||||
|
||||
def __init__(self, runner, parent=None):
|
||||
self.runner_name = runner.__class__.__name__
|
||||
super().__init__("Configure %s" % runner.human_name, parent=parent)
|
||||
|
||||
self.game = None
|
||||
self.saved = False
|
||||
self.lutris_config = LutrisConfig(runner_slug=self.runner_name)
|
||||
|
||||
self.set_default_size(DIALOG_WIDTH, DIALOG_HEIGHT)
|
||||
|
||||
self.build_notebook()
|
||||
self.build_tabs("runner")
|
||||
self.build_action_area(self.on_save)
|
||||
self.show_all()
|
||||
|
||||
def on_save(self, wigdet, data=None):
|
||||
self.lutris_config.save()
|
||||
self.destroy()
|
||||
|
||||
|
||||
class SystemConfigDialog(Dialog, GameDialogCommon):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__("System preferences", parent=parent)
|
||||
|
||||
self.game = None
|
||||
self.runner_name = None
|
||||
self.lutris_config = LutrisConfig()
|
||||
|
||||
self.set_default_size(DIALOG_WIDTH, DIALOG_HEIGHT)
|
||||
|
||||
self.system_box = SystemBox(self.lutris_config)
|
||||
self.system_sw = self.build_scrolled_window(self.system_box)
|
||||
self.vbox.pack_start(self.system_sw, True, True, 0)
|
||||
self.build_action_area(self.on_save)
|
||||
self.show_all()
|
||||
|
||||
def on_save(self, widget):
|
||||
self.lutris_config.save()
|
||||
self.destroy()
|
22
lutris/gui/config/edit_game.py
Normal file
22
lutris/gui/config/edit_game.py
Normal file
|
@ -0,0 +1,22 @@
|
|||
from lutris.gui.widgets.dialogs import Dialog
|
||||
from lutris.gui.config.common import GameDialogCommon
|
||||
from lutris.gui.config import DIALOG_WIDTH, DIALOG_HEIGHT
|
||||
|
||||
|
||||
class EditGameConfigDialog(Dialog, GameDialogCommon):
|
||||
"""Game config edit dialog."""
|
||||
|
||||
def __init__(self, parent, game, callback):
|
||||
super().__init__("Configure %s" % game.name, parent=parent)
|
||||
self.game = game
|
||||
self.lutris_config = game.config
|
||||
self.game_config_id = game.config.game_config_id
|
||||
self.slug = game.slug
|
||||
self.runner_name = game.runner_name
|
||||
|
||||
self.set_default_size(DIALOG_WIDTH, DIALOG_HEIGHT)
|
||||
|
||||
self.build_notebook()
|
||||
self.build_tabs("game")
|
||||
self.build_action_area(self.on_save, callback)
|
||||
self.show_all()
|
0
lutris/gui/config/game.py
Normal file
0
lutris/gui/config/game.py
Normal file
27
lutris/gui/config/runner.py
Normal file
27
lutris/gui/config/runner.py
Normal file
|
@ -0,0 +1,27 @@
|
|||
from lutris.config import LutrisConfig
|
||||
from lutris.gui.widgets.dialogs import Dialog
|
||||
from lutris.gui.config.common import GameDialogCommon
|
||||
from lutris.gui.config import DIALOG_WIDTH, DIALOG_HEIGHT
|
||||
|
||||
|
||||
class RunnerConfigDialog(Dialog, GameDialogCommon):
|
||||
"""Runner config edit dialog."""
|
||||
|
||||
def __init__(self, runner, parent=None):
|
||||
self.runner_name = runner.__class__.__name__
|
||||
super().__init__("Configure %s" % runner.human_name, parent=parent)
|
||||
|
||||
self.game = None
|
||||
self.saved = False
|
||||
self.lutris_config = LutrisConfig(runner_slug=self.runner_name)
|
||||
|
||||
self.set_default_size(DIALOG_WIDTH, DIALOG_HEIGHT)
|
||||
|
||||
self.build_notebook()
|
||||
self.build_tabs("runner")
|
||||
self.build_action_area(self.on_save)
|
||||
self.show_all()
|
||||
|
||||
def on_save(self, wigdet, data=None):
|
||||
self.lutris_config.save()
|
||||
self.destroy()
|
26
lutris/gui/config/system.py
Normal file
26
lutris/gui/config/system.py
Normal file
|
@ -0,0 +1,26 @@
|
|||
from lutris.config import LutrisConfig
|
||||
from lutris.gui.widgets.dialogs import Dialog
|
||||
from lutris.gui.config.common import GameDialogCommon
|
||||
from lutris.gui.config_boxes import SystemBox
|
||||
from lutris.gui.config import DIALOG_WIDTH, DIALOG_HEIGHT
|
||||
|
||||
|
||||
class SystemConfigDialog(Dialog, GameDialogCommon):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__("System preferences", parent=parent)
|
||||
|
||||
self.game = None
|
||||
self.runner_name = None
|
||||
self.lutris_config = LutrisConfig()
|
||||
|
||||
self.set_default_size(DIALOG_WIDTH, DIALOG_HEIGHT)
|
||||
|
||||
self.system_box = SystemBox(self.lutris_config)
|
||||
self.system_sw = self.build_scrolled_window(self.system_box)
|
||||
self.vbox.pack_start(self.system_sw, True, True, 0)
|
||||
self.build_action_area(self.on_save)
|
||||
self.show_all()
|
||||
|
||||
def on_save(self, widget):
|
||||
self.lutris_config.save()
|
||||
self.destroy()
|
|
@ -9,7 +9,7 @@ from lutris import api, pga, settings
|
|||
from lutris.installer import interpreter
|
||||
from lutris.installer.errors import ScriptingError
|
||||
from lutris.game import Game
|
||||
from lutris.gui.config_dialogs import AddGameDialog
|
||||
from lutris.gui.config.add_game import AddGameDialog
|
||||
from lutris.gui.dialogs import NoInstallerDialog, DirectoryDialog, InstallerSourceDialog
|
||||
from lutris.gui.widgets.download_progress import DownloadProgressBox
|
||||
from lutris.gui.widgets.common import FileChooserEntry
|
||||
|
@ -28,12 +28,12 @@ class InstallerWindow(Gtk.ApplicationWindow):
|
|||
download_progress = None
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
game_slug=None,
|
||||
installer_file=None,
|
||||
revision=None,
|
||||
parent=None,
|
||||
application=None,
|
||||
self,
|
||||
game_slug=None,
|
||||
installer_file=None,
|
||||
revision=None,
|
||||
parent=None,
|
||||
application=None,
|
||||
):
|
||||
Gtk.ApplicationWindow.__init__(self, application=application)
|
||||
self.set_default_icon_name("lutris")
|
||||
|
|
|
@ -37,11 +37,9 @@ from lutris.gui.sync import SyncServiceWindow
|
|||
from lutris.gui.runnersdialog import RunnersDialog
|
||||
from lutris.gui.installerwindow import InstallerWindow
|
||||
from lutris.gui.uninstallgamedialog import UninstallGameDialog
|
||||
from lutris.gui.config_dialogs import (
|
||||
AddGameDialog,
|
||||
EditGameConfigDialog,
|
||||
SystemConfigDialog,
|
||||
)
|
||||
from lutris.gui.config.add_game import AddGameDialog
|
||||
from lutris.gui.config.edit_game import EditGameConfigDialog
|
||||
from lutris.gui.config.system import SystemConfigDialog
|
||||
from lutris.gui.gameviews import GameListView, GameGridView, ContextualMenu, GameStore
|
||||
from lutris.gui.widgets.utils import IMAGE_SIZES
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ from lutris import settings
|
|||
from lutris.util.log import logger
|
||||
from lutris.gui.util import open_uri
|
||||
from lutris.gui.dialogs import ErrorDialog, GtkBuilderDialog, DownloadDialog
|
||||
from lutris.gui.config_dialogs import RunnerConfigDialog
|
||||
from lutris.gui.config.runner import RunnerConfigDialog
|
||||
from lutris.gui.runnerinstalldialog import RunnerInstallDialog
|
||||
from lutris.gui.widgets.utils import get_icon, ICON_SIZE, get_builder_from_file
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ from lutris import platforms
|
|||
from lutris import pga
|
||||
from lutris.util import datapath
|
||||
from lutris.gui.runnerinstalldialog import RunnerInstallDialog
|
||||
from lutris.gui.config_dialogs import RunnerConfigDialog
|
||||
from lutris.gui.config.runner import RunnerConfigDialog
|
||||
from lutris.gui.runnersdialog import RunnersDialog
|
||||
|
||||
TYPE = 0
|
||||
|
|
19
setup.py
19
setup.py
|
@ -25,10 +25,21 @@ setup(
|
|||
license='GPL-3',
|
||||
author='Mathieu Comandon',
|
||||
author_email='strider@strycore.com',
|
||||
packages=['lutris', 'lutris.gui', 'lutris.gui.widgets', 'lutris.util',
|
||||
'lutris.util.steam', 'lutris.util.wine', 'lutris.runners',
|
||||
'lutris.runners.commands', 'lutris.services', 'lutris.installer',
|
||||
'lutris.migrations', 'lutris.vendor'],
|
||||
packages=[
|
||||
'lutris',
|
||||
'lutris.gui',
|
||||
'lutris.gui.widgets',
|
||||
'lutris.gui.config',
|
||||
'lutris.installer',
|
||||
'lutris.migrations',
|
||||
'lutris.runners',
|
||||
'lutris.runners.commands',
|
||||
'lutris.services',
|
||||
'lutris.util',
|
||||
'lutris.util.steam',
|
||||
'lutris.util.wine',
|
||||
'lutris.vendor'
|
||||
],
|
||||
scripts=['bin/lutris'],
|
||||
data_files=data_files,
|
||||
zip_safe=False,
|
||||
|
|
|
@ -3,12 +3,13 @@ import gi
|
|||
|
||||
gi.require_version('Gtk', '3.0')
|
||||
|
||||
from gi.repository import Gio, Gtk
|
||||
from gi.repository import Gtk
|
||||
from lutris.game import Game
|
||||
from lutris.config import check_config
|
||||
# from lutris import settings
|
||||
from lutris import pga
|
||||
from lutris.gui import config_dialogs
|
||||
from lutris.gui.config.common import GameDialogCommon
|
||||
from lutris.gui.config.add_game import AddGameDialog
|
||||
from lutris.gui.application import Application
|
||||
from unittest import TestCase
|
||||
from lutris import runners
|
||||
|
@ -18,7 +19,7 @@ TEST_PGA_PATH = os.path.join(os.path.dirname(__file__), 'pga.db')
|
|||
|
||||
class TestGameDialogCommon(TestCase):
|
||||
def test_get_runner_liststore(self):
|
||||
dlg = config_dialogs.GameDialogCommon()
|
||||
dlg = GameDialogCommon()
|
||||
list_store = dlg._get_runner_liststore()
|
||||
self.assertTrue(
|
||||
list_store[1][0].startswith(runners.get_installed()[0].human_name)
|
||||
|
@ -31,7 +32,7 @@ class TestGameDialog(TestCase):
|
|||
check_config()
|
||||
lutris_application = Application()
|
||||
lutris_window = lutris_application.window
|
||||
self.dlg = config_dialogs.AddGameDialog(lutris_window)
|
||||
self.dlg = AddGameDialog(lutris_window)
|
||||
|
||||
def get_notebook(self):
|
||||
return self.dlg.vbox.get_children()[0]
|
||||
|
|
Loading…
Reference in a new issue