opine 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZGU3OTQ4Njg0MTE0NzViM2FiNDYwNTNhYWMxZWRkMjc2ZDFhMWFjYQ==
5
- data.tar.gz: !binary |-
6
- Y2Y1M2U1Y2I4MWM1MWRjZTk5NjcyMjJhODljZTNjNzM4Mjg2Mzk3MQ==
2
+ SHA1:
3
+ metadata.gz: 3e2d0320777408b9078bd739906370540a2e471b
4
+ data.tar.gz: 88c4f25bfea2f3d47057f893c27208ab59533112
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZWRmNDMyZmVmNjE5ZTI1ZTIxMmRlYTBmZDQ4NjQ0OTg0ZGM0ZDExY2MyNmU4
10
- MDg3NjllNTZjYzQyZTkxYzcyNWNkNDZiMjY2N2JkYTRhM2FkNmQ2MTI3YTU0
11
- MzgxMDM3ZjkzMmU0NGEwZmExNzU2MjQ2YzIyZjNjMmI0OTY1ZTY=
12
- data.tar.gz: !binary |-
13
- NWE3N2JmZTBkYzU4YzExZGZjMjk3NzdiYzlkNjJlZWYzM2IyN2Y1MTBlYzRi
14
- NTAwNGRiZWJjZjNlZjkxZDVmZGIxNjYyMzQ1YmQ3MmM5YjBkYzRiY2JiNDQx
15
- YjliZGFmZDg4ZGViODA4NjRjMjc5MmM0ZDM4OTkxMGY4M2Y1YmU=
6
+ metadata.gz: d133ab31c18fecae3f9e1e23b292f85502686c1ecd482875198497ae80f2e93d2b140c31d77fd5d75be6479fa7da7523f3a1c60074490530206443e2f6e35f87
7
+ data.tar.gz: 97e693017ba3de3a4d607bade2ea0bfdce270a83ad4a2abf72e54a383444725574890e269317bd9abb1c8417f1cacfe4abb536f41b3c97667de496a6230a0768
data/Gemfile CHANGED
@@ -1,17 +1,20 @@
1
1
  source "http://rubygems.org"
2
2
 
3
3
  if RUBY_PLATFORM =~ /darwin/
4
- gem 'cocoa', ">= 0.1.5"
4
+ gem 'cocoa', '>= 0.1.6'
5
5
  end
6
6
  gem 'cairo'
7
+ gem 'activesupport', '~> 4.0'
7
8
 
8
9
  group :development do
9
10
  gem 'opine', :path => '.' unless File.basename($0) == 'rake' && $*.first == 'gemspec'
10
11
  gem 'sqlite3'
11
12
  gem 'activerecord', '~> 4.0'
12
- gem 'activesupport', '~> 4.0'
13
13
 
14
14
  gem 'bacon'
15
+ gem 'mocha-on-bacon'
16
+ gem 'mocha'
17
+
15
18
  # gem "shoulda", ">= 0"
16
19
  gem "rdoc", "~> 3.12"
17
20
  gem "bundler", "~> 1.0"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.0.5
data/examples/table.rb ADDED
@@ -0,0 +1,32 @@
1
+ require 'opine'
2
+ require 'active_record'
3
+
4
+ ActiveRecord::Base.logger = Logger.new(STDERR)
5
+
6
+ ActiveRecord::Base.establish_connection(
7
+ :adapter => "sqlite3",
8
+ :database => ":memory:"
9
+ )
10
+
11
+ ActiveRecord::Schema.define do
12
+ create_table :records do |table|
13
+ table.column :name, :string
14
+ end
15
+ end
16
+
17
+ class Record < ActiveRecord::Base
18
+ end
19
+
20
+ (1..10).each do |i|
21
+ Record.create! :name => "Record #{i}"
22
+ end
23
+
24
+ Opine.app do
25
+ window :title => 'Table example' do
26
+ table Record.all, :columns => [:id, :name] do
27
+ on_select_row do |index|
28
+ puts "SELECTED ROW #{index}"
29
+ end
30
+ end
31
+ end
32
+ end
data/lib/opine.rb CHANGED
@@ -1,4 +1,6 @@
1
1
 
2
+ require 'active_support/core_ext/module/delegation'
3
+
2
4
  module Opine
3
5
  def self.platform
4
6
  @platform ||= case RUBY_PLATFORM
@@ -21,8 +23,10 @@ require 'cairo'
21
23
  module Opine::Native; end
22
24
  module Opine::Dark; end
23
25
 
26
+ require 'opine/rect'
27
+
24
28
  require 'opine/widget'
25
- [:application, :alert, :window].each do |widget|
29
+ [:application, :alert, :view, :window, :table].each do |widget|
26
30
  [:native, :dark].each do |theme|
27
31
  [
28
32
  "#{widget}",
data/lib/opine/rect.rb ADDED
@@ -0,0 +1,17 @@
1
+ class Opine::Rect
2
+ attr_accessor :x,:y,:width,:height
3
+
4
+ def initialize options
5
+ options.each do |key,value|
6
+ send("#{key}=".to_sym,value)
7
+ end
8
+ end
9
+
10
+ def native
11
+ Cocoa::NSRect.new(x: x, y: y, width: width, height: height)
12
+ end
13
+
14
+ def ==(other)
15
+ x == other.x && y == other.y && width = other.width && height == other.height
16
+ end
17
+ end
@@ -1,9 +1,21 @@
1
1
  class Opine::Application < Opine::Widget
2
- attr_accessor :application, :theme
2
+ attr_accessor :application
3
+
4
+ DEFAULTS = { :theme => :native }
5
+
6
+ def theme
7
+ @@theme
8
+ end
9
+ def theme= theme
10
+ @@theme = theme
11
+ end
12
+ def self.theme
13
+ @@theme
14
+ end
3
15
  end
4
16
 
5
17
  module Opine
6
- def self.app(options={ :theme => :native },&block)
7
- Application.new(options,&block)
18
+ def self.app(options={},&block)
19
+ Opine::Native::Application.new(Opine::Application::DEFAULTS.merge(options),&block)
8
20
  end
9
21
  end
@@ -1,5 +1,5 @@
1
1
 
2
- class Opine::Application < Opine::Widget
2
+ class Opine::Native::Application < Opine::Application
3
3
 
4
4
  class OSXApplication < Cocoa::NSObject
5
5
  attr_accessor :block, :application
@@ -0,0 +1,13 @@
1
+ class Opine::Table < Opine::Widget
2
+ attr_accessor :parent, :resources, :columns, :native
3
+
4
+ def on_select_row(&block)
5
+ hooks[:on_select_row] = block
6
+ end
7
+ end
8
+
9
+ class Opine::Window
10
+ def table(resources, options={}, &block)
11
+ "Opine::#{Opine::Application.theme.to_s.camelize}::Table".constantize.new(self,resources, options, &block)
12
+ end
13
+ end
@@ -0,0 +1,76 @@
1
+ class Opine::Native::Table < Opine::Table
2
+ delegate :hooks, :reload, :to => :native
3
+
4
+ class OSXTable < Cocoa::NSObject
5
+ attr_accessor :table_view, :hooks
6
+ def initialize parent,resources,options,&block
7
+ super()
8
+
9
+ @parent = parent
10
+ @resources = resources
11
+ @columns = options[:columns] || @resources.columns.map{ |col| col.name }
12
+ @hooks = {}
13
+
14
+ table_container = Cocoa::NSScrollView.alloc.initWithFrame parent.frame.native
15
+ @table_view = Cocoa::NSTableView.alloc.initWithFrame parent.frame.native
16
+
17
+ columns = @columns.map do |name|
18
+ col = Cocoa::NSTableColumn.alloc.initWithIdentifier name.to_s
19
+ col.headerCell.setTitle name.to_s.humanize
20
+ col.setWidth parent.frame.width / @columns.size
21
+ table_view.addTableColumn col
22
+ col
23
+ end
24
+
25
+ table_view.setDelegate self
26
+ table_view.setDataSource self
27
+ table_view.reloadData
28
+
29
+ table_container.setDocumentView table_view
30
+ table_container.setHasVerticalScroller true
31
+
32
+ if parent.is_a? Opine::Window
33
+ parent.content_view << table_container
34
+ end
35
+
36
+ table_container.setAutoresizingMask NSViewWidthSizable | NSViewHeightSizable
37
+
38
+ table_container.release
39
+ table_view.release
40
+ columns.each do |col|
41
+ col.release
42
+ end
43
+ end
44
+
45
+ def reload
46
+ @cache = @resources.to_a
47
+ table_view.reloadData
48
+ end
49
+
50
+ private
51
+ def cache
52
+ @cache ||= @resources.to_a
53
+ end
54
+
55
+ def numberOfRowsInTableView table_view
56
+ cache.size
57
+ end
58
+
59
+ def tableView(table_view, objectValueForTableColumn: nil, row: nil)
60
+ cache[row].send(objectValueForTableColumn.identifier.to_s.to_sym).to_s
61
+ end
62
+
63
+ def tableView(table_view, shouldSelectRow: nil)
64
+ hooks[:on_select_row].call(shouldSelectRow) if hooks[:on_select_row]
65
+ true
66
+ end
67
+ end
68
+
69
+ def initialize window,resources,options,&block
70
+ @parent = parent
71
+ @resources = resources
72
+ @resources = @resources.to_s.singularize.classify.constantize.all if @resources.is_a?(Symbol)
73
+ @native = OSXTable.new(window,@resources,options,&block)
74
+ instance_eval(&block) if block
75
+ end
76
+ end
@@ -0,0 +1,9 @@
1
+ class Opine::View < Opine::Widget
2
+ attr_accessor :view
3
+ def initialize view
4
+ @view = view
5
+ end
6
+ def << whatever
7
+ view.addSubview whatever
8
+ end
9
+ end
@@ -1,9 +1,15 @@
1
1
  class Opine::Window < Opine::Widget
2
- attr_accessor :window, :title
2
+ attr_accessor :window, :title, :content_view, :frame
3
+ delegate :x, :y, :width, :height, :x=, :y=, :width=, :height=, :to => :frame
4
+
5
+ DEFAULTS = {
6
+ :title => 'ruby',
7
+ :frame => Opine::Rect.new(x: 0, y: 0, width: 320, height: 240)
8
+ }
3
9
  end
4
10
 
5
11
  class Opine::Application
6
- def window(options={ :title => 'ruby' },&block)
7
- "Opine::#{theme.to_s.camelize}::Window".constantize.new(options,&block)
12
+ def window(options={},&block)
13
+ "Opine::#{theme.to_s.camelize}::Window".constantize.new(Opine::Window::DEFAULTS.merge(options),&block)
8
14
  end
9
15
  end
@@ -1,3 +1,4 @@
1
+ class Opine::Dark::Window < Opine::Native::Window
1
2
 
2
3
  class TitleView < Cocoa::NSView
3
4
  def drawRect rect
@@ -87,14 +88,12 @@
87
88
  end
88
89
  end
89
90
 
90
- class Opine::Dark::Window < Opine::Native::Window
91
91
  def initialize(options,&block)
92
92
  super do |win|
93
93
  win.window.setOpaque false
94
94
  win.window.setHasShadow true
95
95
 
96
- height = window.frame[:size][:height]
97
- view = TitleView.alloc.initWithFrame NSRect.new(x: 0, y: height-22, width: 200, height: 22)
96
+ view = TitleView.alloc.initWithFrame NSRect.new(x: frame.x, y: frame.height-22, width: frame.width, height: 22)
98
97
  window.contentView.addSubview view
99
98
  view.setAutoresizingMask(NSViewWidthSizable | NSViewHeightSizable)
100
99
 
@@ -1,7 +1,7 @@
1
1
 
2
2
  class Opine::Native::Window < Opine::Window
3
3
  def initialize(options,&block)
4
- @window = Cocoa::NSWindow.alloc.initWithContentRect(NSRect.new(x: 0, y: 0, width: 200, height: 200),
4
+ @window = Cocoa::NSWindow.alloc.initWithContentRect(options[:frame].native,
5
5
  styleMask: native_style,
6
6
  backing: NSBackingStoreBuffered,
7
7
  defer: false)
@@ -15,7 +15,10 @@ class Opine::Native::Window < Opine::Window
15
15
  point[:y] = 220.0
16
16
  window.cascadeTopLeftFromPoint point
17
17
 
18
+ @content_view = Opine::View.new(window.contentView)
19
+
18
20
  instance_eval(&block) if block
21
+
19
22
  window.makeKeyAndOrderFront nil
20
23
  end
21
24
 
data/opine.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: opine 0.0.4 ruby lib
5
+ # stub: opine 0.0.5 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "opine"
9
- s.version = "0.0.4"
9
+ s.version = "0.0.5"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Patrick Hanevold"]
14
- s.date = "2014-04-11"
14
+ s.date = "2014-04-13"
15
15
  s.description = "A ruby widget toolkit for everyone and every computer"
16
16
  s.email = "patrick.hanevold@gmail.com"
17
17
  s.extra_rdoc_files = [
@@ -25,63 +25,77 @@ Gem::Specification.new do |s|
25
25
  "Rakefile",
26
26
  "VERSION",
27
27
  "examples/hello_world.rb",
28
+ "examples/table.rb",
28
29
  "examples/themed_window.rb",
29
30
  "examples/window.rb",
30
31
  "lib/opine.rb",
32
+ "lib/opine/rect.rb",
31
33
  "lib/opine/widget.rb",
32
34
  "lib/opine/widgets/alert.rb",
33
35
  "lib/opine/widgets/application.rb",
34
36
  "lib/opine/widgets/application_osx.rb",
37
+ "lib/opine/widgets/table.rb",
38
+ "lib/opine/widgets/table_osx.rb",
39
+ "lib/opine/widgets/view_osx.rb",
35
40
  "lib/opine/widgets/window.rb",
36
41
  "lib/opine/widgets/window_dark.rb",
37
42
  "lib/opine/widgets/window_osx.rb",
38
43
  "opine.gemspec",
39
44
  "spec/opine/opine_spec.rb",
45
+ "spec/opine/widgets/application_spec.rb",
46
+ "spec/opine/widgets/table_spec.rb",
47
+ "spec/opine/widgets/window_spec.rb",
40
48
  "spec/spec_helper.rb",
41
49
  "tasks/bacon.rake",
42
50
  "tasks/setup.rake"
43
51
  ]
44
52
  s.homepage = "http://github.com/patrickhno/opine"
45
53
  s.licenses = ["MIT"]
46
- s.rubygems_version = "2.2.2"
54
+ s.rubygems_version = "2.2.0"
47
55
  s.summary = "Ruby widget toolkit"
48
56
 
49
57
  if s.respond_to? :specification_version then
50
58
  s.specification_version = 4
51
59
 
52
60
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
53
- s.add_runtime_dependency(%q<cocoa>, [">= 0.1.5"])
61
+ s.add_runtime_dependency(%q<cocoa>, [">= 0.1.6"])
54
62
  s.add_runtime_dependency(%q<cairo>, [">= 0"])
63
+ s.add_runtime_dependency(%q<activesupport>, ["~> 4.0"])
55
64
  s.add_development_dependency(%q<opine>, [">= 0"])
56
65
  s.add_development_dependency(%q<sqlite3>, [">= 0"])
57
66
  s.add_development_dependency(%q<activerecord>, ["~> 4.0"])
58
- s.add_development_dependency(%q<activesupport>, ["~> 4.0"])
59
67
  s.add_development_dependency(%q<bacon>, [">= 0"])
68
+ s.add_development_dependency(%q<mocha-on-bacon>, [">= 0"])
69
+ s.add_development_dependency(%q<mocha>, [">= 0"])
60
70
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
61
71
  s.add_development_dependency(%q<bundler>, ["~> 1.0"])
62
72
  s.add_development_dependency(%q<jeweler>, ["~> 2.0"])
63
73
  s.add_development_dependency(%q<simplecov>, [">= 0"])
64
74
  else
65
- s.add_dependency(%q<cocoa>, [">= 0.1.5"])
75
+ s.add_dependency(%q<cocoa>, [">= 0.1.6"])
66
76
  s.add_dependency(%q<cairo>, [">= 0"])
77
+ s.add_dependency(%q<activesupport>, ["~> 4.0"])
67
78
  s.add_dependency(%q<opine>, [">= 0"])
68
79
  s.add_dependency(%q<sqlite3>, [">= 0"])
69
80
  s.add_dependency(%q<activerecord>, ["~> 4.0"])
70
- s.add_dependency(%q<activesupport>, ["~> 4.0"])
71
81
  s.add_dependency(%q<bacon>, [">= 0"])
82
+ s.add_dependency(%q<mocha-on-bacon>, [">= 0"])
83
+ s.add_dependency(%q<mocha>, [">= 0"])
72
84
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
73
85
  s.add_dependency(%q<bundler>, ["~> 1.0"])
74
86
  s.add_dependency(%q<jeweler>, ["~> 2.0"])
75
87
  s.add_dependency(%q<simplecov>, [">= 0"])
76
88
  end
77
89
  else
78
- s.add_dependency(%q<cocoa>, [">= 0.1.5"])
90
+ s.add_dependency(%q<cocoa>, [">= 0.1.6"])
79
91
  s.add_dependency(%q<cairo>, [">= 0"])
92
+ s.add_dependency(%q<activesupport>, ["~> 4.0"])
80
93
  s.add_dependency(%q<opine>, [">= 0"])
81
94
  s.add_dependency(%q<sqlite3>, [">= 0"])
82
95
  s.add_dependency(%q<activerecord>, ["~> 4.0"])
83
- s.add_dependency(%q<activesupport>, ["~> 4.0"])
84
96
  s.add_dependency(%q<bacon>, [">= 0"])
97
+ s.add_dependency(%q<mocha-on-bacon>, [">= 0"])
98
+ s.add_dependency(%q<mocha>, [">= 0"])
85
99
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
86
100
  s.add_dependency(%q<bundler>, ["~> 1.0"])
87
101
  s.add_dependency(%q<jeweler>, ["~> 2.0"])
@@ -0,0 +1,14 @@
1
+ require_relative '../../spec_helper'
2
+ require 'opine'
3
+
4
+ describe 'Application' do |t|
5
+ it 'should have default parameters' do
6
+ Opine::Native::Application.expects(:new).with(:theme => :native)
7
+ Opine.app
8
+ end
9
+
10
+ it 'should override default parameters' do
11
+ Opine::Native::Application.expects(:new).with(:theme => :custom)
12
+ Opine.app :theme => :custom
13
+ end
14
+ end
@@ -0,0 +1,23 @@
1
+ require_relative '../../spec_helper'
2
+ require 'opine'
3
+
4
+ describe 'Table' do |t|
5
+ it 'should pass parameters' do
6
+ Opine::Application.new(:theme => :native).window do
7
+ Opine::Native::Table.expects(:new).with(self,{:columns => [:a, :b]},{})
8
+ table(:columns => [:a, :b])
9
+ end
10
+ end
11
+
12
+ it 'should accept hooks' do
13
+ records = mock('Records')
14
+ records.expects(:to_a).returns([])
15
+ Opine::Application.new(:theme => :native).window do
16
+ table(records, :columns => [:a, :b]) do
17
+ on_select_row do |i|
18
+ end
19
+ hooks[:on_select_row].class.should == Proc
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,29 @@
1
+ require_relative '../../spec_helper'
2
+ require 'opine'
3
+
4
+ describe 'Window' do |t|
5
+ window = Opine::Window.new(:frame => Opine::Rect.new(x: 0, y: 0, width: 0, height: 0))
6
+
7
+ it 'should delegate to frame' do
8
+ window.x = 1
9
+ window.y = 2
10
+ window.width = 3
11
+ window.height = 4
12
+ window.frame.should == Opine::Rect.new(x: 1, y: 2, width: 3, height: 4)
13
+ window.frame = Opine::Rect.new(x: 5, y: 6, width: 7, height: 8)
14
+ window.x.should == 5
15
+ window.y.should == 6
16
+ window.width.should == 7
17
+ window.height.should == 8
18
+ end
19
+
20
+ it 'should have default parameters' do
21
+ Opine::Native::Window.expects(:new).with(:title => 'ruby', :frame => Opine::Rect.new(x: 0, y: 0, width: 320, height: 240))
22
+ Opine::Application.new(:theme => :native).window
23
+ end
24
+
25
+ it 'should override default parameters' do
26
+ Opine::Native::Window.expects(:new).with(:title => 'Yes it does', :frame => Opine::Rect.new(x: 0, y: 0, width: 320, height: 240))
27
+ Opine::Application.new(:theme => :native).window(:title => 'Yes it does')
28
+ end
29
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,4 @@
1
1
  $: << File.expand_path(File.join(File.dirname(__FILE__), '/../lib'))
2
2
 
3
3
  require 'bacon'
4
+ require 'mocha-on-bacon'
metadata CHANGED
@@ -1,167 +1,195 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Hanevold
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-11 00:00:00.000000000 Z
11
+ date: 2014-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cocoa
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.5
19
+ version: 0.1.6
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.5
26
+ version: 0.1.6
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: cairo
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activesupport
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '4.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '4.0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: opine
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - ! '>='
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
61
  version: '0'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - ! '>='
66
+ - - ">="
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: sqlite3
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - ! '>='
73
+ - - ">="
60
74
  - !ruby/object:Gem::Version
61
75
  version: '0'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - ! '>='
80
+ - - ">="
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: activerecord
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - ~>
87
+ - - "~>"
74
88
  - !ruby/object:Gem::Version
75
89
  version: '4.0'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - ~>
94
+ - - "~>"
81
95
  - !ruby/object:Gem::Version
82
96
  version: '4.0'
83
97
  - !ruby/object:Gem::Dependency
84
- name: activesupport
98
+ name: bacon
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - ~>
101
+ - - ">="
88
102
  - !ruby/object:Gem::Version
89
- version: '4.0'
103
+ version: '0'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - ~>
108
+ - - ">="
95
109
  - !ruby/object:Gem::Version
96
- version: '4.0'
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
- name: bacon
112
+ name: mocha-on-bacon
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: mocha
99
127
  requirement: !ruby/object:Gem::Requirement
100
128
  requirements:
101
- - - ! '>='
129
+ - - ">="
102
130
  - !ruby/object:Gem::Version
103
131
  version: '0'
104
132
  type: :development
105
133
  prerelease: false
106
134
  version_requirements: !ruby/object:Gem::Requirement
107
135
  requirements:
108
- - - ! '>='
136
+ - - ">="
109
137
  - !ruby/object:Gem::Version
110
138
  version: '0'
111
139
  - !ruby/object:Gem::Dependency
112
140
  name: rdoc
113
141
  requirement: !ruby/object:Gem::Requirement
114
142
  requirements:
115
- - - ~>
143
+ - - "~>"
116
144
  - !ruby/object:Gem::Version
117
145
  version: '3.12'
118
146
  type: :development
119
147
  prerelease: false
120
148
  version_requirements: !ruby/object:Gem::Requirement
121
149
  requirements:
122
- - - ~>
150
+ - - "~>"
123
151
  - !ruby/object:Gem::Version
124
152
  version: '3.12'
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: bundler
127
155
  requirement: !ruby/object:Gem::Requirement
128
156
  requirements:
129
- - - ~>
157
+ - - "~>"
130
158
  - !ruby/object:Gem::Version
131
159
  version: '1.0'
132
160
  type: :development
133
161
  prerelease: false
134
162
  version_requirements: !ruby/object:Gem::Requirement
135
163
  requirements:
136
- - - ~>
164
+ - - "~>"
137
165
  - !ruby/object:Gem::Version
138
166
  version: '1.0'
139
167
  - !ruby/object:Gem::Dependency
140
168
  name: jeweler
141
169
  requirement: !ruby/object:Gem::Requirement
142
170
  requirements:
143
- - - ~>
171
+ - - "~>"
144
172
  - !ruby/object:Gem::Version
145
173
  version: '2.0'
146
174
  type: :development
147
175
  prerelease: false
148
176
  version_requirements: !ruby/object:Gem::Requirement
149
177
  requirements:
150
- - - ~>
178
+ - - "~>"
151
179
  - !ruby/object:Gem::Version
152
180
  version: '2.0'
153
181
  - !ruby/object:Gem::Dependency
154
182
  name: simplecov
155
183
  requirement: !ruby/object:Gem::Requirement
156
184
  requirements:
157
- - - ! '>='
185
+ - - ">="
158
186
  - !ruby/object:Gem::Version
159
187
  version: '0'
160
188
  type: :development
161
189
  prerelease: false
162
190
  version_requirements: !ruby/object:Gem::Requirement
163
191
  requirements:
164
- - - ! '>='
192
+ - - ">="
165
193
  - !ruby/object:Gem::Version
166
194
  version: '0'
167
195
  description: A ruby widget toolkit for everyone and every computer
@@ -178,18 +206,26 @@ files:
178
206
  - Rakefile
179
207
  - VERSION
180
208
  - examples/hello_world.rb
209
+ - examples/table.rb
181
210
  - examples/themed_window.rb
182
211
  - examples/window.rb
183
212
  - lib/opine.rb
213
+ - lib/opine/rect.rb
184
214
  - lib/opine/widget.rb
185
215
  - lib/opine/widgets/alert.rb
186
216
  - lib/opine/widgets/application.rb
187
217
  - lib/opine/widgets/application_osx.rb
218
+ - lib/opine/widgets/table.rb
219
+ - lib/opine/widgets/table_osx.rb
220
+ - lib/opine/widgets/view_osx.rb
188
221
  - lib/opine/widgets/window.rb
189
222
  - lib/opine/widgets/window_dark.rb
190
223
  - lib/opine/widgets/window_osx.rb
191
224
  - opine.gemspec
192
225
  - spec/opine/opine_spec.rb
226
+ - spec/opine/widgets/application_spec.rb
227
+ - spec/opine/widgets/table_spec.rb
228
+ - spec/opine/widgets/window_spec.rb
193
229
  - spec/spec_helper.rb
194
230
  - tasks/bacon.rake
195
231
  - tasks/setup.rake
@@ -203,17 +239,17 @@ require_paths:
203
239
  - lib
204
240
  required_ruby_version: !ruby/object:Gem::Requirement
205
241
  requirements:
206
- - - ! '>='
242
+ - - ">="
207
243
  - !ruby/object:Gem::Version
208
244
  version: '0'
209
245
  required_rubygems_version: !ruby/object:Gem::Requirement
210
246
  requirements:
211
- - - ! '>='
247
+ - - ">="
212
248
  - !ruby/object:Gem::Version
213
249
  version: '0'
214
250
  requirements: []
215
251
  rubyforge_project:
216
- rubygems_version: 2.2.2
252
+ rubygems_version: 2.2.0
217
253
  signing_key:
218
254
  specification_version: 4
219
255
  summary: Ruby widget toolkit