This is an automated email from the git hooks/post-receive script. detiste-guest pushed a commit to branch doom2-launcher in repository game-data-packager.
commit 510f5d0b79a4616848ec8d1cf0b00d080bc209cc Author: Alexandre Detiste <[email protected]> Date: Mon Feb 2 01:17:53 2015 +0100 add laucher for doom2 master levels this needs a .desktop file --- game_data_packager/doom2-masterlevels.py | 165 +++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) diff --git a/game_data_packager/doom2-masterlevels.py b/game_data_packager/doom2-masterlevels.py new file mode 100755 index 0000000..71c4b8f --- /dev/null +++ b/game_data_packager/doom2-masterlevels.py @@ -0,0 +1,165 @@ +#!/usr/bin/python3 +# encoding=utf-8 +# +# Copyright © 2015 Alexandre Detiste <[email protected]> +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# You can find the GPL license text on a Debian system under +# /usr/share/common-licenses/GPL-2 + +import gi +import glob +import os +import subprocess + +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +map = None +exceptions = { + 'blacktwr.wad': 25, + 'bloodsea.wad': 7, + 'geryon.wad': 8, + 'mephisto.wad': 7, + 'minos.wad': 5, + 'nessus.wad': 7, + 'teeth.wad': 31, # + 32 + 'vesperas.wad': 9, + 'virgil.wad': 3, +} + +window = Gtk.Window() +window.set_default_size(1000, 800) +window.connect("destroy", lambda q: Gtk.main_quit()) + +grid = Gtk.Grid() +grid.set_row_spacing(5) +grid.set_column_spacing(5) +window.add(grid) + +# level list +games = Gtk.ListStore(str, int) +description = dict() +for wad in sorted(glob.glob('/usr/share/doc/doom2-masterlevels-wad/*.txt')): + game = os.path.splitext(os.path.basename(wad))[0] + games.append([game, exceptions.get(game + '.wad', 1)]) + with open(wad, 'r', encoding='latin1') as f: + description[game] = f.read() + +treeview = Gtk.TreeView(model=games) +grid.attach(treeview, 0, 0, 1, 6) + +treeviewcolumn = Gtk.TreeViewColumn("Wad") +treeview.append_column(treeviewcolumn) +cellrenderertext = Gtk.CellRendererText() +treeviewcolumn.pack_start(cellrenderertext, True) +treeviewcolumn.add_attribute(cellrenderertext, "text", 0) + +treeviewcolumn = Gtk.TreeViewColumn("Map") +treeview.append_column(treeviewcolumn) +cellrenderertext = Gtk.CellRendererText() +treeviewcolumn.pack_start(cellrenderertext, True) +treeviewcolumn.add_attribute(cellrenderertext, "text", 1) + +# header +label = Gtk.Label() +label.set_markup("<span size='xx-large'>Doom II Master Levels</span>") +grid.attach(label, 1, 0, 1, 1) + +logo = Gtk.Image() +logo.set_from_file('/usr/share/games/game-data-packager/doom2.png') +grid.attach(logo, 2, 0, 1, 1) + +# description +scrolledwindow = Gtk.ScrolledWindow() +scrolledwindow.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) +grid.attach(scrolledwindow, 1, 1, 2, 1) + +textbuffer = Gtk.TextBuffer() +textbuffer.set_text('Please select a map from the list on the left') + +textview = Gtk.TextView(buffer=textbuffer) +textview.set_vexpand(True) +textview.set_hexpand(True) +textview.set_property('editable', False) +scrolledwindow.add(textview) + +# difficulty +difflabel = Gtk.Label("Choose your difficulty") +grid.attach(difflabel, 1, 2, 2, 1) + +diffgrid = Gtk.Grid() +diffradio = Gtk.RadioButton(group=None, label="1) I'm too young to die") +diffgrid.attach(diffradio, 0, 0, 1, 1) +for diff in ["2) Hey, Not too Rough", + "3) Hurt me plenty", + "4) Ultra Violence", + "5) Nightmare!"]: + radiobutton = Gtk.RadioButton(group=diffradio, label=diff) + if diff[0] == '3': + radiobutton.set_active(True) + diffgrid.attach(radiobutton, 0, int(diff[0]), 1, 1) +grid.attach(diffgrid, 1, 3, 2, 1) + +# engine +label = Gtk.Label("Choose your engine") +grid.attach(label, 1, 4, 2, 1) +radiogrid = Gtk.Grid() +default = os.readlink('/etc/alternatives/doom') +radiobuttonDefault = Gtk.RadioButton(group=None, label="%s (default)" % default) +radiogrid.attach(radiobuttonDefault, 0, 0, 1, 1) +i = 1 +proc = subprocess.Popen(['update-alternatives', '--list', 'doom'], stdout=subprocess.PIPE, universal_newlines=True) + +for alternative in proc.stdout: + alternative = alternative.strip() + if alternative == default: + continue + radiobutton = Gtk.RadioButton(group=radiobuttonDefault, label=alternative) + i += 1 + radiogrid.attach(radiobutton, 0, i, i, 1) +grid.attach(radiogrid, 1, 5, 2, 1) + + +# Run ! +button1 = Gtk.Button(label="Run") +grid.attach(button1, 1, 6, 1, 1) +button2 = Gtk.Button(label="Exit") +grid.attach(button2, 2, 6, 1, 1) + +def select_game(event): + global game, map + (model, pathlist) = treeview.get_selection().get_selected_rows() + for path in pathlist: + tree_iter = model.get_iter(path) + game = model.get_value(tree_iter,0) + map = model.get_value(tree_iter,1) + textbuffer.set_text(description[game]) + +def run_game(event): + for button in diffradio.get_group(): + if button.get_active(): + difficulty = button.get_label()[0] + break + for button in radiobuttonDefault.get_group(): + if button.get_active(): + engine = button.get_label().split(' ')[0] + break + if map: + os.system('%s -file /usr/share/games/doom/%s.wad -warp %s -skill %s' % (engine, game, map, difficulty)) + +treeview.connect("cursor-changed", select_game) +button1.connect("clicked", run_game) +button2.connect("clicked", Gtk.main_quit) + +window.show_all() + +Gtk.main() -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/game-data-packager.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

