diff options
author | Tobias Grimm <tobias@e-tobi.loc> | 2009-02-14 23:25:05 +0100 |
---|---|---|
committer | Tobias Grimm <tobias@e-tobi.loc> | 2009-02-14 23:25:05 +0100 |
commit | 2bae6457006474655f971891a92341b1ae34840e (patch) | |
tree | 30a813fdbb1c096a08d7c35dd59fafc3f65154f4 /lib/vdr/osd/menu.rb | |
download | vdr-plugin-scripting-branches/v0.0.1.tar.gz vdr-plugin-scripting-branches/v0.0.1.tar.bz2 |
Initial commitv0.0.1branches/v0.0.1
Diffstat (limited to 'lib/vdr/osd/menu.rb')
-rw-r--r-- | lib/vdr/osd/menu.rb | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/lib/vdr/osd/menu.rb b/lib/vdr/osd/menu.rb new file mode 100644 index 0000000..5284726 --- /dev/null +++ b/lib/vdr/osd/menu.rb @@ -0,0 +1,76 @@ +# +# vdr-scripting - A plugin for the Linux Video Disk Recorder +# Copyright (c) 2009 Tobias Grimm <vdr@e-tobi.net> +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# +# + +module Vdr + module Osd + class Menu < Vdr::Swig::COsdMenu + attr_reader :title + def initialize(title=nil) + @title = title + super(@title) + @items = [] + yield(self) if block_given? + end + + def title=(title) + @title = title + set_title(@title) + end + + def add_item(item) + @items << item + add(item) + end + + def [](index) + return @items[index] + end + + def open_sub_menu(menu) + add_sub_menu(menu) + end + + def process_key(key) + state = super(key) + case @close_request + when :close + return Vdr::Swig::OsBack + when :close_all + return Vdr::Swig::OsEnd + end + return state + end + + def close + @close_request = :close + end + + def close_all + @close_request = :close_all + end + + def add_new_item(title) + item = Item.new(title) + add_item(item) + return item + end + end + end +end |