Package: jumpnbump
Version: 1.50+dfsg1-2
Severity: wishlist
Tags: patch

Currently, jumpnbump-menu searchs levels only in
'/usr/share/games/jumpnbump'. Only root can add levels in this
directory, so normal users can't use jumpnbump-menu and add new levels
by themself. In the last case, they need to use a terminal.

This patch modifies the behaviour of jumpnbump-menu to:
- display and play levels found in '~/.jumpnnbump/levels/' (and the
'/usr/share/games/jumpnbump' as before);
- search for file with extension '.dat' or '.DAT' because several
levels found on the web are in uppercase.

The diff for the manpage provide info about this new feature.


-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-5-amd64 (SMP w/1 CPU core)
Locale: LANG=fr_FR.utf8, LC_CTYPE=fr_FR.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages jumpnbump depends on:
ii  imagemagick            8:6.6.0.4-2.2     image manipulation programs
ii  libc6                  2.11.2-6+squeeze1 Embedded GNU C Library: Shared lib
ii  libsdl-mixer1.2        1.2.8-6+b1        mixer library for Simple DirectMed
ii  libsdl-net1.2          1.2.7-2           network library for Simple DirectM
ii  libsdl1.2debian        1.2.14-6.1        Simple DirectMedia Layer
ii  python                 2.6.6-3+squeeze1  interactive high-level object-orie
ii  python-glade2          2.17.0-4          GTK+ bindings: Glade support
ii  python-gtk2            2.17.0-4          Python bindings for the GTK+ widge

jumpnbump recommends no packages.

Versions of packages jumpnbump suggests:
ii  jumpnbump-levels              20091107   cute multiplayer platform game wit

-- no debconf information

-- 
Stéphane
--- /usr/games/jumpnbump-menu	2009-03-03 04:52:17.000000000 +0100
+++ ./jump_modif	2010-11-07 19:43:02.000000000 +0100
@@ -13,6 +13,7 @@
 import gtk.gdk
 import gobject
 import os
+import posixpath
 import tempfile
 import shutil
 import gettext
@@ -25,24 +26,32 @@
 
 def populate_treeview():
     levels = []
-    for file in os.listdir (RESOURCE_DIR):
-        if (file.endswith ('.dat')):
-            levels.append (file)
-
-    levels.sort()
+    add_levels (levels, RESOURCE_DIR)
+    add_levels (levels, posixpath.expanduser("~/.jumpnbump/levels"))
+    
+    levels = sorted(levels, key=lambda level: level[0])
 
     COLUMN_LEVEL = 0
-    store = gtk.ListStore (gobject.TYPE_STRING)
+    COLUMN_DIR = 1
+    store = gtk.ListStore (gobject.TYPE_STRING, gobject.TYPE_STRING)
 
     for level in levels:
         iter = store.append()
-        store.set (iter, COLUMN_LEVEL, level)
+        store.set (iter, COLUMN_LEVEL, level[0], COLUMN_DIR, level[1])
                         
     treeview.set_model (store)
 
     renderer = gtk.CellRendererText()
     treeview.append_column (gtk.TreeViewColumn (_('Level'), renderer, text=COLUMN_LEVEL))
 
+def add_levels(levels, dir):
+    try:
+        for file in os.listdir (dir):
+            if (file.endswith ('.dat') or file.endswith ('.DAT')):
+                levels.append ((file, dir))
+    except OSError, err:
+        print("%s not found (%s)." % (dir,  str(err)))
+
 def standalone_mode (widget):
     disable_enable_level (1)
     disable_enable_server (0)
@@ -85,7 +94,8 @@
 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))
+    choosen_level = '%s/%s' % (model.get_value (iter, 1), model.get_value (iter, 0))
+
     unpackdir = None
     try:
         unpackdir = tempfile.mkdtemp ("", "jumpnbump-menu-")
--- jumpnbump-menu.6	2010-11-07 19:35:10.000000000 +0100
+++ modif.jumpnbump-menu.6	2010-11-07 19:31:59.000000000 +0100
@@ -84,7 +84,11 @@
   bunniesinspace - gravity is lower, you can jump higher
   lordoftheflies - the flies are attracted
   bloodisthickerthanwater - water turns to blood
-.SH LEVELS
+.SH ADD LEVELS
+You can add levels in ~/.jumpnbump/levels directory (create it if necessary). 
+To see the added level, you have to restart jumpnbump-menu. The extension name 
+for level is ".dat".
+.SH CREATE LEVELS
 There are two programs in /usr/lib/jumpnbump to help you make
 your own levels: pack and unpack.
 .IP pack

Reply via email to