1 # Copyright 2008 Dag Odenhall <dag.odenhall@gmail.com>
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
35 if @options[:listwidgets]
36 if @options[:listwidgets] == true
37 longest_widget_name = Widgets.constants.inject {|a,b| a.length > b.length ? a : b }.length
39 Widgets.constants.sort.each do |widget|
40 widget_class = Widgets.const_get(widget)
41 puts "%-#{longest_widget_name}s : %s" % [widget, widget_class.description]
45 widget_class = Widgets.const_get(@options[:listwidgets].camel_case)
48 puts "#{@options[:listwidgets].camel_case} - #{widget_class.description}"
51 dependencies = widget_class.dependencies
52 unless dependencies.empty?
53 longest_dependency_name = dependencies.keys.inject {|a,b| a.to_s.length > b.to_s.length ? a : b }.to_s.length
54 longest_dependency_name = 10 if longest_dependency_name < 10
55 longest_description = dependencies.values.inject {|a,b| a.length > b.length ? a : b }.length
56 longest_description = 11 if longest_description < 11
58 puts " %-#{longest_dependency_name}s | DESCRIPTION" % "DEPENDENCY"
59 puts "-" * (longest_dependency_name + longest_description + 5)
61 dependencies.keys.sort.each do |dependency|
62 puts " %-#{longest_dependency_name}s | #{dependencies[dependency]}" % dependency
68 options = widget_class.options
71 longest_option_name = options.keys.inject {|a,b| a.to_s.length > b.to_s.length ? a : b }.to_s.length
72 longest_option_name = 6 if longest_option_name < 6
73 longest_description = options.values.inject {|a,b| a[:description].length > b[:description].length ? a : b }[:description].length
74 longest_description = 11 if longest_description < 11
75 longest_default = options.values.inject {|a,b| a[:default].inspect.length > b[:default].inspect.length ? a : b }[:default].inspect.length
76 longest_default = 7 if longest_default < 7
78 puts " %-#{longest_option_name}s | %-#{longest_description}s | DEFAULT" % ["OPTION", "DESCRIPTION"]
79 puts "-" * (longest_option_name + longest_description + longest_default + 8)
81 options.keys.sort_by {|option| option.to_s }.each do |option|
82 puts " %-#{longest_option_name}s | %-#{longest_description}s | %s" % [option, options[option][:description], options[option][:default].inspect]
88 fields = widget_class.fields
91 longest_field_name = fields.keys.inject {|a,b| a.to_s.length > b.to_s.length ? a : b }.to_s.length
92 longest_field_name = 5 if longest_field_name < 5
93 longest_description = fields.values.inject {|a,b| a[:description].length > b[:description].length ? a : b }[:description].length
94 longest_description = 11 if longest_description < 11
95 longest_default = fields.values.inject {|a,b| a[:default].inspect.length > b[:default].inspect.length ? a : b }[:default].inspect.length
96 longest_default = 7 if longest_default < 7
98 puts " %-#{longest_field_name + 1}s | %-#{longest_description}s | DEFAULT" % ["FIELD", "DESCRIPTION"]
99 puts "-" * (longest_field_name + longest_description + longest_default + 9)
101 fields.keys.sort_by {|field| field.to_s }.each do |field|
102 puts " @%-#{longest_field_name}s | %-#{longest_description}s | %s" % [field, fields[field][:description], fields[field][:default].inspect]
115 widget = Widgets.const_get(@options[:test].camel_case)
116 settings = YAML.load("{#{ARGV[0]}}")
117 instance = widget.new(settings)
118 longest_field_name = widget.fields.merge({:default => nil}).keys.inject {|a,b| a.to_s.length > b.to_s.length ? a : b }.to_s.length
120 puts "@%-#{longest_field_name}s = %s" % [:default, instance.instance_variable_get(:@default).inspect]
122 widget.fields.keys.sort_by {|field| field.to_s }.each do |field|
123 puts "@%-#{longest_field_name}s = %s" % [field, instance.instance_variable_get("@#{field}".to_sym).inspect]
130 def cmd_explicit_updates
131 if @options[:update] != []
132 @config[:awesome].each do |awesome|
133 awesome[:widgets].each do |widget|
134 locator = "%s/%s/%s" % [widget[:identifier], awesome[:statusbar], awesome[:screen]]
135 next unless @options[:update] == :all || @options[:update].include?(locator)
137 @threads << Thread.new(awesome, widget) do |awesome, widget|
138 update_widget(awesome[:screen], awesome[:statusbar], widget)
143 @threads.each {|t| t.join }
149 @config[:awesome].each do |awesome|
150 awesome[:widgets].each do |widget|
152 @threads << Thread.new(awesome, widget) do |awesome, widget|
156 Thread.new { update_widget(awesome[:screen], awesome[:statusbar], widget, iteration) }
159 sleep widget[:interval]