From 27942b15065e3bab72b096c812ed2b900cd7993a Mon Sep 17 00:00:00 2001 From: Ansgar Burchardt Date: Mon, 8 Dec 2008 01:49:51 +0100 Subject: [PATCH] Import jumpnbump_menu Source: Debian Etch (http://packages.debian.org/etch/jumpnbump) --- contrib/jumpnbump_menu/AUTHOR | 1 + contrib/jumpnbump_menu/Makefile | 11 + contrib/jumpnbump_menu/NEWS | 27 + contrib/jumpnbump_menu/README | 16 + contrib/jumpnbump_menu/TODO | 4 + contrib/jumpnbump_menu/jumpnbump_menu.glade | 870 ++++++++++++++++++++++++++++ contrib/jumpnbump_menu/jumpnbump_menu.py | 217 +++++++ 7 files changed, 1146 insertions(+) create mode 100644 contrib/jumpnbump_menu/AUTHOR create mode 100644 contrib/jumpnbump_menu/Makefile create mode 100644 contrib/jumpnbump_menu/NEWS create mode 100644 contrib/jumpnbump_menu/README create mode 100644 contrib/jumpnbump_menu/TODO create mode 100644 contrib/jumpnbump_menu/jumpnbump_menu.glade create mode 100644 contrib/jumpnbump_menu/jumpnbump_menu.py diff --git a/contrib/jumpnbump_menu/AUTHOR b/contrib/jumpnbump_menu/AUTHOR new file mode 100644 index 0000000..55402c4 --- /dev/null +++ b/contrib/jumpnbump_menu/AUTHOR @@ -0,0 +1 @@ +Martin Willemoes Hansen diff --git a/contrib/jumpnbump_menu/Makefile b/contrib/jumpnbump_menu/Makefile new file mode 100644 index 0000000..454c5e2 --- /dev/null +++ b/contrib/jumpnbump_menu/Makefile @@ -0,0 +1,11 @@ +PREFIX=/usr + +all: + @echo "This software is interpreted, no compilation needed" +install: + cp jumpnbump_menu.glade $(PREFIX)/share/games/jumpnbump/ + cp jumpnbump_menu.py $(PREFIX)/games/ + +uninstall: + rm $(PREFIX)/share/games/jumpnbump/jumpnbump_menu.glade + rm $(PREFIX)/games/jumpnbump_menu.py diff --git a/contrib/jumpnbump_menu/NEWS b/contrib/jumpnbump_menu/NEWS new file mode 100644 index 0000000..a5d64eb --- /dev/null +++ b/contrib/jumpnbump_menu/NEWS @@ -0,0 +1,27 @@ +0.6 +=== +o A couple of HIG issues where fixed. + +0.5 +=== +o GUI fixes. + +0.4 +=== +o Level preview implemented + +0.3 +=== +o UI tweaks. +o jumpbump.dat is default level +o Path to levels and binary has changed. + +0.2 +=== +o Added Makefile for installing/uninstalling +o Fixed mirror checkbox. +o Does not have to be run from shell. + +0.1 +=== +o Initial release. diff --git a/contrib/jumpnbump_menu/README b/contrib/jumpnbump_menu/README new file mode 100644 index 0000000..46dfb88 --- /dev/null +++ b/contrib/jumpnbump_menu/README @@ -0,0 +1,16 @@ +Edit the Makefile to your liking. +Also check the variables in the top of the python script. + +Then run +make install + +==== +reqs +==== + +Python-2.2.1 +pygtk-1.99.13 +ImageMagick-5.4.6 +jumpnbump-1.39 + +At least thats what I have ;) diff --git a/contrib/jumpnbump_menu/TODO b/contrib/jumpnbump_menu/TODO new file mode 100644 index 0000000..a47100d --- /dev/null +++ b/contrib/jumpnbump_menu/TODO @@ -0,0 +1,4 @@ +o Enable a kill server. (it tends to lock) +o Refactor level preview +o Make jumpbump.dat the default level + diff --git a/contrib/jumpnbump_menu/jumpnbump_menu.glade b/contrib/jumpnbump_menu/jumpnbump_menu.glade new file mode 100644 index 0000000..5f793c0 --- /dev/null +++ b/contrib/jumpnbump_menu/jumpnbump_menu.glade @@ -0,0 +1,870 @@ + + + + + + + True + Jump n Bump menu + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_CENTER + False + True + False + + + + + 5 + True + False + 5 + + + + True + 0 + 0.5 + GTK_SHADOW_ETCHED_IN + + + + 5 + True + False + 5 + + + + True + True + _Standalone + True + GTK_RELIEF_NORMAL + False + False + True + + + + 0 + False + False + + + + + + True + True + _Fireworks + True + GTK_RELIEF_NORMAL + False + False + True + standalone + + + + 0 + False + False + + + + + + True + True + _Client + True + GTK_RELIEF_NORMAL + False + False + True + standalone + + + + 0 + False + False + + + + + + True + True + Ser_ver + True + GTK_RELIEF_NORMAL + False + False + True + standalone + + + + 0 + False + False + + + + + + + + True + Mode + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + + label_item + + + + + 0 + True + True + + + + + + 5 + True + False + 5 + + + + True + True + GTK_POLICY_ALWAYS + GTK_POLICY_ALWAYS + GTK_SHADOW_NONE + GTK_CORNER_TOP_LEFT + + + + True + True + True + False + False + True + + + + + + 0 + True + True + + + + + + 200 + 128 + True + 0.5 + 0.5 + 0 + 0 + + + 0 + False + True + + + + + 0 + True + True + + + + + + True + 0 + 0.5 + GTK_SHADOW_ETCHED_IN + + + + 5 + True + 2 + 2 + False + 5 + 5 + + + + True + False + 5 + + + + True + False + Remote server ip/name + True + True + True + 0 + + True + * + False + + + 0 + True + True + + + + + + True + False + Your are player number? + True + 1 + 0 + False + GTK_UPDATE_IF_VALID + False + True + 2 1 3 1 10 10 + + + 0 + False + True + + + + + 1 + 2 + 1 + 2 + + + + + + True + _Number of remote clients: + True + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + num_of_clients + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + Rem_ote server: + True + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + server_entry + + + 0 + 1 + 1 + 2 + fill + + + + + + + True + 0 + 0.5 + 0 + 1 + + + + True + False + True + 1 + 0 + False + GTK_UPDATE_IF_VALID + False + True + 1 1 3 1 10 10 + + + + + 1 + 2 + 0 + 1 + fill + + + + + + + + + True + Network + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + + label_item + + + + + 0 + True + True + + + + + + True + True + 5 + + + + True + 0 + 0.5 + GTK_SHADOW_ETCHED_IN + + + + 5 + True + False + 0 + + + + True + True + Fullscr_een + True + GTK_RELIEF_NORMAL + False + False + True + + + 0 + False + False + + + + + + True + True + No _gore + True + GTK_RELIEF_NORMAL + False + False + True + + + 0 + False + False + + + + + + True + True + _Double resolution + True + GTK_RELIEF_NORMAL + False + False + True + + + 0 + False + False + + + + + + True + True + _Mirror level + True + GTK_RELIEF_NORMAL + False + False + True + + + 0 + False + False + + + + + + + + True + Graphics + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + + label_item + + + + + 0 + True + True + + + + + + True + 0 + 0.5 + GTK_SHADOW_ETCHED_IN + + + + 5 + True + False + 0 + + + + True + True + No so_und + True + GTK_RELIEF_NORMAL + False + False + True + + + 0 + False + False + + + + + + True + True + No f_lies + True + GTK_RELIEF_NORMAL + False + False + True + + + 0 + False + False + + + + + + True + True + _With music but without sound. + True + GTK_RELIEF_NORMAL + False + False + True + + + 0 + False + False + + + + + + + + True + Sound + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + + label_item + + + + + 0 + True + True + + + + + 0 + False + False + + + + + + 5 + True + GTK_BUTTONBOX_DEFAULT_STYLE + 0 + + + + True + True + True + gtk-quit + True + GTK_RELIEF_NORMAL + + + + + + + True + True + True + GTK_RELIEF_NORMAL + + + + + True + 0.5 + 0.5 + 0 + 0 + + + + True + False + 2 + + + + True + gtk-apply + 4 + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + + True + _Run + True + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + + + + + + + + True + True + True + _About + True + GTK_RELIEF_NORMAL + + + + + + 0 + True + True + + + + + + + + True + About + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_CENTER + False + True + False + + + + 5 + True + False + 5 + + + + True + True + False + True + 0 + Jump n Bump menu 0.6 + True + * + False + + + 0 + False + False + + + + + + True + Copyright (c) 2002 Martin Willemoes Hansen <mwh@sysrq.dk> + +Jump n Bump starter. + +Gtk+ and Python rocks!! + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + + True + + + 0 + True + True + + + + + + True + GTK_BUTTONBOX_END + 0 + + + + True + True + True + GTK_RELIEF_NORMAL + + + + + True + 0.5 + 0.5 + 0 + 0 + + + + True + False + 2 + + + + True + gtk-ok + 4 + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + + True + _Ok + True + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + + + + + + + 0 + True + True + + + + + + + diff --git a/contrib/jumpnbump_menu/jumpnbump_menu.py b/contrib/jumpnbump_menu/jumpnbump_menu.py new file mode 100644 index 0000000..d9e25ce --- /dev/null +++ b/contrib/jumpnbump_menu/jumpnbump_menu.py @@ -0,0 +1,217 @@ +#!/usr/bin/env python + +# Author: Martin Willemoes Hansen +# License: Gnu GPL + +# Next two lines are a workaround for Debian bug 163794 +import sys + +import pygtk +pygtk.require('2.0') +import gtk +import gtk.glade +import gtk.gdk +import gobject +import os +import tempfile +import shutil + +RESOURCE_DIR='/usr/share/games/jumpnbump' +BINARY_DIR='/usr/games' + +def populate_treeview(): + levels = [] + for file in os.listdir (RESOURCE_DIR): + if (file.endswith ('.dat')): + levels.append (file) + + levels.sort() + + COLUMN_LEVEL = 0 + store = gtk.ListStore (gobject.TYPE_STRING) + + for level in levels: + iter = store.append() + store.set (iter, COLUMN_LEVEL, level) + + treeview.set_model (store) + + renderer = gtk.CellRendererText() + treeview.append_column (gtk.TreeViewColumn ('Level', renderer, text=COLUMN_LEVEL)) + +def standalone_mode (widget): + disable_enable_level (1) + disable_enable_server (0) + num_clients.set_sensitive (0) + nogore.set_sensitive (1) + noflies.set_sensitive (1) + +def client_mode (widget): + disable_enable_level (1) + disable_enable_server (1) + num_clients.set_sensitive (0) + nogore.set_sensitive (1) + noflies.set_sensitive (1) + +def server_mode (widget): + disable_enable_level (1) + disable_enable_server (0) + num_clients.set_sensitive (1) + nogore.set_sensitive (1) + noflies.set_sensitive (1) + +def fireworks_mode (widget): + disable_enable_level (0) + disable_enable_server (0) + nogore.set_sensitive (0) + nogore.set_active (0) + noflies.set_sensitive (0) + noflies.set_active (0) + +def disable_enable_server (setting): + server_entry.set_sensitive (setting) + player_num.set_sensitive (setting) + +def disable_enable_level (setting): + treeview.set_sensitive (setting) + mirror.set_sensitive (setting) + if (not setting): + mirror.set_active (setting) + +def level_changed (widget): + model, iter = treeview.get_selection().get_selected() + global choosen_level + choosen_level = '%s/%s' % (RESOURCE_DIR, model.get_value (iter, 0)) + unpackdir = None + try: + unpackdir = tempfile.mkdtemp ("", "jumpnbump-menu-") + os.chdir (unpackdir) + os.spawnlp (os.P_WAIT, 'jumpnbump-unpack', 'jumpnbump', choosen_level) + os.spawnlp (os.P_WAIT, 'convert', 'convert', '-scale', '50%', 'level.pcx', 'level_scaled.pcx') + os.spawnlp (os.P_WAIT, 'convert', 'convert', 'level_scaled.pcx', 'level.png') + image.set_from_file ('level.png') + except Exception, err: + print err + if unpackdir != None: + shutil.rmtree (unpackdir) + + image.show() + +def about (widget): + global about_dialog + + if (not about_dialog): + gui = gtk.glade.XML (gladefile, 'about') + about_dialog = gui.get_widget ('about') + gui.signal_connect ('ok', about_close) + +def about_close (widget): + global about_dialog + + about_dialog.destroy() + about_dialog = None + +def run (widget): + if (standalone.get_active()): + execute (*get_level()+common_options()) + elif (fireworks.get_active()): + execute ('-fireworks', *common_options()) + elif (client.get_active()): + execute ('-player', str (player_num.get_value_as_int()), + '-connect', server_entry.get_text(), + *get_level() + common_options()) + else: + execute ('-server', str (num_clients.get_value_as_int()), + *get_level() + common_options()) + +def get_level(): + level = [] + if (mirror.get_active()): + level.append ('-mirror') + else: + level.append ('-dat') + level.append (choosen_level) + + return level + +def common_options(): + options = [] + + if (fullscreen.get_active()): + options.append ('-fullscreen') + if (nogore.get_active()): + options.append ('-nogore') + if (double_res.get_active()): + options.append ('-scaleup') + if (nosound.get_active()): + options.append ('-nosound') + if (noflies.get_active()): + options.append ('-noflies') + if (withmusic.get_active()): + options.append ('-musicnosound') + if (mirror.get_active()): + options.append ('-mirror') + + return options + +def execute (*cmd): + try: + os.spawnl (os.P_NOWAIT, BINARY_DIR + '/jumpnbump', 'jumpnbump', *cmd) + except Exception, err: + print err + +def main(): + global gladefile + + global_gladefile = RESOURCE_DIR + '/jumpnbump_menu.glade' + local_gladefile = './jumpnbump_menu.glade' + + if (os.access (global_gladefile, os.R_OK)): + gladefile = global_gladefile + del local_gladefile + elif (os.access (local_gladefile, os.R_OK)): + gladefile = local_gladefile + del global_gladefile + else: + print 'Could not find the glade file' + return 0 + + gui = gtk.glade.XML (gladefile, 'main') + + global about_dialog, choosen_level, standalone, fireworks, client, server, treeview, \ + mirror, num_clients, server_entry, player_num, fullscreen, \ + nogore, double_res, nosound, noflies, withmusic, image + + about_dialog = None + choosen_level = '' + standalone = gui.get_widget ('standalone') + fireworks = gui.get_widget ('fireworks') + client = gui.get_widget ('client') + server = gui.get_widget ('server') + treeview = gui.get_widget ('level_treeview') + populate_treeview() + mirror = gui.get_widget ('mirror') + num_clients = gui.get_widget ('num_of_clients') + server_entry = gui.get_widget ('server_entry') + player_num = gui.get_widget ('player_num') + fullscreen = gui.get_widget ('fullscreen') + nogore = gui.get_widget ('nogore') + double_res = gui.get_widget ('double_res') + nosound = gui.get_widget ('nosound') + noflies = gui.get_widget ('noflies') + withmusic = gui.get_widget ('withmusic') + image = gui.get_widget ('image') + + gui.signal_autoconnect ({'standalone_mode': standalone_mode, + 'client_mode': client_mode, + 'server_mode': server_mode, + 'fireworks_mode': fireworks_mode, + 'level_changed': level_changed, + 'quit': lambda *args: gtk.main_quit(), + 'run': run, + 'about': about}) + + gtk.main() + +if __name__ == '__main__': + main() -- 2.11.4.GIT