Class: Menu
- Inherits:
-
Object
show all
- Includes:
- Item
- Defined in:
- lib/menu.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(name) ⇒ Menu
Returns a new instance of Menu.
11
12
13
14
15
16
|
# File 'lib/menu.rb', line 11
def initialize name
self.name = name
@items = Hash.new
self.style = Style.new
set_item(Editor.new self) unless self.is_a? Dynamic
end
|
Instance Attribute Details
#name ⇒ Object
43
44
45
|
# File 'lib/menu.rb', line 43
def name
"> #{super}"
end
|
#style ⇒ Object
Returns the value of attribute style.
8
9
10
|
# File 'lib/menu.rb', line 8
def style
@style
end
|
Instance Method Details
#encode_with(coder) ⇒ Object
18
19
20
21
22
|
# File 'lib/menu.rb', line 18
def encode_with coder
coder['name'] = @name
coder['items'] = items
coder['style'] = style
end
|
#execute ⇒ Object
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/menu.rb', line 52
def execute
show = true
while show
selection = @items.keys.sort, @name
item = @items[selection]
if item.nil?
show = false
else
show = !item.execute unless item.nil?
end
end
!item.nil?
end
|
#filter_entries(entries) ⇒ Object
65
66
67
68
69
70
71
|
# File 'lib/menu.rb', line 65
def filter_entries entries
if @items.nil?
entries
else
entries.reject {|entry| @items[entry].is_a?(Editor)}
end
end
|
#get_font_string ⇒ Object
81
82
83
84
85
86
87
|
# File 'lib/menu.rb', line 81
def get_font_string
font = ""
unless self.style.font.nil?
font = "-fn \"#{self.style.font}\""
end
font
end
|
#init_with(coder) ⇒ Object
24
25
26
27
28
29
|
# File 'lib/menu.rb', line 24
def init_with coder
self.name = coder['name']
@items = coder['items']
self.style = coder['style']
set_item(Editor.new self)
end
|
#items ⇒ Object
35
36
37
|
# File 'lib/menu.rb', line 35
def items
@items.reject { |name,item| item.is_a?(Dynamic) }
end
|
#remove_item(item) ⇒ Object
39
40
41
|
# File 'lib/menu.rb', line 39
def remove_item item
@items.delete item.name unless item.is_a? Dynamic
end
|
#set_item(item) ⇒ Object
31
32
33
|
# File 'lib/menu.rb', line 31
def set_item item
@items[item.name] = item unless @items[item.name].is_a? Dynamic
end
|
72
73
74
75
76
77
78
79
|
# File 'lib/menu.rb', line 72
def entries, name, = true
entries = filter_entries entries
unless $read_only || self.is_a?(Dynamic)
entries << "> #{Editor.name}"
end
command = "echo \"#{entries.join "\n"}\" | dmenu -i #{$location}-l #{$lines} #{get_font_string} -nf \"#{@style.color :fg}\" -nb \"#{@style.color :bg}\" -sf \"#{@style.color :fg_hi}\" -sb \"#{@style.color :bg_hi}\" -p \"#{name}\""
(`#{command}`).strip
end
|
#to_s ⇒ Object
47
48
49
50
|
# File 'lib/menu.rb', line 47
def to_s
string = "#{name}\n"
string += (@items.keys.sort.map {|name| name.prepend(" ")}).join("\n")
end
|