vedeu 0.4.43 → 0.4.44
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.
- checksums.yaml +4 -4
- data/Dockerfile +1 -1
- data/bin/vedeu +19 -0
- data/lib/vedeu.rb +0 -34
- data/lib/vedeu/all.rb +4 -1
- data/lib/vedeu/application/application_view.rb +9 -9
- data/lib/vedeu/application/controller.rb +6 -5
- data/lib/vedeu/application/helper.rb +3 -16
- data/lib/vedeu/application/view.rb +3 -16
- data/lib/vedeu/bindings/all.rb +5 -0
- data/lib/vedeu/bindings/bindings.rb +115 -0
- data/lib/vedeu/bindings/drb.rb +45 -0
- data/lib/vedeu/bindings/menus.rb +53 -0
- data/lib/vedeu/bindings/movement.rb +76 -0
- data/lib/vedeu/bindings/visibility.rb +53 -0
- data/lib/vedeu/buffers/buffer.rb +2 -0
- data/lib/vedeu/cli/generator/templates/application/app/controllers/name.erb +2 -2
- data/lib/vedeu/cli/generator/templates/application/app/helpers/name.erb +2 -0
- data/lib/vedeu/cli/generator/templates/application/config/configuration.erb +3 -0
- data/lib/vedeu/cli/generator/view.rb +0 -5
- data/lib/vedeu/cli/main.rb +12 -0
- data/lib/vedeu/cursor/reposition.rb +4 -4
- data/lib/vedeu/dsl/interface.rb +0 -27
- data/lib/vedeu/exceptions.rb +65 -0
- data/lib/vedeu/geometry/geometry.rb +2 -2
- data/lib/vedeu/geometry/grid.rb +2 -2
- data/lib/vedeu/input/input.rb +34 -28
- data/lib/vedeu/null/geometry.rb +2 -2
- data/lib/vedeu/output/colour.rb +0 -2
- data/lib/vedeu/output/esc.rb +7 -1
- data/lib/vedeu/output/render_border.rb +5 -0
- data/lib/vedeu/output/renderers/json.rb +7 -2
- data/lib/vedeu/support/terminal.rb +1 -1
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/application/controller_test.rb +0 -4
- data/test/lib/vedeu/application/helper_test.rb +0 -8
- data/test/lib/vedeu/application/view_test.rb +0 -8
- data/test/lib/vedeu/bindings/bindings_test.rb +43 -0
- data/test/lib/vedeu/bindings/drb_test.rb +23 -0
- data/test/lib/vedeu/bindings/menus_test.rb +26 -0
- data/test/lib/vedeu/bindings/movement_test.rb +28 -0
- data/test/lib/vedeu/bindings/visibility_test.rb +27 -0
- data/test/lib/vedeu/buffers/buffer_test.rb +73 -38
- data/test/lib/vedeu/cli/main_test.rb +47 -0
- data/test/lib/vedeu/dsl/interface_test.rb +4 -7
- data/test/lib/vedeu/exceptions_test.rb +5 -0
- data/test/lib/vedeu/input/input_test.rb +9 -0
- data/test/lib/vedeu/output/esc_test.rb +4 -1
- metadata +21 -5
- data/lib/vedeu/bindings.rb +0 -275
- data/test/lib/vedeu/bindings_test.rb +0 -88
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e923ab136ae9285466e5526700a91bd23b78f03
|
4
|
+
data.tar.gz: 8af995c9b432d7ee21c51837bb6dd6a508b5e485
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b907622dd0291801638870f6456ecf0876c1e66395e3b87a75d433c5ba4449ca9ce23ad27c1520832d0843e7067dcd4969dd7a5b35735dadead4ff2365881f7e
|
7
|
+
data.tar.gz: 1533041a4c03464a27846e11bca3b6f4a4e948fcd8f95f5bfb6a33c8cae92e0a6e398e545785e78101888a59d96c25547c806f5d5d6e38026f5a75425202cbfa
|
data/Dockerfile
CHANGED
@@ -71,6 +71,6 @@ USER vedeu
|
|
71
71
|
# Once we're up and running, we can create a shell to the docker instance and
|
72
72
|
# start running commands against it.
|
73
73
|
#
|
74
|
-
# sudo docker run -it -v $PWD:/home/vedeu/gem:rw vedeu/my_first_app /bin/bash
|
74
|
+
# sudo docker run -it -v $PWD:/home/vedeu/gem:rw -v ~/Docker/:/home/vedeu/docker:rw vedeu/my_first_app /bin/bash
|
75
75
|
#
|
76
76
|
#
|
data/bin/vedeu
CHANGED
@@ -1,5 +1,24 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
require 'rake'
|
4
|
+
|
5
|
+
bundler_message = 'Bundler is required. Please install bundler with ' \
|
6
|
+
"'gem install bundler'"
|
7
|
+
begin
|
8
|
+
require 'bundler'
|
9
|
+
|
10
|
+
rescue LoadError
|
11
|
+
puts bundler_message
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
fail bundler_message unless defined?(Bundler)
|
16
|
+
|
17
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
18
|
+
# load Gem.bin_path('bundler', 'bundle')
|
19
|
+
|
20
|
+
Bundler.setup
|
21
|
+
|
3
22
|
gem_dir = File.expand_path('..', File.dirname(__FILE__))
|
4
23
|
$LOAD_PATH.unshift(gem_dir) unless $LOAD_PATH.include?(gem_dir)
|
5
24
|
|
data/lib/vedeu.rb
CHANGED
@@ -49,40 +49,6 @@ module Vedeu
|
|
49
49
|
receiver.extend(API)
|
50
50
|
end
|
51
51
|
|
52
|
-
# ModelNotFound: Raised with Vedeu attempts to access a named model that does
|
53
|
-
# not exist.
|
54
|
-
#
|
55
|
-
# InvalidSyntax: Raised when Vedeu attempts to parse a {Vedeu.view} or
|
56
|
-
# {Vedeu.interface} and encounters a problem.
|
57
|
-
#
|
58
|
-
# MissingRequired: Raised when a name is not provided for a model when
|
59
|
-
# attempting to store it in a repository.
|
60
|
-
#
|
61
|
-
# ModeSwitch: Raised intentionally when the client application wishes to
|
62
|
-
# switch between cooked and raw (or vice versa) terminal modes. Vedeu is
|
63
|
-
# hard-wired to use the `Escape` key to trigger this change for the time
|
64
|
-
# being.
|
65
|
-
#
|
66
|
-
# NotImplemented: Raised to remind me (or client application developers) that
|
67
|
-
# the subclass implements the functionality sought.
|
68
|
-
#
|
69
|
-
# OutOfRange: Raised when trying to access an interface column less than 1 or
|
70
|
-
# greater than 12. Vedeu is hard-wired to a 12-column layout for the time
|
71
|
-
# being.
|
72
|
-
#
|
73
|
-
# VedeuInterrupt: Raised when Vedeu wishes to exit.
|
74
|
-
#
|
75
|
-
EXCEPTIONS = %w(
|
76
|
-
ModelNotFound
|
77
|
-
InvalidSyntax
|
78
|
-
MissingRequired
|
79
|
-
ModeSwitch
|
80
|
-
NotImplemented
|
81
|
-
OutOfRange
|
82
|
-
VedeuInterrupt
|
83
|
-
)
|
84
|
-
EXCEPTIONS.each { |e| const_set(e, Class.new(StandardError)) }
|
85
|
-
|
86
52
|
end # Vedeu
|
87
53
|
|
88
54
|
require 'vedeu/all'
|
data/lib/vedeu/all.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
# load order is important
|
3
3
|
|
4
4
|
require 'vedeu/version'
|
5
|
+
require 'vedeu/exceptions'
|
5
6
|
require 'vedeu/debug'
|
6
7
|
require 'vedeu/traps'
|
7
8
|
|
@@ -11,7 +12,9 @@ require 'vedeu/storage/all'
|
|
11
12
|
require 'vedeu/repositories/all'
|
12
13
|
|
13
14
|
require 'vedeu/api'
|
14
|
-
require 'vedeu/bindings'
|
15
|
+
require 'vedeu/bindings/drb'
|
16
|
+
require 'vedeu/bindings/menus'
|
17
|
+
require 'vedeu/bindings/bindings'
|
15
18
|
|
16
19
|
require 'vedeu/cli/generator/all'
|
17
20
|
|
@@ -11,25 +11,25 @@ module Vedeu
|
|
11
11
|
|
12
12
|
# Renders the view.
|
13
13
|
#
|
14
|
-
# @param
|
14
|
+
# @param args [void]
|
15
15
|
# @return [void]
|
16
|
-
def self.render(
|
17
|
-
new(
|
16
|
+
def self.render(*args)
|
17
|
+
new(args).render
|
18
18
|
end
|
19
19
|
|
20
20
|
# Returns a new instance of Vedeu::ApplicationView.
|
21
21
|
#
|
22
|
-
# @param
|
22
|
+
# @param args [void]
|
23
23
|
# @return [Vedeu::ApplicationView]
|
24
|
-
def initialize(
|
25
|
-
@
|
24
|
+
def initialize(*args)
|
25
|
+
@args = args
|
26
26
|
end
|
27
27
|
|
28
28
|
protected
|
29
29
|
|
30
|
-
# @!attribute [r]
|
30
|
+
# @!attribute [r] args
|
31
31
|
# @return [void]
|
32
|
-
attr_reader :
|
32
|
+
attr_reader :args
|
33
33
|
|
34
34
|
# # @!attribute [r] template
|
35
35
|
# # @return [void]
|
@@ -41,7 +41,7 @@ module Vedeu
|
|
41
41
|
# @return [String]
|
42
42
|
def template(value)
|
43
43
|
@template = Vedeu::Configuration.base_path +
|
44
|
-
|
44
|
+
"/app/views/templates/#{value}.erb"
|
45
45
|
end
|
46
46
|
|
47
47
|
end # ApplicationView
|
@@ -1,18 +1,20 @@
|
|
1
1
|
module Vedeu
|
2
2
|
|
3
|
+
# Provides methods to be used by Vedeu::ApplicationController.
|
4
|
+
#
|
5
|
+
# @api private
|
3
6
|
module Controller
|
4
7
|
|
8
|
+
# When included, provide these methods as class methods.
|
5
9
|
module ClassMethods
|
6
10
|
|
11
|
+
# @param name [Symbol] The name of the controller.
|
7
12
|
def controller_name(name)
|
8
|
-
Vedeu.bind("show_#{name}".to_sym) {
|
13
|
+
Vedeu.bind("show_#{name}".to_sym) { new }
|
9
14
|
end
|
10
15
|
|
11
16
|
end # ClassMethods
|
12
17
|
|
13
|
-
module InstanceMethods
|
14
|
-
end # InstanceMethods
|
15
|
-
|
16
18
|
# When this module is included in a class, provide ClassMethods as class
|
17
19
|
# methods for the class.
|
18
20
|
#
|
@@ -20,7 +22,6 @@ module Vedeu
|
|
20
22
|
# @return [void]
|
21
23
|
def self.included(klass)
|
22
24
|
klass.send :extend, ClassMethods
|
23
|
-
klass.send :include, InstanceMethods
|
24
25
|
end
|
25
26
|
|
26
27
|
end # Controller
|
@@ -1,23 +1,10 @@
|
|
1
1
|
module Vedeu
|
2
2
|
|
3
|
+
# Provides methods to be used by Vedeu::ApplicationHelper.
|
4
|
+
#
|
5
|
+
# @api private
|
3
6
|
module Helper
|
4
7
|
|
5
|
-
module ClassMethods
|
6
|
-
end # ClassMethods
|
7
|
-
|
8
|
-
module InstanceMethods
|
9
|
-
end # InstanceMethods
|
10
|
-
|
11
|
-
# When this module is included in a class, provide ClassMethods as class
|
12
|
-
# methods for the class.
|
13
|
-
#
|
14
|
-
# @param klass [Class]
|
15
|
-
# @return [void]
|
16
|
-
def self.included(klass)
|
17
|
-
klass.send :extend, ClassMethods
|
18
|
-
klass.send :include, InstanceMethods
|
19
|
-
end
|
20
|
-
|
21
8
|
end # Helper
|
22
9
|
|
23
10
|
end # Vedeu
|
@@ -1,23 +1,10 @@
|
|
1
1
|
module Vedeu
|
2
2
|
|
3
|
+
# Provides methods to be used by Vedeu::ApplicationView.
|
4
|
+
#
|
5
|
+
# @api private
|
3
6
|
module View
|
4
7
|
|
5
|
-
module ClassMethods
|
6
|
-
end # ClassMethods
|
7
|
-
|
8
|
-
module InstanceMethods
|
9
|
-
end # InstanceMethods
|
10
|
-
|
11
|
-
# When this module is included in a class, provide ClassMethods as class
|
12
|
-
# methods for the class.
|
13
|
-
#
|
14
|
-
# @param klass [Class]
|
15
|
-
# @return [void]
|
16
|
-
def self.included(klass)
|
17
|
-
klass.send :extend, ClassMethods
|
18
|
-
klass.send :include, InstanceMethods
|
19
|
-
end
|
20
|
-
|
21
8
|
end # View
|
22
9
|
|
23
10
|
end # Vedeu
|
@@ -0,0 +1,115 @@
|
|
1
|
+
require_relative 'drb'
|
2
|
+
require_relative 'menus'
|
3
|
+
require_relative 'movement'
|
4
|
+
require_relative 'visibility'
|
5
|
+
|
6
|
+
module Vedeu
|
7
|
+
|
8
|
+
# Creates system events which when called provide a variety of core functions
|
9
|
+
# and behaviours. They are soft-namespaced using underscores.
|
10
|
+
#
|
11
|
+
# @note
|
12
|
+
# Unbinding any of these events is likely to cause problems, so I would
|
13
|
+
# advise leaving them alone. A safe rule: if the name starts with an
|
14
|
+
# underscore, it's probably used by Vedeu internally.
|
15
|
+
#
|
16
|
+
# @api public
|
17
|
+
module Bindings
|
18
|
+
|
19
|
+
include Vedeu::Bindings::DRB
|
20
|
+
include Vedeu::Bindings::Menus
|
21
|
+
include Vedeu::Bindings::Movement
|
22
|
+
include Vedeu::Bindings::Visibility
|
23
|
+
|
24
|
+
# Vedeu triggers this event when `:_exit_` is triggered. You can hook into
|
25
|
+
# this to perform a special action before the application terminates. Saving
|
26
|
+
# the user's work, session or preferences might be popular here.
|
27
|
+
Vedeu.bind(:_cleanup_) do
|
28
|
+
Vedeu.trigger(:_drb_stop_)
|
29
|
+
Vedeu.trigger(:cleanup)
|
30
|
+
end
|
31
|
+
|
32
|
+
# When triggered, Vedeu will trigger a `:cleanup` event which you can define
|
33
|
+
# (to save files, etc) and attempt to exit.
|
34
|
+
Vedeu.bind(:_exit_) { Vedeu::Application.stop }
|
35
|
+
|
36
|
+
# Vedeu triggers this event when it is ready to enter the main loop. Client
|
37
|
+
# applications can listen for this event and perform some action(s), like
|
38
|
+
# render the first screen, interface or make a sound. When Vedeu triggers
|
39
|
+
# this event, the :_refresh_ event is also triggered automatically.
|
40
|
+
Vedeu.bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
|
41
|
+
|
42
|
+
# Will cause the triggering of the `:key` event; which
|
43
|
+
# you should define to 'do things'. If the `escape` key is pressed, then
|
44
|
+
# `key` is triggered with the argument `:escape`, also an internal event
|
45
|
+
# `_mode_switch_` is triggered.
|
46
|
+
Vedeu.bind(:_keypress_) { |key| Vedeu.keypress(key) }
|
47
|
+
|
48
|
+
# Will cause the triggering of the `:command` event; which you should define
|
49
|
+
# to 'do things'.
|
50
|
+
Vedeu.bind(:_command_) { |command| Vedeu.trigger(:command, command) }
|
51
|
+
|
52
|
+
# When triggered with a message will cause Vedeu to log the message if
|
53
|
+
# logging is enabled in the configuration.
|
54
|
+
Vedeu.bind(:_log_) { |msg| Vedeu.log(type: :debug, message: msg) }
|
55
|
+
|
56
|
+
# When triggered (after the user presses `escape`), Vedeu switches from a
|
57
|
+
# "raw mode" terminal to a "cooked mode" terminal. The idea here being that
|
58
|
+
# the raw mode is for single keypress actions, whilst cooked mode allows the
|
59
|
+
# user to enter more elaborate commands- such as commands with arguments.
|
60
|
+
Vedeu.bind(:_mode_switch_) { fail ModeSwitch }
|
61
|
+
|
62
|
+
# When triggered will cause Vedeu to trigger the `:_clear_` and `:_refresh_`
|
63
|
+
# events. Please see those events for their behaviour.
|
64
|
+
Vedeu.bind(:_resize_, delay: 0.15) { Vedeu.resize }
|
65
|
+
|
66
|
+
# When triggered will return the current position of the cursor.
|
67
|
+
Vedeu.bind(:_cursor_position_) do |name|
|
68
|
+
Vedeu.cursors.by_name(name).position
|
69
|
+
end
|
70
|
+
|
71
|
+
# When triggered with an interface name will focus that interface and
|
72
|
+
# restore the cursor position and visibility.
|
73
|
+
Vedeu.bind(:_focus_by_name_) { |name| Vedeu.focus_by_name(name) }
|
74
|
+
|
75
|
+
# When triggered will focus the next interface and restore the cursor
|
76
|
+
# position and visibility.
|
77
|
+
Vedeu.bind(:_focus_next_) { Vedeu.focus_next }
|
78
|
+
|
79
|
+
# When triggered will focus the previous interface and restore the cursor
|
80
|
+
# position and visibility.
|
81
|
+
Vedeu.bind(:_focus_prev_) { Vedeu.focus_previous }
|
82
|
+
|
83
|
+
# Clears the whole terminal space, or the named interface area to be cleared
|
84
|
+
# if given.
|
85
|
+
Vedeu.bind(:_clear_) { |name| Vedeu::Clear.by_name(name) }
|
86
|
+
|
87
|
+
# Will cause all interfaces to refresh, or the named interface if given.
|
88
|
+
#
|
89
|
+
# @note
|
90
|
+
# Hidden interfaces will be still refreshed in memory but not shown.
|
91
|
+
Vedeu.bind(:_refresh_) do |name|
|
92
|
+
name ? Vedeu::Refresh.by_name(name) : Vedeu::Refresh.all
|
93
|
+
end
|
94
|
+
|
95
|
+
# Will cause the named cursor to refresh, or the cursor of the interface
|
96
|
+
# which is currently in focus.
|
97
|
+
Vedeu.bind(:_refresh_cursor_) { |name| Vedeu::RefreshCursor.render(name) }
|
98
|
+
|
99
|
+
# Will cause all interfaces in the named group to refresh.
|
100
|
+
Vedeu.bind(:_refresh_group_) { |name| Vedeu::Refresh.by_group(name) }
|
101
|
+
|
102
|
+
# Clears the spaces occupied by the interfaces belonging to the named group.
|
103
|
+
Vedeu.bind(:_clear_group_) { |name| Vedeu::Clear.by_group(name) }
|
104
|
+
|
105
|
+
# @see Vedeu::Geometry#maximise
|
106
|
+
Vedeu.bind(:_maximise_) { |name| Vedeu.geometries.by_name(name).maximise }
|
107
|
+
|
108
|
+
# @see Vedeu::Geometry#unmaximise
|
109
|
+
Vedeu.bind(:_unmaximise_) do |name|
|
110
|
+
Vedeu.geometries.by_name(name).unmaximise
|
111
|
+
end
|
112
|
+
|
113
|
+
end # Bindings
|
114
|
+
|
115
|
+
end # Vedeu
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Vedeu
|
2
|
+
|
3
|
+
module Bindings
|
4
|
+
|
5
|
+
# System events relating to the DRb server implementation.
|
6
|
+
#
|
7
|
+
# @api public
|
8
|
+
module DRB
|
9
|
+
|
10
|
+
# Triggering this event will send input to the running application as long
|
11
|
+
# as it has the DRb server running.
|
12
|
+
Vedeu.bind(:_drb_input_) do |data, type|
|
13
|
+
Vedeu.log(type: :drb, message: "Sending input (#{type})")
|
14
|
+
|
15
|
+
case type
|
16
|
+
when :command then Vedeu.trigger(:_command_, data)
|
17
|
+
else Vedeu.trigger(:_keypress_, data)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
Vedeu.bind(:_drb_retrieve_output_) { Vedeu::VirtualBuffer.retrieve }
|
22
|
+
|
23
|
+
# Triggering this event with 'data' will push data into the running
|
24
|
+
# application's virtual buffer.
|
25
|
+
Vedeu.bind(:_drb_store_output_) do |data|
|
26
|
+
Vedeu::VirtualBuffer.store(Vedeu::Terminal.virtual.output(data))
|
27
|
+
end
|
28
|
+
|
29
|
+
# Use the DRb server to request the client application to restart.
|
30
|
+
Vedeu.bind(:_drb_restart_) { Vedeu::Distributed::Server.restart }
|
31
|
+
|
32
|
+
# Use the DRb server to request the client application to start.
|
33
|
+
Vedeu.bind(:_drb_start_) { Vedeu::Distributed::Server.start }
|
34
|
+
|
35
|
+
# Use the DRb server to request the status of the client application.
|
36
|
+
Vedeu.bind(:_drb_status_) { Vedeu::Distributed::Server.status }
|
37
|
+
|
38
|
+
# Use the DRb server to request the client application to stop.
|
39
|
+
Vedeu.bind(:_drb_stop_) { Vedeu::Distributed::Server.stop }
|
40
|
+
|
41
|
+
end # DRB
|
42
|
+
|
43
|
+
end # Bindings
|
44
|
+
|
45
|
+
end # Vedeu
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Vedeu
|
2
|
+
|
3
|
+
module Bindings
|
4
|
+
|
5
|
+
# Each of the Bindings::Menus events require a target menu name as an
|
6
|
+
# argument.
|
7
|
+
#
|
8
|
+
# @api public
|
9
|
+
module Menus
|
10
|
+
|
11
|
+
# Makes the last menu item the current menu item.
|
12
|
+
Vedeu.bind(:_menu_bottom_) { |name| Vedeu.menus.find(name).bottom_item }
|
13
|
+
|
14
|
+
# Returns the current menu item.
|
15
|
+
Vedeu.bind(:_menu_current_) { |name| Vedeu.menus.find(name).current_item }
|
16
|
+
|
17
|
+
# Deselects all menu items.
|
18
|
+
Vedeu.bind(:_menu_deselect_) do |name|
|
19
|
+
Vedeu.menus.find(name).deselect_item
|
20
|
+
end
|
21
|
+
|
22
|
+
# Returns all the menu items with respective `current` or `selected`
|
23
|
+
# boolean indicators.
|
24
|
+
Vedeu.bind(:_menu_items_) { |name| Vedeu.menus.find(name).items }
|
25
|
+
|
26
|
+
# Makes the next menu item the current menu item, until it reaches the
|
27
|
+
# last item.
|
28
|
+
Vedeu.bind(:_menu_next_) { |name| Vedeu.menus.find(name).next_item }
|
29
|
+
|
30
|
+
# Makes the previous menu item the current menu item, until it reaches the
|
31
|
+
# first item.
|
32
|
+
Vedeu.bind(:_menu_prev_) { |name| Vedeu.menus.find(name).prev_item }
|
33
|
+
|
34
|
+
# Returns the selected menu item.
|
35
|
+
Vedeu.bind(:_menu_selected_) do |name|
|
36
|
+
Vedeu.menus.find(name).selected_item
|
37
|
+
end
|
38
|
+
|
39
|
+
# Makes the current menu item also the selected menu item.
|
40
|
+
Vedeu.bind(:_menu_select_) { |name| Vedeu.menus.find(name).select_item }
|
41
|
+
|
42
|
+
# Makes the first menu item the current menu item.
|
43
|
+
Vedeu.bind(:_menu_top_) { |name| Vedeu.menus.find(name).top_item }
|
44
|
+
|
45
|
+
# Returns a subset of the menu items; starting at the current item to the
|
46
|
+
# last item.
|
47
|
+
Vedeu.bind(:_menu_view_) { |name| Vedeu.menus.find(name).view }
|
48
|
+
|
49
|
+
end # Menus
|
50
|
+
|
51
|
+
end # Bindings
|
52
|
+
|
53
|
+
end # Vedeu
|