motion-pixate-observer 0.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,57 @@
1
+ # Motion::Pixate::Observer
2
+
3
+ This gem provides a function that you changes css files, apply changes into your application that uses Pixate Framework immediately.
4
+
5
+ You do not need rebuild your application and any operations.
6
+ Only update your css files.
7
+
8
+ この gem は、CSS ファイルを変更すると即座に Pixate Framework を利用したアプリに変更内容を適用するという機能を提供します。
9
+
10
+ CSS ファイルを変更するたびにアプリをビルドし直す必要も、アプリ上での操作も一切必要ありません。CSS ファイルをエディタで編集し保存するだけです。
11
+
12
+ ## Requirements
13
+
14
+ - RubyMotion 1.0 or greater (see http://www.rubymotion.com).
15
+ - Pixate Framework 1.0 or greater (see http://www.pixate.com/).
16
+
17
+ ## Installation
18
+
19
+ ```
20
+ $ gem install motion-pixate-observer
21
+ ```
22
+
23
+ ## Usage
24
+
25
+ - Add require `motion-pixate-observer` to your `Rakefile`
26
+
27
+ ```ruby
28
+ require 'rubygems'
29
+ require 'motion-pixate-observer'
30
+ ```
31
+
32
+ - include `Motion::Pixate::Observer` in Main Controller. Call `startObserving` in `viewDidLoad`.
33
+
34
+ ```ruby
35
+ class MainViewController < UIViewController
36
+ include Motion::Pixate::Observer # include Motion::Pixate::Observer in Main Controller
37
+
38
+ def viewDidLoad
39
+ super
40
+
41
+ startObserving # start searching and communicate with server
42
+
43
+ ....
44
+ end
45
+ ```
46
+
47
+ - First, you have to start server. Depends on MacRuby when start server.
48
+
49
+
50
+ ```
51
+ $ ./pixate_server css_file_path
52
+ ```
53
+
54
+ After started server, run your RubyMotion application.
55
+
56
+ - update css files, apply changes immediately.
57
+
data/bin/pixate_server ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/local/bin/macruby
2
+ framework "Cocoa"
3
+ require "socket"
4
+
5
+ cssfile = ARGV[0] || ""
6
+ unless File.exists?(cssfile)
7
+ warn "USAGE : #{$0} css_file_path"
8
+ exit
9
+ end
10
+
11
+ SERVER_PORT = 8000
12
+ SERVER_NAME = "Pixate CSS Notifier"
13
+
14
+ netservice = NSNetService.alloc.initWithDomain("", type: "_pixate._tcp", name: SERVER_NAME, port: SERVER_PORT)
15
+ netservice.publish
16
+
17
+ serv = TCPServer.open("", SERVER_PORT)
18
+ fd = open(cssfile, "r")
19
+ gcdq = Dispatch::Queue.new('pixate')
20
+ mask = Dispatch::Source::VNODE_WRITE | Dispatch::Source::VNODE_EXTEND
21
+
22
+ while true
23
+ Thread.start(serv.accept) do |sock|
24
+ source ||= Dispatch::Source.new(Dispatch::Source::VNODE, fd, mask, gcdq) do
25
+ fd.rewind
26
+ sock.write(fd.read)
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,7 @@
1
+ //
2
+ // Prefix header for all source files of the 'Socket' target in the 'Socket' project
3
+ //
4
+
5
+ #ifdef __OBJC__
6
+ #import <Foundation/Foundation.h>
7
+ #endif
@@ -0,0 +1,14 @@
1
+ #import <Foundation/Foundation.h>
2
+
3
+ @interface Socket : NSObject
4
+ {
5
+ NSString* _host;
6
+ int _port;
7
+ id _delegate;
8
+
9
+ dispatch_queue_t _gcdq;
10
+ }
11
+ - (id)initWithHost:(NSString*)host Port:(int)port;
12
+ - (void)startReceivingData;
13
+
14
+ @end
Binary file
@@ -0,0 +1,9 @@
1
+ unless defined?(Motion::Project::Config)
2
+ raise "This file must be required within a RubyMotion project Rakefile."
3
+ end
4
+
5
+ lib_dir_path = File.dirname(File.expand_path(__FILE__))
6
+ Motion::Project::App.setup do |app|
7
+ app.files.concat(Dir.glob(File.join(lib_dir_path, "project/**/*.rb")))
8
+ app.vendor_project(File.join(lib_dir_path, "Socket"), :static)
9
+ end
@@ -0,0 +1,29 @@
1
+ module Motion; module Pixate; module Observer
2
+ def startObserving
3
+ @netServiceBrowser = NSNetServiceBrowser.alloc.init
4
+ @netServiceBrowser.delegate = self
5
+ @netServiceBrowser.searchForServicesOfType("_pixate._tcp", inDomain: "")
6
+ end
7
+
8
+ def netServiceBrowser(netServiceBrowser,
9
+ didFindService: service,
10
+ moreComing: moreComing)
11
+ @netServiceBrowser.stop
12
+
13
+ service = NSNetService.alloc.initWithDomain(service.domain, type: service.type, name: service.name)
14
+ service.delegate = self
15
+ service.resolveWithTimeout(5.0)
16
+ end
17
+
18
+ def netServiceDidResolveAddress(service)
19
+ service.stop
20
+
21
+ socket = Socket.alloc.initWithHost(service.hostName, Port: service.port)
22
+ socket.delegate = self
23
+ socket.startReceivingData
24
+ end
25
+
26
+ def socketDidReceive(string)
27
+ style(string)
28
+ end
29
+ end; end; end
metadata ADDED
@@ -0,0 +1,55 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: motion-pixate-observer
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Watson
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-01-24 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: This gem provides a function that you changes css files, apply changes
15
+ into your application that uses Pixate Framework immediately.
16
+ email:
17
+ - watson1978@gmail.com
18
+ executables:
19
+ - pixate_server
20
+ extensions: []
21
+ extra_rdoc_files: []
22
+ files:
23
+ - README.md
24
+ - lib/motion-pixate-observer.rb
25
+ - lib/project/pixate_style_watch.rb
26
+ - lib/Socket/libSocket.a
27
+ - lib/Socket/Socket-Prefix.pch
28
+ - lib/Socket/Socket.h
29
+ - bin/pixate_server
30
+ homepage: https://github.com/Watson1978/motion-pixate-observer
31
+ licenses: []
32
+ post_install_message:
33
+ rdoc_options: []
34
+ require_paths:
35
+ - lib
36
+ required_ruby_version: !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ! '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ required_rubygems_version: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ requirements: []
49
+ rubyforge_project:
50
+ rubygems_version: 1.8.23
51
+ signing_key:
52
+ specification_version: 3
53
+ summary: This gem provides a function that you changes css files, apply changes into
54
+ your application that uses Pixate Framework immediately.
55
+ test_files: []