--- a/qmsk/pngtile/pngtile.py Sat Oct 04 14:36:02 2014 +0300
+++ b/qmsk/pngtile/pngtile.py Sat Oct 04 15:14:22 2014 +0300
@@ -12,11 +12,20 @@
PNGTileStore,
)
+import os.path
+
class Store (PNGTileStore):
- def __init__ (self, tileserver, **opts):
+ def __init__ (self, title, tileserver, **opts):
super(Store, self).__init__(**opts)
+
+ self._title = title
+ self.tileserver = tileserver
- self.tileserver = tileserver
+ def title (self, name):
+ if name:
+ return os.path.basename(name)
+ else:
+ return self._title
def breadcrumb (self, name):
"""
@@ -30,6 +39,56 @@
yield '/'.join(path), part
+ def tree (self, name):
+ """
+ Yield [(item, name)] lists for given path.
+ """
+
+ # always, starting from root
+ parts = []
+
+ if name:
+ # also including the dir itself... but not the root twice
+ name += '/'
+
+ # walk up the tree from root the dir itself
+ for tree_item in name.split('/'):
+ tree_name = '/'.join(parts)
+
+ dirs = [ ]
+ items = [ ]
+
+ # walk through the items within this tree node
+ for item, type in self.list(tree_name):
+ if tree_name:
+ item_name = tree_name + '/' + item
+ else:
+ item_name = item
+
+ if type:
+ items.append((item, item_name))
+ else:
+ dirs.append((item, item_name))
+
+ # tree of parent + item within parent
+ yield sorted(dirs), tree_item
+
+ parts.append(tree_item)
+
+ def items (self, name):
+ """
+ Yield (item, name) for given path.
+ """
+
+ for item, type in self.list(name):
+ if name:
+ item_name = name + '/' + item
+ else:
+ item_name = item
+
+ if type:
+ yield item, item_name
+
def tiles_url (self, name, **query):
"""
Return a tileserver URL.
@@ -50,5 +109,6 @@
image_root = settings.QMSK_PNGTILE_ROOT,
# Store
+ title = settings.QMSK_PNGTILE_TITLE,
tileserver = settings.QMSK_PNGTILE_SERVER,
)