dumon 0.2.1 → 0.2.2

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.
@@ -31,11 +31,11 @@ module Dumon
31
31
  # Mirrored outputs:
32
32
  # {:mode=>:mirror, :resolution=>'1600x900'}
33
33
  # Sequence of outputs:
34
- # {:mode=>:sequence, :outs=>['VGA1', 'LVDS1'], :resolutions=>['1920x1080', '1600x900'], :primary=>:none}
34
+ # {:mode=>:hsequence, :outs=>['VGA1', 'LVDS1'], :resolutions=>['1920x1080', '1600x900'], :primary=>:none}
35
35
  def switch(options)
36
36
  # pre-conditions
37
37
  verify_options(options, {
38
- :mode => [:single, :mirror, :sequence],
38
+ :mode => [:single, :mirror, :hsequence, :vsequence],
39
39
  :out => :optional, :outs => :optional,
40
40
  :resolution => :optional, :resolutions => :optional,
41
41
  :primary => :optional
@@ -60,14 +60,16 @@ module Dumon
60
60
  assert(v[:resolutions].include?(options[:resolution]), "unknown resolution: #{options[:resolution]}, output: #{k}")
61
61
  end
62
62
  mirror(options[:resolution])
63
- when :sequence
64
- verify_options(options, {:mode => [:sequence], :outs => :mandatory, :resolutions => :mandatory, :primary => :optional})
63
+ when :hsequence, :vsequence
64
+ verify_options(options, {:mode => [:hsequence, :vsequence], :outs => :mandatory, :resolutions => :mandatory, :primary => :optional})
65
65
  assert(options[:outs].is_a?(Array), 'parameter :outs has to be Array')
66
66
  assert(options[:resolutions].is_a?(Array), 'parameter :resolutions has to be Array')
67
67
  assert(options[:outs].size == options[:resolutions].size, 'size of :outs and :resolutions does not match')
68
68
  assert(options[:outs].size > 1, 'sequence mode expects at least 2 outputs')
69
- assert(outputs.keys.include?(options[:primary]), "unknown primary output: #{options[:primary]}") unless options[:primary].nil?
70
- sequence(options[:outs], options[:resolutions], options[:primary])
69
+ if !options[:primary].nil? and options[:primary].to_sym != :none
70
+ assert(outputs.keys.include?(options[:primary]), "unknown primary output: #{options[:primary]}")
71
+ end
72
+ sequence(options[:outs], options[:resolutions], options[:primary], :hsequence === options[:mode])
71
73
  end
72
74
 
73
75
  Dumon::App.instance.current_profile = options
@@ -130,7 +132,8 @@ module Dumon
130
132
  # *param* outs in form ['VGA1', 'LVDS1']
131
133
  # *resolutions* in form ['1920x1080', '1600x900']
132
134
  # *param* primary name of primary output
133
- def sequence(outs, resolutions, primary=:none)
135
+ # *param* horizontal whether horizontal linie of outputs
136
+ def sequence(outs, resolutions, primary=:none, horizontal=true)
134
137
  raise NotImplementedError, 'this should be overridden by concrete sub-class'
135
138
  end
136
139
 
@@ -224,7 +227,7 @@ module Dumon
224
227
  `#{cmd}`
225
228
  end
226
229
 
227
- def sequence(outs, resolutions, primary=:none) #:nodoc:
230
+ def sequence(outs, resolutions, primary=:none, horizontal=true) #:nodoc:
228
231
  cmd = "#{self.stool}"
229
232
  for i in 0..outs.size - 1
230
233
  output = outs[i]
@@ -232,7 +235,11 @@ module Dumon
232
235
  resolution = self.default_resolution(output) if resolution.nil?
233
236
  cmd << " --output #{output} --mode #{resolution}"
234
237
  cmd << ' --primary' if primary.to_s == output
235
- cmd << " --right-of #{outs[i - 1]}" if i > 0
238
+ if horizontal
239
+ cmd << " --right-of #{outs[i - 1]}" if i > 0
240
+ else
241
+ cmd << " --below #{outs[i - 1]}" if i > 0
242
+ end
236
243
  end
237
244
 
238
245
  Dumon::logger.debug "Command: #{cmd}"
data/lib/dumon/ui.rb CHANGED
@@ -201,15 +201,26 @@ module Dumon
201
201
  o1 = outputs.keys[1]
202
202
  item = Gtk::MenuItem.new("#{o0} left of #{o1}")
203
203
  item.signal_connect('activate') do
204
- omanager.switch({:mode=>:sequence, :outs=>[o0, o1], :resolutions=>[@selected_resolution[o0], @selected_resolution[o1]], :primary=>@primary_output})
204
+ omanager.switch({:mode=>:hsequence, :outs=>[o0, o1], :resolutions=>[@selected_resolution[o0], @selected_resolution[o1]], :primary=>@primary_output})
205
205
  # clear preferred resolution, by next rendering will be read from real state
206
206
  @selected_resolution.clear
207
207
  end
208
208
  rslt.append(item)
209
209
  item = Gtk::MenuItem.new("#{o1} left of #{o0}")
210
210
  item.signal_connect('activate') do
211
- omanager.switch({:mode=>:sequence, :outs=>[o1, o0], :resolutions=>[@selected_resolution[o1], @selected_resolution[o0]], :primary=>@primary_output})
212
- # clear preferred resolution, by next rendering will be read from real state
211
+ omanager.switch({:mode=>:hsequence, :outs=>[o1, o0], :resolutions=>[@selected_resolution[o1], @selected_resolution[o0]], :primary=>@primary_output})
212
+ @selected_resolution.clear
213
+ end
214
+ rslt.append(item)
215
+ item = Gtk::MenuItem.new("#{o0} above #{o1}")
216
+ item.signal_connect('activate') do
217
+ omanager.switch({:mode=>:vsequence, :outs=>[o0, o1], :resolutions=>[@selected_resolution[o0], @selected_resolution[o1]], :primary=>@primary_output})
218
+ @selected_resolution.clear
219
+ end
220
+ rslt.append(item)
221
+ item = Gtk::MenuItem.new("#{o1} above #{o0}")
222
+ item.signal_connect('activate') do
223
+ omanager.switch({:mode=>:vsequence, :outs=>[o1, o0], :resolutions=>[@selected_resolution[o1], @selected_resolution[o0]], :primary=>@primary_output})
213
224
  @selected_resolution.clear
214
225
  end
215
226
  rslt.append(item)
data/lib/dumon/version.rb CHANGED
@@ -2,6 +2,7 @@ module Dumon
2
2
 
3
3
  # Version history.
4
4
  VERSION_HISTORY = [
5
+ ['0.2.2', '2013-03-15', 'Enh #6: Vertical location of outputs'],
5
6
  ['0.2.1', '2013-03-13', 'BF #9: Crash Ruby 1.8.7 because of Dir.home'],
6
7
  ['0.2.0', '2013-03-12', 'Enh #5: Profiles; File based configuration'],
7
8
  ['0.1.7', '2013-02-13', 'Enh #4: About dialog'],
data/lib/dumon.rb CHANGED
@@ -70,7 +70,7 @@ module Dumon
70
70
 
71
71
  # check and create directory structure
72
72
  dirname = File.dirname filename
73
- ::FileUtils.mkdir_p(dirname) unless Dir.exist?(dirname)
73
+ ::FileUtils.mkdir_p(dirname) unless File.exist?(dirname)
74
74
 
75
75
  # create file if does not exist
76
76
  File.open(filename, 'w').close unless File.exist? filename
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dumon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-13 00:00:00.000000000 Z
12
+ date: 2013-03-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: gtk2