qooxview 1.9.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.project +13 -0
- data/.ruby-version +1 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +89 -0
- data/LICENSE.txt +619 -0
- data/README.md +31 -0
- data/Rakefile +2 -0
- data/VERSIONS +12 -0
- data/lib/qooxview/additions.rb +161 -0
- data/lib/qooxview/config_yaml.rb +42 -0
- data/lib/qooxview/entity.rb +698 -0
- data/lib/qooxview/frontend/1build_generate +14 -0
- data/lib/qooxview/frontend/2src_generate +4 -0
- data/lib/qooxview/frontend/Manifest.json +34 -0
- data/lib/qooxview/frontend/README +19 -0
- data/lib/qooxview/frontend/UploadMgr/.project +11 -0
- data/lib/qooxview/frontend/UploadMgr/Manifest.json +34 -0
- data/lib/qooxview/frontend/UploadMgr/config.json +77 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/Manifest.json +34 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/config.json +84 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/generate.py +72 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/class/uploadmgr/demo/Application.js +224 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/class/uploadmgr/demo/simulation/DemoSimulation.js +44 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/class/uploadmgr/demo/test/DemoTest.js +55 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/class/uploadmgr/demo/theme/Appearance.js +18 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/class/uploadmgr/demo/theme/Color.js +18 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/class/uploadmgr/demo/theme/Decoration.js +18 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/class/uploadmgr/demo/theme/Font.js +18 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/class/uploadmgr/demo/theme/Theme.js +21 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/index.html +9 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/resource/uploadmgr/demo/test.png +0 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/script/uploadmgr.demo.d88b4fb45db4.js +1 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/script/uploadmgr.demo.js +211 -0
- data/lib/qooxview/frontend/UploadMgr/demo/default/source/translation/readme.txt +3 -0
- data/lib/qooxview/frontend/UploadMgr/generate.py +72 -0
- data/lib/qooxview/frontend/UploadMgr/server/LICENSE.TXT +3 -0
- data/lib/qooxview/frontend/UploadMgr/server/README.txt +3 -0
- data/lib/qooxview/frontend/UploadMgr/server/java/com/zenesis/qx/upload/DemoUploadServlet.java +176 -0
- data/lib/qooxview/frontend/UploadMgr/server/perl.cgi +62 -0
- data/lib/qooxview/frontend/UploadMgr/server/php.php +116 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/AbstractHandler.js +278 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/File.js +178 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/FormHandler.js +192 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/InputElement.js +68 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/MParameters.js +67 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/MUploadButton.js +40 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/UploadButton.js +35 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/UploadMgr.js +301 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/UploadToolbarButton.js +35 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/XhrHandler.js +176 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/simulation/DemoSimulation.js +44 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/test/DemoTest.js +55 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/theme/Appearance.js +18 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/theme/Color.js +18 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/theme/Decoration.js +18 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/theme/Font.js +18 -0
- data/lib/qooxview/frontend/UploadMgr/source/class/com/zenesis/qx/upload/theme/Theme.js +21 -0
- data/lib/qooxview/frontend/UploadMgr/source/index.html +9 -0
- data/lib/qooxview/frontend/UploadMgr/source/resource/com/zenesis/qx/upload/banner-bg.png +0 -0
- data/lib/qooxview/frontend/UploadMgr/source/resource/com/zenesis/qx/upload/banner.png +0 -0
- data/lib/qooxview/frontend/UploadMgr/source/resource/com/zenesis/qx/upload/logo.gif +0 -0
- data/lib/qooxview/frontend/UploadMgr/source/resource/com/zenesis/qx/upload/test.png +0 -0
- data/lib/qooxview/frontend/UploadMgr/source/translation/readme.txt +3 -0
- data/lib/qooxview/frontend/build/index.html +11 -0
- data/lib/qooxview/frontend/build/resource/frontend/test.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/app-header.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/down-invert.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/down-small-invert.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/down-small.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/down.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/forward.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/left-invert.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/left.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/rewind.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/right-invert.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/right.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/up-invert.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/up-small.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows/up.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/arrows-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/button-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/button-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/checkradio-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/colorselector/brightness-field.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/colorselector/brightness-handle.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/colorselector/huesaturation-field.jpg +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/colorselector/huesaturation-handle.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/colorselector-combined.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/cursors/alias.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/cursors/copy.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/cursors/move.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/cursors/nodrop.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/cursors-combined.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-focused.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-checked.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-disabled.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-focused.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-focused.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-preselected.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-pressed.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/button.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-checked-disabled.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-checked-focused-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-checked-focused.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-checked-hovered-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-checked-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-checked-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-checked-pressed-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-checked-pressed.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-checked.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-disabled.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-focused-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-focused.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-hovered-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-pressed-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-pressed.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-undetermined-disabled.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-undetermined-focused-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-undetermined-focused.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-undetermined-hovered-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-undetermined-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-undetermined-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox-undetermined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checkbox.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checked-disabled.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/checked.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/input-focused.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/input.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-checked-disabled.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-checked-focused-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-checked-focused.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-checked-hovered-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-checked-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-checked-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-checked-pressed-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-checked-pressed.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-checked.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-disabled.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-focused-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-focused.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-hovered-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-pressed-invalid.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton-pressed.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/radiobutton.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-arrow-right.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-arrow.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/tooltip-error.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/undetermined-disabled.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/form/undetermined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/group-item.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox/groupbox.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/groupbox-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/menu/background.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/menu/bar-background.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/menu/checkbox-invert.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/menu/checkbox.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/menu/radiobutton-invert.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/menu/radiobutton.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/menu-background-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/menu-checkradio-combined.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane/pane.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/pane-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-bg-horizontal.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-bg-pressed-horizontal.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-bg-pressed-vertical.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-bg-vertical.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-button-bg-horizontal.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-button-bg-vertical.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-down.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-left.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-right.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/scrollbar-up.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar/slider-knob-background.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/scrollbar-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/selection.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-small.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow/shadow.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow-small-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow-small-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/shadow-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/splitpane/knob-horizontal.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/splitpane/knob-vertical.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/splitpane-knobs-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/table/ascending.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/table/boolean-false.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/table/boolean-true.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/table/descending.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/table/header-cell.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/table/select-column-order.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/table-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-active.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-bottom-inactive.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-active.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-left-inactive.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-active.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-right-inactive.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-active.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tab-button-top-inactive.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview/tabview-pane.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-bottom-active-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-bottom-active-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-bottom-inactive-b-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-bottom-inactive-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-bottom-inactive-t-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-left-active-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-left-active-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-left-inactive-b-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-left-inactive-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-left-inactive-t-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-right-active-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-right-active-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-right-inactive-b-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-right-inactive-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-right-inactive-t-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-top-active-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-top-active-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-top-inactive-b-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-top-inactive-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-button-top-inactive-t-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-pane-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tabview-pane-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/toolbar/toolbar-gradient-blue.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/toolbar/toolbar-gradient.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/toolbar/toolbar-handle-knob.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/toolbar/toolbar-part.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/toolbar-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tooltip-error-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tooltip-error-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tree/closed-selected.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tree/closed.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tree/open-selected.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tree/open.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/tree-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-active.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/captionbar-inactive.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/close-active-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/close-active.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/close-inactive.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/maximize-active-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/maximize-active.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/maximize-inactive.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/minimize-active-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/minimize-active.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/minimize-inactive.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/restore-active-hovered.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/restore-active.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/restore-inactive.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar-b.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar-bl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar-br.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar-c.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar-l.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar-r.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar-t.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar-tl.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar-tr.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window/statusbar.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window-captionbar-buttons-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window-captionbar-lr-active-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window-captionbar-lr-inactive-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window-captionbar-tb-active-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window-captionbar-tb-inactive-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window-statusbar-lr-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/decoration/Modern/window-statusbar-tb-combined.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/16/actions/dialog-cancel.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/16/actions/dialog-ok.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/16/actions/view-refresh.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/16/actions/window-close.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/16/apps/office-calendar.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/16/apps/utilities-color-chooser.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/16/mimetypes/office-document.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/16/places/folder-open.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/16/places/folder.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/22/mimetypes/office-document.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/22/places/folder-open.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/22/places/folder.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/32/mimetypes/office-document.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/32/places/folder-open.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/icon/Tango/32/places/folder.png +0 -0
- data/lib/qooxview/frontend/build/resource/qx/static/blank.gif +0 -0
- data/lib/qooxview/frontend/build/resource/qx/static/blank.png +0 -0
- data/lib/qooxview/frontend/build/script/frontend.js +213 -0
- data/lib/qooxview/frontend/config.json +58 -0
- data/lib/qooxview/frontend/generate.py +149 -0
- data/lib/qooxview/frontend/mklink +2 -0
- data/lib/qooxview/frontend/readme.txt +11 -0
- data/lib/qooxview/frontend/source/class/frontend/Application.js +84 -0
- data/lib/qooxview/frontend/source/class/frontend/LAYOUT +120 -0
- data/lib/qooxview/frontend/source/class/frontend/Lib/Fields.js +1486 -0
- data/lib/qooxview/frontend/source/class/frontend/Lib/RPC.js +104 -0
- data/lib/qooxview/frontend/source/class/frontend/Lib/TimerF.js +63 -0
- data/lib/qooxview/frontend/source/class/frontend/Views/Form.js +150 -0
- data/lib/qooxview/frontend/source/class/frontend/Views/Ltab.js +633 -0
- data/lib/qooxview/frontend/source/class/frontend/__init__.js +6 -0
- data/lib/qooxview/frontend/source/class/frontend/globals.js +51 -0
- data/lib/qooxview/frontend/source/class/frontend/simulation/DemoSimulation.js +42 -0
- data/lib/qooxview/frontend/source/class/frontend/test/DemoTest.js +55 -0
- data/lib/qooxview/frontend/source/class/frontend/theme/Appearance.js +18 -0
- data/lib/qooxview/frontend/source/class/frontend/theme/Color.js +18 -0
- data/lib/qooxview/frontend/source/class/frontend/theme/Decoration.js +18 -0
- data/lib/qooxview/frontend/source/class/frontend/theme/Font.js +18 -0
- data/lib/qooxview/frontend/source/class/frontend/theme/Theme.js +21 -0
- data/lib/qooxview/frontend/source/index.html +11 -0
- data/lib/qooxview/frontend/source/resource/frontend/test.png +0 -0
- data/lib/qooxview/frontend/source/translation/readme.txt +3 -0
- data/lib/qooxview/helpers/config_base.rb +264 -0
- data/lib/qooxview/helpers/icc.rb +222 -0
- data/lib/qooxview/helpers/make_steps.rb +77 -0
- data/lib/qooxview/helpers/migration_version.rb +18 -0
- data/lib/qooxview/helpers/open_print.rb +286 -0
- data/lib/qooxview/helpers/permission.rb +146 -0
- data/lib/qooxview/helpers/qoox_parser.rb +54 -0
- data/lib/qooxview/helpers/session.rb +68 -0
- data/lib/qooxview/helpers/static.rb +23 -0
- data/lib/qooxview/helpers/upload_files.rb +27 -0
- data/lib/qooxview/helpers/vtlist_pane.rb +158 -0
- data/lib/qooxview/helpers/welcome.rb +55 -0
- data/lib/qooxview/qooxview.rb +175 -0
- data/lib/qooxview/rpcqooxdoo.rb +395 -0
- data/lib/qooxview/storage_handler.rb +455 -0
- data/lib/qooxview/storage_type.rb +129 -0
- data/lib/qooxview/storages/csv.rb +170 -0
- data/lib/qooxview/storages/ldap.rb +238 -0
- data/lib/qooxview/storages/sqlite.rb +198 -0
- data/lib/qooxview/value.rb +202 -0
- data/lib/qooxview/version.rb +3 -0
- data/lib/qooxview/view.rb +904 -0
- data/lib/qooxview.rb +83 -0
- data/qooxview.gemspec +50 -0
- data/test/benchmark_creation.rb +37 -0
- data/test/config.yaml +36 -0
- data/test/entities/config.rb +33 -0
- data/test/entities/course.rb +28 -0
- data/test/entities/databases.rb +17 -0
- data/test/entities/doubleCase.rb +12 -0
- data/test/entities/dummies.rb +24 -0
- data/test/entities/inventory.rb +6 -0
- data/test/entities/needs.rb +20 -0
- data/test/entities/person.rb +73 -0
- data/test/file_binary.bin +0 -0
- data/test/files/print_formulas.ods +0 -0
- data/test/files/print_formulas_2.ods +0 -0
- data/test/files/student_card.odg +0 -0
- data/test/gettext.po +24 -0
- data/test/gettext.pot +0 -0
- data/test/messages.mo +0 -0
- data/test/po/fr/LC_MESSAGES/gettext.mo +0 -0
- data/test/qooxdoo-layout-frontend.js +49 -0
- data/test/qv_configbase.rb +98 -0
- data/test/qv_entity.rb +271 -0
- data/test/qv_gettext.rb +28 -0
- data/test/qv_helpers.rb +173 -0
- data/test/qv_icc.rb +60 -0
- data/test/qv_migration.rb +130 -0
- data/test/qv_permission.rb +34 -0
- data/test/qv_print.rb +73 -0
- data/test/qv_session.rb +29 -0
- data/test/qv_sqlite.rb +73 -0
- data/test/qv_store_csv.rb +86 -0
- data/test/qv_stype.rb +41 -0
- data/test/qv_view.rb +204 -0
- data/test/st_dummy.rb +30 -0
- data/test/test.rb +49 -0
- data/test/views/aview.rb +24 -0
- data/test/views/bview.rb +10 -0
- data/test/views/configviews.rb +19 -0
- data/test/views/courseshow.rb +11 -0
- data/test/views/cview.rb +22 -0
- data/test/views/login.rb +15 -0
- data/test/views/print.rb +10 -0
- metadata +1068 -0
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'helper_classes/system'
|
2
|
+
|
3
|
+
class MakeSteps
|
4
|
+
attr_accessor :step, :status, :data, :auto_update
|
5
|
+
include HelperClasses
|
6
|
+
|
7
|
+
def initialize(session, wait = 0, &block)
|
8
|
+
@block = block
|
9
|
+
@oldstep = @step = 0
|
10
|
+
@wait = wait
|
11
|
+
session._s_data._make_step = self
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.make_step(session, data = nil)
|
15
|
+
session._s_data._make_step.make_step(session, data)
|
16
|
+
end
|
17
|
+
|
18
|
+
def reply
|
19
|
+
#dputs_func
|
20
|
+
dputs(3){"Oldstep: #{@oldstep} - #{@step}"}
|
21
|
+
if @oldstep == @step && @step >= 0
|
22
|
+
@step += 1
|
23
|
+
dputs(3) { "Increasing step to #{@step}" }
|
24
|
+
end
|
25
|
+
@ret ||= []
|
26
|
+
dputs(3) { "#{@ret} :: #{status.inspect} :: #{@auto_update.inspect}" }
|
27
|
+
@ret.length == 0 and @ret = @status.to_a
|
28
|
+
@ret += View.reply(:auto_update, @auto_update.to_i)
|
29
|
+
dputs(3) { "ret is now #{@ret.inspect}" }
|
30
|
+
@auto_update = nil if (@wait == 0 || @step == -1)
|
31
|
+
dputs(3) { "Auto-update is #{@auto_update}" }
|
32
|
+
@status = nil
|
33
|
+
return @ret
|
34
|
+
end
|
35
|
+
|
36
|
+
def make_step(session, data = nil)
|
37
|
+
#dputs_func
|
38
|
+
dputs(3){"Oldstep in make_step: #{@oldstep}"}
|
39
|
+
if @wait.abs > 0
|
40
|
+
if !@thread
|
41
|
+
dputs(3) { 'Creating new thread' }
|
42
|
+
@thread = Thread.new {
|
43
|
+
System.rescue_all do
|
44
|
+
@oldstep = @step
|
45
|
+
dputs(3) { "Calling block for step #{@step}" }
|
46
|
+
begin
|
47
|
+
@ret = @block.yield(session, data, @step)
|
48
|
+
rescue LocalJumpError => e
|
49
|
+
dputs(3) { "LocalJump: #{e.inspect}" }
|
50
|
+
@ret = nil
|
51
|
+
end
|
52
|
+
end
|
53
|
+
}
|
54
|
+
end
|
55
|
+
(0..@wait.abs*10).each { |i|
|
56
|
+
dputs(4) { "Waiting #{i}" }
|
57
|
+
sleep 0.1
|
58
|
+
if !@thread.alive?
|
59
|
+
dputs(3) { "Got return-value #{@ret}" }
|
60
|
+
@thread = nil
|
61
|
+
return reply
|
62
|
+
end
|
63
|
+
}
|
64
|
+
View.reply(:auto_update, @wait) + @status.to_a
|
65
|
+
else
|
66
|
+
dputs(3) { "Calling block for step #{@step}" }
|
67
|
+
begin
|
68
|
+
@oldstep = @step
|
69
|
+
@ret = @block.yield(session, data, @step)
|
70
|
+
rescue LocalJumpError => e
|
71
|
+
dputs(3) { "LocalJump: #{e.inspect}" }
|
72
|
+
@ret = nil
|
73
|
+
end
|
74
|
+
reply
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# To change this template, choose Tools | Templates
|
2
|
+
# and open the template in the editor.
|
3
|
+
|
4
|
+
class MigrationVersions < Entities
|
5
|
+
def setup_data
|
6
|
+
value_str :class_name
|
7
|
+
value_int :version
|
8
|
+
end
|
9
|
+
|
10
|
+
# These Entities don't migrate
|
11
|
+
def migrate
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# This way MigrationVersions is instantiated immediately, instead of
|
16
|
+
# any time later when calling QooxView.init
|
17
|
+
RPCQooxdooService.add_prime_service( MigrationVersions,
|
18
|
+
'Entities.MigrationVersions')
|
@@ -0,0 +1,286 @@
|
|
1
|
+
=begin
|
2
|
+
Offers simple OpenOffice-find/replace stuff and printing
|
3
|
+
=end
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'docsplit'
|
7
|
+
#require 'zip/zipfilesystem'; include Zip
|
8
|
+
require 'zip'
|
9
|
+
|
10
|
+
class OpenPrint
|
11
|
+
attr_accessor :lp_cmd, :file
|
12
|
+
|
13
|
+
def initialize(file, dir = nil)
|
14
|
+
@file = file
|
15
|
+
@dir = dir
|
16
|
+
@base = File.basename file
|
17
|
+
@lp_cmd = nil
|
18
|
+
@counter = 0
|
19
|
+
end
|
20
|
+
|
21
|
+
def replace_accents(str)
|
22
|
+
str = str.downcase.gsub(/ /, '_')
|
23
|
+
accents = Hash[*%w( a àáâä e éèêë i ìíîï o òóôöœ u ùúûü c ç ss ß )]
|
24
|
+
dputs(4) { "str was #{str}" }
|
25
|
+
accents.each { |k, v|
|
26
|
+
str.gsub!(/[#{v}]/, k)
|
27
|
+
}
|
28
|
+
str.gsub!(/[^a-z0-9_-]/, '_')
|
29
|
+
dputs(4) { "str is #{str}" }
|
30
|
+
str
|
31
|
+
end
|
32
|
+
|
33
|
+
def print_hash(fields, counter = nil, name = nil)
|
34
|
+
print(fields.collect { |k, v| [/--#{k}--/, v] }, counter, name)
|
35
|
+
end
|
36
|
+
|
37
|
+
def get_content
|
38
|
+
return unless File.exists? @file
|
39
|
+
Zip::File.open(@file) { |z|
|
40
|
+
z.read('content.xml').force_encoding(Encoding::UTF_8)
|
41
|
+
}
|
42
|
+
end
|
43
|
+
|
44
|
+
def print_file(pdf_file)
|
45
|
+
if @lp_cmd
|
46
|
+
dputs(2) { "Printing with --#{@lp_cmd} #{pdf_file}--" }
|
47
|
+
System.run_bool("#{@lp_cmd} #{pdf_file}")
|
48
|
+
return true
|
49
|
+
else
|
50
|
+
# Download PDF
|
51
|
+
return "#{pdf_file}"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.replace(doc, fields)
|
56
|
+
fields.each { |old, new|
|
57
|
+
doc.gsub!(old, new.to_s)
|
58
|
+
# For every -TAG- there can be a _TAG_ which is replaced with the
|
59
|
+
# uppercase-version of 'new'
|
60
|
+
old_up = old.inspect.sub(/^.-(.*)-.$/, '_\1_')
|
61
|
+
doc.gsub!(old_up, new.to_s.upcase)
|
62
|
+
}
|
63
|
+
doc
|
64
|
+
end
|
65
|
+
|
66
|
+
def make_pdf(fields = [], counter = nil, name = nil)
|
67
|
+
dputs(3) { "New print for -#{@file.inspect}-" }
|
68
|
+
if name
|
69
|
+
tmp_file = "/tmp/#{replace_accents(name)}.#{@base.sub(/.*\./, '')}"
|
70
|
+
else
|
71
|
+
counter ||= @counter
|
72
|
+
tmp_file = "/tmp/#{counter}-#{@base}"
|
73
|
+
@counter += 1
|
74
|
+
end
|
75
|
+
pdf_file = tmp_file.sub(/[^\.]*$/, 'pdf')
|
76
|
+
dputs(3) { "Copying to -#{tmp_file.inspect}-" }
|
77
|
+
|
78
|
+
FileUtils::cp(@file, tmp_file)
|
79
|
+
Zip::File.open(tmp_file) { |z|
|
80
|
+
doc = z.read('content.xml').force_encoding(Encoding::UTF_8)
|
81
|
+
OpenPrint.replace(doc, fields)
|
82
|
+
# Replace dates that need to be calculated with a '_'
|
83
|
+
doc.gsub!(/(table:formula=[^<>]*date-value=").*?"/, '\1_\2"')
|
84
|
+
z.get_output_stream('content.xml') { |f|
|
85
|
+
f.write(doc)
|
86
|
+
}
|
87
|
+
z.commit
|
88
|
+
}
|
89
|
+
|
90
|
+
if ConfigBase.openprint_simul == %w(false)
|
91
|
+
Docsplit.extract_pdf tmp_file, :output => '/tmp'
|
92
|
+
#FileUtils::cp( tmp_file, pdf_file )
|
93
|
+
dputs(5) { 'Finished docsplit' }
|
94
|
+
else
|
95
|
+
FileUtils::cp(tmp_file, pdf_file)
|
96
|
+
end
|
97
|
+
@dir and FileUtils::cp(pdf_file, @dir)
|
98
|
+
pdf_file
|
99
|
+
end
|
100
|
+
|
101
|
+
def print(fields = [], counter = nil, name = nil)
|
102
|
+
file = make_pdf(fields, counter, name)
|
103
|
+
print_file(file)
|
104
|
+
end
|
105
|
+
|
106
|
+
def print_join(files, outfile = nil)
|
107
|
+
outfile ||= files.first.sub(/.pdf$/, '-joined.pdf')
|
108
|
+
OpenPrint.pdf_join(files, outfile)
|
109
|
+
print_file(outfile)
|
110
|
+
end
|
111
|
+
|
112
|
+
# Input: 1..n files with 2 pages, front and back
|
113
|
+
# Output: one 2x2-nup PDF front
|
114
|
+
# one 2x2-nup PDF back
|
115
|
+
# to be printed "long edge duplex"
|
116
|
+
def self.pdf_nup_duplex(files, base = nil)
|
117
|
+
Dir.mktmpdir { |dir|
|
118
|
+
files.class == Array or files = [files]
|
119
|
+
allpages = "#{dir}/allpages.pdf"
|
120
|
+
cmd = "pdfjam --quiet --landscape --outfile #{allpages} " +
|
121
|
+
files.join(" '1,2' ") + " '1,2,{},{}' "
|
122
|
+
dputs(3) { "Running allpages-command #{cmd}" }
|
123
|
+
%x[ #{cmd} ]
|
124
|
+
|
125
|
+
pages_all = ((files.count + 1) & ~1).times
|
126
|
+
documents = {:front => pages_all.collect { |i| (i ^ 1) * 2 + 1 }.join(','),
|
127
|
+
:back => pages_all.collect { |i| i * 2 + 2 }.join(',')}
|
128
|
+
|
129
|
+
base ||= File.basename files.first, '.pdf'
|
130
|
+
documents.collect { |suffix, pages|
|
131
|
+
pages_file = "/tmp/#{base}-#{suffix}.pdf"
|
132
|
+
cmd = 'pdfnup --quiet --landscape --nup 2x2 ' +
|
133
|
+
"#{allpages} #{pages} --outfile #{pages_file}"
|
134
|
+
|
135
|
+
dputs(3) { "Running pdfnup-command #{cmd}" }
|
136
|
+
%x[ #{cmd} ]
|
137
|
+
pages_file
|
138
|
+
}
|
139
|
+
}
|
140
|
+
end
|
141
|
+
|
142
|
+
# Input: 1..n files
|
143
|
+
# Output: one PDF-file
|
144
|
+
def self.pdf_join(files, outfile)
|
145
|
+
files.class == Array or files = [files]
|
146
|
+
System.run_bool "pdfjam --quiet --landscape --outfile #{outfile} #{files.join(' ')}"
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
module PrintButton
|
151
|
+
attr_reader :printer_buttons
|
152
|
+
|
153
|
+
def call_lpstat(ip)
|
154
|
+
if ConfigBase.use_printing.to_s == 'true'
|
155
|
+
%x( which lpstat >/dev/null 2>&1 && lpstat -h #{ip}:631 -a 2>/dev/null |
|
156
|
+
sed -e "s/ .*//" ).split
|
157
|
+
else
|
158
|
+
[]
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
def get_remote_printers(ip)
|
163
|
+
if ip.match(ConfigBase.openprint_search)
|
164
|
+
dputs(2) { "Getting printers for #{ip}" }
|
165
|
+
call_lpstat(ip)
|
166
|
+
else
|
167
|
+
dputs(3) { "Not getting remote for #{ip}" }
|
168
|
+
[]
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
def get_server_printers
|
173
|
+
call_lpstat('localhost').collect { |p|
|
174
|
+
"server #{p}"
|
175
|
+
} + %w( PDF )
|
176
|
+
end
|
177
|
+
|
178
|
+
def show_print(*buttons)
|
179
|
+
dputs(3) { "show_print with #{buttons.inspect}" }
|
180
|
+
if not instance_variable_defined? :@printer_buttons
|
181
|
+
@printer_buttons = []
|
182
|
+
end
|
183
|
+
print_name = nil
|
184
|
+
buttons.to_a.each { |b|
|
185
|
+
dputs(4) { "Doing #{b.inspect}" }
|
186
|
+
if b.to_s =~ /^print/
|
187
|
+
show_split_button b, get_server_printers
|
188
|
+
print_name = b.to_sym
|
189
|
+
else
|
190
|
+
show_button b
|
191
|
+
end
|
192
|
+
}
|
193
|
+
if not print_name
|
194
|
+
show_split_button :print, get_server_printers
|
195
|
+
print_name = :print
|
196
|
+
end
|
197
|
+
@printer_buttons.push print_name
|
198
|
+
end
|
199
|
+
|
200
|
+
def stat_printer(session, button)
|
201
|
+
stat_name = "#{self.name}:#{button}:#{session.owner.login_name}"
|
202
|
+
stat = Statics.get(stat_name)
|
203
|
+
dputs(3) { "Getting printer #{stat_name} == #{stat.data_str}" }
|
204
|
+
if stat.data_str == ''
|
205
|
+
stat.data_str = get_server_printers.first
|
206
|
+
end
|
207
|
+
stat
|
208
|
+
end
|
209
|
+
|
210
|
+
def cmd_printer(session, button)
|
211
|
+
cmd = nil
|
212
|
+
pn = stat_printer(session, button).data_str
|
213
|
+
remote = session.client_ip
|
214
|
+
dputs(3) { "Found printer #{pn} with remote #{remote}" }
|
215
|
+
if pn != 'PDF'
|
216
|
+
if get_server_printers.index(pn)
|
217
|
+
cmd = "lp -o media=a4 -o fitplot -d #{pn.sub(/^server /, '')}"
|
218
|
+
elsif get_remote_printers(remote).index(pn)
|
219
|
+
cmd = "lp -o media=a4 -o fitplot -h #{remote}:631 -d #{pn}"
|
220
|
+
end
|
221
|
+
end
|
222
|
+
dputs(3) { "Command will be #{cmd}" }
|
223
|
+
cmd
|
224
|
+
end
|
225
|
+
|
226
|
+
def send_printer(session, button, file)
|
227
|
+
if cmd = cmd_printer(session, button)
|
228
|
+
%x[ #{cmd} #{file} ]
|
229
|
+
stat_printer(session, button).data_str
|
230
|
+
else
|
231
|
+
return nil
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
def reply_print(session)
|
236
|
+
#dputs_func
|
237
|
+
ret = []
|
238
|
+
@printer_buttons.each { |pb|
|
239
|
+
p = stat_printer(session, pb)
|
240
|
+
dputs(4) { "#{pb}-#{p.inspect}" }
|
241
|
+
value = "#{GetText._(pb.to_s)} #{p.data_str}"
|
242
|
+
if session.web_req && ip = session.client_ip
|
243
|
+
#dputs(4) { "#{session.web_req.inspect} - #{ip.inspect}" }
|
244
|
+
# We're not looking for CUPS on the localhost, neither on Windows
|
245
|
+
if ip =~ /(::1|localhost|127.0.0.1)/ or
|
246
|
+
session.web_req.header['user_agent'] =~ /Windows/
|
247
|
+
dputs(3) { "Not looking for cups on #{ip} - #{session.web_req.header['user_agent']}" }
|
248
|
+
else
|
249
|
+
value = [value] + get_server_printers + get_remote_printers(ip)
|
250
|
+
end
|
251
|
+
end
|
252
|
+
ret += reply(:update, pb => value)
|
253
|
+
}
|
254
|
+
dputs(4) { "#{ret.inspect}" }
|
255
|
+
ret
|
256
|
+
end
|
257
|
+
|
258
|
+
def rpc_print(session, name, data)
|
259
|
+
#dputs_func
|
260
|
+
dputs(4) { "Printing button #{name} with #{data.inspect}" }
|
261
|
+
if data and data['menu'] and data['menu'].length > 0
|
262
|
+
stat_printer(session, name).data_str = data['menu']
|
263
|
+
end
|
264
|
+
reply_print(session)
|
265
|
+
end
|
266
|
+
|
267
|
+
def send_printer_reply(session, button, data, file)
|
268
|
+
rpc_print(session, button, data) +
|
269
|
+
reply(:window_show, :print_status) +
|
270
|
+
reply(:update, :status =>
|
271
|
+
if printer = send_printer(session, button, file)
|
272
|
+
"Printed to #{printer}"
|
273
|
+
else
|
274
|
+
"<a href='#{file}' target='other'>#{file}</a>"
|
275
|
+
end)
|
276
|
+
end
|
277
|
+
|
278
|
+
def window_print_status
|
279
|
+
gui_window :print_status do
|
280
|
+
gui_vbox :nogroup do
|
281
|
+
show_html :status
|
282
|
+
show_button :close
|
283
|
+
end
|
284
|
+
end
|
285
|
+
end
|
286
|
+
end
|
@@ -0,0 +1,146 @@
|
|
1
|
+
#
|
2
|
+
# Defines which views and which blocks of that view are available
|
3
|
+
# Each user can have different Permissions, which can be
|
4
|
+
# recursive as well.
|
5
|
+
#
|
6
|
+
# A permission is either
|
7
|
+
# - an action, which is given as a ViewName.Block.Label syntax
|
8
|
+
# - a permission-name, which is resolved recursively
|
9
|
+
#
|
10
|
+
# Every "name" has a permission to
|
11
|
+
# - view: that is, display things
|
12
|
+
# - change: that is, modify the parameters
|
13
|
+
# - allow: that is, add permissions to other people
|
14
|
+
|
15
|
+
class Permission
|
16
|
+
|
17
|
+
def self.clear
|
18
|
+
@@view = {}
|
19
|
+
@@parent = {}
|
20
|
+
@@sessions = {}
|
21
|
+
end
|
22
|
+
|
23
|
+
self.clear
|
24
|
+
|
25
|
+
def self.list
|
26
|
+
return @@view.keys
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.add( name, view, parent = '' )
|
30
|
+
@@view[ name.to_s ] = view.split(',')
|
31
|
+
@@parent[ name.to_s ] = parent.split(',')
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.views( permissions )
|
35
|
+
#dputs_func
|
36
|
+
dputs(5){"Permissions: #{permissions.inspect}"}
|
37
|
+
dputs(5){"Views: #{@@view.inspect}"}
|
38
|
+
[permissions].flatten.collect{|p|
|
39
|
+
ret = @@view[p.to_s]
|
40
|
+
@@parent[p.to_s] and ret += @@parent[p.to_s].collect{|a| self.views(a) }
|
41
|
+
if not ret
|
42
|
+
ret = []
|
43
|
+
end
|
44
|
+
dputs(5){"Having #{ret.inspect}"}
|
45
|
+
ret
|
46
|
+
}.flatten.sort.uniq
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.session_add( session, perm )
|
50
|
+
dputs( 0 ){ "Deprecated - #{caller.inspect}" }
|
51
|
+
exit
|
52
|
+
# dputs( 4 ){ "Adding permission for session #{session}: #{perm}" }
|
53
|
+
# @@sessions[session.to_s] = perm
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.session_remove( session )
|
57
|
+
dputs( 0 ){ "Deprecated - #{caller.inspect}" }
|
58
|
+
exit
|
59
|
+
# @@sessions[session.to_s] = nil
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.getViewParent( view )
|
63
|
+
@@view[view].to_a.collect{|c| "view:#{c}"} +
|
64
|
+
@@parent[view].to_a.collect{|c| "name:#{c}"}
|
65
|
+
end
|
66
|
+
|
67
|
+
def self.can( session, view )
|
68
|
+
dputs( 0 ){ "Deprecated - #{caller.inspect}" }
|
69
|
+
exit
|
70
|
+
# If the list is not initialized, then everybody can do everything!
|
71
|
+
if list.size == 0
|
72
|
+
return true
|
73
|
+
end
|
74
|
+
|
75
|
+
dputs( 4 ){ "@@sessions is #{@@sessions.inspect}" }
|
76
|
+
permission = @@sessions[session.to_s]
|
77
|
+
if not permission or permission.length == 0
|
78
|
+
permission = 'default'
|
79
|
+
end
|
80
|
+
|
81
|
+
self.can_view( permission, view )
|
82
|
+
end
|
83
|
+
|
84
|
+
def self.can_view( permission, view )
|
85
|
+
action = view.to_s.gsub( /^View\./, '' )
|
86
|
+
dputs( 4 ){ "Does #{permission.inspect} allow to do #{action} knowing #{@@view.inspect} and #{@@parent.inspect}" }
|
87
|
+
if not permission or permission.length == 0
|
88
|
+
permission = %w( default )
|
89
|
+
end
|
90
|
+
|
91
|
+
permission.to_a.each{|p|
|
92
|
+
perm_list = self.getViewParent( p )
|
93
|
+
dputs( 5 ){ "p is #{p} and perm_list is #{perm_list.inspect}" }
|
94
|
+
perm_list.each{|pl|
|
95
|
+
type, data = pl.split(':')
|
96
|
+
dputs( 5 ){ "view = #{type} and data = #{data}" }
|
97
|
+
case type
|
98
|
+
when 'name'
|
99
|
+
dputs( 5 ){ "Pushing #{self.getViewParent(data)}" }
|
100
|
+
perm_list.push( *self.getViewParent( data ) )
|
101
|
+
when 'view'
|
102
|
+
if data
|
103
|
+
dputs( 5 ){ "Searching #{action} - #{data.tab_name} for #{data} - #{action.class}" }
|
104
|
+
if action =~ /^#{data}$/ or action =~ /^#{data.tab_name}Tabs$/
|
105
|
+
dputs( 3 ){ "#{action} is allowed" }
|
106
|
+
return true
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
}
|
111
|
+
}
|
112
|
+
|
113
|
+
dputs( 3 ){ "#{action} is NOT allowed" }
|
114
|
+
return false
|
115
|
+
end
|
116
|
+
|
117
|
+
def self.has_role( permission, role )
|
118
|
+
permission.to_a.each{|perm|
|
119
|
+
dputs(4){"Testing #{perm} on #{role}"}
|
120
|
+
return true if role.to_s =~ /^#{perm}$/
|
121
|
+
@@parent[perm] and @@parent[perm].each{|par|
|
122
|
+
dputs(4){"Testing parent #{par} on #{role}"}
|
123
|
+
return true if par == role.to_s || self.has_role( par, role )
|
124
|
+
}
|
125
|
+
}
|
126
|
+
dputs(4){"Nothing found for #{permission.inspect} on #{role}"}
|
127
|
+
return false
|
128
|
+
end
|
129
|
+
|
130
|
+
# Get session
|
131
|
+
def self.get_session( data )
|
132
|
+
dputs( 0 ){ "Deprecated - #{caller.inspect}" }
|
133
|
+
exit
|
134
|
+
|
135
|
+
if data[0] =~ /^session_id:/
|
136
|
+
return data[0].gsub(/^session_id:/, '' )
|
137
|
+
else
|
138
|
+
return nil
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
# Try to find out what the permissions are, should be changed!
|
143
|
+
def self.which( *data )
|
144
|
+
return ''
|
145
|
+
end
|
146
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'gettext'
|
3
|
+
|
4
|
+
include GetText
|
5
|
+
|
6
|
+
module QooxParser
|
7
|
+
module_function
|
8
|
+
# If the file is the target of your parser, then return true, otherwise false.
|
9
|
+
def target?(file)
|
10
|
+
File.extname(file) == ".rb"
|
11
|
+
end
|
12
|
+
|
13
|
+
def parse(file)
|
14
|
+
ary = []
|
15
|
+
File.open( file ){|f|
|
16
|
+
line = 0
|
17
|
+
f.readlines.each{|l|
|
18
|
+
line += 1
|
19
|
+
if l =~ /^\s*value_[^\s]+\s+[^=]/ or l =~ /^\s*show_[^\s]+\s+[^=]/ or
|
20
|
+
l =~ /^\s*vtlp_list\s+[^=]/
|
21
|
+
case l
|
22
|
+
when /(value_block|show_block)/
|
23
|
+
when /(show_button|show_print)/
|
24
|
+
buttons = l.sub( /^[^:]*:/, '' ).gsub( /:/, '' ).chop.split( /,\s*/ )
|
25
|
+
buttons.each{|b|
|
26
|
+
po = POEntry.new(:normal)
|
27
|
+
po.msgid = b
|
28
|
+
po.references = [ "#{file}:#{line}" ]
|
29
|
+
po.add_comment( "Comes from file #{file} and line is #{l}" )
|
30
|
+
ary << po
|
31
|
+
}
|
32
|
+
else
|
33
|
+
po = POEntry.new(:normal)
|
34
|
+
po.msgid = l.sub( /^[^:]*:/, '' ).sub( /,.*/, '' ).chop
|
35
|
+
po.references = [ "#{file}:#{line}" ]
|
36
|
+
po.add_comment( "Comes from file #{file} and line is #{l}" )
|
37
|
+
ary << po
|
38
|
+
end
|
39
|
+
elsif l =~ /<\s*View\s*$/
|
40
|
+
po = POEntry.new(:normal)
|
41
|
+
po.msgid = l.sub( /^\s*class\s*/, '' ).sub( /\s*<.*$/, '' ).chop
|
42
|
+
po.references = [ "#{file}:#{line}" ]
|
43
|
+
po.add_comment( "Comes from file #{file} and line is #{l}" )
|
44
|
+
ary << po
|
45
|
+
end
|
46
|
+
}
|
47
|
+
}
|
48
|
+
return ary
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
# Add this parser to GetText::RGetText
|
54
|
+
GetText::Tools::XGetText.add_parser(QooxParser)
|
@@ -0,0 +1,68 @@
|
|
1
|
+
=begin
|
2
|
+
This class represents the actual session and holds the following
|
3
|
+
information:
|
4
|
+
|
5
|
+
- "entity_name" - chosen entities
|
6
|
+
- "id" - the actual id of the session
|
7
|
+
- "permissions" - instance of Permission
|
8
|
+
- "owner" - who called the session
|
9
|
+
=end
|
10
|
+
|
11
|
+
class Sessions < Entities
|
12
|
+
def setup_data
|
13
|
+
value_entity_person :owner, :drop, :full_name
|
14
|
+
value_str :sid
|
15
|
+
value_str :s_data
|
16
|
+
value_str :last_seen
|
17
|
+
end
|
18
|
+
|
19
|
+
# Adds a person with a session.
|
20
|
+
def create(owner = nil, sid = nil)
|
21
|
+
if !sid
|
22
|
+
sid = rand
|
23
|
+
end
|
24
|
+
|
25
|
+
if owner
|
26
|
+
if owner.session_id and old = match_by_sid(owner.session_id)
|
27
|
+
old.delete
|
28
|
+
end
|
29
|
+
|
30
|
+
owner.session_id = sid.to_s
|
31
|
+
end
|
32
|
+
|
33
|
+
s = super(owner: owner, sid: sid.to_s, s_data: {}, last_seen: Time.now.to_i)
|
34
|
+
s.web_req = nil
|
35
|
+
s.client_ip = nil
|
36
|
+
return s
|
37
|
+
end
|
38
|
+
|
39
|
+
def loaded
|
40
|
+
before = @data.length
|
41
|
+
# Reject all sessions that never got opened and those who are older than one day
|
42
|
+
@data.delete_if { |k, v|
|
43
|
+
!v._owner || (v._last_seen && Time.now.to_i - v._last_seen.to_i > 86_400)
|
44
|
+
}
|
45
|
+
dputs(3) { "Cleaning up: from #{before} to #{@data.length}" }
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
class Session < Entity
|
51
|
+
attr_accessor :web_req, :client_ip
|
52
|
+
|
53
|
+
def setup_instance
|
54
|
+
@web_req = nil
|
55
|
+
@client_ip = nil
|
56
|
+
self.s_data ||= {}
|
57
|
+
end
|
58
|
+
|
59
|
+
def can_view(v)
|
60
|
+
dputs(3) { "Owner is #{owner.inspect}" }
|
61
|
+
perms = owner ? owner.permissions : nil
|
62
|
+
return Permission.can_view(perms, v)
|
63
|
+
end
|
64
|
+
|
65
|
+
def close
|
66
|
+
self.delete
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class Statics < Entities
|
2
|
+
def setup_data
|
3
|
+
value_str :view_name
|
4
|
+
value_str :data_str
|
5
|
+
end
|
6
|
+
|
7
|
+
def get(name)
|
8
|
+
match_by_view_name(name) or
|
9
|
+
create(:view_name => name, :data_str => '')
|
10
|
+
end
|
11
|
+
|
12
|
+
def get_hash(name)
|
13
|
+
s = Statics.get(name)
|
14
|
+
s.data_str.length == 0 and
|
15
|
+
s.data_str = {}
|
16
|
+
s.data_str
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# This way Statics is instantiated immediately, instead of
|
21
|
+
# any time later when calling QooxView.init
|
22
|
+
RPCQooxdooService.add_prime_service(Statics,
|
23
|
+
'Entities.Statics')
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# This works togehter with UploadMgr to retrieve files.
|
2
|
+
require 'cgi'
|
3
|
+
|
4
|
+
class UploadFiles < RPCQooxdooPath
|
5
|
+
@@files = []
|
6
|
+
def self.parse_req( req )
|
7
|
+
dputs( 4 ){ "UploadFiles: #{req.inspect}" }
|
8
|
+
path = ConfigBase.upload_files
|
9
|
+
filename = CGI.unescape( req.header['x-file-name'][0] || "unknown" )
|
10
|
+
filename = self.escape_chars( filename )
|
11
|
+
dputs(4){"Writing to #{filename.inspect} in #{path.inspect}"}
|
12
|
+
name = "#{path}/#{filename}"
|
13
|
+
dputs(2){"Writing to #{name}"}
|
14
|
+
File.open( "#{name}", "w:ASCII-8BIT" ){|f|
|
15
|
+
f << req.query["file"]
|
16
|
+
}
|
17
|
+
@@files.push name
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.get_files
|
21
|
+
@@files
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.escape_chars( name )
|
25
|
+
name.gsub(/[^a-zA-Z0-9_\.-]/, '_')
|
26
|
+
end
|
27
|
+
end
|