bowline 0.4.6 → 0.5.0
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.
- data/Rakefile +1 -0
- data/TODO +11 -0
- data/VERSION +1 -1
- data/assets/bowline.js +194 -0
- data/assets/json2.js +479 -0
- data/assets/osx/Info.plist.erb +45 -0
- data/assets/osx/bowline.png +0 -0
- data/assets/osx/makeicns +0 -0
- data/bowline.gemspec +47 -11
- data/lib/bowline.rb +35 -15
- data/lib/bowline/binders.rb +168 -131
- data/lib/bowline/commands/build.rb +3 -0
- data/lib/bowline/commands/generate.rb +3 -1
- data/lib/bowline/commands/run.rb +7 -4
- data/lib/bowline/desktop.rb +26 -0
- data/lib/bowline/desktop/app.rb +9 -0
- data/lib/bowline/desktop/bridge.rb +97 -0
- data/lib/bowline/desktop/clipboard.rb +9 -0
- data/lib/bowline/desktop/dialog.rb +28 -0
- data/lib/bowline/desktop/dock.rb +9 -0
- data/lib/bowline/desktop/host.rb +10 -0
- data/lib/bowline/desktop/js.rb +92 -0
- data/lib/bowline/desktop/misc.rb +9 -0
- data/lib/bowline/desktop/network.rb +7 -0
- data/lib/bowline/desktop/proxy.rb +94 -0
- data/lib/bowline/desktop/sound.rb +8 -0
- data/lib/bowline/desktop/window.rb +31 -0
- data/lib/bowline/desktop/window_manager.rb +72 -0
- data/lib/bowline/desktop/window_methods.rb +70 -0
- data/lib/bowline/generators.rb +3 -2
- data/lib/bowline/generators/application.rb +8 -5
- data/lib/bowline/generators/binder.rb +10 -6
- data/lib/bowline/generators/model.rb +9 -0
- data/lib/bowline/generators/window.rb +28 -0
- data/lib/bowline/helpers.rb +0 -3
- data/lib/bowline/initializer.rb +65 -11
- data/lib/bowline/library.rb +31 -0
- data/lib/bowline/local_model.rb +116 -0
- data/lib/bowline/logging.rb +23 -0
- data/lib/bowline/platform.rb +73 -0
- data/lib/bowline/tasks/app.rake +80 -148
- data/lib/bowline/tasks/libs.rake +59 -0
- data/lib/bowline/version.rb +2 -2
- data/lib/bowline/watcher.rb +91 -0
- data/templates/binder.rb +2 -8
- data/templates/config/environment.rb +3 -2
- data/templates/main_window.rb +7 -0
- data/templates/model.rb +1 -1
- data/templates/public/index.html +2 -1
- data/templates/script/build +3 -0
- data/templates/script/generate +3 -0
- data/templates/script/init +0 -16
- data/templates/window.rb +3 -0
- data/vendor/pathname.rb +1099 -0
- data/vendor/progressbar.rb +236 -0
- metadata +48 -9
- data/assets/jquery.bowline.js +0 -156
- data/lib/bowline/async.rb +0 -29
- data/lib/bowline/binders/collection.rb +0 -59
- data/lib/bowline/binders/singleton.rb +0 -31
- data/lib/bowline/jquery.rb +0 -31
- data/lib/bowline/observer.rb +0 -66
- data/lib/bowline/window.rb +0 -19
data/lib/bowline/async.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
module Bowline
|
2
|
-
module Async
|
3
|
-
def self.included(base)
|
4
|
-
base.extend Methods
|
5
|
-
base.send :include, Methods
|
6
|
-
class << base
|
7
|
-
extend Methods
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
module Methods
|
12
|
-
def async(*methods)
|
13
|
-
methods.each {|meth|
|
14
|
-
define_method("#{meth}_with_async") {|*args|
|
15
|
-
callback = nil
|
16
|
-
if(args.last.is_a?(::RubyKMethod))
|
17
|
-
callback = args.pop
|
18
|
-
end
|
19
|
-
Thread.new do
|
20
|
-
res = send("#{meth}_without_async", *args)
|
21
|
-
callback.call(res) if callback
|
22
|
-
end
|
23
|
-
}
|
24
|
-
alias_method_chain meth, :async
|
25
|
-
}
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
module Bowline
|
2
|
-
module Binders
|
3
|
-
class Collection < Base
|
4
|
-
class ItemsProxy
|
5
|
-
def initialize(&block)
|
6
|
-
@callback = block
|
7
|
-
@items = []
|
8
|
-
end
|
9
|
-
|
10
|
-
def real
|
11
|
-
@items
|
12
|
-
end
|
13
|
-
|
14
|
-
def method_missing(*args, &block)
|
15
|
-
diff = @items.hash
|
16
|
-
res = @items.send(*args, &block)
|
17
|
-
if diff != @items.hash
|
18
|
-
@callback.call
|
19
|
-
end
|
20
|
-
res
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
class << self
|
25
|
-
def items=(args)
|
26
|
-
if args
|
27
|
-
items.replace(args)
|
28
|
-
else
|
29
|
-
items.clear
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def items
|
34
|
-
@items ||= ItemsProxy.new {
|
35
|
-
self.item_sync!
|
36
|
-
}
|
37
|
-
end
|
38
|
-
|
39
|
-
def item_sync!
|
40
|
-
return unless @items && @elements
|
41
|
-
value = @items.real.map {|item|
|
42
|
-
hash = item.to_js
|
43
|
-
hash.merge!({:_id => item.__id__})
|
44
|
-
hash.stringify_keys
|
45
|
-
}
|
46
|
-
@elements.each {|i|
|
47
|
-
i.updateCollection(value)
|
48
|
-
}
|
49
|
-
end
|
50
|
-
|
51
|
-
def find(id)
|
52
|
-
@items.real.find {|item|
|
53
|
-
item.__id__ == id
|
54
|
-
}
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
module Bowline
|
2
|
-
module Binders
|
3
|
-
class Singleton < Base
|
4
|
-
class << self
|
5
|
-
def item
|
6
|
-
@item
|
7
|
-
end
|
8
|
-
|
9
|
-
def item=(arg)
|
10
|
-
@item = arg
|
11
|
-
self.item_sync!
|
12
|
-
end
|
13
|
-
|
14
|
-
def item_sync!
|
15
|
-
return unless @item && @elements
|
16
|
-
value = @item.to_js
|
17
|
-
value.merge!({:_id => @item.__id__})
|
18
|
-
value.stringify_keys!
|
19
|
-
# Call the chain.js function 'item' on elements
|
20
|
-
@elements.each {|i|
|
21
|
-
i.updateSingleton(value)
|
22
|
-
}
|
23
|
-
end
|
24
|
-
|
25
|
-
def find(*a)
|
26
|
-
@item
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
data/lib/bowline/jquery.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
module Bowline
|
2
|
-
class JQuery
|
3
|
-
# Equivalent to: $.foo()
|
4
|
-
def method_missing(sym, args)
|
5
|
-
self.class.dollar.send(sym, *args)
|
6
|
-
end
|
7
|
-
|
8
|
-
class << self
|
9
|
-
# Equivalent to: $('#item_id')
|
10
|
-
def for_element(el)
|
11
|
-
Bowline::js.send("jQuery", el)
|
12
|
-
end
|
13
|
-
|
14
|
-
# For binding global events
|
15
|
-
# Equivalent to: $('body').bind()
|
16
|
-
def bind(event, fun, data)
|
17
|
-
for_element("body").bind(event, data, fun)
|
18
|
-
end
|
19
|
-
|
20
|
-
# Equivalent to: $
|
21
|
-
def dollar
|
22
|
-
Bowline::js.send("jQuery")
|
23
|
-
end
|
24
|
-
|
25
|
-
# Equivalent to: $.bowline
|
26
|
-
def bowline
|
27
|
-
dollar.bowline
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
data/lib/bowline/observer.rb
DELETED
@@ -1,66 +0,0 @@
|
|
1
|
-
# o = Observable.new
|
2
|
-
# o.append('greet') {
|
3
|
-
# puts 'hi'
|
4
|
-
# }
|
5
|
-
# o.call('greet')
|
6
|
-
#
|
7
|
-
# def greet(who)
|
8
|
-
# puts "Hi #{who}"
|
9
|
-
# end
|
10
|
-
# event = o.append('greet', method(:greet), 'Alex')
|
11
|
-
# o.call('greet')
|
12
|
-
# event.remove
|
13
|
-
|
14
|
-
module Bowline
|
15
|
-
class Observable
|
16
|
-
class Event
|
17
|
-
attr_reader :type, :callback
|
18
|
-
def initialize(observable, type, callback = nil)
|
19
|
-
@observable = observable
|
20
|
-
@type = type
|
21
|
-
@callback = callback
|
22
|
-
end
|
23
|
-
|
24
|
-
def call(*args)
|
25
|
-
@callback.call(*args)
|
26
|
-
end
|
27
|
-
|
28
|
-
def remove
|
29
|
-
@observable.remove(self)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def initialize
|
34
|
-
@listeners = {}
|
35
|
-
end
|
36
|
-
|
37
|
-
def append(event, method = nil, &block)
|
38
|
-
event = Event.new(self, event, method||block)
|
39
|
-
(@listeners[event] ||= []) << event
|
40
|
-
event
|
41
|
-
end
|
42
|
-
|
43
|
-
def call(event, *args)
|
44
|
-
return unless @listeners[event]
|
45
|
-
@listeners[event].each do |callback|
|
46
|
-
callback.call(*args)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def remove(event, value=nil)
|
51
|
-
return unless @listeners[event]
|
52
|
-
if value
|
53
|
-
@listeners[event].delete(value)
|
54
|
-
if @listeners[event].empty?
|
55
|
-
@listeners.delete(event)
|
56
|
-
end
|
57
|
-
else
|
58
|
-
@listeners.delete(event)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def clear
|
63
|
-
@listeners = {}
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
data/lib/bowline/window.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
module Bowline
|
2
|
-
class Window
|
3
|
-
def self.window
|
4
|
-
defined?(Titanium) && Titanium.UI.mainWindow.window
|
5
|
-
end
|
6
|
-
|
7
|
-
def initialize(obj = self.class.window)
|
8
|
-
@object = obj
|
9
|
-
end
|
10
|
-
|
11
|
-
def method_missing(*args)
|
12
|
-
Bowline.logger.info "Sending to Window: #{args.inspect}"
|
13
|
-
if defined?(Titanium)
|
14
|
-
@object = @object.send(*args)
|
15
|
-
end
|
16
|
-
self
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|