Index: setup.py
===================================================================
--- setup.py	(revision 1372)
+++ setup.py	(working copy)
@@ -1,12 +1,12 @@
 from setuptools import setup
 
 setup(name='IniAdmin',
-      version='0.1',
+      version='0.2',
       packages=['iniadmin'],
       author='Alec Thomas',
-      description='Expose all TracIni options using the Trac 0.10 config option API',
+      description='Expose all TracIni options using the Trac 0.11dev config option API',
       url='http://trac-hacks.org/wiki/IniAdminPlugin',
       license='BSD',
       entry_points={'trac.plugins': ['iniadmin = iniadmin']},
-      package_data={'iniadmin' : ['htdocs/css/*.css', 'templates/*.cs', ]},
+      package_data={'iniadmin' : ['htdocs/css/*.css', 'templates/*.html', ]},
       install_requires=['TracWebAdmin'])
Index: iniadmin/iniadmin.py
===================================================================
--- iniadmin/iniadmin.py	(revision 1372)
+++ iniadmin/iniadmin.py	(working copy)
@@ -63,9 +63,11 @@
                 hdf_option['options'] = options
             hdf_options.append(hdf_option)
 
-        req.hdf['iniadmin.section'] = page
-        req.hdf['iniadmin.options'] = hdf_options
-        return 'iniadmin.cs', None
+        data = {'iniadmin': {
+          'section': page,
+          'options': hdf_options
+          } }
+        return 'iniadmin.html', data, None
 
     # ITemplateProvider methods
     def get_templates_dirs(self):
Index: iniadmin/htdocs/css/iniadmin.css
===================================================================
--- iniadmin/htdocs/css/iniadmin.css	(revision 1372)
+++ iniadmin/htdocs/css/iniadmin.css	(working copy)
@@ -1,21 +1,22 @@
-table.ini {
-	width: 100%;
-	margin-bottom: 1em;
+ul.ini {
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
+    width: 100%;
 }
+    .ini li {
+        display: inline;
+        float: left;
+        margin: 0.5em;
+        padding-right: 0.25em;
+    }
+    .ini input[type="text"] {
+        width: 90%;
+    }
+    .ini div.help {
+        font-size: small;
+    }
+        .ini div.help p {
+            margin: 0.5em;
+        }
 
-table.ini td {
-	width: 30%;
-	vertical-align: top;
-	padding-right: 0.25em;
-}
-
-.ini input[type="text"] {
-	width: 90%;
-}
-
-.ini div.help {
-	margin-left: 1em;
-	font-size: small;
-}
-
-.ini div.help p { margin: 0.5em; }
Index: iniadmin/templates/iniadmin.html
===================================================================
--- iniadmin/templates/iniadmin.html	(revision 0)
+++ iniadmin/templates/iniadmin.html	(revision 0)
@@ -0,0 +1,46 @@
+<div xmlns="http://www.w3.org/1999/xhtml"
+  xmlns:py="http://genshi.edgewall.org/"
+  id="page">
+  <h2>[${iniadmin.section}]</h2>
+  
+  <form method="post">
+    <ul class="ini">
+      <li py:for="option in iniadmin.options" py:with="idx=iniadmin.options.index(option)" class="align${idx % 3}">
+        <fieldset class="col${idx % 2}">
+          <legend>${option.name}</legend>
+          <py:choose>
+            <div class="select" py:when="option.type == 'extension'">
+              <select name="${option.name}">
+                <py:for each="opt in option.options">
+                  <py:choose>
+                    <option value="${opt}" selected="selected" py:when="option.value == opt">${opt}</option>
+                    <option value="${opt}" py:otherwise="">${opt}</option>
+                  </py:choose>
+                </py:for>
+              </select>
+            </div>
+            <div class="bool" py:when="option.type == 'bool'">
+              <py:choose>
+                <label py:when="option.value == 'true'"><input type="radio" name="${option.name}" value="true" checked="checked" /> true</label>
+                <label py:otherwise=""><input type="radio" name="${option.name}" value="true" /> true</label>
+              </py:choose>
+              <py:choose>
+                <label py:when="option.value == 'false'"><input type="radio" name="${option.name}" value="false" checked="checked" /> false</label>
+                <label py:otherwise=""><input type="radio" name="${option.name}" value="false" /> false</label>
+              </py:choose>
+            </div>
+            <div class="text" py:otherwise="">
+              <input type="text" name="${option.name}" value="${option.value}" />
+            </div>
+          </py:choose>
+          <div class="help">
+            ${option.doc}
+          </div>
+        </fieldset>
+      </li>
+    </ul>
+    <div class="buttons">
+      <input type="submit" value="Apply changes" />
+    </div>
+  </form>
+</div>
\ No newline at end of file
Index: iniadmin/templates/iniadmin.cs
===================================================================
--- iniadmin/templates/iniadmin.cs	(revision 1372)
+++ iniadmin/templates/iniadmin.cs	(working copy)
@@ -1,35 +0,0 @@
-<h2>[<?cs var:iniadmin.section ?>]</h2>
-<form method="post">
-<?cs set:idx = 0 ?>
-<table class="ini">
-<?cs each:option = iniadmin.options ?>
-<?cs if:idx % 3 == 0 ?><tr><?cs /if ?>
-<td>
-<fieldset class="col<?cs var:idx % 2 ?>">
-<legend><?cs var:option.name ?></legend>
-<?cs if:option.type == "extension" ?>
-<select name="<?cs var:option.name ?>">
-<?cs each:opt = option.options ?>
-<option value="<?cs var:opt ?>"<?cs if:option.value == opt ?> selected="selected"<?cs /if ?>><?cs var:opt ?></option>
-<?cs /each ?>
-</select>
-<?cs elif:option.type == "bool" ?>
-<input type="radio" name="<?cs var:option.name ?>" value="true"<?cs if:option.value == "true"?> checked="checked"<?cs /if ?>/> true
-<input type="radio" name="<?cs var:option.name ?>" value="false"<?cs if:option.value == "false"?> checked="checked"<?cs /if ?>/> false
-<?cs else ?>
-<input type="text" name="<?cs var:option.name ?>" value="<?cs var:option.value ?>"/>
-<?cs /if ?>
-<div class="help">
-<?cs var:option.doc ?>
-</div>
-</fieldset>
-</td>
-<?cs if:idx % 3 == 2 ?></tr><?cs /if ?>
-<?cs set:idx = idx + 1 ?>
-<?cs /each ?>
-<?cs if:idx % 3 != 0 ?>
-<?cs loop:i = idx % 3, 2 ?><td></td><?cs /loop ?></tr>
-<?cs /if ?>
-</table>
-<input type="submit" value="Apply changes"/>
-</form>
