opine 0.0.4 → 0.0.5
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.
- checksums.yaml +5 -13
- data/Gemfile +5 -2
- data/VERSION +1 -1
- data/examples/table.rb +32 -0
- data/lib/opine.rb +5 -1
- data/lib/opine/rect.rb +17 -0
- data/lib/opine/widgets/application.rb +15 -3
- data/lib/opine/widgets/application_osx.rb +1 -1
- data/lib/opine/widgets/table.rb +13 -0
- data/lib/opine/widgets/table_osx.rb +76 -0
- data/lib/opine/widgets/view_osx.rb +9 -0
- data/lib/opine/widgets/window.rb +9 -3
- data/lib/opine/widgets/window_dark.rb +2 -3
- data/lib/opine/widgets/window_osx.rb +4 -1
- data/opine.gemspec +24 -10
- data/spec/opine/widgets/application_spec.rb +14 -0
- data/spec/opine/widgets/table_spec.rb +23 -0
- data/spec/opine/widgets/window_spec.rb +29 -0
- data/spec/spec_helper.rb +1 -0
- metadata +69 -33
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
Y2Y1M2U1Y2I4MWM1MWRjZTk5NjcyMjJhODljZTNjNzM4Mjg2Mzk3MQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3e2d0320777408b9078bd739906370540a2e471b
|
4
|
+
data.tar.gz: 88c4f25bfea2f3d47057f893c27208ab59533112
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
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',
|
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.
|
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
|
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={
|
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
|
@@ -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
|
data/lib/opine/widgets/window.rb
CHANGED
@@ -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={
|
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
|
-
|
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(
|
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.
|
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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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
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
|
+
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
|
+
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.
|
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.
|
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:
|
98
|
+
name: bacon
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
|
-
- -
|
101
|
+
- - ">="
|
88
102
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
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: '
|
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.
|
252
|
+
rubygems_version: 2.2.0
|
217
253
|
signing_key:
|
218
254
|
specification_version: 4
|
219
255
|
summary: Ruby widget toolkit
|