rsence-pre 2.1.0.1.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.yardopts +10 -0
- data/INSTALL.rdoc +330 -0
- data/LICENSE.txt +622 -0
- data/README.rdoc +98 -0
- data/VERSION +1 -0
- data/bin/rsence +25 -0
- data/bin/rsence-pre +25 -0
- data/conf/default_conf.yaml +346 -0
- data/conf/default_strings.yaml +76 -0
- data/conf/rsence_command_strings.yaml +444 -0
- data/docs/ExampleGuiPlugin.rdoc +193 -0
- data/docs/JavascriptBundles.rdoc +0 -0
- data/docs/PluginBundleInfo.rdoc +173 -0
- data/docs/PluginBundles.rdoc +96 -0
- data/docs/Values.rdoc +163 -0
- data/js/comm/autosync/autosync.js +17 -0
- data/js/comm/autosync/js.inc +0 -0
- data/js/comm/comm.js +203 -0
- data/js/comm/js.inc +0 -0
- data/js/comm/jsloader/js.inc +0 -0
- data/js/comm/jsloader/jsloader.js +112 -0
- data/js/comm/queue/js.inc +0 -0
- data/js/comm/queue/queue.js +184 -0
- data/js/comm/session/js.inc +0 -0
- data/js/comm/session/session.js +52 -0
- data/js/comm/sessionwatcher/js.inc +0 -0
- data/js/comm/sessionwatcher/sessionwatcher.js +44 -0
- data/js/comm/transporter/js.inc +0 -0
- data/js/comm/transporter/transporter.js +261 -0
- data/js/comm/urlresponder/js.inc +0 -0
- data/js/comm/urlresponder/urlresponder.js +149 -0
- data/js/comm/values/js.inc +0 -0
- data/js/comm/values/values.js +433 -0
- data/js/controls/button/button.js +72 -0
- data/js/controls/button/js.inc +0 -0
- data/js/controls/button/themes/bright/button.css +89 -0
- data/js/controls/button/themes/bright/button.html +7 -0
- data/js/controls/button/themes/bright/button_parts1-ie6.gif +0 -0
- data/js/controls/button/themes/bright/button_parts1.png +0 -0
- data/js/controls/button/themes/default/button.css +89 -0
- data/js/controls/button/themes/default/button.html +7 -0
- data/js/controls/button/themes/default/button_parts1-ie6.gif +0 -0
- data/js/controls/button/themes/default/button_parts1.png +0 -0
- data/js/controls/checkbox/checkbox.js +49 -0
- data/js/controls/checkbox/js.inc +0 -0
- data/js/controls/checkbox/themes/default/checkbox.css +69 -0
- data/js/controls/checkbox/themes/default/checkbox.html +5 -0
- data/js/controls/checkbox/themes/default/checkbox_parts1-ie6.gif +0 -0
- data/js/controls/checkbox/themes/default/checkbox_parts1.png +0 -0
- data/js/controls/dialogs/alert_sheet/alert_sheet.js +63 -0
- data/js/controls/dialogs/alert_sheet/js.inc +0 -0
- data/js/controls/dialogs/confirm_sheet/confirm_sheet.js +37 -0
- data/js/controls/dialogs/confirm_sheet/js.inc +0 -0
- data/js/controls/dialogs/sheet/js.inc +0 -0
- data/js/controls/dialogs/sheet/sheet.js +84 -0
- data/js/controls/dialogs/sheet/themes/default/sheet.css +64 -0
- data/js/controls/dialogs/sheet/themes/default/sheet.html +14 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_bg-ie6.gif +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_bg.png +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_dim-ie6.gif +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_dim.png +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_parts1-ie6.gif +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_parts1.png +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_parts2-ie6.gif +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_parts2.png +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_warning-ie6.gif +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_warning.png +0 -0
- data/js/controls/imageview/imageview.js +109 -0
- data/js/controls/imageview/js.inc +0 -0
- data/js/controls/imageview/themes/default/blank.gif +0 -0
- data/js/controls/passwordcontrol/js.inc +0 -0
- data/js/controls/passwordcontrol/passwordcontrol.js +23 -0
- data/js/controls/passwordcontrol/themes/default/passwordcontrol.css +0 -0
- data/js/controls/passwordcontrol/themes/default/passwordcontrol.html +18 -0
- data/js/controls/progress/progressbar/js.inc +0 -0
- data/js/controls/progress/progressbar/progressbar.js +40 -0
- data/js/controls/progress/progressbar/themes/default/progressbar.css +16 -0
- data/js/controls/progress/progressbar/themes/default/progressbar.html +2 -0
- data/js/controls/progress/progressindicator/js.inc +0 -0
- data/js/controls/progress/progressindicator/progressindicator.js +44 -0
- data/js/controls/radiobutton/js.inc +0 -0
- data/js/controls/radiobutton/radiobutton.js +43 -0
- data/js/controls/radiobutton/themes/default/radiobutton.css +69 -0
- data/js/controls/radiobutton/themes/default/radiobutton.html +5 -0
- data/js/controls/radiobutton/themes/default/radiobutton_parts1-ie6.gif +0 -0
- data/js/controls/radiobutton/themes/default/radiobutton_parts1.png +0 -0
- data/js/controls/sliders/slider/js.inc +0 -0
- data/js/controls/sliders/slider/slider.js +357 -0
- data/js/controls/sliders/slider/themes/default/hslider_tracks-ie6.gif +0 -0
- data/js/controls/sliders/slider/themes/default/hslider_tracks.png +0 -0
- data/js/controls/sliders/slider/themes/default/slider.css +108 -0
- data/js/controls/sliders/slider/themes/default/slider.html +5 -0
- data/js/controls/sliders/slider/themes/default/slider_thumbs-ie6.gif +0 -0
- data/js/controls/sliders/slider/themes/default/slider_thumbs.png +0 -0
- data/js/controls/sliders/vslider/js.inc +0 -0
- data/js/controls/sliders/vslider/themes/default/vslider.css +52 -0
- data/js/controls/sliders/vslider/themes/default/vslider.html +5 -0
- data/js/controls/sliders/vslider/themes/default/vslider_tracks-ie6.gif +0 -0
- data/js/controls/sliders/vslider/themes/default/vslider_tracks.png +0 -0
- data/js/controls/sliders/vslider/vslider.js +41 -0
- data/js/controls/stepper/js.inc +0 -0
- data/js/controls/stepper/stepper.js +213 -0
- data/js/controls/stepper/themes/default/stepper-ie6.gif +0 -0
- data/js/controls/stepper/themes/default/stepper.css +14 -0
- data/js/controls/stepper/themes/default/stepper.html +2 -0
- data/js/controls/stepper/themes/default/stepper.png +0 -0
- data/js/controls/stringview/js.inc +0 -0
- data/js/controls/stringview/stringview.js +49 -0
- data/js/controls/stringview/themes/default/stringview.css +8 -0
- data/js/controls/stringview/themes/default/stringview.html +1 -0
- data/js/controls/tab/js.inc +0 -0
- data/js/controls/tab/tab.js +280 -0
- data/js/controls/tab/themes/bright/tab.css +76 -0
- data/js/controls/tab/themes/bright/tab.html +6 -0
- data/js/controls/tab/themes/bright/tab_bg_color-ie6.gif +0 -0
- data/js/controls/tab/themes/bright/tab_bg_color.png +0 -0
- data/js/controls/tab/themes/bright/tab_border_pattern-ie6.gif +0 -0
- data/js/controls/tab/themes/bright/tab_border_pattern.png +0 -0
- data/js/controls/tab/themes/bright/tab_parts1-ie6.gif +0 -0
- data/js/controls/tab/themes/bright/tab_parts1.png +0 -0
- data/js/controls/tab/themes/default/tab.css +77 -0
- data/js/controls/tab/themes/default/tab.html +6 -0
- data/js/controls/tab/themes/default/tab_bg_color-ie6.gif +0 -0
- data/js/controls/tab/themes/default/tab_bg_color.png +0 -0
- data/js/controls/tab/themes/default/tab_border_pattern-ie6.gif +0 -0
- data/js/controls/tab/themes/default/tab_border_pattern.png +0 -0
- data/js/controls/tab/themes/default/tab_parts1-ie6.gif +0 -0
- data/js/controls/tab/themes/default/tab_parts1.png +0 -0
- data/js/controls/textarea/js.inc +0 -0
- data/js/controls/textarea/textarea.js +24 -0
- data/js/controls/textarea/themes/default/textarea.css +21 -0
- data/js/controls/textarea/themes/default/textarea.html +18 -0
- data/js/controls/textcontrol/js.inc +0 -0
- data/js/controls/textcontrol/textcontrol.js +374 -0
- data/js/controls/textcontrol/themes/default/textcontrol.css +107 -0
- data/js/controls/textcontrol/themes/default/textcontrol.html +18 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts1-ie6.gif +0 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts1.png +0 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts2-ie6.gif +0 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts2.png +0 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts3-ie6.gif +0 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts3.png +0 -0
- data/js/controls/uploader/js.inc +0 -0
- data/js/controls/uploader/themes/default/upload_progress.gif +0 -0
- data/js/controls/uploader/themes/default/uploader.css +108 -0
- data/js/controls/uploader/themes/default/uploader.html +27 -0
- data/js/controls/uploader/uploader.js +154 -0
- data/js/controls/validatorview/js.inc +0 -0
- data/js/controls/validatorview/themes/default/validator-ie6.gif +0 -0
- data/js/controls/validatorview/themes/default/validator.png +0 -0
- data/js/controls/validatorview/themes/default/validatorview.css +0 -0
- data/js/controls/validatorview/themes/default/validatorview.html +0 -0
- data/js/controls/validatorview/validatorview.js +62 -0
- data/js/controls/window/js.inc +0 -0
- data/js/controls/window/themes/default/window.css +219 -0
- data/js/controls/window/themes/default/window.html +17 -0
- data/js/controls/window/themes/default/window_bg_active-ie6.gif +0 -0
- data/js/controls/window/themes/default/window_bg_active.png +0 -0
- data/js/controls/window/themes/default/window_bg_inactive-ie6.gif +0 -0
- data/js/controls/window/themes/default/window_bg_inactive.png +0 -0
- data/js/controls/window/themes/default/window_buttons-ie6.gif +0 -0
- data/js/controls/window/themes/default/window_buttons.png +0 -0
- data/js/controls/window/themes/default/window_parts1-ie6.gif +0 -0
- data/js/controls/window/themes/default/window_parts1.png +0 -0
- data/js/controls/window/themes/default/window_parts2-ie6.gif +0 -0
- data/js/controls/window/themes/default/window_parts2.png +0 -0
- data/js/controls/window/window.js +286 -0
- data/js/core/class/class.js +318 -0
- data/js/core/class/js.inc +0 -0
- data/js/core/elem/elem.js +1383 -0
- data/js/core/elem/js.inc +0 -0
- data/js/core/event/event.js +153 -0
- data/js/core/event/js.inc +0 -0
- data/js/core/iefix/ie_css_element.htc +5 -0
- data/js/core/iefix/ie_css_style.htc +5 -0
- data/js/core/iefix/iefix.js +359 -0
- data/js/core/iefix/js.inc +0 -0
- data/js/core/rsence_ns/js.inc +0 -0
- data/js/core/rsence_ns/rsence_ns.js +21 -0
- data/js/datetime/calendar/calendar.js +198 -0
- data/js/datetime/calendar/js.inc +0 -0
- data/js/datetime/calendar/themes/default/calendar.css +108 -0
- data/js/datetime/calendar/themes/default/calendar.html +9 -0
- data/js/datetime/calendar/themes/default/calendar_arrows-ie6.gif +0 -0
- data/js/datetime/calendar/themes/default/calendar_arrows.png +0 -0
- data/js/datetime/datetimevalue/datetimevalue.js +247 -0
- data/js/datetime/datetimevalue/js.inc +0 -0
- data/js/datetime/timesheet/js.inc +0 -0
- data/js/datetime/timesheet/themes/default/timesheet.css +30 -0
- data/js/datetime/timesheet/themes/default/timesheet.html +2 -0
- data/js/datetime/timesheet/timesheet.js +183 -0
- data/js/datetime/timesheet_item/js.inc +0 -0
- data/js/datetime/timesheet_item/themes/default/timesheet_item.css +42 -0
- data/js/datetime/timesheet_item/themes/default/timesheet_item.html +8 -0
- data/js/datetime/timesheet_item/timesheet_item.js +248 -0
- data/js/datetime/timesheet_item_edit/js.inc +0 -0
- data/js/datetime/timesheet_item_edit/timesheet_item_edit.js +274 -0
- data/js/foundation/application/application.js +208 -0
- data/js/foundation/application/js.inc +0 -0
- data/js/foundation/control/control.js +339 -0
- data/js/foundation/control/controldefaults/controldefaults.js +56 -0
- data/js/foundation/control/controldefaults/js.inc +0 -0
- data/js/foundation/control/dummyvalue/dummyvalue.js +51 -0
- data/js/foundation/control/dummyvalue/js.inc +0 -0
- data/js/foundation/control/dyncontrol/dyncontrol.js +500 -0
- data/js/foundation/control/dyncontrol/js.inc +0 -0
- data/js/foundation/control/dyncontrol/themes/default/dyncontrol.css +0 -0
- data/js/foundation/control/dyncontrol/themes/default/dyncontrol.html +0 -0
- data/js/foundation/control/eventresponder/eventresponder.js +750 -0
- data/js/foundation/control/eventresponder/js.inc +0 -0
- data/js/foundation/control/js.inc +0 -0
- data/js/foundation/control/valuematrix/js.inc +0 -0
- data/js/foundation/control/valuematrix/valuematrix.js +135 -0
- data/js/foundation/control/valueresponder/js.inc +0 -0
- data/js/foundation/control/valueresponder/valueresponder.js +79 -0
- data/js/foundation/eventmanager/eventmanager.js +991 -0
- data/js/foundation/eventmanager/js.inc +0 -0
- data/js/foundation/geom/point/js.inc +0 -0
- data/js/foundation/geom/point/point.js +202 -0
- data/js/foundation/geom/rect/js.inc +0 -0
- data/js/foundation/geom/rect/rect.js +651 -0
- data/js/foundation/json_renderer/js.inc +0 -0
- data/js/foundation/json_renderer/json_renderer.js +246 -0
- data/js/foundation/system/js.inc +0 -0
- data/js/foundation/system/system.js +381 -0
- data/js/foundation/thememanager/js.inc +0 -0
- data/js/foundation/thememanager/thememanager.js +393 -0
- data/js/foundation/value/js.inc +0 -0
- data/js/foundation/value/value.js +183 -0
- data/js/foundation/view/js.inc +0 -0
- data/js/foundation/view/markupview/js.inc +0 -0
- data/js/foundation/view/markupview/markupview.js +114 -0
- data/js/foundation/view/morphanimation/js.inc +0 -0
- data/js/foundation/view/morphanimation/morphanimation.js +237 -0
- data/js/foundation/view/view.js +1812 -0
- data/js/foundation/view/viewdefaults/js.inc +0 -0
- data/js/foundation/view/viewdefaults/viewdefaults.js +26 -0
- data/js/lists/checkboxlist/checkboxlist.js +171 -0
- data/js/lists/checkboxlist/js.inc +0 -0
- data/js/lists/listitems/js.inc +0 -0
- data/js/lists/listitems/listitems.js +88 -0
- data/js/lists/propertylist/js.inc +0 -0
- data/js/lists/propertylist/propertylist.js +326 -0
- data/js/lists/radiobuttonlist/js.inc +0 -0
- data/js/lists/radiobuttonlist/radiobuttonlist.js +116 -0
- data/js/util/reloadapp/js.inc +0 -0
- data/js/util/reloadapp/reloadapp.js +152 -0
- data/js/util/reloadapp/themes/default/reloadapp_warning-ie6.gif +0 -0
- data/js/util/reloadapp/themes/default/reloadapp_warning.png +0 -0
- data/js/util/sha/js.inc +0 -0
- data/js/util/sha/sha.js +426 -0
- data/js/views/centerview/centerview.js +75 -0
- data/js/views/centerview/js.inc +0 -0
- data/js/views/inlineview/inlineview.js +15 -0
- data/js/views/inlineview/js.inc +0 -0
- data/js/views/scrollview/js.inc +0 -0
- data/js/views/scrollview/scrollview.js +40 -0
- data/lib/conf/argv.rb +850 -0
- data/lib/conf/default.rb +219 -0
- data/lib/daemon/daemon.rb +387 -0
- data/lib/daemon/sigcomm.rb +64 -0
- data/lib/http/broker.rb +150 -0
- data/lib/http/rackup.rb +91 -0
- data/lib/http/request.rb +66 -0
- data/lib/http/response.rb +65 -0
- data/lib/plugins/dependencies.rb +285 -0
- data/lib/plugins/gui_plugin.rb +160 -0
- data/lib/plugins/guiparser.rb +123 -0
- data/lib/plugins/plugin.rb +438 -0
- data/lib/plugins/plugin_base.rb +162 -0
- data/lib/plugins/plugin_plugins.rb +81 -0
- data/lib/plugins/plugin_sqlite_db.rb +98 -0
- data/lib/plugins/pluginmanager.rb +635 -0
- data/lib/plugins/plugins.rb +169 -0
- data/lib/plugins/servlet.rb +108 -0
- data/lib/rsence.rb +32 -0
- data/lib/session/msg.rb +327 -0
- data/lib/session/sessionmanager.rb +522 -0
- data/lib/session/sessionstorage.rb +340 -0
- data/lib/transporter/transporter.rb +263 -0
- data/lib/util/gzstring.rb +9 -0
- data/lib/util/ruby19_fixes.rb +18 -0
- data/lib/values/hvalue.rb +378 -0
- data/lib/values/valuemanager.rb +172 -0
- data/plugins/client_pkg/client_pkg.rb +157 -0
- data/plugins/client_pkg/info.yaml +25 -0
- data/plugins/client_pkg/lib/client_pkg_build.rb +561 -0
- data/plugins/client_pkg/lib/client_pkg_cache.rb +50 -0
- data/plugins/client_pkg/lib/client_pkg_serve.rb +218 -0
- data/plugins/index_html/img/loading.gif +0 -0
- data/plugins/index_html/img/riassence.gif +0 -0
- data/plugins/index_html/index_html.rb +120 -0
- data/plugins/index_html/info.yaml +18 -0
- data/plugins/index_html/tmpl/index.html +15 -0
- data/plugins/main/info.yaml +18 -0
- data/plugins/main/js/main.js +84 -0
- data/plugins/main/main.rb +255 -0
- data/plugins/main/values.yaml +8 -0
- data/plugins/ticket/info.yaml +21 -0
- data/plugins/ticket/lib/common.rb +392 -0
- data/plugins/ticket/lib/favicon.rb +39 -0
- data/plugins/ticket/lib/file.rb +58 -0
- data/plugins/ticket/lib/img.rb +50 -0
- data/plugins/ticket/lib/objblob.rb +66 -0
- data/plugins/ticket/lib/rsrc.rb +34 -0
- data/plugins/ticket/lib/upload.rb +236 -0
- data/plugins/ticket/ticket.rb +333 -0
- data/setup/welcome/gui/welcome.yaml +92 -0
- data/setup/welcome/info.yaml +13 -0
- data/setup/welcome/text/welcome.html +9 -0
- data/setup/welcome/values.yaml +9 -0
- data/setup/welcome/welcome.rb +54 -0
- metadata +407 -0
@@ -0,0 +1,160 @@
|
|
1
|
+
## RSence
|
2
|
+
# Copyright 2009 Riassence Inc.
|
3
|
+
# http://riassence.com/
|
4
|
+
#
|
5
|
+
# You should have received a copy of the GNU General Public License along
|
6
|
+
# with this software package. If not, contact licensing@riassence.com
|
7
|
+
##
|
8
|
+
|
9
|
+
|
10
|
+
module RSence
|
11
|
+
module Plugins
|
12
|
+
|
13
|
+
# The CUIPlugin__ is actually available as +GUIPlugin+ from plugin bundle code using the {RSence::Plugins::GUIPlugin} class mimic method.
|
14
|
+
#
|
15
|
+
# GUIPlugin extends {Plugin__ Plugin} by automatically initializing an {GUIParser} instance as +@gui+.
|
16
|
+
#
|
17
|
+
# Read {Plugin__ Plugin} for usage of the API, {file:ExampleGuiPlugin Example GUIPlugin} for an example of use and {file:PluginBundles Plugin Bundles} for overall information about plugin bundle usage.
|
18
|
+
#
|
19
|
+
# * It implements automatic dependency loading based on the dependencies item in the YAML gui declaration.
|
20
|
+
# * It inits the gui automatically.
|
21
|
+
#
|
22
|
+
# = User Interface -related hooks:
|
23
|
+
# * {#init_ui +#init_ui+} -- Extend to implement logic when the {MainPlugin} plugin has started the client. The {GUIPlugin__ +GUIPlugin+} class extends this method to automatically load and initialize the user interface from a +GUITree+ data structure defined in the +gui/main.yaml+ document in the bundle directory.
|
24
|
+
# * {#gui_params +#gui_params+} -- Extend to define your own params for the gui data.
|
25
|
+
#
|
26
|
+
class GUIPlugin__ < Plugin__
|
27
|
+
|
28
|
+
# @private Class type identifier for the PluginManager.
|
29
|
+
# @return [:GUIPlugin]
|
30
|
+
def self.bundle_type; :GUIPlugin; end
|
31
|
+
|
32
|
+
|
33
|
+
# @private Placeholder for actual gui yaml file.
|
34
|
+
@@default_yaml_src = <<-END
|
35
|
+
type: GUITree
|
36
|
+
version: 0.6
|
37
|
+
|
38
|
+
class: RSence.GUIApp
|
39
|
+
options:
|
40
|
+
label: "Dummy Application"
|
41
|
+
|
42
|
+
END
|
43
|
+
|
44
|
+
# In addition to {Plugin__#init Plugin#init}, also automatically initializes a {GUIParser} instance as +@gui+
|
45
|
+
#
|
46
|
+
# @return [nil]
|
47
|
+
def init
|
48
|
+
super
|
49
|
+
yaml_src = file_read( "gui/#{@name}.yaml" )
|
50
|
+
yaml_src = file_read( "gui/main.yaml" ) unless yaml_src
|
51
|
+
yaml_src = @@default_yaml_src unless yaml_src
|
52
|
+
@gui = GUIParser.new( self, yaml_src )
|
53
|
+
@client_pkgs = false
|
54
|
+
end
|
55
|
+
|
56
|
+
# Extend this method to return custom params to {GUIParser#init}.
|
57
|
+
#
|
58
|
+
# Called from {#init_ui}.
|
59
|
+
#
|
60
|
+
# By default assigns the session values as :values to use for +bind: :values.my_value_name+ in the YAML GUI file for client-side value bindings.
|
61
|
+
#
|
62
|
+
# @param [Message] msg The message is supplied by the system.
|
63
|
+
#
|
64
|
+
# @return [Hash] Parameters for {GUIParser#init @gui#init}
|
65
|
+
#
|
66
|
+
# @example To provide extra parameters, do this:
|
67
|
+
# def gui_params( msg )
|
68
|
+
# params = super
|
69
|
+
# params[:extra] = {
|
70
|
+
# :foo => "Foo", # use in the GUITree as :extra.foo
|
71
|
+
# :num => 124334, # use in the GUITree as :extra.num
|
72
|
+
# :bar => {
|
73
|
+
# :barbar => "Bar" # use in the GUITree as :extra.bar.barbar
|
74
|
+
# }
|
75
|
+
# :arr => [1,2,4,8] # use in the GUITree as :extra.arr
|
76
|
+
# }
|
77
|
+
# params[:more] = "More" # use in the GUITree as :more
|
78
|
+
# return params
|
79
|
+
# end
|
80
|
+
#
|
81
|
+
def gui_params( msg )
|
82
|
+
{ :values => @gui.values( get_ses( msg ) ) }
|
83
|
+
end
|
84
|
+
|
85
|
+
# @private Method that implements +client_pkgs.yaml+ loading
|
86
|
+
def install_client_pkgs
|
87
|
+
if @client_pkgs
|
88
|
+
warn "install_client_pkgs: called with @client_pkgs defined; returning"
|
89
|
+
return
|
90
|
+
end
|
91
|
+
@client_pkgs = yaml_read( 'client_pkgs.yaml' )
|
92
|
+
if @client_pkgs
|
93
|
+
if @client_pkgs.has_key?(:src_dirs)
|
94
|
+
@client_pkgs[:src_dirs].each do |src_dir|
|
95
|
+
src_dir = bundle_path( src_dir[2..-1] ) if src_dir.start_with?('./')
|
96
|
+
@plugins.client_pkg.add_src_dir( src_dir )
|
97
|
+
end
|
98
|
+
end
|
99
|
+
@plugins.client_pkg.add_packages( @client_pkgs[:packages ] ) if @client_pkgs.has_key?(:packages )
|
100
|
+
@plugins.client_pkg.add_themes( @client_pkgs[:theme_names ] ) if @client_pkgs.has_key?(:theme_names )
|
101
|
+
@plugins.client_pkg.add_gfx_formats( @client_pkgs[:gfx_formats ] ) if @client_pkgs.has_key?(:gfx_formats )
|
102
|
+
@plugins.client_pkg.add_reserved_names( @client_pkgs[:reserved_names] ) if @client_pkgs.has_key?(:reserved_names)
|
103
|
+
@plugins.client_pkg.rebuild_client
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
# @private Method that implements +client_pkgs.yaml+ unloading
|
108
|
+
def uninstall_client_pkgs
|
109
|
+
if not @client_pkgs
|
110
|
+
warn "uninstall_client_pkgs: called without @client_pkgs defined"
|
111
|
+
else
|
112
|
+
if @client_pkgs.has_key?(:src_dirs)
|
113
|
+
@client_pkgs[:src_dirs].each do |src_dir|
|
114
|
+
src_dir = bundle_path( src_dir[2..-1] ) if src_dir.start_with?('./')
|
115
|
+
@plugins.client_pkg.del_src_dir( src_dir )
|
116
|
+
end
|
117
|
+
end
|
118
|
+
@plugins.client_pkg.del_reserved_names( @client_pkgs[:reserved_names] ) if @client_pkgs.has_key?(:reserved_names)
|
119
|
+
@plugins.client_pkg.del_gfx_formats( @client_pkgs[:gfx_formats ] ) if @client_pkgs.has_key?(:gfx_formats )
|
120
|
+
@plugins.client_pkg.del_themes( @client_pkgs[:theme_names ] ) if @client_pkgs.has_key?(:theme_names )
|
121
|
+
@plugins.client_pkg.del_packages( @client_pkgs[:packages].keys ) if @client_pkgs.has_key?(:packages )
|
122
|
+
@plugins.client_pkg.rebuild_client
|
123
|
+
end
|
124
|
+
@client_pkgs = false
|
125
|
+
end
|
126
|
+
|
127
|
+
# @private calls install_client_pkgs, if a 'client_pkgs.yaml' file is found
|
128
|
+
def open
|
129
|
+
super
|
130
|
+
install_client_pkgs if File.exist? bundle_path( 'client_pkgs.yaml' )
|
131
|
+
end
|
132
|
+
|
133
|
+
# @private calls uninstall_client_pkgs, if a 'client_pkgs.yaml' file was loaded
|
134
|
+
def close
|
135
|
+
super
|
136
|
+
uninstall_client_pkgs if @client_pkgs
|
137
|
+
end
|
138
|
+
|
139
|
+
# @private Sends gui specification to the main plugin
|
140
|
+
def spec_ui( msg )
|
141
|
+
# TODO
|
142
|
+
end
|
143
|
+
|
144
|
+
# Automatically inits the UI using {GUIParser#init}
|
145
|
+
#
|
146
|
+
# @param [Message] msg The message is supplied by the system.
|
147
|
+
#
|
148
|
+
# @return [nil]
|
149
|
+
def init_ui( msg )
|
150
|
+
@gui.init( msg, gui_params( msg ) )
|
151
|
+
end
|
152
|
+
|
153
|
+
# @private Automatically kills the UI using {GUIParser#kill}
|
154
|
+
def kill_ui( msg )
|
155
|
+
@gui.kill( msg )
|
156
|
+
end
|
157
|
+
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
@@ -0,0 +1,123 @@
|
|
1
|
+
## RSence
|
2
|
+
# Copyright 2009 Riassence Inc.
|
3
|
+
# http://riassence.com/
|
4
|
+
#
|
5
|
+
# You should have received a copy of the GNU General Public License along
|
6
|
+
# with this software package. If not, contact licensing@riassence.com
|
7
|
+
##
|
8
|
+
|
9
|
+
|
10
|
+
module RSence
|
11
|
+
|
12
|
+
|
13
|
+
module Plugins
|
14
|
+
|
15
|
+
|
16
|
+
# This class automatically loads a YAML file from "gui" subdirectory of a plugin.
|
17
|
+
#
|
18
|
+
# Extend your plugin from the {GUIPlugin__ GUIPlugin} class instead of the Plugin class to make this work automatically.
|
19
|
+
#
|
20
|
+
# @example Initialize like this from inside a plugin method. This will load the "gui/my_gui.yaml" file.
|
21
|
+
# gui = GUIParser.new( self, 'my_gui' )
|
22
|
+
#
|
23
|
+
# @example To make the client render the contents of the yaml do this:
|
24
|
+
# ses = get_ses( msg )
|
25
|
+
# params = { :values => @gui.values( ses ) }
|
26
|
+
# gui.init( msg, params )
|
27
|
+
class GUIParser
|
28
|
+
|
29
|
+
# include ::RSence
|
30
|
+
|
31
|
+
# Use this method to send the client all commands required to construct the GUI Tree using JSONRenderer.
|
32
|
+
# @param [Message] msg The +Message+ instance +msg+ used all over the place.
|
33
|
+
# @param [Hash] params Containing all parameters referred from the YAML file, see: {GUIPlugin__#gui_params GUIPlugin#gui_params}
|
34
|
+
def init( msg, params )
|
35
|
+
gui_data = YAML.load( @yaml_src )
|
36
|
+
parse_gui( gui_data, params )
|
37
|
+
if gui_data.has_key?('dependencies')
|
38
|
+
@parent.include_js( msg, gui_data['dependencies'] )
|
39
|
+
gui_data.delete('dependencies')
|
40
|
+
end
|
41
|
+
if gui_data.has_key?('include')
|
42
|
+
gui_data['include'].each do | js_file |
|
43
|
+
js_src = @parent.read_js_once( msg, js_file )
|
44
|
+
msg.reply( js_src )
|
45
|
+
end
|
46
|
+
end
|
47
|
+
gui_name = @parent.name
|
48
|
+
json_data = JSON.dump( gui_data )
|
49
|
+
msg.reply( "JSONRenderer.nu(#{json_data});", true )
|
50
|
+
end
|
51
|
+
|
52
|
+
# Use this method to extract all the value id's of the +ses+ hash.
|
53
|
+
def values( ses )
|
54
|
+
ids = {}
|
55
|
+
ses.each do | key, value |
|
56
|
+
if value.class == HValue
|
57
|
+
ids[ key ] = value.value_id
|
58
|
+
end
|
59
|
+
end
|
60
|
+
return ids
|
61
|
+
end
|
62
|
+
|
63
|
+
private
|
64
|
+
|
65
|
+
def json_fun( value )
|
66
|
+
JSON.parse( "[#{value}]" ).first
|
67
|
+
end
|
68
|
+
|
69
|
+
# Parses the gui data using params. Called from +init+.
|
70
|
+
def parse_gui( gui_data, params )
|
71
|
+
data_class = gui_data.class
|
72
|
+
if data_class == Array
|
73
|
+
gui_data.each_with_index do | item, i |
|
74
|
+
gui_data[i] = parse_gui( item, params )
|
75
|
+
end
|
76
|
+
elsif data_class == Hash
|
77
|
+
gui_data.each do | key, value |
|
78
|
+
gui_data[key] = parse_gui( value, params )
|
79
|
+
end
|
80
|
+
elsif data_class == Symbol
|
81
|
+
sym_str = gui_data.to_s
|
82
|
+
if sym_str.include? '.'
|
83
|
+
sym_arr = sym_str.split('.')
|
84
|
+
else
|
85
|
+
sym_arr = [ sym_str ]
|
86
|
+
end
|
87
|
+
return get_params( sym_arr, params )
|
88
|
+
elsif data_class == String and gui_data.strip.start_with?('function(')
|
89
|
+
return @parent.plugins[:client_pkg].squeeze( "a="+json_fun( gui_data.to_json ) )[2..-1]
|
90
|
+
end
|
91
|
+
return gui_data
|
92
|
+
end
|
93
|
+
|
94
|
+
# Searches the params hash for parameters whenever encountered a Symbol in the YAML.
|
95
|
+
def get_params( params_path, params )
|
96
|
+
item = params_path.shift
|
97
|
+
if params.class == Hash
|
98
|
+
has_str = params.has_key?( item )
|
99
|
+
has_sym = params.has_key?( item.to_sym )
|
100
|
+
item = item.to_sym if has_sym
|
101
|
+
if has_str or has_sym
|
102
|
+
if params_path.size == 0
|
103
|
+
return params[item]
|
104
|
+
else
|
105
|
+
return get_params( params_path, params[ item ] )
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
return ''
|
110
|
+
end
|
111
|
+
|
112
|
+
# Loads the YAML file.
|
113
|
+
# = Parameters
|
114
|
+
# +parent+:: The Plugin instance called from, use +self+ when constructing in a Plugin method.
|
115
|
+
# +yaml_src+:: The YAML source template for the GUI
|
116
|
+
def initialize( parent, yaml_src )
|
117
|
+
@parent = parent
|
118
|
+
@yaml_src = yaml_src
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|