From 2232cbdd1e36c399ecab9d3981c2b27e7cdce6c9 Mon Sep 17 00:00:00 2001 From: John Bintz Date: Fri, 4 May 2012 18:02:46 -0400 Subject: [PATCH] wow a ton of changes --- assets/large-idle.png | Bin 0 -> 3862 bytes assets/large-paused.png | Bin 0 -> 4724 bytes assets/large-working-1.png | Bin 0 -> 7158 bytes assets/large-working-2.png | Bin 0 -> 7311 bytes assets/large.xcf | Bin 0 -> 68591 bytes bin/unison-watch | 60 ++++++++++++++++++++++++++----------- 6 files changed, 43 insertions(+), 17 deletions(-) create mode 100644 assets/large-idle.png create mode 100644 assets/large-paused.png create mode 100644 assets/large-working-1.png create mode 100644 assets/large-working-2.png create mode 100644 assets/large.xcf diff --git a/assets/large-idle.png b/assets/large-idle.png new file mode 100644 index 0000000000000000000000000000000000000000..5340aa22cf8e568e4c0bc9feeb55547d376bed72 GIT binary patch literal 3862 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 literal 0 HcmV?d00001 diff --git a/assets/large-paused.png b/assets/large-paused.png new file mode 100644 index 0000000000000000000000000000000000000000..3ce1ea9be4c347fb645076ec254251ffd4b1eef9 GIT binary patch literal 4724 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 K_sf(mU;G!HDwY%g literal 0 HcmV?d00001 diff --git a/assets/large-working-1.png b/assets/large-working-1.png new file mode 100644 index 0000000000000000000000000000000000000000..40967883c2908e3aac26bb0500d382e2d7c7d982 GIT binary patch literal 7158 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 literal 0 HcmV?d00001 diff --git a/bin/unison-watch b/bin/unison-watch index 9234724..0670f53 100755 --- a/bin/unison-watch +++ b/bin/unison-watch @@ -5,11 +5,14 @@ require 'bundler/setup' require 'Qt4' require 'thread' require 'atomic' - -ENV['PROFILE'] ||= 'default' +require 'thor' class UnisonProfile - def initialize(which = ENV['PROFILE']) + def self.process(profiles) + profiles.collect { |profile| new(profile) } + end + + def initialize(which) @which = which end @@ -41,6 +44,10 @@ class UnisonProfile @paths ||= lines.find_all { |line| line[%r{^path}] }.collect { |line| value_of(line) } end + def paths_with_local_root + paths.collect { |path| File.join(local_root, path) } + end + def value_of(line) line[%r{=(.*)$}, 1].strip end @@ -51,10 +58,12 @@ class UnisonWatcher < Qt::Application SYNC_CHECK_COUNT = 600 SYNC_CHECK_TIME = 0.1 - def initialize(*args) + def initialize(profiles, *args) super(*args) + @profiles = profiles @queue = Atomic.new([]) + @sync_now = false @exiting = false @active = true @@ -64,8 +73,8 @@ class UnisonWatcher < Qt::Application @queue.update { |q| q += [ dirs ].flatten ; q } end - def profile - @profile ||= UnisonProfile.new + def processed_profiles + @processed_profiles ||= UnisonProfile.process(@profiles) end def watch @@ -104,7 +113,7 @@ class UnisonWatcher < Qt::Application end end - watcher[:paths] = profile.paths.collect { |path| File.join(profile.local_root, path) } + watcher[:paths] = processed_profiles.collect(&:paths_with_local_root).flatten watcher[:app] = self end @@ -150,14 +159,15 @@ class UnisonWatcher < Qt::Application end def update_ui - if @current_icon != @prior_icon if !@icons[@current_icon] @icons[@current_icon] = Qt::Icon.new(File.expand_path("../../assets/#{@current_icon}.png", __FILE__)) + @icons["large-#{@current_icon}"] = Qt::Icon.new(File.expand_path("../../assets/large-#{@current_icon}.png", __FILE__)) end @icon.icon = @icons[@current_icon] - @icon.toolTip = "Unison Agent\nUsing #{ENV['PROFILE']} profile" + self.windowIcon = @icons["large-#{@current_icon}"] + @icon.toolTip = "Unison Agent\nUsing #{@profiles.join(', ')} profile" if !@prior_icon @icon.show end @@ -175,6 +185,7 @@ class UnisonWatcher < Qt::Application end def ui + @icon = Qt::SystemTrayIcon.new @icon.contextMenu = menu @@ -182,8 +193,6 @@ class UnisonWatcher < Qt::Application @prior_icon = nil @prior_text = nil - s = nil - @icons = {} @remote_sync_check = SYNC_CHECK_COUNT @@ -198,6 +207,8 @@ class UnisonWatcher < Qt::Application end def start + self.objectName = "cats" + watch ui end @@ -212,18 +223,20 @@ class UnisonWatcher < Qt::Application @done = false runner = Thread.new do - system %{bash -c 'unison -log -logfile #{TRANSFER_LOG} -batch #{ENV['PROFILE']}'} + @profiles.each do |profile| + system %{bash -c 'unison -log -logfile #{TRANSFER_LOG} -batch #{profile}'} + end @done = true end + index = 0 while !@done - @current_icon = 'working-1' + @current_icon = "working-#{index + 1}" update_ui - sleep 0.25 + break if @done - @current_icon = 'working-2' sleep 0.25 - update_ui + index = (index + 1) % 2 end @current_icon = 'idle' @@ -257,5 +270,18 @@ class UnisonWatcher < Qt::Application end end -UnisonWatcher.new(ARGV).start +class UnisonCLI < Thor + desc 'start profile ...', 'Run Unison Watch using the provided profiles' + def start(*profiles) + UnisonWatcher.new(profiles, ARGV).start + end + + default_task :run + + def method_missing(*args) + start(*args) + end +end + +UnisonCLI.start