#~ Switch proxies
#~ Ruby+Shoes / 24.11.09 mcwea
require 'win32ole'

Shoes.app :width => 400, :height => 150, :margin => 10, :title => "Switch proxies" do
	
	#~ Shoes.show_log
	PROXIES = {'http://cnproxy:8000' => 'CITRIX', 'http://proxy1:8080' => 'NORMAL'}
	
	def check_proxy
		@wsh = WIN32OLE.new('Wscript.shell')
		@key = 'HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ProxyServer'
		proxy = @wsh.RegRead(@key)
		#~ debug(proxy)
		return proxy
	end
	
	def set_proxy(proxy)
		@wsh.RegWrite(@key, proxy)
		@p1.clear { para " Active (NEW) proxy (#{PROXIES[proxy]}): ", strong(proxy) }
	end
	
	stack :margin => 10 do
		pxy = check_proxy
		ptext = PROXIES[pxy]
		#~ debug("Active (old) proxy(#{PROXIES[pxy]}): #{pxy}")
		para "Active (old) proxy: ", strong(pxy), " (#{PROXIES[pxy]})"
		#~ @p1.clear { para "Active proxy: ", strong(pxy) }
		para "Select ", strong("new"), " proxy:"
		list_box :items => PROXIES.values, :choose => ptext do |list|
			@proxy = list.text
			if confirm("Switch proxy to: #{@proxy} (#{PROXIES.index(@proxy)}) ?")
				set_proxy(PROXIES.index(@proxy))
			end
		end			
	end
	@p1 = flow	
end