Merge branch 'master' into gilbert
authorJoseph Spiros <joseph.spiros@ithinksw.com>
Mon, 21 Mar 2011 15:37:44 +0000 (11:37 -0400)
committerJoseph Spiros <joseph.spiros@ithinksw.com>
Mon, 21 Mar 2011 15:37:44 +0000 (11:37 -0400)
* master: (25 commits)
  Added feed length limit to FeedView. Implements feature #111.
  Corrected LazyNavigationRecurser to mark its return value as safe.
  Switched back to setting a {{ children }} variable, but set it to a lazy recurser instead of a rendered result. Switched item and children to be set in the context directly for easy access. Improved/updated recursenavigation docstring.
  Refactored the RecurseNavigationNode to have less repetition. Switched from {{ children }} to {% recurse %} because it makes more sense to collect recursion only if needed.
  Added a number of counting variables to the context when rendering shipherd navigation. Designed to mirror the variables generated when using a for loop.
  Minor corrections to shipherd recursenavigation docstring.
  Added CSRF cookie js to TagCreation.js... apparently it isn't in the admin by default. Resolves issue 83.
  Added an admin action to NewsletterArticleAdmin to handle creating a NewsletterIssue from a selection of articles. Resolves issue 82.
  Minor LazyContainerFinder cleanup. It's not really that lazy in practice...
  Removed nodelist_crawl since nothing is using it and I'm starting to question its usefulness in general.
  Built a clearer algorithm for finding a template's containers; added support for template block overrides cancelling out containers in that block, which resolves issue #90.
  Corrected FeedView handling of incorrect Accept headers. Will now actually return 406 errors.
  Genericized nodelist_crawl to just pass each node to a callback function. Overloaded the Template.containers callback to create a blockcontext for handling containers in overridden blocks as per issue 90 and to handle contentreference/contentlet generation in a single sweep.
  Refactored ContainerForms to reflect a more suitable structure by storing the containers internally as a SortedDict. By handling containers more consistently, this commit resolves issue #89.
  Removed apparently-vestigial Entity.attribute property.
  Corrected JSONValue.__unicode__ to return unicode instead of bytestrings... not sure what it was being modeled on. Tweaked TargetURLModel to use smart_str instead of str to construct the Python < 2.6.5 kwargs to get a more consistent byte string.
  Corrected WaldoAuthenticationForm.clean to handle lack of password/username. Moved password-related forms into a class attribute for customizability. Standardized confirmation email context and allowed for a secure confirmation link.
  Tweaked TargetURLModel.get_reverse_params() to convert kwargs keys to bytestrings to support Python versions prior to 2.6.5
  Minor correction to BlogView.urlpatterns.
  Switched feed_patterns to return urlpatterns suitable for addition to urlpatterns instead of inclusion in urlpatterns. Adjusted penfield urlpatterns accordingly. Added default behavior for FeedView.get_feed in cases where a known feed_type is not supplied for whatever reason. Added RegistrationMultiView.registration_form attribute.
  ...

216 files changed:
.gitmodules [new file with mode: 0644]
README
contrib/gilbert/__init__.py [new file with mode: 0644]
contrib/gilbert/exceptions.py [new file with mode: 0644]
contrib/gilbert/media/gilbert/Gilbert.api.auth.js [new file with mode: 0644]
contrib/gilbert/media/gilbert/Gilbert.lib.js [new file with mode: 0644]
contrib/gilbert/media/gilbert/extjs [new submodule]
contrib/gilbert/media/gilbert/fugue-icons [new submodule]
contrib/gilbert/media/gilbert/murano/images/btn/arrv.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/btn/c/Down.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/btn/c/Normal.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/btn/c/Over.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/btn/c/Pressed.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/btn/left-over.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/btn/left.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/btn/menu.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/btn/right-over.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/btn/right.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/btn/split.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/btn/splith.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/btn/splitv.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/btn/whole/Down.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/btn/whole/Normal.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/btn/whole/Over.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/btn/whole/Pressed.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/fills/30b.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/fills/30w.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/fills/70w.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/fills/80b.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/form/checked.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/form/field.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/form/field.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/form/radioed.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/form/unchecked.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/form/unradioed.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/gloss/gloss.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/gloss/gloss.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/gloss/light-gloss.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/gradients/30white-to-trans.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/gradients/dark-inner-shadow.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/grid/col-move-bottom.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/grid/col-move-top.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/grid/row-editor-btns.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/icons/balloon.png [new file with mode: 0755]
contrib/gilbert/media/gilbert/murano/images/icons/cross.png [new file with mode: 0755]
contrib/gilbert/media/gilbert/murano/images/icons/d-first.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/icons/d-last.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/icons/d-next.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/icons/d-prev.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/icons/d-refresh.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/icons/exclamation.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/icons/exclamation32.png [new file with mode: 0755]
contrib/gilbert/media/gilbert/murano/images/icons/first.png [new file with mode: 0755]
contrib/gilbert/media/gilbert/murano/images/icons/information.png [new file with mode: 0755]
contrib/gilbert/media/gilbert/murano/images/icons/last.png [new file with mode: 0755]
contrib/gilbert/media/gilbert/murano/images/icons/next.png [new file with mode: 0755]
contrib/gilbert/media/gilbert/murano/images/icons/no.png [new file with mode: 0755]
contrib/gilbert/media/gilbert/murano/images/icons/prev.png [new file with mode: 0755]
contrib/gilbert/media/gilbert/murano/images/icons/refresh.png [new file with mode: 0755]
contrib/gilbert/media/gilbert/murano/images/icons/yes.png [new file with mode: 0755]
contrib/gilbert/media/gilbert/murano/images/listview/az.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/listview/cols.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/listview/header.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/listview/headerdrop.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/listview/listview-sort-asc.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/listview/listview-sort-desc.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/listview/sort-asc.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/listview/sort-desc.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/listview/za.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/load.gif [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/menu/arrow.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/menu/arrow.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/mini/mini-bottom.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/mini/mini-left.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/mini/mini-right.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/mini/mini-top.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/progress.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/resizable/e.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/resizable/n.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/resizable/ne.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/resizable/nw.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/resizable/s.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/resizable/se.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/resizable/sw.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/resizable/w.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/scroller/l.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/scroller/r.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/slider/h.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/slider/thumbh.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/slider/thumbv.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/slider/v.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/30-b.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/30-w.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/30w.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/30white-to-trans.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/70w.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/80-b.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/?.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/arrow buttons.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/btn.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/check.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/col-move-bottom.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/col-move-top.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/dark-inner-shadow.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/exclamation.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/grad-height-25.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/h.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/light-gloss.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/listview-sort.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/listviewheader.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/mini.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/progress.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/resizable corner.psd [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/resizable long.psd [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/row-editor-btns.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/scroller.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/sort.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/tabs.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/tb-sprite.psd [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/tb.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/thumbh.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/thumbv.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/tools.psd [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/tooltip-invalid.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/tooltip.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/triggers/blank.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/triggers/blank.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/triggers/clear.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/triggers/date.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/triggers/drop.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/triggers/search.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/v.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/window-dark.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/window.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/src/x.opacity [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tab/c/Bottom.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tab/c/Top.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tab/close.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tab/l/Bottom.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tab/l/Top.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tab/r/Bottom.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tab/r/Top.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tb-sprite.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tb.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tools.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tree/arrows.gif [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tree/drop-add.png [new file with mode: 0755]
contrib/gilbert/media/gilbert/murano/images/tree/drop-between.gif [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tree/drop-no.png [new file with mode: 0755]
contrib/gilbert/media/gilbert/murano/images/tree/drop-over.gif [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tree/drop-under.gif [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tree/drop-yes.png [new file with mode: 0755]
contrib/gilbert/media/gilbert/murano/images/tree/elbow-end-minus-nl.gif [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tree/elbow-end-minus.gif [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tree/elbow-end-plus-nl.gif [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tree/elbow-end-plus.gif [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tree/elbow-end.gif [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tree/elbow-line.gif [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tree/elbow-minus-nl.gif [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tree/elbow-minus.gif [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tree/elbow-plus-nl.gif [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tree/elbow-plus.gif [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tree/elbow.gif [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tree/folder-open.png [new file with mode: 0755]
contrib/gilbert/media/gilbert/murano/images/tree/folder.png [new file with mode: 0755]
contrib/gilbert/media/gilbert/murano/images/tree/leaf.png [new file with mode: 0755]
contrib/gilbert/media/gilbert/murano/images/tree/loading.gif [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tree/s.gif [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/trigger/blank.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/trigger/clear.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/trigger/date.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/trigger/drop.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/trigger/search.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tt/bc.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tt/bl.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tt/br.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tt/c.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tt/i-bc.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tt/i-bl.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tt/i-br.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tt/i-c.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tt/i-ml.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tt/i-mr.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tt/i-tc.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tt/i-tl.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tt/i-tr.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tt/ml.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tt/mr.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tt/tc.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tt/tl.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/tt/tr.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/windowdark/bc.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/windowdark/bl.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/windowdark/br.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/windowdark/c.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/windowdark/l.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/windowdark/r.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/windowdark/tc.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/windowdark/tl.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/windowdark/tr.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/windowlight/bc.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/windowlight/bl.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/windowlight/br.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/windowlight/c.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/windowlight/l.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/windowlight/r.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/windowlight/tc.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/windowlight/tl.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/images/windowlight/tr.png [new file with mode: 0644]
contrib/gilbert/media/gilbert/murano/murano.css [new file with mode: 0644]
contrib/gilbert/media/gilbert/wallpaper.README [new file with mode: 0644]
contrib/gilbert/media/gilbert/wallpaper.jpg [new file with mode: 0644]
contrib/gilbert/plugins.py [new file with mode: 0644]
contrib/gilbert/sites.py [new file with mode: 0644]
contrib/gilbert/templates/gilbert/index.html [new file with mode: 0644]
contrib/gilbert/templates/gilbert/styles.css [new file with mode: 0644]

diff --git a/.gitmodules b/.gitmodules
new file mode 100644 (file)
index 0000000..d518e31
--- /dev/null
@@ -0,0 +1,6 @@
+[submodule "contrib/gilbert/media/gilbert/extjs"]
+       path = contrib/gilbert/media/gilbert/extjs
+       url = git://github.com/probonogeek/extjs.git
+[submodule "contrib/gilbert/media/gilbert/fugue-icons"]
+       path = contrib/gilbert/media/gilbert/fugue-icons
+       url = git://git.ithinksw.org/fugue-icons.git
diff --git a/README b/README
index 4b1a6f7..aec0c9c 100644 (file)
--- a/README
+++ b/README
@@ -3,6 +3,7 @@ Philo is a foundation for developing web content management systems.
 Prerequisites:
        * Python 2.5.4+ <http://www.python.org/>
        * Django 1.2+ <http://www.djangoproject.com/>
+       * django-staticmedia 0.2+ <http://pypi.python.org/pypi/django-staticmedia/>
        * django-mptt e734079+ <https://github.com/django-mptt/django-mptt/> 
        * (Optional) django-grappelli 2.0+ <http://code.google.com/p/django-grappelli/>
        * (Optional) recaptcha-django r6 <http://code.google.com/p/recaptcha-django/>
diff --git a/contrib/gilbert/__init__.py b/contrib/gilbert/__init__.py
new file mode 100644 (file)
index 0000000..c55f250
--- /dev/null
@@ -0,0 +1,24 @@
+__version__ = 'alpha'
+
+
+from philo.contrib.gilbert.sites import GilbertSite, site
+
+
+def autodiscover():
+       import copy
+       from django.conf import settings
+       from django.utils.importlib import import_module
+       from django.utils.module_loading import module_has_submodule
+       
+       for app in settings.INSTALLED_APPS:
+               mod = import_module(app)
+               try:
+                       before_import_model_registry = copy.copy(site.model_registry)
+                       before_import_plugin_registry = copy.copy(site.plugin_registry)
+                       import_module('%s.gilbert' % app)
+               except:
+                       site.model_registry = before_import_model_registry
+                       site.plugin_registry = before_import_plugin_registry
+                       
+                       if module_has_submodule(mod, 'gilbert'):
+                               raise
\ No newline at end of file
diff --git a/contrib/gilbert/exceptions.py b/contrib/gilbert/exceptions.py
new file mode 100644 (file)
index 0000000..e96ba25
--- /dev/null
@@ -0,0 +1,6 @@
+class AlreadyRegistered(Exception):
+       pass
+
+
+class NotRegistered(Exception):
+       pass
\ No newline at end of file
diff --git a/contrib/gilbert/media/gilbert/Gilbert.api.auth.js b/contrib/gilbert/media/gilbert/Gilbert.api.auth.js
new file mode 100644 (file)
index 0000000..dc0a829
--- /dev/null
@@ -0,0 +1,128 @@
+GILBERT_PLUGINS.push(new (function() {
+       return {
+               init: function(application) {
+                       if (GILBERT_LOGGED_IN) {
+                               application.on('ready', this.addUserMenu, this, {
+                                       single: true,
+                               });
+                       } else {
+                               application.on('ready', this.showLoginWindow, this, {
+                                       single: true,
+                               });
+                       }
+               },
+               addUserMenu: function(application) {
+                       Gilbert.api.auth.whoami(function(result) {
+                               application.mainmenu.add({
+                                       xtype: 'tbfill',
+                               },{
+                                       xtype: 'tbseparator',
+                               },{
+                                       xtype: 'button',
+                                       iconCls: 'user-silhouette',
+                                       text: '<span style="font-weight: bolder;">' + result + '</span>',
+                                       menu: [{
+                                               text: 'Change password',
+                                               iconCls: 'key--pencil',
+                                               handler: function(button, event) {
+                                                       Gilbert.api.auth.get_passwd_form(function(formspec) {
+                                                               var change_password_window = application.createWindow({
+                                                                       layout: 'fit',
+                                                                       resizable: false,
+                                                                       title: 'Change password',
+                                                                       iconCls: 'key--pencil',
+                                                                       width: 266,
+                                                                       height: 200,
+                                                                       items: change_password_form = new Ext.FormPanel(Ext.applyIf({
+                                                                               frame: true,
+                                                                               bodyStyle: 'padding: 5px 5px 0',
+                                                                               buttons: [{
+                                                                                       text: 'Change password',
+                                                                                       iconCls: 'key--pencil',
+                                                                                       handler: function(button, event) {
+                                                                                               change_password_form.getForm().submit({
+                                                                                                       success: function(form, action) {
+                                                                                                               Ext.MessageBox.alert('Password changed', 'Your password has been changed.');
+                                                                                                       },
+                                                                                               });
+                                                                                       },
+                                                                               }],
+                                                                               api: {
+                                                                                       submit: Gilbert.api.auth.submit_passwd_form,
+                                                                               },
+                                                                       }, formspec))
+                                                               });
+                                                               change_password_window.show();
+                                                       });
+                                                       
+                                               },
+                                       },{
+                                               text: 'Log out',
+                                               iconCls: 'door-open-out',
+                                               handler: function(button, event) {
+                                                       Gilbert.api.auth.logout(function(result) {
+                                                               if (result) {
+                                                                       document.location.reload();
+                                                               } else {
+                                                                       Ext.MessageBox.alert('Log out failed', 'You have <strong>not</strong> been logged out. This could mean that your connection with the server has been severed. Please try again.');
+                                                               }
+                                                       })
+                                               }
+                                       }],
+                               });
+                               application.doLayout();
+                       });
+               },
+               showLoginWindow: function(application) {
+                       application.mainmenu.hide();
+                       application.doLayout();
+                       var login_window = application.createWindow({
+                               header: false,
+                               closable: false,
+                               resizable: false,
+                               draggable: false,
+                               width: 266,
+                               height: 135,
+                               layout: 'fit',
+                               items: login_form = new Ext.FormPanel({
+                                       frame: true,
+                                       bodyStyle: 'padding: 5px 5px 0',
+                                       items: [
+                                               {
+                                                       fieldLabel: 'Username',
+                                                       name: 'username',
+                                                       xtype: 'textfield',
+                                               },
+                                               {
+                                                       fieldLabel: 'Password',
+                                                       name: 'password',
+                                                       xtype: 'textfield',
+                                                       inputType: 'password',
+                                               }
+                                       ],
+                                       buttons: [
+                                               {
+                                                       text: 'Log in',
+                                                       iconCls: 'door-open-in',
+                                                       handler: function(button, event) {
+                                                               var the_form = login_form.getForm().el.dom;
+                                                               var username = the_form[0].value;
+                                                               var password = the_form[1].value;
+                                                               Gilbert.api.auth.login(username, password, function(result) {
+                                                                       if (result) {
+                                                                               document.location.reload();
+                                                                       } else {
+                                                                               Ext.MessageBox.alert('Log in failed', 'Unable to authenticate using the credentials provided. Please try again.', function() {
+                                                                                       login_form.getForm().reset();
+                                                                               });
+                                                                       }
+                                                               });
+                                                       }
+                                               }
+                                       ],
+                               }),
+                       });
+                       login_window.show();
+               },
+       }
+})());
\ No newline at end of file
diff --git a/contrib/gilbert/media/gilbert/Gilbert.lib.js b/contrib/gilbert/media/gilbert/Gilbert.lib.js
new file mode 100644 (file)
index 0000000..02bdb7b
--- /dev/null
@@ -0,0 +1,83 @@
+Ext.ns('Gilbert.lib');
+
+Gilbert.lib.Desktop = Ext.extend(Ext.Panel, {
+       constructor: function(config) {
+               Gilbert.lib.Desktop.superclass.constructor.call(this, Ext.applyIf(config||{}, {
+                       region: 'center',
+                       border: false,
+                       padding: '5',
+                       bodyStyle: 'background: none;',
+               }));
+       },
+});
+
+Gilbert.lib.MainMenu = Ext.extend(Ext.Toolbar, {
+       constructor: function(application) {
+               var application = this.application = application;
+               Gilbert.lib.MainMenu.superclass.constructor.call(this, {
+                       region: 'north',
+                       autoHeight: true,
+               });
+       },
+});
+
+Gilbert.lib.Application = Ext.extend(Ext.util.Observable, {
+       constructor: function(config) {
+               Ext.apply(this, config, {
+                       renderTo: Ext.getBody(),
+                       plugins: [],
+                       
+               });
+               Gilbert.lib.Application.superclass.constructor.call(this);
+               this.addEvents({
+                       'ready': true,
+               });
+               this.init();
+       },
+       init: function() {
+               Ext.QuickTips.init();
+               
+               var desktop = this.desktop = new Gilbert.lib.Desktop();
+               var mainmenu = this.mainmenu = new Gilbert.lib.MainMenu(this);
+               var viewport = this.viewport = new Ext.Viewport({
+                       renderTo: this.renderTo,
+                       layout: 'border',
+                       items: [
+                               this.mainmenu,
+                               this.desktop,
+                       ],
+               });
+               var windows = this.windows = new Ext.WindowGroup();
+               
+               if (this.plugins) {
+                       if (Ext.isArray(this.plugins)) {
+                               for (var i = 0; i < this.plugins.length; i++) {
+                                       this.plugins[i] = this.initPlugin(this.plugins[i]);
+                               }
+                       } else {
+                               this.plugins = this.initPlugin(this.plugins);
+                       }
+               }
+               
+               this.doLayout();
+               
+               this.fireEvent('ready', this);
+       },
+       initPlugin: function(plugin) {
+               plugin.init(this);
+               return plugin;
+       },
+       createWindow: function(config, cls) {
+               var win = new(cls||Ext.Window)(Ext.applyIf(config||{},{
+                       renderTo: this.desktop.el,
+                       manager: this.windows,
+                       constrainHeader: true,
+               }));
+               win.render(this.desktop.el);
+               return win;
+       },
+       doLayout: function() {
+               this.mainmenu.doLayout();
+               this.viewport.doLayout();
+       }
+});
\ No newline at end of file
diff --git a/contrib/gilbert/media/gilbert/extjs b/contrib/gilbert/media/gilbert/extjs
new file mode 160000 (submodule)
index 0000000..530ef4b
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 530ef4b6c5b943cfa68b779d11cf7de29aa878bf
diff --git a/contrib/gilbert/media/gilbert/fugue-icons b/contrib/gilbert/media/gilbert/fugue-icons
new file mode 160000 (submodule)
index 0000000..764abbe
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 764abbef432ef8a7333a58ca21b0ef6ef0a80b1a
diff --git a/contrib/gilbert/media/gilbert/murano/images/btn/arrv.png b/contrib/gilbert/media/gilbert/murano/images/btn/arrv.png
new file mode 100644 (file)
index 0000000..66fdce0
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/btn/arrv.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/btn/c/Down.png b/contrib/gilbert/media/gilbert/murano/images/btn/c/Down.png
new file mode 100644 (file)
index 0000000..d0225fb
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/btn/c/Down.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/btn/c/Normal.png b/contrib/gilbert/media/gilbert/murano/images/btn/c/Normal.png
new file mode 100644 (file)
index 0000000..42e9981
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/btn/c/Normal.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/btn/c/Over.png b/contrib/gilbert/media/gilbert/murano/images/btn/c/Over.png
new file mode 100644 (file)
index 0000000..a5a716d
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/btn/c/Over.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/btn/c/Pressed.png b/contrib/gilbert/media/gilbert/murano/images/btn/c/Pressed.png
new file mode 100644 (file)
index 0000000..aa168a3
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/btn/c/Pressed.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/btn/left-over.png b/contrib/gilbert/media/gilbert/murano/images/btn/left-over.png
new file mode 100644 (file)
index 0000000..7ef8f67
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/btn/left-over.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/btn/left.png b/contrib/gilbert/media/gilbert/murano/images/btn/left.png
new file mode 100644 (file)
index 0000000..b0dc68c
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/btn/left.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/btn/menu.png b/contrib/gilbert/media/gilbert/murano/images/btn/menu.png
new file mode 100644 (file)
index 0000000..4993084
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/btn/menu.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/btn/right-over.png b/contrib/gilbert/media/gilbert/murano/images/btn/right-over.png
new file mode 100644 (file)
index 0000000..2cb9783
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/btn/right-over.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/btn/right.png b/contrib/gilbert/media/gilbert/murano/images/btn/right.png
new file mode 100644 (file)
index 0000000..4e68d26
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/btn/right.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/btn/split.png b/contrib/gilbert/media/gilbert/murano/images/btn/split.png
new file mode 100644 (file)
index 0000000..a5402b7
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/btn/split.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/btn/splith.png b/contrib/gilbert/media/gilbert/murano/images/btn/splith.png
new file mode 100644 (file)
index 0000000..a5402b7
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/btn/splith.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/btn/splitv.png b/contrib/gilbert/media/gilbert/murano/images/btn/splitv.png
new file mode 100644 (file)
index 0000000..82970e9
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/btn/splitv.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/btn/whole/Down.png b/contrib/gilbert/media/gilbert/murano/images/btn/whole/Down.png
new file mode 100644 (file)
index 0000000..c55c6f0
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/btn/whole/Down.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/btn/whole/Normal.png b/contrib/gilbert/media/gilbert/murano/images/btn/whole/Normal.png
new file mode 100644 (file)
index 0000000..d4756a4
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/btn/whole/Normal.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/btn/whole/Over.png b/contrib/gilbert/media/gilbert/murano/images/btn/whole/Over.png
new file mode 100644 (file)
index 0000000..fb22b68
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/btn/whole/Over.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/btn/whole/Pressed.png b/contrib/gilbert/media/gilbert/murano/images/btn/whole/Pressed.png
new file mode 100644 (file)
index 0000000..153be02
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/btn/whole/Pressed.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/fills/30b.png b/contrib/gilbert/media/gilbert/murano/images/fills/30b.png
new file mode 100644 (file)
index 0000000..f030b53
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/fills/30b.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/fills/30w.png b/contrib/gilbert/media/gilbert/murano/images/fills/30w.png
new file mode 100644 (file)
index 0000000..494c8bb
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/fills/30w.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/fills/70w.png b/contrib/gilbert/media/gilbert/murano/images/fills/70w.png
new file mode 100644 (file)
index 0000000..b9fa366
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/fills/70w.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/fills/80b.png b/contrib/gilbert/media/gilbert/murano/images/fills/80b.png
new file mode 100644 (file)
index 0000000..8a6b4eb
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/fills/80b.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/form/checked.png b/contrib/gilbert/media/gilbert/murano/images/form/checked.png
new file mode 100644 (file)
index 0000000..f22d0ff
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/form/checked.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/form/field.opacity b/contrib/gilbert/media/gilbert/murano/images/form/field.opacity
new file mode 100644 (file)
index 0000000..62576dd
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/form/field.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/form/field.png b/contrib/gilbert/media/gilbert/murano/images/form/field.png
new file mode 100644 (file)
index 0000000..33767b4
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/form/field.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/form/radioed.png b/contrib/gilbert/media/gilbert/murano/images/form/radioed.png
new file mode 100644 (file)
index 0000000..1db47e8
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/form/radioed.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/form/unchecked.png b/contrib/gilbert/media/gilbert/murano/images/form/unchecked.png
new file mode 100644 (file)
index 0000000..259deac
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/form/unchecked.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/form/unradioed.png b/contrib/gilbert/media/gilbert/murano/images/form/unradioed.png
new file mode 100644 (file)
index 0000000..6db37df
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/form/unradioed.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/gloss/gloss.opacity b/contrib/gilbert/media/gilbert/murano/images/gloss/gloss.opacity
new file mode 100644 (file)
index 0000000..e0425c7
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/gloss/gloss.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/gloss/gloss.png b/contrib/gilbert/media/gilbert/murano/images/gloss/gloss.png
new file mode 100644 (file)
index 0000000..af1ec9b
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/gloss/gloss.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/gloss/light-gloss.png b/contrib/gilbert/media/gilbert/murano/images/gloss/light-gloss.png
new file mode 100644 (file)
index 0000000..e9444e5
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/gloss/light-gloss.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/gradients/30white-to-trans.png b/contrib/gilbert/media/gilbert/murano/images/gradients/30white-to-trans.png
new file mode 100644 (file)
index 0000000..cbc8ff2
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/gradients/30white-to-trans.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/gradients/dark-inner-shadow.png b/contrib/gilbert/media/gilbert/murano/images/gradients/dark-inner-shadow.png
new file mode 100644 (file)
index 0000000..0636daa
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/gradients/dark-inner-shadow.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/grid/col-move-bottom.png b/contrib/gilbert/media/gilbert/murano/images/grid/col-move-bottom.png
new file mode 100644 (file)
index 0000000..cab866d
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/grid/col-move-bottom.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/grid/col-move-top.png b/contrib/gilbert/media/gilbert/murano/images/grid/col-move-top.png
new file mode 100644 (file)
index 0000000..3de7621
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/grid/col-move-top.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/grid/row-editor-btns.png b/contrib/gilbert/media/gilbert/murano/images/grid/row-editor-btns.png
new file mode 100644 (file)
index 0000000..a267203
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/grid/row-editor-btns.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/icons/balloon.png b/contrib/gilbert/media/gilbert/murano/images/icons/balloon.png
new file mode 100755 (executable)
index 0000000..dff9e47
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/icons/balloon.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/icons/cross.png b/contrib/gilbert/media/gilbert/murano/images/icons/cross.png
new file mode 100755 (executable)
index 0000000..e559d44
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/icons/cross.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/icons/d-first.png b/contrib/gilbert/media/gilbert/murano/images/icons/d-first.png
new file mode 100644 (file)
index 0000000..62bb6b6
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/icons/d-first.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/icons/d-last.png b/contrib/gilbert/media/gilbert/murano/images/icons/d-last.png
new file mode 100644 (file)
index 0000000..a45d9d2
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/icons/d-last.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/icons/d-next.png b/contrib/gilbert/media/gilbert/murano/images/icons/d-next.png
new file mode 100644 (file)
index 0000000..669df8b
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/icons/d-next.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/icons/d-prev.png b/contrib/gilbert/media/gilbert/murano/images/icons/d-prev.png
new file mode 100644 (file)
index 0000000..e8f4683
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/icons/d-prev.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/icons/d-refresh.png b/contrib/gilbert/media/gilbert/murano/images/icons/d-refresh.png
new file mode 100644 (file)
index 0000000..d18dbf9
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/icons/d-refresh.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/icons/exclamation.png b/contrib/gilbert/media/gilbert/murano/images/icons/exclamation.png
new file mode 100644 (file)
index 0000000..c088a26
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/icons/exclamation.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/icons/exclamation32.png b/contrib/gilbert/media/gilbert/murano/images/icons/exclamation32.png
new file mode 100755 (executable)
index 0000000..51fde5a
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/icons/exclamation32.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/icons/first.png b/contrib/gilbert/media/gilbert/murano/images/icons/first.png
new file mode 100755 (executable)
index 0000000..a6930a1
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/icons/first.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/icons/information.png b/contrib/gilbert/media/gilbert/murano/images/icons/information.png
new file mode 100755 (executable)
index 0000000..01184cc
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/icons/information.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/icons/last.png b/contrib/gilbert/media/gilbert/murano/images/icons/last.png
new file mode 100755 (executable)
index 0000000..8c63819
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/icons/last.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/icons/next.png b/contrib/gilbert/media/gilbert/murano/images/icons/next.png
new file mode 100755 (executable)
index 0000000..195a9d7
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/icons/next.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/icons/no.png b/contrib/gilbert/media/gilbert/murano/images/icons/no.png
new file mode 100755 (executable)
index 0000000..1f33a1b
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/icons/no.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/icons/prev.png b/contrib/gilbert/media/gilbert/murano/images/icons/prev.png
new file mode 100755 (executable)
index 0000000..79558ab
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/icons/prev.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/icons/refresh.png b/contrib/gilbert/media/gilbert/murano/images/icons/refresh.png
new file mode 100755 (executable)
index 0000000..1c56055
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/icons/refresh.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/icons/yes.png b/contrib/gilbert/media/gilbert/murano/images/icons/yes.png
new file mode 100755 (executable)
index 0000000..46c0a29
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/icons/yes.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/listview/az.png b/contrib/gilbert/media/gilbert/murano/images/listview/az.png
new file mode 100644 (file)
index 0000000..60ecb93
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/listview/az.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/listview/cols.png b/contrib/gilbert/media/gilbert/murano/images/listview/cols.png
new file mode 100644 (file)
index 0000000..4393cca
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/listview/cols.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/listview/header.png b/contrib/gilbert/media/gilbert/murano/images/listview/header.png
new file mode 100644 (file)
index 0000000..bec2aca
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/listview/header.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/listview/headerdrop.png b/contrib/gilbert/media/gilbert/murano/images/listview/headerdrop.png
new file mode 100644 (file)
index 0000000..fe001e8
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/listview/headerdrop.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/listview/listview-sort-asc.png b/contrib/gilbert/media/gilbert/murano/images/listview/listview-sort-asc.png
new file mode 100644 (file)
index 0000000..d11b3e2
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/listview/listview-sort-asc.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/listview/listview-sort-desc.png b/contrib/gilbert/media/gilbert/murano/images/listview/listview-sort-desc.png
new file mode 100644 (file)
index 0000000..627a7d9
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/listview/listview-sort-desc.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/listview/sort-asc.png b/contrib/gilbert/media/gilbert/murano/images/listview/sort-asc.png
new file mode 100644 (file)
index 0000000..c77105b
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/listview/sort-asc.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/listview/sort-desc.png b/contrib/gilbert/media/gilbert/murano/images/listview/sort-desc.png
new file mode 100644 (file)
index 0000000..75e171e
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/listview/sort-desc.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/listview/za.png b/contrib/gilbert/media/gilbert/murano/images/listview/za.png
new file mode 100644 (file)
index 0000000..0c2333d
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/listview/za.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/load.gif b/contrib/gilbert/media/gilbert/murano/images/load.gif
new file mode 100644 (file)
index 0000000..5fe9ccf
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/load.gif differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/menu/arrow.opacity b/contrib/gilbert/media/gilbert/murano/images/menu/arrow.opacity
new file mode 100644 (file)
index 0000000..ef80ff9
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/menu/arrow.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/menu/arrow.png b/contrib/gilbert/media/gilbert/murano/images/menu/arrow.png
new file mode 100644 (file)
index 0000000..f79ebbc
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/menu/arrow.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/mini/mini-bottom.png b/contrib/gilbert/media/gilbert/murano/images/mini/mini-bottom.png
new file mode 100644 (file)
index 0000000..11ae079
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/mini/mini-bottom.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/mini/mini-left.png b/contrib/gilbert/media/gilbert/murano/images/mini/mini-left.png
new file mode 100644 (file)
index 0000000..1fe6f7e
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/mini/mini-left.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/mini/mini-right.png b/contrib/gilbert/media/gilbert/murano/images/mini/mini-right.png
new file mode 100644 (file)
index 0000000..d090c0a
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/mini/mini-right.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/mini/mini-top.png b/contrib/gilbert/media/gilbert/murano/images/mini/mini-top.png
new file mode 100644 (file)
index 0000000..32f0de8
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/mini/mini-top.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/progress.png b/contrib/gilbert/media/gilbert/murano/images/progress.png
new file mode 100644 (file)
index 0000000..d55db12
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/progress.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/resizable/e.png b/contrib/gilbert/media/gilbert/murano/images/resizable/e.png
new file mode 100644 (file)
index 0000000..1d4d6d4
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/resizable/e.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/resizable/n.png b/contrib/gilbert/media/gilbert/murano/images/resizable/n.png
new file mode 100644 (file)
index 0000000..6ac64c9
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/resizable/n.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/resizable/ne.png b/contrib/gilbert/media/gilbert/murano/images/resizable/ne.png
new file mode 100644 (file)
index 0000000..c57ab8e
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/resizable/ne.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/resizable/nw.png b/contrib/gilbert/media/gilbert/murano/images/resizable/nw.png
new file mode 100644 (file)
index 0000000..52262a7
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/resizable/nw.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/resizable/s.png b/contrib/gilbert/media/gilbert/murano/images/resizable/s.png
new file mode 100644 (file)
index 0000000..6ac64c9
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/resizable/s.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/resizable/se.png b/contrib/gilbert/media/gilbert/murano/images/resizable/se.png
new file mode 100644 (file)
index 0000000..109cf8d
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/resizable/se.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/resizable/sw.png b/contrib/gilbert/media/gilbert/murano/images/resizable/sw.png
new file mode 100644 (file)
index 0000000..9b91ce1
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/resizable/sw.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/resizable/w.png b/contrib/gilbert/media/gilbert/murano/images/resizable/w.png
new file mode 100644 (file)
index 0000000..1d4d6d4
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/resizable/w.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/scroller/l.png b/contrib/gilbert/media/gilbert/murano/images/scroller/l.png
new file mode 100644 (file)
index 0000000..5c43d0d
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/scroller/l.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/scroller/r.png b/contrib/gilbert/media/gilbert/murano/images/scroller/r.png
new file mode 100644 (file)
index 0000000..c6111ef
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/scroller/r.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/slider/h.png b/contrib/gilbert/media/gilbert/murano/images/slider/h.png
new file mode 100644 (file)
index 0000000..5ce04c0
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/slider/h.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/slider/thumbh.png b/contrib/gilbert/media/gilbert/murano/images/slider/thumbh.png
new file mode 100644 (file)
index 0000000..9c11f82
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/slider/thumbh.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/slider/thumbv.png b/contrib/gilbert/media/gilbert/murano/images/slider/thumbv.png
new file mode 100644 (file)
index 0000000..9c7419c
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/slider/thumbv.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/slider/v.png b/contrib/gilbert/media/gilbert/murano/images/slider/v.png
new file mode 100644 (file)
index 0000000..72c816c
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/slider/v.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/30-b.opacity b/contrib/gilbert/media/gilbert/murano/images/src/30-b.opacity
new file mode 100644 (file)
index 0000000..869cec5
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/30-b.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/30-w.opacity b/contrib/gilbert/media/gilbert/murano/images/src/30-w.opacity
new file mode 100644 (file)
index 0000000..c2ce599
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/30-w.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/30w.opacity b/contrib/gilbert/media/gilbert/murano/images/src/30w.opacity
new file mode 100644 (file)
index 0000000..35b9066
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/30w.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/30white-to-trans.opacity b/contrib/gilbert/media/gilbert/murano/images/src/30white-to-trans.opacity
new file mode 100644 (file)
index 0000000..a3ceb55
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/30white-to-trans.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/70w.opacity b/contrib/gilbert/media/gilbert/murano/images/src/70w.opacity
new file mode 100644 (file)
index 0000000..718ca1d
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/70w.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/80-b.opacity b/contrib/gilbert/media/gilbert/murano/images/src/80-b.opacity
new file mode 100644 (file)
index 0000000..d4c7378
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/80-b.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/?.opacity b/contrib/gilbert/media/gilbert/murano/images/src/?.opacity
new file mode 100644 (file)
index 0000000..9e51720
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/?.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/arrow buttons.opacity b/contrib/gilbert/media/gilbert/murano/images/src/arrow buttons.opacity
new file mode 100644 (file)
index 0000000..1dc866d
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/arrow buttons.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/btn.opacity b/contrib/gilbert/media/gilbert/murano/images/src/btn.opacity
new file mode 100644 (file)
index 0000000..79387cb
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/btn.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/check.opacity b/contrib/gilbert/media/gilbert/murano/images/src/check.opacity
new file mode 100644 (file)
index 0000000..9835a54
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/check.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/col-move-bottom.opacity b/contrib/gilbert/media/gilbert/murano/images/src/col-move-bottom.opacity
new file mode 100644 (file)
index 0000000..8d5a7e0
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/col-move-bottom.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/col-move-top.opacity b/contrib/gilbert/media/gilbert/murano/images/src/col-move-top.opacity
new file mode 100644 (file)
index 0000000..62b579e
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/col-move-top.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/dark-inner-shadow.opacity b/contrib/gilbert/media/gilbert/murano/images/src/dark-inner-shadow.opacity
new file mode 100644 (file)
index 0000000..2422c28
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/dark-inner-shadow.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/exclamation.opacity b/contrib/gilbert/media/gilbert/murano/images/src/exclamation.opacity
new file mode 100644 (file)
index 0000000..09cfd0c
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/exclamation.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/grad-height-25.opacity b/contrib/gilbert/media/gilbert/murano/images/src/grad-height-25.opacity
new file mode 100644 (file)
index 0000000..4a16036
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/grad-height-25.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/h.opacity b/contrib/gilbert/media/gilbert/murano/images/src/h.opacity
new file mode 100644 (file)
index 0000000..cb738c5
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/h.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/light-gloss.opacity b/contrib/gilbert/media/gilbert/murano/images/src/light-gloss.opacity
new file mode 100644 (file)
index 0000000..0dd03ec
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/light-gloss.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/listview-sort.opacity b/contrib/gilbert/media/gilbert/murano/images/src/listview-sort.opacity
new file mode 100644 (file)
index 0000000..ab60087
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/listview-sort.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/listviewheader.opacity b/contrib/gilbert/media/gilbert/murano/images/src/listviewheader.opacity
new file mode 100644 (file)
index 0000000..853b4d8
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/listviewheader.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/mini.opacity b/contrib/gilbert/media/gilbert/murano/images/src/mini.opacity
new file mode 100644 (file)
index 0000000..3ba2b37
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/mini.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/progress.opacity b/contrib/gilbert/media/gilbert/murano/images/src/progress.opacity
new file mode 100644 (file)
index 0000000..81d4904
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/progress.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/resizable corner.psd b/contrib/gilbert/media/gilbert/murano/images/src/resizable corner.psd
new file mode 100644 (file)
index 0000000..822db29
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/resizable corner.psd differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/resizable long.psd b/contrib/gilbert/media/gilbert/murano/images/src/resizable long.psd
new file mode 100644 (file)
index 0000000..074b076
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/resizable long.psd differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/row-editor-btns.opacity b/contrib/gilbert/media/gilbert/murano/images/src/row-editor-btns.opacity
new file mode 100644 (file)
index 0000000..040f298
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/row-editor-btns.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/scroller.opacity b/contrib/gilbert/media/gilbert/murano/images/src/scroller.opacity
new file mode 100644 (file)
index 0000000..6f9ee31
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/scroller.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/sort.opacity b/contrib/gilbert/media/gilbert/murano/images/src/sort.opacity
new file mode 100644 (file)
index 0000000..e33424c
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/sort.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/tabs.opacity b/contrib/gilbert/media/gilbert/murano/images/src/tabs.opacity
new file mode 100644 (file)
index 0000000..974441e
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/tabs.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/tb-sprite.psd b/contrib/gilbert/media/gilbert/murano/images/src/tb-sprite.psd
new file mode 100644 (file)
index 0000000..9f0ec67
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/tb-sprite.psd differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/tb.opacity b/contrib/gilbert/media/gilbert/murano/images/src/tb.opacity
new file mode 100644 (file)
index 0000000..d307ca0
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/tb.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/thumbh.opacity b/contrib/gilbert/media/gilbert/murano/images/src/thumbh.opacity
new file mode 100644 (file)
index 0000000..6909c40
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/thumbh.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/thumbv.opacity b/contrib/gilbert/media/gilbert/murano/images/src/thumbv.opacity
new file mode 100644 (file)
index 0000000..64c1a5c
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/thumbv.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/tools.psd b/contrib/gilbert/media/gilbert/murano/images/src/tools.psd
new file mode 100644 (file)
index 0000000..a69c09f
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/tools.psd differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/tooltip-invalid.opacity b/contrib/gilbert/media/gilbert/murano/images/src/tooltip-invalid.opacity
new file mode 100644 (file)
index 0000000..dcfcb81
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/tooltip-invalid.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/tooltip.opacity b/contrib/gilbert/media/gilbert/murano/images/src/tooltip.opacity
new file mode 100644 (file)
index 0000000..0264045
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/tooltip.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/triggers/blank.opacity b/contrib/gilbert/media/gilbert/murano/images/src/triggers/blank.opacity
new file mode 100644 (file)
index 0000000..2f124fb
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/triggers/blank.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/triggers/blank.png b/contrib/gilbert/media/gilbert/murano/images/src/triggers/blank.png
new file mode 100644 (file)
index 0000000..983fdff
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/triggers/blank.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/triggers/clear.opacity b/contrib/gilbert/media/gilbert/murano/images/src/triggers/clear.opacity
new file mode 100644 (file)
index 0000000..a51a849
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/triggers/clear.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/triggers/date.opacity b/contrib/gilbert/media/gilbert/murano/images/src/triggers/date.opacity
new file mode 100644 (file)
index 0000000..ce54557
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/triggers/date.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/triggers/drop.opacity b/contrib/gilbert/media/gilbert/murano/images/src/triggers/drop.opacity
new file mode 100644 (file)
index 0000000..f7065e1
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/triggers/drop.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/triggers/search.opacity b/contrib/gilbert/media/gilbert/murano/images/src/triggers/search.opacity
new file mode 100644 (file)
index 0000000..01c7e9b
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/triggers/search.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/v.opacity b/contrib/gilbert/media/gilbert/murano/images/src/v.opacity
new file mode 100644 (file)
index 0000000..81a092d
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/v.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/window-dark.opacity b/contrib/gilbert/media/gilbert/murano/images/src/window-dark.opacity
new file mode 100644 (file)
index 0000000..1d4cde2
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/window-dark.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/window.opacity b/contrib/gilbert/media/gilbert/murano/images/src/window.opacity
new file mode 100644 (file)
index 0000000..644311c
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/window.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/src/x.opacity b/contrib/gilbert/media/gilbert/murano/images/src/x.opacity
new file mode 100644 (file)
index 0000000..da05b1f
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/src/x.opacity differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tab/c/Bottom.png b/contrib/gilbert/media/gilbert/murano/images/tab/c/Bottom.png
new file mode 100644 (file)
index 0000000..f12c35b
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tab/c/Bottom.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tab/c/Top.png b/contrib/gilbert/media/gilbert/murano/images/tab/c/Top.png
new file mode 100644 (file)
index 0000000..0d9880c
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tab/c/Top.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tab/close.png b/contrib/gilbert/media/gilbert/murano/images/tab/close.png
new file mode 100644 (file)
index 0000000..7139a96
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tab/close.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tab/l/Bottom.png b/contrib/gilbert/media/gilbert/murano/images/tab/l/Bottom.png
new file mode 100644 (file)
index 0000000..1a6f7c0
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tab/l/Bottom.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tab/l/Top.png b/contrib/gilbert/media/gilbert/murano/images/tab/l/Top.png
new file mode 100644 (file)
index 0000000..9bbe709
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tab/l/Top.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tab/r/Bottom.png b/contrib/gilbert/media/gilbert/murano/images/tab/r/Bottom.png
new file mode 100644 (file)
index 0000000..0e16744
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tab/r/Bottom.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tab/r/Top.png b/contrib/gilbert/media/gilbert/murano/images/tab/r/Top.png
new file mode 100644 (file)
index 0000000..85ea39d
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tab/r/Top.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tb-sprite.png b/contrib/gilbert/media/gilbert/murano/images/tb-sprite.png
new file mode 100644 (file)
index 0000000..d4e4c53
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tb-sprite.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tb.png b/contrib/gilbert/media/gilbert/murano/images/tb.png
new file mode 100644 (file)
index 0000000..01a80d9
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tb.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tools.png b/contrib/gilbert/media/gilbert/murano/images/tools.png
new file mode 100644 (file)
index 0000000..53540f0
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tools.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/arrows.gif b/contrib/gilbert/media/gilbert/murano/images/tree/arrows.gif
new file mode 100644 (file)
index 0000000..2683463
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/arrows.gif differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/drop-add.png b/contrib/gilbert/media/gilbert/murano/images/tree/drop-add.png
new file mode 100755 (executable)
index 0000000..49746a1
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/drop-add.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/drop-between.gif b/contrib/gilbert/media/gilbert/murano/images/tree/drop-between.gif
new file mode 100644 (file)
index 0000000..5c6c09d
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/drop-between.gif differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/drop-no.png b/contrib/gilbert/media/gilbert/murano/images/tree/drop-no.png
new file mode 100755 (executable)
index 0000000..1f33a1b
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/drop-no.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/drop-over.gif b/contrib/gilbert/media/gilbert/murano/images/tree/drop-over.gif
new file mode 100644 (file)
index 0000000..30d1ca7
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/drop-over.gif differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/drop-under.gif b/contrib/gilbert/media/gilbert/murano/images/tree/drop-under.gif
new file mode 100644 (file)
index 0000000..85f66b1
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/drop-under.gif differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/drop-yes.png b/contrib/gilbert/media/gilbert/murano/images/tree/drop-yes.png
new file mode 100755 (executable)
index 0000000..46c0a29
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/drop-yes.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/elbow-end-minus-nl.gif b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-end-minus-nl.gif
new file mode 100644 (file)
index 0000000..0f2f2fd
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-end-minus-nl.gif differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/elbow-end-minus.gif b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-end-minus.gif
new file mode 100644 (file)
index 0000000..e8995a9
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-end-minus.gif differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/elbow-end-plus-nl.gif b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-end-plus-nl.gif
new file mode 100644 (file)
index 0000000..095afc4
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-end-plus-nl.gif differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/elbow-end-plus.gif b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-end-plus.gif
new file mode 100644 (file)
index 0000000..6049b9a
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-end-plus.gif differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/elbow-end.gif b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-end.gif
new file mode 100644 (file)
index 0000000..f24ddee
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-end.gif differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/elbow-line.gif b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-line.gif
new file mode 100644 (file)
index 0000000..75e6da4
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-line.gif differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/elbow-minus-nl.gif b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-minus-nl.gif
new file mode 100644 (file)
index 0000000..0f2f2fd
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-minus-nl.gif differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/elbow-minus.gif b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-minus.gif
new file mode 100644 (file)
index 0000000..df410a0
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-minus.gif differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/elbow-plus-nl.gif b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-plus-nl.gif
new file mode 100644 (file)
index 0000000..095afc4
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-plus-nl.gif differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/elbow-plus.gif b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-plus.gif
new file mode 100644 (file)
index 0000000..4fe31a3
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/elbow-plus.gif differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/elbow.gif b/contrib/gilbert/media/gilbert/murano/images/tree/elbow.gif
new file mode 100644 (file)
index 0000000..b8f4208
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/elbow.gif differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/folder-open.png b/contrib/gilbert/media/gilbert/murano/images/tree/folder-open.png
new file mode 100755 (executable)
index 0000000..dc05885
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/folder-open.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/folder.png b/contrib/gilbert/media/gilbert/murano/images/tree/folder.png
new file mode 100755 (executable)
index 0000000..87ff120
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/folder.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/leaf.png b/contrib/gilbert/media/gilbert/murano/images/tree/leaf.png
new file mode 100755 (executable)
index 0000000..8b17b3c
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/leaf.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/loading.gif b/contrib/gilbert/media/gilbert/murano/images/tree/loading.gif
new file mode 100644 (file)
index 0000000..5fe9ccf
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/loading.gif differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tree/s.gif b/contrib/gilbert/media/gilbert/murano/images/tree/s.gif
new file mode 100644 (file)
index 0000000..1d11fa9
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tree/s.gif differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/trigger/blank.png b/contrib/gilbert/media/gilbert/murano/images/trigger/blank.png
new file mode 100644 (file)
index 0000000..165ba02
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/trigger/blank.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/trigger/clear.png b/contrib/gilbert/media/gilbert/murano/images/trigger/clear.png
new file mode 100644 (file)
index 0000000..a7c97bf
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/trigger/clear.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/trigger/date.png b/contrib/gilbert/media/gilbert/murano/images/trigger/date.png
new file mode 100644 (file)
index 0000000..6fdaa3f
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/trigger/date.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/trigger/drop.png b/contrib/gilbert/media/gilbert/murano/images/trigger/drop.png
new file mode 100644 (file)
index 0000000..5a8a8b2
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/trigger/drop.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/trigger/search.png b/contrib/gilbert/media/gilbert/murano/images/trigger/search.png
new file mode 100644 (file)
index 0000000..f878e02
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/trigger/search.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tt/bc.png b/contrib/gilbert/media/gilbert/murano/images/tt/bc.png
new file mode 100644 (file)
index 0000000..f2022df
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tt/bc.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tt/bl.png b/contrib/gilbert/media/gilbert/murano/images/tt/bl.png
new file mode 100644 (file)
index 0000000..fad7b21
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tt/bl.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tt/br.png b/contrib/gilbert/media/gilbert/murano/images/tt/br.png
new file mode 100644 (file)
index 0000000..217491d
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tt/br.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tt/c.png b/contrib/gilbert/media/gilbert/murano/images/tt/c.png
new file mode 100644 (file)
index 0000000..70f3d1d
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tt/c.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tt/i-bc.png b/contrib/gilbert/media/gilbert/murano/images/tt/i-bc.png
new file mode 100644 (file)
index 0000000..eb124df
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tt/i-bc.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tt/i-bl.png b/contrib/gilbert/media/gilbert/murano/images/tt/i-bl.png
new file mode 100644 (file)
index 0000000..7c7721f
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tt/i-bl.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tt/i-br.png b/contrib/gilbert/media/gilbert/murano/images/tt/i-br.png
new file mode 100644 (file)
index 0000000..19aaad9
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tt/i-br.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tt/i-c.png b/contrib/gilbert/media/gilbert/murano/images/tt/i-c.png
new file mode 100644 (file)
index 0000000..b23e939
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tt/i-c.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tt/i-ml.png b/contrib/gilbert/media/gilbert/murano/images/tt/i-ml.png
new file mode 100644 (file)
index 0000000..34d3f1a
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tt/i-ml.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tt/i-mr.png b/contrib/gilbert/media/gilbert/murano/images/tt/i-mr.png
new file mode 100644 (file)
index 0000000..6dbacc3
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tt/i-mr.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tt/i-tc.png b/contrib/gilbert/media/gilbert/murano/images/tt/i-tc.png
new file mode 100644 (file)
index 0000000..3b55ecf
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tt/i-tc.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tt/i-tl.png b/contrib/gilbert/media/gilbert/murano/images/tt/i-tl.png
new file mode 100644 (file)
index 0000000..12fa555
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tt/i-tl.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tt/i-tr.png b/contrib/gilbert/media/gilbert/murano/images/tt/i-tr.png
new file mode 100644 (file)
index 0000000..bc6e3bf
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tt/i-tr.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tt/ml.png b/contrib/gilbert/media/gilbert/murano/images/tt/ml.png
new file mode 100644 (file)
index 0000000..4bebef2
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tt/ml.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tt/mr.png b/contrib/gilbert/media/gilbert/murano/images/tt/mr.png
new file mode 100644 (file)
index 0000000..23aebdd
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tt/mr.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tt/tc.png b/contrib/gilbert/media/gilbert/murano/images/tt/tc.png
new file mode 100644 (file)
index 0000000..2108682
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tt/tc.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tt/tl.png b/contrib/gilbert/media/gilbert/murano/images/tt/tl.png
new file mode 100644 (file)
index 0000000..0d86302
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tt/tl.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/tt/tr.png b/contrib/gilbert/media/gilbert/murano/images/tt/tr.png
new file mode 100644 (file)
index 0000000..70d0cc9
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/tt/tr.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/windowdark/bc.png b/contrib/gilbert/media/gilbert/murano/images/windowdark/bc.png
new file mode 100644 (file)
index 0000000..a2bfead
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/windowdark/bc.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/windowdark/bl.png b/contrib/gilbert/media/gilbert/murano/images/windowdark/bl.png
new file mode 100644 (file)
index 0000000..5a6ce5b
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/windowdark/bl.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/windowdark/br.png b/contrib/gilbert/media/gilbert/murano/images/windowdark/br.png
new file mode 100644 (file)
index 0000000..bbde5b2
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/windowdark/br.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/windowdark/c.png b/contrib/gilbert/media/gilbert/murano/images/windowdark/c.png
new file mode 100644 (file)
index 0000000..8a6b4eb
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/windowdark/c.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/windowdark/l.png b/contrib/gilbert/media/gilbert/murano/images/windowdark/l.png
new file mode 100644 (file)
index 0000000..af70f5f
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/windowdark/l.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/windowdark/r.png b/contrib/gilbert/media/gilbert/murano/images/windowdark/r.png
new file mode 100644 (file)
index 0000000..bf77670
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/windowdark/r.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/windowdark/tc.png b/contrib/gilbert/media/gilbert/murano/images/windowdark/tc.png
new file mode 100644 (file)
index 0000000..8c65fb1
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/windowdark/tc.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/windowdark/tl.png b/contrib/gilbert/media/gilbert/murano/images/windowdark/tl.png
new file mode 100644 (file)
index 0000000..c253ea5
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/windowdark/tl.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/windowdark/tr.png b/contrib/gilbert/media/gilbert/murano/images/windowdark/tr.png
new file mode 100644 (file)
index 0000000..b371422
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/windowdark/tr.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/windowlight/bc.png b/contrib/gilbert/media/gilbert/murano/images/windowlight/bc.png
new file mode 100644 (file)
index 0000000..0ce7973
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/windowlight/bc.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/windowlight/bl.png b/contrib/gilbert/media/gilbert/murano/images/windowlight/bl.png
new file mode 100644 (file)
index 0000000..e2f5bbf
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/windowlight/bl.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/windowlight/br.png b/contrib/gilbert/media/gilbert/murano/images/windowlight/br.png
new file mode 100644 (file)
index 0000000..9ed3c34
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/windowlight/br.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/windowlight/c.png b/contrib/gilbert/media/gilbert/murano/images/windowlight/c.png
new file mode 100644 (file)
index 0000000..bcf4ec9
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/windowlight/c.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/windowlight/l.png b/contrib/gilbert/media/gilbert/murano/images/windowlight/l.png
new file mode 100644 (file)
index 0000000..e85f76e
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/windowlight/l.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/windowlight/r.png b/contrib/gilbert/media/gilbert/murano/images/windowlight/r.png
new file mode 100644 (file)
index 0000000..36cc2a3
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/windowlight/r.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/windowlight/tc.png b/contrib/gilbert/media/gilbert/murano/images/windowlight/tc.png
new file mode 100644 (file)
index 0000000..ea82da9
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/windowlight/tc.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/windowlight/tl.png b/contrib/gilbert/media/gilbert/murano/images/windowlight/tl.png
new file mode 100644 (file)
index 0000000..ff1586f
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/windowlight/tl.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/images/windowlight/tr.png b/contrib/gilbert/media/gilbert/murano/images/windowlight/tr.png
new file mode 100644 (file)
index 0000000..42087c6
Binary files /dev/null and b/contrib/gilbert/media/gilbert/murano/images/windowlight/tr.png differ
diff --git a/contrib/gilbert/media/gilbert/murano/murano.css b/contrib/gilbert/media/gilbert/murano/murano.css
new file mode 100644 (file)
index 0000000..53c05d9
--- /dev/null
@@ -0,0 +1,1488 @@
+body{
+       background:#666;
+       color: #CCC;
+       font-family: Helvetica, Arial, sans-serif;
+       font-size: 12px;
+}
+
+/* kill the borders */
+.x-panel-tl, .x-toolbar-layout-ct, .x-panel-tbar, .x-toolbar, .x-panel-header, .x-panel-body,
+.x-window-tl,
+.x-window-body,
+.x-window-mc,
+.x-progress-bar,
+.x-tab-scrolling-top,
+.x-tab-panel-body,
+.x-tab-scroller-left, .x-tab-scroller-right,
+.x-tab-strip-spacer,
+.x-tab-panel-footer,
+.x-tab-strip,
+.x-list-header-inner em,
+.x-grid3-cell,.x-grid3-header, .x-grid3-header-offset,
+.x-date-prevday,
+.x-date-nextday,
+.x-tab-panel-header{
+       border: 0 !important;
+}
+
+/* kill stuff */
+.x-shadow{
+       display:none !important;
+}
+.x-tool, .x-date-mp .x-date-mp-ybtn .x-date-mp-prev, .x-date-mp .x-date-mp-ybtn .x-date-mp-next{
+       background-image:url(images/tools.png);
+}
+
+
+/* @group Basic Window */
+
+/* window header */
+       .x-window-tr, .x-panel-tr{
+               padding-right: 16px;
+               background: transparent url(images/windowlight/tr.png) no-repeat right top;
+       }
+       .x-window-tc, .x-panel-tc{
+               background: transparent url(images/windowlight/tc.png) repeat-x right top;
+               overflow:visible;
+       }
+       .x-window-tl, .x-panel-tl{
+               padding-left: 16px;
+               background: transparent url(images/windowlight/tl.png) no-repeat left top;
+               font-family: Optima;
+       }
+       .x-window-header-text, .x-panel-header-text{
+               color: #FFF;
+               text-shadow: 1px 1px 0 #000;
+               font-size: 12px;
+       }
+       .x-window-header, .x-window-tc, .x-panel-tc{
+       }
+       
+       .x-panel-tc > .x-panel-header, .x-window-tc > .x-window-header{
+               margin: 0 -10px;
+       }
+       /* don't go off the edge when a window is maximized. */
+       .x-window-maximized > .x-window-tl > .x-window-tr > .x-window-tc > .x-window-header{
+               margin: 0;
+       }
+       /* hide the rounded corners when the window is maximized. */
+       .x-window-maximized > .x-window-tl, .x-window-maximized > .x-window-tl > .x-window-tr{
+               background: none;
+       }
+       
+       .x-window-mc, .x-panel-mc{
+               background: transparent url(images/windowlight/c.png) repeat right top;
+               padding: 0;
+       }
+       .x-window-ml, .x-panel-ml{
+               padding-left: 2px;
+               background: transparent url(images/windowlight/l.png) repeat-y left bottom;
+       }
+       .x-window-mr, .x-panel-mr{
+               padding-right: 2px;
+               background: transparent url(images/windowlight/r.png) repeat-y right bottom;
+       }
+       .x-window-mc{
+               border: 0;
+               padding: 0;
+       }
+       .x-window-header, .x-panel-header{
+               line-height: 16px;
+       }
+       .x-panel-header{
+               margin: 0 0;
+       }
+       /* Window Footer Stuff */
+       .x-window-bl, .x-panel-bl{
+               padding-left: 16px;
+               min-height: 16px;
+               background: transparent url(images/windowdark/bl.png) no-repeat left bottom;
+       }
+       .x-window-br, .x-panel-br{
+               padding-right: 16px;
+               min-height: 16px;
+               background: transparent url(images/windowdark/br.png) no-repeat right bottom;
+       }
+       .x-window-bc, .x-panel-bc{
+               background: transparent url(images/windowdark/bc.png) repeat-x right bottom;
+               min-height: 16px;
+       }
+       .x-window-bc .x-window-footer, .x-panel-bc .x-panel-footer{
+               margin: 0 -16px;
+       }
+       /* If there is no footer, use the light version */
+       .x-window-bl.x-window-no-footer, .x-panel-bl.x-panel-nofooter{
+               border-top: 0;
+               background-image: url(images/windowlight/bl.png);
+       }
+       .x-window-no-footer .x-window-br, .x-panel-nofooter .x-panel-br{
+               background-image: url(images/windowlight/br.png);
+       }
+       .x-window-no-footer .x-window-bc, .x-panel-nofooter .x-panel-bc{
+               background-image: url(images/windowlight/bc.png) ;
+       }
+
+/* @end */
+
+/* @group Frame Panel inside a window */
+
+.x-window .x-panel-tl,
+.x-window .x-panel-tr,
+.x-window .x-panel-ml,
+.x-window .x-panel-mr,
+.x-window .x-panel-bl,
+.x-window .x-panel-br{
+       padding: 0;
+       background: transparent;
+}
+.x-window .x-panel-bl, .x-window .x-panel-bc, .x-window .x-panel-br{
+       background-position: top left;
+}
+
+/* @end */
+
+
+
+/* @group Basic Panel */
+
+.x-panel-header{
+               background: transparent url(images/windowlight/tc.png) repeat-x left top;
+               font-family: Optima;
+       }
+       .x-panel-body{
+               background: transparent url(images/windowlight/c.png) top left repeat;
+       }
+       .x-panel-mc .x-panel-body{
+               background: none;
+       }
+
+/* @end */
+
+/* @group Minimizers and Split-Panels */
+
+.x-splitbar-proxy{
+       background: transparent url(images/fills/30w.png) left top repeat;
+}
+
+.x-layout-collapsed{
+               background: transparent url(images/windowlight/c.png) top left repeat;
+               border-color: #333;
+       }
+       .x-layout-collapsed-over{
+               background: transparent url(images/windowdark/c.png) top left repeat;
+       }
+       
+.x-layout-mini-west, .x-layout-collapsed .x-layout-mini-east{
+               background: transparent url(images/mini/mini-left.png) top left no-repeat;
+}
+.x-layout-mini-east, .x-layout-collapsed .x-layout-mini-west{
+               background: transparent url(images/mini/mini-right.png) top left no-repeat;
+}
+.x-layout-mini-north, .x-layout-collapsed .x-layout-mini-south{
+               background: transparent url(images/mini/mini-bottom.png) top left no-repeat;
+}
+.x-layout-mini-south, .x-layout-collapsed .x-layout-mini-north{
+               background: transparent url(images/mini/mini-top.png) top left no-repeat;
+}
+
+/* @end */
+
+
+/* @group Toolbars */
+
+.x-toolbar{
+       height: 24px;
+       background: transparent url(images/tb.png) left top repeat-x;
+}
+.x-btn-text{
+       color: #FFF;
+}
+.xtb-text{
+       font-size: 11px;
+}
+       /* text-edit */
+       .x-edit-bold,
+       .x-edit-italic,
+       .x-edit-underline,
+       .x-edit-increasefontsize,
+       .x-edit-decreasefontsize,
+       .x-edit-forecolor,
+       .x-edit-backcolor,
+       .x-edit-justifyleft,
+       .x-edit-justifyright,
+       .x-edit-justifycenter,
+       .x-edit-createlink,
+       .x-edit-insertorderedlist,
+       .x-edit-insertunorderedlist,
+       .x-edit-sourceedit{
+               background-image: url(images/tb-sprite.png) !important;
+       }
+
+/* @end */
+
+/* @group Buttons */
+
+       .x-btn-ml, .x-btn-tl, .x-btn-bl, .x-btn-mr, .x-btn-tr, .x-btn-br{
+               width: 3px;
+       }
+               .x-btn-tl, .x-btn-tr, .x-btn-bl, .x-btn-br{
+               height: 3px;
+       }
+       .x-btn-mc em{
+               margin: 0 2px;
+       }
+
+       /* @group Normal */
+               .x-btn-tl,
+               .x-btn-tr,
+               .x-btn-bl,
+               .x-btn-br,
+               .x-btn-ml,
+               .x-btn-mr{
+                       background: transparent url(images/btn/whole/Normal.png) top left no-repeat;
+               }
+               .x-btn-mc,
+               .x-btn-bc,
+               .x-btn-tc{
+                       background: transparent url(images/btn/c/Normal.png) top left repeat-x;
+               }
+       /* @end */
+
+       /* @group Over */
+               .x-btn-over .x-btn-tl,
+               .x-btn-over .x-btn-tr,
+               .x-btn-over .x-btn-bl,
+               .x-btn-over .x-btn-br,
+               .x-btn-over .x-btn-ml,
+               .x-btn-over .x-btn-mr{
+                       background: transparent url(images/btn/whole/Over.png) top left no-repeat;
+               }
+               .x-btn-over .x-btn-mc,
+               .x-btn-over .x-btn-bc,
+               .x-btn-over .x-btn-tc{
+                       background: transparent url(images/btn/c/Over.png) top left repeat-x;
+               }
+       /* @end */
+
+       /* @group Click */
+               .x-btn-click .x-btn-tl,
+               .x-btn-click .x-btn-tr,
+               .x-btn-click .x-btn-bl,
+               .x-btn-click .x-btn-br,
+               .x-btn-click .x-btn-ml,
+               .x-btn-click .x-btn-mr{
+                       background: transparent url(images/btn/whole/Pressed.png) top left no-repeat;
+               }
+               .x-btn-click .x-btn-mc,
+               .x-btn-click .x-btn-bc,
+               .x-btn-click .x-btn-tc{
+                       background: transparent url(images/btn/c/Pressed.png) top left repeat-x;
+               }
+       /* @end */
+
+       /* @group Active */
+               .x-btn-pressed .x-btn-tl, .x-btn-menu-active .x-btn-tl,
+               .x-btn-pressed .x-btn-tr, .x-btn-menu-active .x-btn-tr,
+               .x-btn-pressed .x-btn-bl, .x-btn-menu-active .x-btn-bl,
+               .x-btn-pressed .x-btn-br, .x-btn-menu-active .x-btn-br,
+               .x-btn-pressed .x-btn-ml, .x-btn-menu-active .x-btn-ml,
+               .x-btn-pressed .x-btn-mr, .x-btn-menu-active .x-btn-mr{
+                       background: transparent url(images/btn/whole/Down.png) top left no-repeat;
+               }
+               .x-btn-pressed .x-btn-mc, .x-btn-menu-active .x-btn-mc,
+               .x-btn-pressed .x-btn-bc, .x-btn-menu-active .x-btn-bc,
+               .x-btn-pressed .x-btn-tc, .x-btn-menu-active .x-btn-tc{
+                       background: transparent url(images/btn/c/Down.png) top left repeat-x;
+               }
+       /* @end */
+.x-btn-mc{
+       padding: 0 10px !important;
+}
+
+.x-btn-tl{ background-position: left top !important; }
+.x-btn-tc{ background-position: center top !important; }
+.x-btn-tr{ background-position: right top !important; }
+.x-btn-ml{ background-position: left center !important; }
+.x-btn-mc{ background-position: center center !important; }
+.x-btn-mr{ background-position: right center !important; }
+.x-btn-bl{ background-position: left bottom !important; }
+.x-btn-bc{ background-position: center bottom !important; }
+.x-btn-br{ background-position: right bottom !important; }
+
+.x-btn-arrow-bottom{
+               background: transparent url(images/btn/arrv.png) center bottom no-repeat !important;
+}
+.x-btn-split-bottom{
+               background: transparent url(images/btn/splitv.png) center bottom no-repeat !important;
+               padding-bottom:18px !important; 
+}
+.x-btn-icon-small-right .x-btn-text{ padding-right: 20px !important; }
+.x-btn-icon-medium-right .x-btn-text{ padding-right: 28px !important; }
+.x-btn-icon-large-right .x-btn-text{ padding-right: 36px !important; }
+
+/*.x-toolbar-cell table{
+               height:22px;
+               margin-top: 1px;
+       }
+       .x-btn-tr, .x-btn-tc, .x-btn-tl, .x-btn-br, .x-btn-bc, .x-btn-bl{
+               display: none;
+       }
+       .x-btn-ml, .x-btn-mc, .x-btn-mr{
+               height: 22px;
+       }
+       .x-btn-ml,
+       .x-toolbar .x-btn-ml{
+               width: 6px;
+               background: transparent url(images/btn/l.png) left top no-repeat;
+       }
+       .x-btn-mc,
+       .x-toolbar .x-btn-mc{
+               background: transparent url(images/btn/c.png) left top repeat;
+       }
+       .x-btn-mr,
+       .x-toolbar .x-btn-mr{
+               width:6px;
+               background: transparent url(images/btn/r.png) right top no-repeat;
+       }
+       .x-btn-text{
+               text-shadow: -1px -1px 0 rgba(0,0,0,.6);
+               color: #EEE;
+       }
+       /* over state */
+       .x-btn-over .x-btn-ml, .x-btn-over .x-btn-mc,
+       .x-toolbar .x-btn-over .x-btn-ml, .x-toolbar .x-btn-over .x-btn-mc{
+               background-position: left -22px;
+       }
+       .x-btn-over .x-btn-mr,
+       .x-toolbar .x-btn-over .x-btn-mr{
+               background-position: right -22px;
+       }
+       .x-btn-over .x-btn-text{
+               color: #FFF;
+       }
+       /* pressed state */
+       .x-toolbar .x-btn-menu-active .x-btn-ml,
+       .x-toolbar .x-btn-menu-active .x-btn-mc,
+       .x-btn-pressed .x-btn-ml,
+       .x-btn-pressed .x-btn-mc,
+       .x-toolbar .x-btn-pressed .x-btn-ml,
+       .x-toolbar .x-btn-pressed .x-btn-mc{
+               background-position: left -66px;
+       }
+       .x-toolbar .x-btn-menu-active .x-btn-mr,
+       .x-toolbar .x-btn-pressed .x-btn-mr,
+       .x-btn-pressed .x-btn-mr{
+               background-position: right -66px;
+       }
+       
+       .x-btn-split{
+               background: transparent url(images/btn/splith.png) right center no-repeat !important;
+       }
+       .x-btn-split button{
+               padding-right: 5px !important;
+       }
+       .x-btn-arrow{
+               background: transparent url(images/btn/menu.png) right center no-repeat !important;
+               padding-right:12px !important;
+       }
+       /* pressed and over state */
+       /* Commented out because the selectors are so specific they're overriding the click state. What to do? I don't want to use !important... Figure out later. */
+       /*.x-toolbar .x-btn-menu-active.x-btn-over .x-btn-ml,
+       .x-toolbar .x-btn-menu-active.x-btn-over .x-btn-mc,
+       .x-btn-pressed.x-btn-over .x-btn-ml,
+       .x-btn-pressed.x-btn-over .x-btn-mc,
+       .x-toolbar .x-btn-pressed.x-btn-over .x-btn-ml,
+       .x-toolbar .x-btn-pressed.x-btn-over .x-btn-mc{
+               background-position: left -88px;
+       }
+       .x-toolbar .x-btn-menu-active.x-btn-over .x-btn-mr,
+       .x-toolbar .x-btn-pressed.x-btn-over .x-btn-mr,
+       .x-btn-pressed.x-btn-over .x-btn-mr{
+               background-position: right -88px;
+       }*/
+       /* click state */
+       /*.x-btn-click .x-btn-ml, .x-btn-click .x-btn-mc,
+       .x-toolbar .x-btn-click .x-btn-ml, .x-toolbar .x-btn-click .x-btn-mc{
+               background-position: left -44px;
+       }
+       .x-btn-click .x-btn-mr,
+       .x-toolbar .x-btn-click .x-btn-mr{
+               background-position: right -44px;
+       }
+       .x-btn-click .x-btn-text, .x-btn-pressed .x-btn-text{
+               color: #FFF;
+       }*/
+
+/* @end */
+       
+
+/* @group Tabs */
+
+.x-tab-panel-header, .x-tab-panel-footer{
+       padding: 0;
+       background: transparent url(images/fills/80b.png)
+}
+.x-tab-scrolling-top{
+               background: transparent url(images/windowdark/c.png)
+       }
+
+       /* default state */
+       
+       .x-tab-strip .x-tab-right{
+               padding: 0 0 0 6px;
+               background-image: url(images/tab/l/Top.png) !important;
+               background-position:left top;
+       }
+       .x-tab-strip .x-tab-left{
+               padding: 0 6px 0 0 !important;
+               background-image: url(images/tab/r/Top.png) !important;
+               background-position:right top;
+       }
+       .x-tab-strip .x-tab-strip-inner{
+               background-image: url(images/tab/c/Top.png) !important;
+               background-position:center top;
+       }
+       .x-tab-strip-bottom .x-tab-right{ background-image: url(images/tab/l/Bottom.png) !important; }
+       .x-tab-strip-bottom .x-tab-left{ background-image: url(images/tab/r/Bottom.png) !important; }
+       .x-tab-strip-bottom .x-tab-strip-inner{ background-image: url(images/tab/c/Bottom.png) !important; }
+       
+       /* hover state */
+       .x-tab-strip-over .x-tab-right{ background-position: left -26px !important; }
+       .x-tab-strip-over .x-tab-left{ background-position: right -26px !important;}
+       .x-tab-strip-over  .x-tab-strip-inner{ background-position: left -26px !important; }
+       .x-tab-right .x-tab-left .x-tab-strip-inner .x-tab-strip-text{
+               color: #CCC;
+               text-shadow: -1px -1px 0 rgba(0,0,0,.2);
+       }
+       
+       /* active state */
+       .x-tab-strip-active .x-tab-right{ background-position: left -52px !important; }
+       .x-tab-strip-active  .x-tab-left{ background-position: right -52px !important; }
+       .x-tab-strip-active  .x-tab-strip-inner{ background-position: center -52px !important; }
+       .x-tab-strip-active  .x-tab-right .x-tab-left .x-tab-strip-inner .x-tab-strip-text{
+               color: #222;
+               text-shadow:1px 1px 0 rgba(255,255,255,.25);
+       }
+       
+       /* spacer */
+       .x-tab-strip-top{
+               border: 0 !important;
+       }
+       .x-tab-strip-spacer{
+               border: 0 !important;
+               background: transparent url(images/fills/30w.png) top left repeat;
+               height: 2px;
+       }
+       
+       /* scroller */
+       .x-tab-scroller-left, .x-tab-scroller-right{
+       }
+       .x-tab-scroller-left{
+               background: transparent url(images/scroller/l.png) 0 0 no-repeat;
+       }
+       .x-tab-scroller-left-over, .x-tab-scroller-right-over{
+               background-position: left -22px !important;
+       }
+       .x-tab-scroller-left-disabled, .x-tab-scroller-right-disabled{
+               background-position: left 0 !important;
+       }
+       .x-tab-scroller-right{
+               background: transparent url(images/scroller/r.png) right 0 no-repeat;
+       }
+       
+       /* closable */
+       
+       .x-tab-strip-closable .x-tab-strip-inner{
+               padding-right: 15px;
+       }
+       .x-tab-strip-close{
+               background: transparent url(images/tab/close.png) 0 0 no-repeat;
+               margin-right: 2px;
+               top: 5px !important;
+               right:4px !important;
+       }
+       .x-tab-strip-active .x-tab-strip-close{
+               background-position: 0 -11px;
+       }
+
+/* @end */
+
+/* @group Forms and Form Fields */
+
+.x-form .x-form-item{
+       margin: 10px 0;
+}
+.x-form .x-form-item .x-form-item{
+       margin: 0;
+}
+
+.x-form-field{
+       font-size: 11px !important;
+}
+.x-toolbar-cell .x-form-field{
+       height: 22px !important;
+}
+.x-form-text, .x-form-textarea{
+       background: #444 url(images/gradients/dark-inner-shadow.png) top left repeat-x;
+       color: #FFF;
+       text-shadow: 1px 1px 0 #000;
+       border-top-color: #666;
+       border-bottom-color: #222;
+       border-left-color: transparent;
+       border-right-color: transparent;
+}
+.x-form-empty-field{
+       color: #999;
+}
+.x-form-invalid{
+       border-top-color: #700;
+       border-bottom-color: #200;
+       border-left-color: transparent;
+       border-right-color: transparent;
+       background-color: #C00;
+       color: #FAA;
+}
+.x-form-invalid-icon{
+       background: transparent url(images/icons/exclamation.png) top left no-repeat;
+}
+
+.x-form-textarea{
+       background: #FFF !important;
+       color: #000;
+       text-shadow: none;
+       border-color: #000 !important;
+}
+.x-form-field-wrap .x-form-trigger{
+               background-image:  url(images/trigger/blank.png);
+               border-bottom-color: #111;
+}
+.x-form-field-wrap .x-form-arrow-trigger{
+               background-image:  url(images/trigger/drop.png);
+}
+.x-form-field-wrap .x-form-date-trigger{
+               background-image:  url(images/trigger/date.png);
+}
+.x-form-field-wrap .x-form-search-trigger{
+               background-image:  url(images/trigger/search.png);
+}
+.x-form-field-wrap .x-form-clear-trigger{
+               background-image:  url(images/trigger/clear.png);
+}
+.x-html-editor-wrap{
+       background: #FFF;
+       border:1px solid #000;
+       color: #000 !important;
+}
+
+.x-fieldset{
+       border:1px solid #888;
+}
+
+/* @end */
+
+/* icons */
+.ext-mb-question.ext-mb-icon{
+               background: transparent url(images/icons/balloon.png) left center no-repeat;
+}
+.x-window-dlg .ext-mb-error{
+               background: transparent url(images/icons/cross.png) left center no-repeat;
+}
+.x-window-dlg .ext-mb-warning{
+               background: transparent url(images/icons/exclamation32.png) left center no-repeat;
+}
+.x-window-dlg .ext-mb-info{
+               background: transparent url(images/icons/information.png) left center no-repeat;
+}
+
+
+/* @group Combo List */
+
+.x-combo-list{
+       border: 1px solid transparent;
+       color: #444;
+       background: #FFF;
+       border-color: #777;
+}
+.x-combo-list-item{
+       border-color: transparent;
+}
+.x-combo-list .x-combo-selected{
+       background: #06C;
+       color: #FFF;
+       border:1px solid transparent !important;
+}
+.x-combo-list-inner{
+       background: #FFF;
+       border-bottom-color: #777 !important;
+}
+
+/* @end */
+
+/* @group Lists and Grids */
+
+.x-grid3-header-offset, .x-grid3-header{
+       padding: 0;
+       margin-bottom: -1px;
+}
+.x-grid3-header-offset table{
+       border-right: 2px groove #DDD;
+}
+.x-list-header, .x-grid3-header{
+       background: #CCC url(images/gloss/light-gloss.png) left top repeat-x;
+}
+.x-pivotgrid .x-grid3-header-offset td, .x-list-header-inner div, .x-grid3-hd, .x-dd-drag-proxy .x-grid3-hd-inner, .sort-asc .x-grid3-hd-inner, .sort-desc .x-grid3-hd-inner{
+       background: transparent url(images/listview/header.png) left top repeat-x;
+       color: #222;
+       text-shadow:1px 1px 0 rgba(255,255,255,.35);
+}
+.x-pivotgrid .x-grid3-header-offset td{
+       border-bottom: 1px solid #888;
+}
+/* a hover state */
+.x-grid3 .x-grid3-hd-over .x-grid3-hd-inner{
+       background: transparent url(images/listview/header.png) left -44px repeat-x;
+}
+.sort-asc, .sort-desc{
+       border-top: 0 !important;
+       border-bottom: 0 !important;
+       border-right: 0 !important;
+}
+.x-list-header-inner .sort-asc, .x-list-header-inner .sort-desc{
+       height: 15px;
+}
+.x-grid3 .sort-asc, .x-grid3 .sort-desc{
+       background: transparent url(images/listview/header.png) 0 -22px repeat-x !important;
+}
+.x-grid3-hd-inner{
+       color: #222;
+}
+.x-grid3 table{
+       font-size: 12px;
+}
+.x-grid3-hd-btn{
+       border-left:2px groove #DDD;
+       border-right:2px groove #DDD;
+       background: transparent url(images/listview/headerdrop.png) 0 0px;
+}
+.x-grid3-hd-btn:hover{
+       background: transparent url(images/listview/headerdrop.png) 0 -44px !important;
+}
+
+.x-grid3-sort-icon{
+       margin-top: -5px !important;
+       height: 5px;
+}
+.sort-asc .x-grid3-sort-icon{
+       background: transparent url(images/listview/sort-asc.png);
+}
+
+.sort-desc .x-grid3-sort-icon{
+       background: transparent url(images/listview/sort-desc.png);
+}
+
+.x-list-header .sort-asc{
+       background: transparent url(images/listview/listview-sort-asc.png) center top !important;
+}
+.x-list-header .sort-desc{
+       background: transparent url(images/listview/listview-sort-desc.png) center top !important;
+}
+
+.x-cols-icon{
+       background-image: url(images/listview/cols.png);
+}
+.xg-hmenu-sort-desc .x-menu-item-icon{
+       background-image: url(images/listview/az.png);
+}
+.xg-hmenu-sort-asc .x-menu-item-icon{
+       background-image: url(images/listview/za.png);
+}
+
+.x-grid3-row-over, .x-list-over{
+       background: transparent url(images/fills/30w.png) top left repeat !important;
+}
+
+.x-grid3-row-alt{
+       background: transparent url(images/fills/30b.png) top left repeat;
+       border: 1px solid #222 !important;
+       border-width: 1px 0 !important;
+}
+
+.x-grid3-scroller{
+       margin-top: 1px;
+}
+
+/* @group Row Editor */
+
+.x-row-editor .x-row-editor-body{
+       background: #838383 url(images/gloss/gloss.png) repeat center center;
+}
+.x-row-editor .x-row-editor-header, .x-row-editor .x-row-editor-footer{
+               height: 0;
+               border: 1px solid #FFF;
+               border-width: 1px 0;
+               background: transparent !important;
+}
+.x-row-editor .x-row-editor-header{
+       border-top-color: rgba(0,0,0,.15);
+       border-bottom-color: #71b3e1;
+}
+.x-row-editor .x-row-editor-footer{
+       border-bottom-color: rgba(0,0,0,.15);
+       border-top-color: #065790 !important;
+}
+
+.x-row-editor .x-row-editor-bwrap .x-plain,
+.x-row-editor .x-row-editor-bwrap .x-plain .x-plain-bwrap,
+.x-row-editor .x-row-editor-bwrap .x-plain .x-plain-bwrap .x-plain-body{
+       background-image: url(images/grid/row-editor-btns.png);
+}
+
+
+/* @end */
+
+/* @group Manip States */
+
+.x-grid3-resize-proxy {
+       background: #777;
+}
+
+.x-grid3-resize-marker {
+       background: #777;
+}
+
+.col-move-top{
+       background-image:url(images/grid/col-move-top.png);
+}
+
+.col-move-bottom{
+       background-image:url(images/grid/col-move-bottom.png);
+}
+
+/* @end */
+
+/* @group Selection States */
+.x-grid3-row, .x-list-wrap dl{
+       border: 1px solid transparent;
+       border-width: 1px 0;
+       }
+       .x-grid3-row .x-grid3-row-table, .x-list-wrap dl dt{
+               border: 1px solid transparent;
+               border-width: 1px 0;
+       }
+.x-grid3-row-selected, .x-list-selected{
+       border-color: #000 !important;
+       }
+       .x-grid3-row-selected .x-grid3-row-table, .x-list-selected dt{
+               background: transparent url(images/gloss/gloss.png) center center repeat;       
+               border-top-color: #71b3e1 !important;
+               border-bottom-color: #065790 !important;
+               }
+               .x-grid3-row-selected .x-grid3-cell, .x-list-selected dt{
+                               color: #FFF;
+                               text-shadow: -1px -1px 0 rgba(0,0,0,.35);
+               }
+
+/* @end */
+
+/* @group Groups */
+
+.x-grid3 .x-grid3-td-numberer{
+       font-weight: bold;
+       color: #AAA;
+}
+.x-grid3 .x-grid-group-hd{
+       border-top: 1px solid #CCC !important;
+       border-bottom: 1px solid #444 !important;
+       background: #666 url(images/gradients/30white-to-trans.png) left top repeat-x;
+       font-family: Helvetica, Arial, sans-serif;
+       padding: 0;
+       color: #FFF;
+       text-shadow:-1px -1px rgba(0,0,0,.25)
+       
+}
+.x-grid-group-collapsed .x-grid-group-hd{
+       border-bottom: 1px solid #222 !important;
+       background: #333 url(images/gradients/30white-to-trans.png) left top repeat-x;
+}
+
+/* @end */
+
+/* @group Pivot Grid */
+       .x-pivotgrid .x-grid3-row-table{
+               border-bottom: 1px solid transparent;
+       }
+       .x-grid3-header-title{
+               background: #666 url(images/gloss/gloss.png) left 50% repeat;
+               color: #FFF;
+               text-shadow:-1px -1px 0 rgba(0,0,0,.75);
+               border-top: 1px solid #999;
+               border-bottom: 1px solid #111;
+               font-size: 14px;
+               font-family: Optima, sans-serif;
+               line-height: 10px;
+       }
+       .x-grid3-row-headers table{
+               border-collapse:separate !important;
+               border-spacing:0;
+       }
+       .x-grid3-row-headers td{
+               height: 19px !important;
+               background: #FFF url(images/gloss/gloss.png) left 50% repeat;
+               border-top: 1px solid #777;
+               border-bottom: 1px solid #444;
+               border-left: 1px solid #777;
+               border-right: 1px solid #444;
+               color: #FFF;
+               text-shadow: -1px -1px 0 rgba(0,0,0,.35)
+       }
+
+/* @end */
+
+
+
+/* @end */
+
+/* @group Menus */
+
+.x-menu{
+       background: transparent url(images/fills/80b.png) top left repeat;
+       border:1px solid #444;
+       }
+       .x-menu-item-text{
+               color: #DDD;
+               text-shadow: -1px -1x 0 #000;
+       }
+       .x-menu-item-active, .x-menu-item-active .x-menu-item{
+               border-color: #3398e1;
+               border-top-color: #71b3e1;
+               border-bottom-color: #065790;
+               }
+               .x-menu-item-active{
+                       background: transparent url(images/gloss/gloss.png) left center repeat-x;
+                       }
+                       .x-menu-item-active .x-menu-item-text{
+                               color: #FFF;
+                       }
+       .x-menu-sep{
+               border-color: #444;
+       }
+       .x-menu-item-arrow{
+               background-image: url(images/menu/arrow.png);
+       }
+       .x-menu-check-item .x-menu-item-icon{
+               background: transparent url(images/form/unchecked.png) left center no-repeat;
+       }
+       .x-menu-item-checked .x-menu-check-item .x-menu-item-icon{
+               background: transparent url(images/form/checked.png) left center no-repeat;
+       }
+       .x-menu-group-item .x-menu-item-icon{
+               background: transparent url(images/form/unradioed.png) left center no-repeat;
+       }
+       .x-menu-item-checked .x-menu-group-item .x-menu-item-icon{
+               background: transparent url(images/form/radioed.png) left center no-repeat;
+       }
+
+/* @end */
+
+/* @group Progress Bar */
+
+.x-progress-wrap{
+       color: #CCC;
+       background: transparent url(images/progress.png) 0 -18px repeat-x;
+       border: 1px solid #000;
+}
+.x-progress-inner{
+       border: 1px solid #888;
+}
+.x-progress-bar{
+       color: #FFF;
+       background: #000 url(images/gloss/gloss.png) center center repeat-x;
+       padding: 1px;
+       height: 15px !important;
+       border-bottom: 1px solid #000 !important;
+}
+
+/* @end */
+
+/* @group Date Picker */
+
+.x-date-picker{
+       border: 1px solid #000;
+       background: transparent url(images/windowdark/c.png) repeat right top;
+}
+.x-date-picker a{
+       color: #06C;
+}
+.x-date-mp{
+       background: #222;
+}
+.x-date-mp a{
+       color: #6AF;
+       text-shadow:-1px -1px 0 rgba(0,0,0,.35)
+}
+.x-date-picker table{
+       font-size:11px;
+}
+.x-date-active{
+       border-color: transparent !important;
+}
+.x-date-selected{
+       border: 1px solid #000 !important;
+}
+.x-date-active a{
+       color: #FFF;
+}
+.x-date-picker .x-date-today .x-date-date{
+       background: transparent url(images/fills/30w.png) repeat;
+       border-color: transparent;
+}
+.x-date-picker .x-date-selected .x-date-date{
+       background: transparent url(images/windowlight/tc.png) repeat-x right center;
+       border-color: #3398e1;
+       border-top-color: #71b3e1;
+       border-bottom-color: #065790;
+}
+.x-date-picker .x-date-selected.x-date-today .x-date-date{
+       background-color: #FFF;
+}
+.x-date-prevday a, .x-date-nextday a{
+       color: #888;
+}
+.x-date-bottom{
+       padding: 3px;
+       border-top-color: #000;
+       background: transparent url(images/tb.png) left top repeat-x;
+}
+.x-date-picker th{
+       background: transparent url(images/tb.png) left top repeat-x;
+       border-bottom-color: #000;
+}
+.x-date-middle, .x-date-left, .x-date-right{
+       background: #000 url(images/gradients/30white-to-trans.png) left top repeat-x;
+       border-top: 1px solid #888;
+}
+.x-date-left a{
+       background: transparent url(images/btn/left.png) left top no-repeat;
+       height: 15px;
+       left: 15px;
+}
+.x-date-right a{
+       background: transparent url(images/btn/right.png) left top no-repeat;
+       height: 15px;
+       left: 15px;
+}
+.x-date-picker .x-date-mp-sel a{
+       background: transparent url(images/windowlight/tc.png) repeat-x right center;
+       border-color: #3398e1;
+       border-top-color: #71b3e1;
+       border-bottom-color: #065790;
+}
+.x-date-picker .x-date-mp-sep{
+       border-color: #444;
+}
+.x-date-mp-btns td{
+       border-color: #444;
+}
+.x-date-mp-btns{
+       background: #000;
+}
+.x-date-mp-btns button{
+       background: transparent url(images/windowlight/tc.png) repeat-x right center;
+       border-color: #888;
+       border-top-color: #CCC;
+       border-bottom-color: #555;
+       color: #FFF;
+       text-shadow:-1px -1px 0 #000;
+}
+.x-date-mp-btns button:hover{
+       border-color: #3398e1;
+       border-top-color: #71b3e1;
+       border-bottom-color: #065790;
+}
+
+/* @end */
+
+/* @group Resizable Handles */
+
+.x-resizable-handle{
+}
+.x-resizable-handle-north{ background-image: url(images/resizable/n.png); }
+.x-resizable-handle-south{ background-image: url(images/resizable/s.png); }
+
+.x-resizable-handle-east{ background-image: url(images/resizable/e.png); }
+.x-resizable-handle-west{ background-image: url(images/resizable/w.png); }
+.x-resizable-handle-northwest{ background-image: url(images/resizable/nw.png); }
+.x-resizable-handle-northeast{ background-image: url(images/resizable/ne.png); }
+.x-resizable-handle-southwest{ background-image: url(images/resizable/sw.png); }
+.x-resizable-handle-southeast{ background-image: url(images/resizable/se.png); }
+
+.x-resizable-pinned{
+       background: #888;
+}
+
+.x-window-handle, .x-window.x-resizable-pinned{
+       background: transparent !important;
+}
+
+/* @end */
+
+
+/* @group Node Tree */
+
+.x-tree .x-panel-body{
+       background: #000;
+}
+.x-tree-node-expanded .x-tree-node-icon{
+       background-image:url(images/tree/folder-open.png);
+}
+
+.x-tree-node-leaf .x-tree-node-icon{
+    background-image:url(images/tree/leaf.png);
+}
+
+.x-tree-node-collapsed .x-tree-node-icon{
+    background-image:url(images/tree/folder.png);
+}
+
+.x-tree-node-loading .x-tree-node-icon{
+    background-image:url(images/tree/loading.gif) !important;
+}
+
+.x-tree-node .x-tree-node-inline-icon {
+    background-image: none;
+}
+
+.x-tree-node-loading a span{
+     font-style: italic;
+     color:#FFF;
+}
+
+.x-tree-lines .x-tree-elbow{
+    background-image:url(images/tree/elbow.gif);
+}
+
+.x-tree-lines .x-tree-elbow-plus{
+    background-image:url(images/tree/elbow-plus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-minus{
+    background-image:url(images/tree/elbow-minus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-end{
+    background-image:url(images/tree/elbow-end.gif);
+}
+
+.x-tree-lines .x-tree-elbow-end-plus{
+    background-image:url(images/tree/elbow-end-plus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-end-minus{
+    background-image:url(images/tree/elbow-end-minus.gif);
+}
+
+.x-tree-lines .x-tree-elbow-line{
+    background-image:url(images/tree/elbow-line.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-plus{
+    background-image:url(images/tree/elbow-plus-nl.gif);
+}
+.x-tree-no-lines .x-tree-elbow-minus{
+    background-image:url(images/tree/elbow-minus-nl.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-end-plus{
+    background-image:url(images/tree/elbow-end-plus-nl.gif);
+}
+
+.x-tree-no-lines .x-tree-elbow-end-minus{
+    background-image:url(images/tree/elbow-end-minus-nl.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-plus{
+    background-image:url(images/tree/arrows.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-minus{
+    background-image:url(images/tree/arrows.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-end-plus{
+    background-image:url(images/tree/arrows.gif);
+}
+
+.x-tree-arrows .x-tree-elbow-end-minus{
+    background-image:url(images/tree/arrows.gif);
+}
+
+.x-tree-node{
+    color:#FFF;
+    font: normal 11px arial, tahoma, helvetica, sans-serif;
+}
+
+.x-tree-node a, .x-dd-drag-ghost a{
+    color:#FFF;
+}
+
+.x-tree-node a span, .x-dd-drag-ghost a span{
+    color:#FFF;
+}
+
+.x-tree-node .x-tree-node-disabled a span{
+    color:gray !important;
+}
+
+.x-tree-node div.x-tree-drag-insert-below{
+     border-bottom-color: #3fb5ff;
+}
+
+.x-tree-node div.x-tree-drag-insert-above{
+     border-top-color:#3fb5ff;
+}
+
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a{
+     border-bottom-color:#3fb5ff;
+}
+
+.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a{
+     border-top-color:#3fb5ff;
+}
+
+.x-tree-node .x-tree-drag-append a span{
+     background-color:#444;
+     border-color:#666;
+}
+
+.x-tree-node .x-tree-node-over {
+    background-color: #444;
+}
+
+.x-tree-node .x-tree-selected {
+    background-color: #456;
+}
+
+.x-tree-drop-ok-append .x-dd-drop-icon{
+  background-image: url(images/tree/drop-add.png);
+}
+
+.x-tree-drop-ok-above .x-dd-drop-icon{
+  background-image: url(images/tree/drop-over.gif);
+}
+
+.x-tree-drop-ok-below .x-dd-drop-icon{
+  background-image: url(images/tree/drop-under.gif);
+}
+
+.x-tree-drop-ok-between .x-dd-drop-icon{
+  background-image: url(images/tree/drop-between.gif);
+}
+
+/* @end */
+
+/* @group Toolbar Icons */
+
+.x-toolbar .x-btn-mc em.x-btn-split {
+    background-image:url(../images/default/btn/s-arrow-noline.gif);
+}
+
+.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split, .x-toolbar .x-btn-click .x-btn-mc em.x-btn-split,
+.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split, .x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split
+{
+    background-image:url(../images/default/btn/s-arrow-o.gif);
+}
+
+.x-toolbar .x-btn-mc em.x-btn-split-bottom {
+    background-image:url(../images/default/btn/s-arrow-b-noline.gif);
+}
+
+.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split-bottom, .x-toolbar .x-btn-click .x-btn-mc em.x-btn-split-bottom,
+.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom, .x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split-bottom
+{
+    background-image:url(../images/default/btn/s-arrow-bo.gif);
+}
+
+.x-toolbar .xtb-sep {
+       width: 0;
+       border-left: 1px solid #222;
+       border-right: 1px solid #777;
+}
+.x-tbar-page-first{
+    background-image: url(images/icons/first.png) !important;
+}
+
+.x-tbar-loading{
+    background-image: url(images/icons/refresh.png) !important;
+}
+
+.x-tbar-page-last{
+    background-image: url(images/icons/last.png) !important;
+}
+.x-tbar-page-next{
+    background-image: url(images/icons/next.png) !important;
+}
+
+.x-tbar-page-prev{
+    background-image: url(images/icons/prev.png) !important;
+}
+
+.x-item-disabled .x-tbar-loading{
+    background-image: url(images/icons/d-refresh.png) !important;
+}
+
+.x-item-disabled .x-tbar-page-first{
+    background-image: url(images/icons/d-first.png) !important;
+}
+
+.x-item-disabled .x-tbar-page-last{
+    background-image: url(images/icons/d-last.png) !important;
+}
+
+.x-item-disabled .x-tbar-page-next{
+    background-image: url(images/icons/d-next.png) !important;
+}
+
+.x-item-disabled .x-tbar-page-prev{
+    background-image: url(images/icons/d-prev.png) !important;
+}
+
+.x-paging-info {
+    color:#444;
+}
+
+.x-toolbar-more-icon {
+    background-image: url(../images/default/toolbar/more.gif) !important;
+}
+
+/* @end */
+
+/* @group Tool Tips */
+
+.x-tip{
+       color: #FFE;
+       text-shadow: -1px -1px 0 rgba(0,0,0,.35);
+}
+.x-tip .x-tip-tl{
+       padding-left: 5px;
+       background:transparent url(images/tt/tl.png) top left no-repeat;
+}
+.x-tip .x-tip-tr{
+       padding-right: 5px;
+       background:transparent url(images/tt/tr.png) top right no-repeat;
+}
+.x-tip .x-tip-tc{
+       font-family: Optima, sans-serif;
+       text-transform: uppercase;
+       letter-spacing: .1em;
+       font-size: 10px;
+       padding-bottom: 3px;
+       padding-top: 5px;
+       background:transparent url(images/tt/tc.png) top left repeat-x;
+}
+.x-tip .x-tip-ml{
+       padding-left: 5px;
+       background:transparent url(images/tt/ml.png) top left repeat-y;
+}
+.x-tip .x-tip-mr{
+       padding-right: 5px;
+       background:transparent url(images/tt/mr.png) top right repeat-y;
+}
+.x-tip .x-tip-mc{
+       background:transparent url(images/tt/c.png) top right repeat;
+}
+.x-tip .x-tip-bl{
+       padding-left: 5px;
+       background:transparent url(images/tt/bl.png) bottom left no-repeat;
+}
+.x-tip .x-tip-br{
+       padding-right: 5px;
+       background:transparent url(images/tt/br.png) bottom right no-repeat;
+}
+.x-tip .x-tip-bc{
+       height: 5px;
+       background:transparent url(images/tt/bc.png) bottom left repeat-x;
+}
+
+       /* @group Invalid Tips */
+
+.x-form-invalid-tip{
+               color: #FCC;
+       }
+       .x-form-invalid-tip .x-tip-body{
+               background:transparent url(images/icons/exclamation.png) top left no-repeat;
+       }
+       .x-form-invalid-tip .x-tip-tl{
+               padding-left: 5px;
+               background:transparent url(images/tt/i-tl.png) top left no-repeat;
+       }
+       .x-form-invalid-tip .x-tip-tr{
+               padding-right: 5px;
+               background:transparent url(images/tt/i-tr.png) top right no-repeat;
+       }
+       .x-form-invalid-tip .x-tip-tc{
+               font-family: Optima, sans-serif;
+               text-transform: uppercase;
+               letter-spacing: .1em;
+               font-size: 10px;
+               padding-bottom: 3px;
+               padding-top: 5px;
+               background:transparent url(images/tt/i-tc.png) top left repeat-x;
+       }
+       .x-form-invalid-tip .x-tip-ml{
+               padding-left: 5px;
+               background:transparent url(images/tt/i-ml.png) top left repeat-y;
+       }
+       .x-form-invalid-tip .x-tip-mr{
+               padding-right: 5px;
+               background:transparent url(images/tt/i-mr.png) top right repeat-y;
+       }
+       .x-form-invalid-tip .x-tip-mc{
+               background:transparent url(images/tt/i-c.png) top right repeat;
+       }
+       .x-form-invalid-tip .x-tip-bl{
+               padding-left: 5px;
+               background:transparent url(images/tt/i-bl.png) bottom left no-repeat;
+       }
+       .x-form-invalid-tip .x-tip-br{
+               padding-right: 5px;
+               background:transparent url(images/tt/i-br.png) bottom right no-repeat;
+       }
+       .x-form-invalid-tip .x-tip-bc{
+               height: 5px;
+               background:transparent url(images/tt/i-bc.png) bottom left repeat-x;
+       }
+
+       /* @end */
+
+/* @end */
+
+/* @group Slider */
+
+.x-slider-horz .x-slider-thumb{
+       background-image: url(images/slider/thumbh.png) !important;
+}
+
+.x-slider-vert .x-slider-thumb{
+       background-image: url(images/slider/thumbv.png) !important;
+}
+.x-slider-horz, .x-slider-horz .x-slider-end, .x-slider-horz .x-slider-inner{
+       background-image: url(images/slider/h.png) !important;
+}
+.x-slider-vert, .x-slider-vert .x-slider-end, .x-slider-vert .x-slider-inner{
+       background-image: url(images/slider/v.png) !important;
+}
+
+/* @end */
+
+/* @group Masked Panel */
+
+.ext-el-mask{
+       background: #999;
+}
+.ext-el-mask-msg{
+       background: transparent url(images/gloss/gloss.png) center center repeat;
+       border-bottom-color: #222;
+       border-top-color: #999;
+       border-left-color: #444;
+       border-right-color: #444;
+       border-radius:4px;
+}
+.ext-el-mask-msg div{
+       background: #000;
+       border: 1px solid #222;
+       border-top-color: #222;
+       border-bottom-color: #999;
+       border-left-color: #444;
+       border-right-color: #444;
+       border-radius:3px;
+}
+.x-mask-loading div{
+       background:#000 url(images/load.gif) 4px 4px no-repeat;
+}
+
+/* @end */
+
+/* @group Color Palette */
+
+.x-color-palette{
+       background: #666 url(images/gradients/30white-to-trans.png) 0 0 repeat-x;
+       margin: -3px !important;
+}
+.x-color-palette a{
+       color: #000;
+       border-color: transparent;
+}
+.x-color-palette .x-color-palette-sel em, .x-color-palette a:hover em{
+       border-top-color: #222;
+       border-left-color: #444;
+       border-right-color: #444;
+       border-bottom-color: #666;
+}
+.x-color-palette .x-color-palette-sel, .x-color-palette a:hover{
+       border-top-color: #666 !important;
+       border-left-color: #444 !important;
+       border-right-color: #444 !important;
+       border-bottom-color: #222 !important;
+       background: #000 url(images/gloss/gloss.png) center center repeat-x;
+}
+ .x-color-palette a:hover{
+       border-top-color: #71b3e1 !important;
+       border-left-color: #3398e1 !important;
+       border-right-color: #3398e1 !important;
+       border-bottom-color: #065790 !important;
+       background-color: #065790;
+}
+
+/* @end */
+
+/* @group Drag Proxy */
+
+.x-dd-drag-proxy{
+       border: 1px solid #000;
+       background: #000;
+       border-radius:3px;
+}
+.x-dd-drag-ghost{
+       border-radius:2px;
+       background: #000 url(images/gloss/gloss.png) center center repeat-x;
+       border-top: 1px solid #AAA;
+       border-bottom: 1px solid #222;
+       border-left: 1px solid #444;
+       border-right: 1px solid #444;
+}
+.x-dd-drop-ok .x-dd-drop-icon{
+       background-image: url(images/icons/yes.png);
+}
+.x-dd-drop-nodrop .x-dd-drop-icon{
+       background-image: url(images/icons/no.png);
+}
+
+/* @end */
+
+/* @group Accordion */
+
+.x-accordion-hd{
+       border-top: 1px solid #CCC !important;
+       border-bottom: 1px solid #444 !important;
+       background: #666 url(images/gradients/30white-to-trans.png) left top repeat-x;
+       font-family: Helvetica, Arial, sans-serif;
+       font-size: .9em;
+}
+.x-panel-collapsed .x-accordion-hd{
+       border-bottom: 1px solid #222 !important;
+       background: #333 url(images/gradients/30white-to-trans.png) left top repeat-x;
+}
+.x-accordion-hd .x-panel-header-text{
+       text-shadow: -1px -1px 0 rgba(0,0,0,.35);
+}
+
+/* @end */
+
+/* @group Group Summary */
+
+.x-grid3-summary-row{
+       background: transparent url(images/fills/80b.png) left top repeat;
+}
+
+/* @end */
+
diff --git a/contrib/gilbert/media/gilbert/wallpaper.README b/contrib/gilbert/media/gilbert/wallpaper.README
new file mode 100644 (file)
index 0000000..a14fe2e
--- /dev/null
@@ -0,0 +1 @@
+The source of the default wallpaper.jpg is http://webtreats.mysitemyway.com/tileable-classic-nebula-space-patterns/
\ No newline at end of file
diff --git a/contrib/gilbert/media/gilbert/wallpaper.jpg b/contrib/gilbert/media/gilbert/wallpaper.jpg
new file mode 100644 (file)
index 0000000..6188914
Binary files /dev/null and b/contrib/gilbert/media/gilbert/wallpaper.jpg differ
diff --git a/contrib/gilbert/plugins.py b/contrib/gilbert/plugins.py
new file mode 100644 (file)
index 0000000..80ef1ab
--- /dev/null
@@ -0,0 +1,167 @@
+from inspect import isclass, getargspec
+from functools import wraps
+from django.utils.encoding import force_unicode
+from django.forms.widgets import Widget, Input, HiddenInput, FileInput, DateInput, TimeInput, Textarea, CheckboxInput, Select, SelectMultiple
+from django.forms.fields import FileField
+from django.forms.forms import BaseForm
+
+
+def _render_ext(self, name, value):
+       ext_spec = {'name': name}
+       if value is not None:
+               ext_spec['value'] = value
+       if isinstance(self, Input):
+               if isinstance(self, HiddenInput):
+                       ext_spec['xtype'] = 'hidden'
+               elif isinstance(self, FileInput):
+                       ext_spec['xtype'] = 'fileuploadfield'
+               elif isinstance(self, DateInput):
+                       ext_spec['xtype'] = 'datefield'
+               elif isinstance(self, TimeInput):
+                       ext_spec['xtype'] = 'timefield'
+               else:
+                       ext_spec['xtype'] = 'textfield'
+                       ext_spec['inputType'] = self.input_type
+       elif isinstance(self, Textarea):
+               ext_spec['xtype'] = 'textarea'
+       elif isinstance(self, CheckboxInput):
+               ext_spec['xtype'] = 'checkbox'
+       elif isinstance(self, Select):
+               ext_spec['xtype'] = 'combo'
+               ext_spec['store'] = self.choices
+               ext_spec['typeAhead'] = True
+               if isinstance(self, SelectMultiple):
+                       pass
+       if ext_spec:
+               return ext_spec
+       return None
+
+
+Widget.render_ext = _render_ext
+
+
+def _as_ext(self):
+       ext_spec = {}
+       
+       fields = []
+       for bf in self:
+               if bf.label:
+                       label = force_unicode(bf.label)
+               else:
+                       label = ''
+               
+               if bf.field.show_hidden_initial:
+                       only_initial = True
+               else:
+                       only_initial = False
+               
+               widget = bf.field.widget
+               
+               if not self.is_bound:
+                       data = self.initial.get(bf.name, bf.field.initial)
+                       if callable(data):
+                               data = data()
+               else:
+                       if isinstance(bf.field, FileField) and bf.data is None:
+                               data = self.initial.get(bf.name, bf.field.initial)
+                       else:
+                               data = bf.data
+               if not only_initial:
+                       name = bf.html_name
+               else:
+                       name = bf.html_initial_name
+               
+               rendered = widget.render_ext(name, data)
+               if rendered is not None:
+                       rendered['fieldLabel'] = label
+                       fields.append(rendered)
+       ext_spec['items'] = fields
+       ext_spec['labelSeparator'] = self.label_suffix
+       return ext_spec
+
+
+BaseForm.as_ext = _as_ext
+
+
+def is_gilbert_method(function):
+       return getattr(function, 'gilbert_method', False)
+
+
+def gilbert_method(function=None, name=None, argc=None, form_handler=False, restricted=True):
+       def setter(function):
+               setattr(function, 'gilbert_method', True)
+               setattr(function, 'name', name or function.__name__)
+               setattr(function, 'form_handler', form_handler)
+               setattr(function, 'restricted', restricted)
+               new_argc = argc
+               if new_argc is None:
+                       args = getargspec(function)[0]
+                       new_argc = len(args)
+                       if new_argc > 0:
+                               if args[0] == 'self':
+                                       args = args[1:]
+                                       new_argc = new_argc - 1
+                               if new_argc > 0:
+                                       if args[0] == 'request':
+                                               args = args[1:]
+                                               new_argc = new_argc - 1
+               setattr(function, 'argc', new_argc)
+               return function
+       if function is not None:
+               return setter(function)
+       return setter
+
+
+class GilbertPluginBase(type):
+       def __new__(cls, name, bases, attrs):
+               if 'methods' not in attrs:
+                       methods = []
+                       for attr in attrs.values():
+                               if is_gilbert_method(attr):
+                                       methods.append(attr.name)
+                       attrs['methods'] = methods
+               return super(GilbertPluginBase, cls).__new__(cls, name, bases, attrs)
+
+
+class GilbertPlugin(object):
+       __metaclass__ = GilbertPluginBase
+       
+       def __init__(self, site):
+               self.site = site
+       
+       def get_method(self, method_name):
+               method = getattr(self, method_name, None)
+               if not is_gilbert_method(method):
+                       return None
+               return method
+       
+       @property
+       def urls(self):
+               return []
+       
+       @property
+       def js(self):
+               return []
+       
+       @property
+       def css(self):
+               return []
+       
+       @property
+       def fugue_icons(self):
+               return []
+
+
+class GilbertModelAdmin(GilbertPlugin):
+       def __init__(self, site, model):
+               self.model = model
+               self.name = model._meta.object_name
+               super(GilbertModelAdmin, self).__init__(site)
+       
+       @gilbert_method
+       def all(self):
+               return list(self.model._default_manager.all().values())
+       
+       @gilbert_method
+       def get(self, constraint):
+               return self.model._default_manager.all().values().get(**constraint)
\ No newline at end of file
diff --git a/contrib/gilbert/sites.py b/contrib/gilbert/sites.py
new file mode 100644 (file)
index 0000000..8f666f9
--- /dev/null
@@ -0,0 +1,248 @@
+from django.contrib.admin.sites import AdminSite
+from django.contrib.auth import authenticate, login, logout
+from django.conf.urls.defaults import url, patterns, include
+from django.core.urlresolvers import reverse
+from django.shortcuts import render_to_response
+from django.conf import settings
+from django.utils import simplejson as json
+from django.utils.datastructures import SortedDict
+from django.http import HttpResponse
+from django.db.models.base import ModelBase
+from philo.utils import fattr
+from philo.contrib.gilbert.plugins import GilbertModelAdmin, GilbertPlugin, is_gilbert_method, gilbert_method
+from philo.contrib.gilbert.exceptions import AlreadyRegistered, NotRegistered
+from django.forms.models import model_to_dict
+import sys
+from traceback import format_tb
+from inspect import getargspec
+from django.views.decorators.cache import never_cache
+from philo.contrib.gilbert import __version__ as gilbert_version
+import staticmedia
+import os
+
+__all__ = ('GilbertSite', 'site')
+
+
+class GilbertAuthPlugin(GilbertPlugin):
+       name = 'auth'
+       
+       @property
+       def js(self):
+               return [staticmedia.url('gilbert/Gilbert.api.auth.js')]
+       
+       @property
+       def fugue_icons(self):
+               return ['user-silhouette', 'key--pencil', 'door-open-out', 'door-open-in']
+       
+       @gilbert_method(restricted=False)
+       def login(self, request, username, password):
+               user = authenticate(username=username, password=password)
+               if user is not None and user.is_active:
+                       login(request, user)
+                       return True
+               else:
+                       return False
+       
+       @gilbert_method
+       def logout(self, request):
+               logout(request)
+               return True
+       
+       @gilbert_method
+       def get_passwd_form(self, request):
+               from django.contrib.auth.forms import PasswordChangeForm
+               return PasswordChangeForm(request.user).as_ext()
+       
+       @gilbert_method(form_handler=True)
+       def submit_passwd_form(self, request):
+               from django.contrib.auth.forms import PasswordChangeForm
+               form = PasswordChangeForm(request.user, data=request.POST)
+               if form.is_valid():
+                       form.save()
+                       return {'success': True}
+               else:
+                       return {'success': False, 'errors': form.errors}
+       
+       @gilbert_method
+       def whoami(self, request):
+               user = request.user
+               return user.get_full_name() or user.username
+
+
+class GilbertSite(object):
+       version = gilbert_version
+       
+       def __init__(self, namespace='gilbert', app_name='gilbert', title='Gilbert'):
+               self.namespace = namespace
+               self.app_name = app_name
+               self.title = title
+               self.model_registry = SortedDict()
+               self.plugin_registry = SortedDict()
+               self.register_plugin(GilbertAuthPlugin)
+       
+       def register_plugin(self, plugin):
+               if plugin.name in self.plugin_registry:
+                       raise AlreadyRegistered('A plugin named \'%s\' is already registered' % plugin.name)
+               self.plugin_registry[plugin.name] = plugin(self)
+       
+       def register_model(self, model_or_iterable, admin_class=GilbertModelAdmin, **admin_attrs):
+               if isinstance(model_or_iterable, ModelBase):
+                       model_or_iterable = [model_or_iterable]
+               for model in model_or_iterable:
+                       if model._meta.app_label not in self.model_registry:
+                               self.model_registry[model._meta.app_label] = SortedDict()
+                       if model._meta.object_name in self.model_registry[model._meta.app_label]:
+                               raise AlreadyRegistered('The model %s.%s is already registered' % (model._meta.app_label, model.__name__))
+                       if admin_attrs:
+                               admin_attrs['__module__'] = __name__
+                               admin_class = type('%sAdmin' % model.__name__, (admin_class,), admin_attrs)
+                       self.model_registry[model._meta.app_label][model._meta.object_name] = admin_class(self, model)
+       
+       def has_permission(self, request):
+               return request.user.is_active and request.user.is_staff
+       
+       @property
+       def urls(self):
+               urlpatterns = patterns('',
+                       url(r'^$', self.index, name='index'),
+                       url(r'^css$', self.css, name='css'),
+                       url(r'^api$', self.api, name='api'),
+                       url(r'^router/?$', self.router, name='router'),
+                       url(r'^router/models/(?P<app_label>\w+)/?$', self.router, name='models'),
+                       url(r'^login$', self.router, name='login'),
+               )
+               
+               return (urlpatterns, self.app_name, self.namespace)
+       
+       def request_context(self, request, extra_context=None):
+               from django.template import RequestContext
+               context = RequestContext(request, current_app=self.namespace)
+               context.update(extra_context or {})
+               context.update({'gilbert': self, 'user': request.user, 'logged_in': self.has_permission(request)})
+               return context
+       
+       @never_cache
+       def index(self, request, extra_context=None):
+               return render_to_response('gilbert/index.html', context_instance=self.request_context(request, extra_context))
+       
+       def css(self, request, extra_context=None):
+               icon_names = []
+               for plugin in self.plugin_registry.values():
+                       icon_names.extend(plugin.fugue_icons)
+               
+               icons = dict([(icon_name, staticmedia.url('gilbert/fugue-icons/icons/%s.png' % icon_name)) for icon_name in set(icon_names)])
+               
+               context = extra_context or {}
+               context.update({'icons': icons})
+               
+               return render_to_response('gilbert/styles.css', context_instance=self.request_context(request, context), mimetype='text/css')
+       
+       @never_cache
+       def api(self, request, extra_context=None):
+               providers = []
+               for app_label, models in self.model_registry.items():
+                       app_provider = {
+                               'namespace': 'Gilbert.api.models.%s' % app_label,
+                               'url': reverse('%s:models' % self.namespace, current_app=self.app_name, kwargs={'app_label': app_label}),
+                               'type': 'remoting',
+                       }
+                       model_actions = {}
+                       for model_name, admin in models.items():
+                               model_methods = []
+                               for method in [admin.get_method(method_name) for method_name in admin.methods]:
+                                       if method.restricted and not self.has_permission(request):
+                                               continue
+                                       model_methods.append({
+                                               'name': method.name,
+                                               'len': method.argc,
+                                               'formHandler': method.form_handler,
+                                       })
+                               if model_methods:
+                                       model_actions[model_name] = model_methods
+                       if model_actions:
+                               app_provider['actions'] = model_actions
+                               providers.append(app_provider)
+               
+               plugin_provider = {
+                       'namespace': 'Gilbert.api',
+                       'url': reverse('%s:router' % self.namespace, current_app=self.app_name),
+                       'type': 'remoting',
+               }
+               plugin_actions = {}
+               for plugin_name, plugin in self.plugin_registry.items():
+                       plugin_methods = []
+                       for method in [plugin.get_method(method_name) for method_name in plugin.methods]:
+                               if method.restricted and not self.has_permission(request):
+                                       continue
+                               plugin_methods.append({
+                                       'name': method.name,
+                                       'len': method.argc,
+                                       'formHandler': method.form_handler,
+                               })
+                       if plugin_methods:
+                               plugin_actions[plugin_name] = plugin_methods
+               if plugin_actions:
+                       plugin_provider['actions'] = plugin_actions
+                       providers.append(plugin_provider)
+               
+               return HttpResponse(''.join(['Ext.Direct.addProvider('+json.dumps(provider, separators=(',', ':'))+');' for provider in providers]), mimetype='text/javascript')
+       
+       def router(self, request, app_label=None, extra_context=None):
+               submitted_form = False
+               if request.META['CONTENT_TYPE'].startswith('application/x-www-form-urlencoded'):
+                       submitted_form = True
+               
+               if submitted_form:
+                       ext_request = {
+                               'action': request.POST.get('extAction'),
+                               'method': request.POST.get('extMethod'),
+                               'type': request.POST.get('extType'),
+                               'tid': request.POST.get('extTID'),
+                               'upload': request.POST.get('extUpload', False),
+                               'data': None,
+                       }
+                       response = self.handle_ext_request(request, ext_request, app_label)
+               else:
+                       ext_requests = json.loads(request.raw_post_data)
+                       if type(ext_requests) is dict:
+                               ext_requests['upload'] = False
+                               response = self.handle_ext_request(request, ext_requests, app_label)
+                       else:
+                               responses = []
+                               for ext_request in ext_requests:
+                                       ext_request['upload'] = False
+                                       responses.append(self.handle_ext_request(request, ext_request, app_label))
+                               response = responses
+               
+               if submitted_form:
+                       if ext_request['upload'] is True:
+                               return HttpResponse(('<html><body><textarea>%s</textarea></body></html>' % json.dumps(response)))
+               return HttpResponse(json.dumps(response), content_type=('application/json; charset=%s' % settings.DEFAULT_CHARSET))
+       
+       def handle_ext_request(self, request, ext_request, app_label=None):
+               try:
+                       plugin = None
+                       
+                       if app_label is not None:
+                               try:
+                                       plugin = self.model_registry[app_label][ext_request['action']]
+                               except KeyError:
+                                       raise NotImplementedError('A model named \'%s\' has not been registered' % ext_request['action'])
+                       else:
+                               try:
+                                       plugin = self.plugin_registry[ext_request['action']]
+                               except KeyError:
+                                       raise NotImplementedError('Gilbert does not provide a class named \'%s\'' % ext_request['action'])
+                       
+                       method = plugin.get_method(ext_request['method'])
+                       
+                       if method is None or (method.restricted and not self.has_permission(request)):
+                               raise NotImplementedError('The method named \'%s\' is not available' % method.name)
+                       
+                       return {'type': 'rpc', 'tid': ext_request['tid'], 'action': ext_request['action'], 'method': ext_request['method'], 'result': method(request, *(ext_request['data'] or []))}
+               except:
+                       exc_type, exc_value, exc_traceback = sys.exc_info()
+                       return {'type': 'exception', 'tid': ext_request['tid'], 'message': ('%s: %s' % (exc_type, exc_value)), 'where': format_tb(exc_traceback)[0]}
+
+
+site = GilbertSite()
\ No newline at end of file
diff --git a/contrib/gilbert/templates/gilbert/index.html b/contrib/gilbert/templates/gilbert/index.html
new file mode 100644 (file)
index 0000000..91d293f
--- /dev/null
@@ -0,0 +1,86 @@
+{% load staticmedia %}<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>{% block head %}
+       <title>{% block title %}{{ gilbert.title }}{% endblock %}</title>
+       
+       {% block css %}
+       <link rel="stylesheet" type="text/css" href="{% mediaurl 'gilbert/extjs/resources/css/ext-all-notheme.css' %}" />
+       <link rel="stylesheet" type="text/css" href="{% mediaurl 'gilbert/murano/murano.css' %}" />
+       <link rel="stylesheet" type="text/css" href="{% url gilbert:css %}" />
+       {% for plugin in gilbert.plugin_registry.values %}{% for css in plugin.css %}
+       <link rel="stylesheet" type="text/css" href="{{ css }}" />
+       {% endfor %}{% endfor %}
+       {% endblock %}
+       
+       {% block js %}
+       <script type="text/javascript" src="{% mediaurl 'gilbert/extjs/adapter/ext/ext-base.js' %}"></script>
+       <script type="text/javascript" src="{% mediaurl 'gilbert/extjs/ext-all.js' %}"></script>
+       <script type="text/javascript">
+               Ext.BLANK_IMAGE_URL = '{% mediaurl "gilbert/extjs/resources/images/default/s.gif" %}';
+       </script>
+       <script type="text/javascript" src="{% mediaurl 'gilbert/Gilbert.lib.js' %}"></script>
+       <script type="text/javascript" src="{% url gilbert:api %}"></script>
+       <script type="text/javascript">
+               GILBERT_LOGGED_IN = {% if logged_in %}true{% else %}false{% endif %};
+               GILBERT_PLUGINS = [];
+       </script>
+       {% for plugin in gilbert.plugin_registry.values %}{% for js in plugin.js %}
+       <script type="text/javascript" src="{{ js }}"></script>
+       {% endfor %}{% endfor %}
+       <script type="text/javascript">
+               Ext.onReady(function() {
+                       GILBERT_APPLICATION = new Gilbert.lib.Application({
+                               user: '{% filter force_escape %}{% firstof user.get_full_name user.username %}{% endfilter %}',
+                               plugins: [new (function() {
+                                       return {
+                                               init: function(application) {
+                                                       var plugin = this;
+                                                       application.mainmenu.insert(0, {
+                                                               xtype: 'button',
+                                                               text: '<span style="font-weight: bolder; text-transform: uppercase;">Gilbert</span>',
+                                                               handler: function(button, event) {
+                                                                       plugin.showAbout(button);
+                                                               },
+                                                       });
+                                                       application.mainmenu.insert(1, {
+                                                               xtype: 'tbseparator',
+                                                       });
+                                               },
+                                               showAbout: function(sender) {
+                                                       if (!this.about_window) {
+                                                               var about_window = this.about_window = new Ext.Window({
+                                                                       height: 176,
+                                                                       width: 284,
+                                                                       header: false,
+                                                                       html: '<h1>{{ gilbert.title }}</h1><h2>Version {{ gilbert.version }}</h2>',
+                                                                       bodyStyle: 'background: none; font-size: larger; line-height: 1.4em; text-align: center;',
+                                                                       modal: true,
+                                                                       closeAction: 'hide',
+                                                                       renderTo: Ext.getBody(),
+                                                                       closable: false,
+                                                                       resizable: false,
+                                                                       draggable: false,
+                                                                       fbar: [{
+                                                                               text: 'OK',
+                                                                               handler: function(button, event) {
+                                                                                       about_window.hide();
+                                                                               }
+                                                                       }],
+                                                                       defaultButton: 0,
+                                                               });
+                                                       }
+                                                       this.about_window.render(Ext.getBody());
+                                                       this.about_window.center();
+                                                       this.about_window.show();
+                                               },
+                                       }
+                               })()].concat(GILBERT_PLUGINS),
+                       });
+               });
+       </script>
+       {% endblock %}
+       
+{% endblock %}</head>
+<body style="background-image: url({% mediaurl 'gilbert/wallpaper.jpg' %});">{% block body %}{% endblock %}</body>
+</html>
diff --git a/contrib/gilbert/templates/gilbert/styles.css b/contrib/gilbert/templates/gilbert/styles.css
new file mode 100644 (file)
index 0000000..bf74df0
--- /dev/null
@@ -0,0 +1 @@
+{% for icon, url in icons.items %}.{{icon}}{background:url({{ url }}) left center no-repeat !important;}{% endfor %}
\ No newline at end of file