Display slug in game info

This commit is contained in:
Mathieu Comandon 2014-10-12 20:07:35 +02:00
parent ade05ff056
commit ad1868d5ea
5 changed files with 50 additions and 36 deletions

2
.gitignore vendored
View file

@ -11,5 +11,5 @@ tags
PYSMELLTAGS PYSMELLTAGS
lutris.e4p lutris.e4p
.coverage .coverage
tests/fixtures/pga.db pga.db
tests/coverage/* tests/coverage/*

View file

@ -1,6 +1,7 @@
"""Configuration dialogs""" """Configuration dialogs"""
from gi.repository import Gtk, Pango from gi.repository import Gtk, Pango
from lutris.util.log import logger
from lutris.config import LutrisConfig from lutris.config import LutrisConfig
from lutris.game import Game from lutris.game import Game
from lutris import pga from lutris import pga
@ -28,16 +29,13 @@ class GameDialogCommon(object):
) )
return runner_liststore return runner_liststore
def get_name_entry(self, name=None): def build_entry_box(self, entry, label_text=None):
"""Build a text field containing the given name.""" box = Gtk.HBox()
name_box = Gtk.HBox() if label_text:
name_label = Gtk.Label(label="Name") label = Gtk.Label(label=label_text)
name_box.pack_start(name_label, False, False, 20) box.pack_start(label, False, False, 20)
self.name_entry = Gtk.Entry() box.pack_start(entry, True, True, 20)
if name: return box
self.name_entry.set_text(name)
name_box.pack_start(self.name_entry, True, True, 20)
return name_box
def get_runner_dropdown(self): def get_runner_dropdown(self):
runner_liststore = self.get_runner_liststore() runner_liststore = self.get_runner_liststore()
@ -74,10 +72,18 @@ class GameDialogCommon(object):
def build_info_tab(self): def build_info_tab(self):
info_box = VBox() info_box = VBox()
game_name = self.game.name if self.game else None self.name_entry = Gtk.Entry()
name_box = self.get_name_entry(game_name) if self.game:
self.name_entry.set_text(self.game.name)
name_box = self.build_entry_box(self.name_entry, "Name")
info_box.pack_start(name_box, False, False, 5) info_box.pack_start(name_box, False, False, 5)
self.slug_entry = Gtk.Entry()
if self.game:
self.slug_entry.set_text(self.game.slug)
slug_box = self.build_entry_box(self.slug_entry, "Identifier")
info_box.pack_start(slug_box, False, False, 5)
runner_dropdown = self.get_runner_dropdown() runner_dropdown = self.get_runner_dropdown()
runner_box = Gtk.HBox() runner_box = Gtk.HBox()
runner_box.pack_start(runner_dropdown, False, False, 20) runner_box.pack_start(runner_dropdown, False, False, 20)
@ -161,19 +167,25 @@ class GameDialogCommon(object):
def on_save(self, _button): def on_save(self, _button):
"""Save game info and destroy widget. Return True if success.""" """Save game info and destroy widget. Return True if success."""
name = self.name_entry.get_text() name = self.name_entry.get_text()
if self.runner_name and name: if not self.runner_name:
self.lutris_config.config_type = 'game' logger.error("Missing runner")
if not self.lutris_config.game: return False
self.lutris_config.game = slugify(name) if not name:
self.lutris_config.save() logger.error("Missing game name")
self.slug = self.lutris_config.game return False
runner_class = lutris.runners.import_runner(self.runner_name) self.lutris_config.config_type = 'game'
runner = runner_class(self.lutris_config) if not self.lutris_config.game:
pga.add_or_update(name, self.runner_name, slug=self.slug, self.lutris_config.game = slugify(name)
directory=runner.game_path, self.lutris_config.save()
installed=1) self.slug = self.lutris_config.game
self.destroy() runner_class = lutris.runners.import_runner(self.runner_name)
return True runner = runner_class(self.lutris_config)
pga.add_or_update(name, self.runner_name, slug=self.slug,
directory=runner.game_path,
installed=1)
self.destroy()
logger.debug("Saved %s", name)
return True
class AddGameDialog(Dialog, GameDialogCommon): class AddGameDialog(Dialog, GameDialogCommon):

View file

@ -532,7 +532,7 @@ class Label(Gtk.Label):
class VBox(Gtk.VBox): class VBox(Gtk.VBox):
def __init__(self): def __init__(self):
GObject.GObject.__init__(self) GObject.GObject.__init__(self)
self.set_margin_top(30) self.set_margin_top(20)
class Dialog(Gtk.Dialog): class Dialog(Gtk.Dialog):
@ -543,3 +543,4 @@ class Dialog(Gtk.Dialog):
self.set_title(title) self.set_title(title)
if parent: if parent:
self.set_transient_for(parent) self.set_transient_for(parent)
self.set_destroy_with_parent(True)

View file

@ -13,8 +13,10 @@ def get():
data_path = os.path.normpath(os.path.join(sys.path[0], 'data')) data_path = os.path.normpath(os.path.join(sys.path[0], 'data'))
else: else:
import lutris import lutris
data_path = os.path.dirname(lutris.__file__) lutris_module = lutris.__file__
data_path = os.path.join(
os.path.dirname(os.path.dirname(lutris_module)), 'data'
)
if not os.path.exists(data_path): if not os.path.exists(data_path):
print("data_path can't be found at : %s" % data_path) raise IOError("data_path can't be found at : %s" % data_path)
exit()
return data_path return data_path

View file

@ -5,6 +5,7 @@ from lutris.config import check_config
# from lutris import settings # from lutris import settings
# from lutris import pga # from lutris import pga
from lutris.gui import config_dialogs from lutris.gui import config_dialogs
from lutris.gui.lutriswindow import LutrisWindow
from unittest import TestCase from unittest import TestCase
from lutris import runners from lutris import runners
@ -23,7 +24,8 @@ class TestGameDialogCommon(TestCase):
class TestGameDialog(TestCase): class TestGameDialog(TestCase):
def setUp(self): def setUp(self):
check_config() check_config()
self.dlg = config_dialogs.AddGameDialog(None) lutris_window = LutrisWindow()
self.dlg = config_dialogs.AddGameDialog(lutris_window)
def get_notebook(self): def get_notebook(self):
return self.dlg.vbox.get_children()[0] return self.dlg.vbox.get_children()[0]
@ -36,9 +38,6 @@ class TestGameDialog(TestCase):
def get_game_box(self): def get_game_box(self):
return self.get_viewport(1) return self.get_viewport(1)
def get_runner_dropdown(self):
return self.get_viewport(0).get_children()[1].get_children()[0]
def get_buttons(self): def get_buttons(self):
return self.dlg.vbox.get_children()[1] return self.dlg.vbox.get_children()[1]
@ -53,7 +52,7 @@ class TestGameDialog(TestCase):
self.assertEqual(buttons[0].get_label(), 'Cancel') self.assertEqual(buttons[0].get_label(), 'Cancel')
self.assertEqual(buttons[1].get_label(), 'Add') self.assertEqual(buttons[1].get_label(), 'Add')
self.get_runner_dropdown().set_active(1) self.dlg.runner_dropdown.set_active(1)
self.assertEqual(self.dlg.lutris_config.runner, runners.__all__[0]) self.assertEqual(self.dlg.lutris_config.runner, runners.__all__[0])
game_box = self.get_game_box() game_box = self.get_game_box()
self.assertEqual(game_box.runner_name, runners.__all__[0]) self.assertEqual(game_box.runner_name, runners.__all__[0])
@ -64,7 +63,7 @@ class TestGameDialog(TestCase):
def test_can_add_game(self): def test_can_add_game(self):
name_entry = self.dlg.name_entry name_entry = self.dlg.name_entry
name_entry.set_text("Test game") name_entry.set_text("Test game")
self.get_runner_dropdown().set_active(1) self.dlg.runner_dropdown.set_active(1)
game_box = self.get_game_box() game_box = self.get_game_box()
exe_box = game_box.get_children()[0].get_children()[0] exe_box = game_box.get_children()[0].get_children()[0]