refactored some stuff

This commit is contained in:
Mathieu Comandon 2010-08-31 02:44:09 +02:00
parent a8f19d8ee7
commit a5a01f85db
27 changed files with 115 additions and 2594 deletions

11
README
View file

@ -1,8 +1,11 @@
Installation
------------
Read the INSTALL file
Lutris
------
Lutris is a gaming platform for GNU/Linux. It's goal is to make
gaming on Linux as easy as possible by taking care of installing
and setting up the game for the user. The only thing you have to
do is play the game. It aims to support every game that is playable
on Linux.
Configuration files

View file

@ -40,25 +40,27 @@ else:
fullPath = os.getcwd()
sys.path.insert(0, os.path.dirname(fullPath))
from lutris.coverflow.coverflow import coverflow
from lutris.gui.dictionary_grid import DictionaryGrid
import lutris.runners
import lutris.constants
from lutris.AboutLutrisDialog import AboutLutrisDialog , NewAboutLutrisDialog
from lutris.game import LutrisGame
from lutris.config import LutrisConfig
from lutris.gui.ftpdialog import FtpDialog
from lutris.lutrisconfig import getdatapath
from lutris.installer import Installer
from lutris.runners_dialog import RunnersDialog
from lutris.add_game_dialog import AddGameDialog
from lutris.mount_iso_dialog import MountIsoDialog
from lutris.installer_dialog import InstallerDialog
from lutris.desktop_control import LutrisDesktopControl
from lutris.system_config_dialog import SystemConfigDialog
from lutris.gui.google_image_dialog import GoogleImageDialog
from lutris.gui.edit_game_config_dialog import EditGameConfigDialog
from lutris.gui.dictionary_grid import DictionaryGrid
from lutris.gui.ftpdialog import FtpDialog
from lutris.gui.runnersdialog import RunnersDialog
from lutris.gui.addgamedialog import AddGameDialog
from lutris.gui.mountisodialog import MountIsoDialog
from lutris.gui.installerdialog import InstallerDialog
from lutris.gui.systemconfigdialog import SystemConfigDialog
from lutris.gui.googleimagedialog import GoogleImageDialog
from lutris.gui.editgameconfigdialog import EditGameConfigDialog
from lutris.gui.aboutdialog import AboutLutrisDialog , NewAboutLutrisDialog
from lutris.coverflow.coverflow import coverflow
class LutrisWindow(gtk.Window):
""" Main Lutris window """
@ -87,7 +89,7 @@ class LutrisWindow(gtk.Window):
self.game_cover_image.set_from_file("data/media/background.png")
self.set_title("Lutris")
gtk.window_set_default_icon_name("softwarecenter")
#Load Lutris configuration
self.lutrisConfig = LutrisConfig()
@ -341,6 +343,9 @@ def new_lutris_window():
builder.add_from_file(ui_filename)
window = builder.get_object("lutris_window")
window.finish_initializing(builder)
icon_file = os.path.join(getdatapath(), 'media', 'logo.png')
window.set_icon_from_file(icon_file)
return window
if __name__ == "__main__":

File diff suppressed because it is too large Load diff

8
debian/control vendored
View file

@ -20,5 +20,9 @@ Depends: ${misc:Depends},
python-apt,
python-gtk2,
python-yaml
Description: UI for managing games
UNKNOWN
Description: Install and play any video game easily
Lutris is a gaming platform for GNU/Linux. It's goal is to make
gaming on Linux as easy as possible by taking care of installing
and setting up the game for the user. The only thing you have to
do is play the game. It aims to support every game that is playable
on Linux.

2
debian/rules vendored
View file

@ -1,6 +1,6 @@
#!/usr/bin/make -f
DEB_PYTHON_SYSTEM := pycentral
DEB_PYTHON_SYSTEM=pysupport
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/python-distutils.mk

View file

@ -3,6 +3,6 @@ Name=Lutris
Comment=Lutris application
Categories=GNOME;Games;
Exec=lutris
Icon=/usr/share/lutris/media/lutris.svg
Icon=/usr/local/share/lutris/media/lutris.svg
Terminal=false
Type=Application

View file

@ -74,7 +74,9 @@ class LutrisConfig():
try:
self.game_config = yaml.load(file(game_config_full_path, 'r').read())
self.runner = self.game_config["runner"]
except yaml.scanner.ScannerError:
except yaml.scanner.ScannerError :
logging.debug("error parsing config file %s" % game_config_full_path)
except yaml.parser.ParserError:
logging.debug("error parsing config file %s" % game_config_full_path)
except KeyError:
logging.debug("Runner key is mandatory !")

View file

@ -24,9 +24,10 @@ import logging
import lutris.runners
from lutris.config import LutrisConfig
from lutris.game_config_vbox import GameConfigVBox
from lutris.runner_config_vbox import RunnerConfigVBox
from lutris.system_config_vbox import SystemConfigVBox
from lutris.gui.gameconfigvbox import GameConfigVBox
from lutris.gui.runnerconfigvbox import RunnerConfigVBox
from lutris.gui.systemconfigvbox import SystemConfigVBox
class AddGameDialog(gtk.Dialog):
def __init__(self, parent):

View file

@ -22,9 +22,9 @@
import logging
import gtk
from lutris.config import LutrisConfig
from lutris.game_config_vbox import GameConfigVBox
from lutris.runner_config_vbox import RunnerConfigVBox
from lutris.system_config_vbox import SystemConfigVBox
from lutris.gui.gameconfigvbox import GameConfigVBox
from lutris.gui.runnerconfigvbox import RunnerConfigVBox
from lutris.gui.systemconfigvbox import SystemConfigVBox
class EditGameConfigDialog(gtk.Dialog):
def __init__(self,parent,game):

View file

@ -21,7 +21,7 @@
import gtk
import lutris.runners
from lutris.config_vbox import ConfigVBox
from lutris.gui.configvbox import ConfigVBox
class GameConfigVBox(ConfigVBox):
def __init__(self,lutris_config,caller):

View file

@ -20,8 +20,10 @@
###############################################################################
import gtk
import lutris.runners
from lutris.config_vbox import ConfigVBox
from lutris.gui.configvbox import ConfigVBox
class InstallerConfigVBox(ConfigVBox):
def __init__(self,lutris_config,caller):

View file

@ -19,17 +19,16 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
###############################################################################
import gtk
import lutris.runners
import os
import logging
import subprocess
import lutris.runners
from lutris.config import LutrisConfig
from lutris.installer_config_vbox import InstallerConfigVBox
from lutris.runner_config_vbox import RunnerConfigVBox
from lutris.system_config_vbox import SystemConfigVBox
from lutris.gui.installerconfigvbox import InstallerConfigVBox
from lutris.gui.runnerconfigvbox import RunnerConfigVBox
from lutris.gui.systemconfigvbox import SystemConfigVBox
class InstallerDialog(gtk.Dialog):
def __init__(self,parent):

View file

@ -21,8 +21,8 @@
import gtk
from lutris.config import LutrisConfig
from lutris.runner_config_vbox import RunnerConfigVBox
from lutris.system_config_vbox import SystemConfigVBox
from lutris.gui.runnerconfigvbox import RunnerConfigVBox
from lutris.gui.systemconfigvbox import SystemConfigVBox
class RunnerConfigDialog(gtk.Dialog):
def __init__(self,runner):

View file

@ -20,7 +20,7 @@
###############################################################################
import lutris.runners
from lutris.config_vbox import ConfigVBox
from lutris.gui.configvbox import ConfigVBox
import gtk
class RunnerConfigVBox(ConfigVBox):

View file

@ -1,6 +1,6 @@
import lutris.runners
import gtk
from lutris.runner_config_dialog import RunnerConfigDialog
from lutris.gui.runnerconfigdialog import RunnerConfigDialog
class RunnersDialog(gtk.Dialog):
"""Dialog class for the platform preferences"""

View file

@ -1,5 +1,5 @@
from lutris.config import LutrisConfig
from lutris.system_config_vbox import SystemConfigVBox
from lutris.gui.systemconfigvbox import SystemConfigVBox
import gtk
class SystemConfigDialog(gtk.Dialog):

View file

@ -19,7 +19,7 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
###############################################################################
from lutris.config_vbox import ConfigVBox
from lutris.gui.configvbox import ConfigVBox
from lutris.desktop_control import LutrisDesktopControl
import logging

View file

@ -21,14 +21,13 @@
# where your project will head for your data (for instance, images and ui files)
# by default, this is ../data, relative your trunk layout
__lutris_data_directory__ = '../data'
__lutris_data_directory__ = '/usr/local/share/lutris/'
__license__ = 'GPL-3'
import os
class project_path_not_found(Exception):
pass
print "can't find path "
def get_data_file(*path_segments):
"""Get the full path to a data file.
@ -57,5 +56,6 @@ def getdatapath():
if os.path.exists(abs_data_path):
return abs_data_path
else:
print "path not found : %s " % abs_data_path
raise project_path_not_found

View file

@ -27,7 +27,7 @@ import os
class mednafen(Runner):
def __init__(self,settings=None):
self.executable = "mednafen"
self.is_installable = False
self.is_installable = True
self.machine = """Atari Lynx, Game Boy (Color), GameBoy Advance, NES, PC Engine(TurboGrafx 16), SuperGrafx, Neo Geo Pocket (Color), PC-FX, and WonderSwan (Color)"""
self.description = """Use Mednafen"""
self.package = "mednafen"
@ -51,10 +51,9 @@ class mednafen(Runner):
if not settings.config["mednafen"]["fs"]:
self.fullscreen = "0"
def find_joysticks(self):
if not self.is_installed:
return false
output = subprocess.Popen(["mednafen","dummy"],stdout=subprocess.PIPE).communicate()[0]
ouput = str.split(output,"\n")
found = False
@ -124,7 +123,7 @@ class mednafen(Runner):
self.options.append(control)
def play(self):
"""Runs the game"""
desktop_control = LutrisDesktopControl()
resolution = desktop_control.get_current_resolution()
(resolutionx, resolutiony) = resolution.split("x")
@ -139,7 +138,6 @@ class mednafen(Runner):
if len(self.joy_ids) > 1:
self.set_joystick_controls()
#os.chdir(self.romdir)
command = [self.executable]
for option in self.options:

View file

@ -23,7 +23,7 @@
from lutris.runners.runner import Runner
class pcsx(Runner):
def __init__(self,settings = None):
def __init__(self, settings=None):
"""
pcsx-df is what seems the best candidate for a playstation emulator.
Sadly, it was removed from the Debian archives and thus Ubuntu because
@ -37,11 +37,11 @@ class pcsx(Runner):
self.is_installable = False
self.description = "Runs PlayStation games"
self.machine = "Playstation"
self.game_options = [{"option":"iso","type":"single","label":"iso"}]
self.game_options = [{"option":"iso", "type":"single", "label":"iso"}]
self.runner_options = []
#Load settings
if settings:
self.iso = settings["game"]["iso"]
def play(self):
return [self.executable," -nogui -cdfile \""+self.iso+"\""]
return [self.executable, " -nogui -cdfile \"" + self.iso + "\" -runcd"]

View file

@ -31,27 +31,30 @@ except:
class Runner(object):
'''Generic runner (base class for other runners) '''
def __init__(self, settings = None):
def __init__(self):
''' Initialize runner'''
self.executable = None
self.is_installable = False
self.arguments = []
self.error_messages = []
def load(self,game):
self.game = None
def load(self, game):
""" Load a game """
self.game = game
def play(self):
pass
def is_installed(self):
""" Check if runner is installed"""
is_installed = None
if not self.executable:
return
return
cmdline = "which " + self.executable
cmdline = str.split(cmdline," ")
result = subprocess.Popen(cmdline,stdout=subprocess.PIPE).communicate()[0]
cmdline = str.split(cmdline, " ")
result = subprocess.Popen(cmdline, stdout=subprocess.PIPE).communicate()[0]
if result == '' :
is_installed = False
else:
@ -64,22 +67,24 @@ class Runner(object):
def get_runner_options(self):
return None
def md5sum(self,filename):
m = hashlib.md5()
fd = open(filename,"rb")
content = fd.readlines()
fd.close()
def md5sum(self, filename):
md5check = hashlib.md5()
file_ = open(filename, "rb")
content = file_.readlines()
file_.close()
for line in content:
m.update(line)
return m.hexdigest()
md5check.update(line)
return md5check.hexdigest()
def install_runner(self):
"""Generic install method, for use with package management systems"""
#Return false if runner has no package, must be then another method and
# install method should be overridden by the specific runner
if not hasattr(self,"package"):
# Return false if runner has no package, must be then another method
# and install method should be overridden by the specific runner
if not hasattr(self, "package"):
return False
linux_dist = platform.linux_distribution()[0]
#Add the package manager with arguments for your favorite distro :)
if linux_dist == "Ubuntu" or linux_dist == "Debian":
package_manager = "apt-get"
@ -90,16 +95,16 @@ class Runner(object):
else:
logging.error("""The distro you're running is not supported yet.\n Edit runners/runner.py to add support for it""")
return False
print subprocess.Popen("gksu \"%s %s %s\"" % (package_manager,install_args,self.package),shell=True,stdout=subprocess.PIPE).communicate()[0]
print subprocess.Popen("gksu \"%s %s %s\"" % (package_manager, install_args, self.package), shell=True, stdout=subprocess.PIPE).communicate()[0]
def write_config(self,id,name,fullpath):
def write_config(self, id, name, fullpath):
"""Writes game config to settings directory"""
system = self.__class__.__name__
index= fullpath.rindex("/")
exe = fullpath[index+1:]
index = fullpath.rindex("/")
exe = fullpath[index + 1:]
path = fullpath[:index]
if path.startswith("file://"):
path = path[7:]
gameConfig = LutrisConfig()
values = {"main":{ "path":path, "exe":exe, "realname" : name, "system":system }}
gameConfig.write_game_config(id, values)
gameConfig.config = {"main":{ "path":path, "exe":exe, "realname" : name, "runner": system }}
gameConfig.save(id, values)

View file

@ -8,10 +8,11 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-05-13 12:19+0200\n"
"POT-Creation-Date: 2010-08-31 01:35+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
@ -37,6 +38,14 @@ msgstr ""
msgid "Copyright (C) 2010 Mathieu Comandon <strycore@gmail.com>"
msgstr ""
#: ../data/ui/PreferencesLutrisDialog.ui.h:1
msgid "gtk-cancel"
msgstr ""
#: ../data/ui/PreferencesLutrisDialog.ui.h:2
msgid "gtk-ok"
msgstr ""
#: ../data/ui/LutrisWindow.ui.h:1
msgid "Add game"
msgstr ""
@ -120,11 +129,3 @@ msgstr ""
#: ../data/ui/LutrisWindow.ui.h:21
msgid "configure the default options"
msgstr ""
#: ../data/ui/PreferencesLutrisDialog.ui.h:1
msgid "gtk-cancel"
msgstr ""
#: ../data/ui/PreferencesLutrisDialog.ui.h:2
msgid "gtk-ok"
msgstr ""

View file

@ -15,7 +15,8 @@
# with this program. If not, see <http://www.gnu.org/licenses/>.
### END LICENSE
###################### DO NOT TOUCH THIS (HEAD TO THE SECOND PART) ######################
import os
try:
import DistUtilsExtra.auto
@ -25,7 +26,6 @@ except ImportError:
sys.exit(1)
assert DistUtilsExtra.auto.__version__ >= '2.10', 'needs DistUtilsExtra.auto >= 2.10'
import os
def update_data_path(prefix, oldvalue=None):
@ -97,8 +97,12 @@ DistUtilsExtra.auto.setup(
license='GPL-3',
author='Mathieu Comandon',
author_email='strycore@gmail.com',
description='UI for managing games',
#long_description='Here a longer description',
description='Install and play any video game on Linux',
long_description = """Lutris is a gaming platform for GNU/Linux. It's goal is to make
gaming on Linux as easy as possible by taking care of installing
and setting up the game for the user. The only thing you have to
do is play the game. It aims to support every game that is playable
on Linux.""",
url='https://launchpad.net/lutris',
cmdclass={'install': InstallAndUpdateDataDirectory}
)