jruby_art 1.4.0 → 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/jruby_art/app.rb +9 -6
- data/lib/jruby_art/config.rb +1 -12
- data/lib/jruby_art/installer.rb +12 -14
- data/lib/jruby_art/library.rb +84 -0
- data/lib/jruby_art/library_loader.rb +19 -85
- data/lib/jruby_art/native_folder.rb +34 -0
- data/lib/jruby_art/native_loader.rb +26 -0
- data/lib/jruby_art/runner.rb +1 -1
- data/lib/jruby_art/runners/base.rb +2 -2
- data/lib/jruby_art/runners/live.rb +1 -1
- data/lib/jruby_art/runners/watch.rb +1 -1
- data/lib/jruby_art/version.rb +1 -1
- data/lib/rpextras.jar +0 -0
- data/library/control_panel/control_panel.rb +8 -8
- data/library/slider/slider.rb +1 -1
- data/vendors/Rakefile +2 -4
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f5a2a6e4f71fa4b9b431e90623c6813bd8f3c43
|
4
|
+
data.tar.gz: 138573a28fe79c3982c22452369a6379cd77943c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e167c2fbcb36d8bceba43f6c04ae2f6c0ed5acb4f212435800ca8b3f2e2383a75f051ba07e2deca202b845824f15c7a20169f783f3bdbaa886e35416be1f16b6
|
7
|
+
data.tar.gz: 880b701d19c4235ae7b862069912c2187df92c1f7230c3168b02219467dbec018793a777a9d894c1dec5d713f7317c65733e51d49257635183c8c8e17ce92493
|
data/lib/jruby_art/app.rb
CHANGED
@@ -32,6 +32,9 @@ module Processing
|
|
32
32
|
key_released: :keyReleased,
|
33
33
|
key_typed: :keyTyped
|
34
34
|
}.freeze
|
35
|
+
class << self
|
36
|
+
attr_accessor :app
|
37
|
+
end
|
35
38
|
# All sketches extend this class
|
36
39
|
class App < PApplet
|
37
40
|
include HelperMethods
|
@@ -99,7 +102,7 @@ module Processing
|
|
99
102
|
|
100
103
|
def initialize(options = {})
|
101
104
|
super()
|
102
|
-
|
105
|
+
Processing.app = self
|
103
106
|
post_initialize(options)
|
104
107
|
proxy_java_fields
|
105
108
|
mix_proxy_into_inner_classes
|
@@ -161,7 +164,7 @@ module Processing
|
|
161
164
|
surface.stopThread
|
162
165
|
surface.setVisible(false) if surface.isStopped
|
163
166
|
dispose
|
164
|
-
|
167
|
+
Processing.app = nil
|
165
168
|
end
|
166
169
|
|
167
170
|
def exit
|
@@ -199,12 +202,12 @@ module Processing
|
|
199
202
|
include HelperMethods
|
200
203
|
include Java::ProcessingCore::PConstants
|
201
204
|
|
202
|
-
def respond_to_missing?(
|
203
|
-
|
205
|
+
def respond_to_missing?(name, include_private = false)
|
206
|
+
Processing.app.respond_to?(name) || super
|
204
207
|
end
|
205
208
|
|
206
|
-
def method_missing(name, *args
|
207
|
-
return
|
209
|
+
def method_missing(name, *args)
|
210
|
+
return Processing.app.send(name, *args) if Processing.app && Processing.app.respond_to?(name)
|
208
211
|
super
|
209
212
|
end
|
210
213
|
end # Processing::Proxy
|
data/lib/jruby_art/config.rb
CHANGED
@@ -5,7 +5,7 @@ require 'yaml'
|
|
5
5
|
# The wrapper module
|
6
6
|
module Processing
|
7
7
|
unless defined? RP_CONFIG
|
8
|
-
config_path = '
|
8
|
+
config_path = "#{ENV['HOME']}/.jruby_art/config.yml"
|
9
9
|
begin
|
10
10
|
CONFIG_FILE_PATH = File.expand_path(config_path)
|
11
11
|
RP_CONFIG = YAML.load_file(CONFIG_FILE_PATH)
|
@@ -41,14 +41,3 @@ module Processing
|
|
41
41
|
|
42
42
|
OS ||= HostOS.os
|
43
43
|
end
|
44
|
-
|
45
|
-
# This class encapulates knowledge of processing sketchbook structure
|
46
|
-
class Sketchbook
|
47
|
-
def self.path
|
48
|
-
File.join(Processing::RP_CONFIG['sketchbook_path'], 'libraries')
|
49
|
-
end
|
50
|
-
|
51
|
-
def self.library(name)
|
52
|
-
Dir["#{path}/#{name}/library/\*.jar"]
|
53
|
-
end
|
54
|
-
end
|
data/lib/jruby_art/installer.rb
CHANGED
@@ -1,33 +1,33 @@
|
|
1
1
|
# frozen_string_literal: false
|
2
2
|
require 'yaml'
|
3
3
|
|
4
|
-
VERSION = '3.3.
|
4
|
+
VERSION = '3.3.6'.freeze # processing version
|
5
5
|
|
6
6
|
# Abstract Installer class
|
7
7
|
class Installer
|
8
|
-
attr_reader :os, :sketch, :gem_root, :
|
8
|
+
attr_reader :os, :sketch, :gem_root, :confd
|
9
9
|
def initialize(root, os)
|
10
10
|
@os = os
|
11
11
|
@gem_root = root
|
12
|
-
@
|
13
|
-
@sketch = "#{
|
14
|
-
@sketch = "#{
|
15
|
-
@
|
12
|
+
@sketch = "#{ENV['HOME']}/sketchbook" if os == :linux
|
13
|
+
@sketch = "#{ENV['HOME']}/My Documents/Processing" if os == :windows
|
14
|
+
@sketch = "#{ENV['HOME']}/Documents/Processing" if os == :mac
|
15
|
+
@confd = "#{ENV['HOME']}/.jruby_art"
|
16
16
|
end
|
17
17
|
|
18
18
|
# Optimistically set processing root
|
19
19
|
def set_processing_root
|
20
|
-
|
21
|
-
folder = File.expand_path("#{home}/.jruby_art")
|
20
|
+
folder = "#{ENV['HOME']}/.jruby_art"
|
22
21
|
Dir.mkdir(folder) unless File.exist? folder
|
23
22
|
path = File.join(folder, 'config.yml')
|
24
|
-
proot = "#{
|
23
|
+
proot = "#{ENV['HOME']}/processing-#{VERSION}"
|
25
24
|
proot = "/Java/Processing-#{VERSION}" if os == :windows
|
26
25
|
proot = "/Applications/Processing.app/Contents/Java" if os == :mac
|
27
26
|
settings = %w(PROCESSING_ROOT JRUBY sketchbook_path template MAX_WATCH sketch_title width height)
|
28
27
|
values = [proot, true, sketch, 'bare', 32, 'JRubyArt Static Sketch', 600, 600]
|
29
28
|
data = settings.zip(values).to_h
|
30
29
|
open(path, 'w:UTF-8') { |file| file.write(data.to_yaml) }
|
30
|
+
warn 'PROCESSING_ROOT set optimistically, run check to confirm'
|
31
31
|
end
|
32
32
|
|
33
33
|
def root_exist?
|
@@ -35,7 +35,7 @@ class Installer
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def config
|
38
|
-
k9config = File.
|
38
|
+
k9config = File.join(confd, 'config.yml')
|
39
39
|
return '' unless File.exist? k9config
|
40
40
|
YAML.load_file(k9config)
|
41
41
|
end
|
@@ -54,7 +54,7 @@ end
|
|
54
54
|
|
55
55
|
# Configuration checker
|
56
56
|
class Check < Installer
|
57
|
-
require_relative 'core'
|
57
|
+
require_relative './core'
|
58
58
|
def install
|
59
59
|
show_version
|
60
60
|
return super unless config
|
@@ -86,9 +86,7 @@ end
|
|
86
86
|
# JRuby-Complete installer
|
87
87
|
class JRubyCompleteInstall < Installer
|
88
88
|
def install
|
89
|
+
set_processing_root unless File.exist? File.join(confd, 'config.yml')
|
89
90
|
system "cd #{gem_root}/vendors && rake"
|
90
|
-
return if root_exist?
|
91
|
-
set_processing_root
|
92
|
-
warn 'PROCESSING_ROOT set optimistically, run check to confirm'
|
93
91
|
end
|
94
92
|
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require_relative 'native_folder'
|
2
|
+
require_relative 'native_loader'
|
3
|
+
|
4
|
+
require 'pathname'
|
5
|
+
|
6
|
+
BUNDLED = %r{pdf|net|dxf|svg|serial}
|
7
|
+
# This class knows where to find propane libraries
|
8
|
+
class Library
|
9
|
+
require_relative '../jruby_art'
|
10
|
+
require_relative './config'
|
11
|
+
attr_reader :name, :path, :dir, :ppath
|
12
|
+
|
13
|
+
def initialize(name)
|
14
|
+
@name = name
|
15
|
+
@ruby = true
|
16
|
+
end
|
17
|
+
|
18
|
+
def locate
|
19
|
+
return if (@path = Pathname.new(
|
20
|
+
File.join(SKETCH_ROOT, 'library', name, "#{name}.rb")
|
21
|
+
)).exist?
|
22
|
+
return if (@path = Pathname.new(
|
23
|
+
File.join(K9_ROOT, 'library', name, "#{name}.rb")
|
24
|
+
)).exist?
|
25
|
+
locate_java
|
26
|
+
end
|
27
|
+
|
28
|
+
def locate_java
|
29
|
+
@dir = Pathname.new(
|
30
|
+
File.join(SKETCH_ROOT, 'library', name)
|
31
|
+
)
|
32
|
+
return @path = dir.join(Pathname.new("#{name}.jar")) if dir.directory?
|
33
|
+
locate_installed_java
|
34
|
+
end
|
35
|
+
|
36
|
+
def locate_installed_java
|
37
|
+
prefix = bundled? ? File.join(root, 'modes/java') : sketchbook
|
38
|
+
@dir = Pathname.new(
|
39
|
+
File.join(prefix, "libraries/#{name}/library")
|
40
|
+
)
|
41
|
+
@path = dir.join(Pathname.new("#{name}.jar"))
|
42
|
+
end
|
43
|
+
|
44
|
+
def sketchbook
|
45
|
+
Processing::RP_CONFIG.fetch('sketchbook_path', "#{ENV['HOME']}/sketchbook")
|
46
|
+
end
|
47
|
+
|
48
|
+
def root
|
49
|
+
Processing::RP_CONFIG.fetch('PROCESSING_ROOT', "#{ENV['HOME']}/processing")
|
50
|
+
end
|
51
|
+
|
52
|
+
def ruby?
|
53
|
+
path.extname == '.rb'
|
54
|
+
end
|
55
|
+
|
56
|
+
def bundled?
|
57
|
+
BUNDLED =~ name
|
58
|
+
end
|
59
|
+
|
60
|
+
def exist?
|
61
|
+
path.exist?
|
62
|
+
end
|
63
|
+
|
64
|
+
def load_jars
|
65
|
+
Dir.glob("#{dir}/*.jar").each do |jar|
|
66
|
+
require jar
|
67
|
+
end
|
68
|
+
return unless native_binaries?
|
69
|
+
add_binaries_to_classpath
|
70
|
+
end
|
71
|
+
|
72
|
+
def native_binaries?
|
73
|
+
native_folder = NativeFolder.new
|
74
|
+
native = native_folder.name
|
75
|
+
@ppath = File.join(dir, native)
|
76
|
+
File.directory?(ppath) &&
|
77
|
+
!Dir.glob(File.join(ppath, native_folder.extension)).empty?
|
78
|
+
end
|
79
|
+
|
80
|
+
def add_binaries_to_classpath
|
81
|
+
native_loader = NativeLoader.new
|
82
|
+
native_loader.add_native_path(ppath)
|
83
|
+
end
|
84
|
+
end
|
@@ -1,16 +1,13 @@
|
|
1
1
|
# frozen_string_literal: false
|
2
|
-
|
3
|
-
require_relative '../jruby_art'
|
4
|
-
require_relative 'config'
|
5
|
-
# require_relative 'sketchbook'
|
6
2
|
# The processing wrapper module
|
7
3
|
module Processing
|
4
|
+
require_relative 'library'
|
5
|
+
|
8
6
|
# Encapsulate library loader functionality as a class
|
9
7
|
class LibraryLoader
|
10
|
-
attr_reader :
|
8
|
+
attr_reader :library
|
11
9
|
|
12
10
|
def initialize
|
13
|
-
@sketchbook_library_path = File.join(Processing::RP_CONFIG['sketchbook_path'], 'libraries')
|
14
11
|
@loaded_libraries = Hash.new(false)
|
15
12
|
end
|
16
13
|
|
@@ -20,99 +17,36 @@ module Processing
|
|
20
17
|
end
|
21
18
|
|
22
19
|
# Load a list of Ruby or Java libraries (in that order)
|
23
|
-
# Usage: load_libraries :
|
20
|
+
# Usage: load_libraries :video, :video_event
|
24
21
|
#
|
25
22
|
# If a library is put into a 'library' folder next to the sketch it will
|
26
|
-
# be used instead of the library that ships with
|
23
|
+
# be used instead of the library that ships with Propane.
|
27
24
|
def load_libraries(*args)
|
28
25
|
message = 'no such file to load -- %s'
|
29
26
|
args.each do |lib|
|
30
|
-
loaded =
|
27
|
+
loaded = loader(lib)
|
31
28
|
raise(LoadError.new, format(message, lib)) unless loaded
|
32
29
|
end
|
33
30
|
end
|
34
31
|
alias load_library load_libraries
|
35
32
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
return
|
42
|
-
|
43
|
-
|
44
|
-
@loaded_libraries[library_name] = (require path)
|
45
|
-
end
|
46
|
-
|
47
|
-
# HACK: For pure java libraries, such as the ones that are available
|
48
|
-
# on this page: http://processing.org/reference/libraries/index.html
|
49
|
-
# that include native code, we mess with the 'Java ClassLoader', so that
|
50
|
-
# you don't have to futz with your PATH. But it's probably bad juju.
|
51
|
-
def load_java_library(library_name)
|
52
|
-
library_name = library_name.to_sym
|
53
|
-
return true if @loaded_libraries.include?(library_name)
|
54
|
-
jpath = get_library_directory_path(library_name, 'jar')
|
55
|
-
jars = get_library_paths(library_name, 'jar')
|
56
|
-
return false if jars.empty?
|
57
|
-
jars.each { |jar| require jar }
|
58
|
-
platform_specific_library_paths = get_platform_specific_library_paths(jpath)
|
59
|
-
platform_specific_library_paths = platform_specific_library_paths.select do |ppath|
|
60
|
-
FileTest.directory?(ppath) && !Dir.glob(File.join(ppath, '*.{so,dll,jnilib}')).empty?
|
61
|
-
end
|
62
|
-
unless platform_specific_library_paths.empty?
|
63
|
-
platform_specific_library_paths << java.lang.System.getProperty('java.library.path')
|
64
|
-
new_library_path = platform_specific_library_paths.join(java.io.File.pathSeparator)
|
65
|
-
java.lang.System.setProperty('java.library.path', new_library_path)
|
66
|
-
field = java.lang.Class.for_name('java.lang.ClassLoader').get_declared_field('sys_paths')
|
67
|
-
if field
|
68
|
-
field.accessible = true
|
69
|
-
field.set(java.lang.Class.for_name('java.lang.System').get_class_loader, nil)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
@loaded_libraries[library_name] = true
|
73
|
-
end
|
74
|
-
|
75
|
-
def platform
|
76
|
-
match = %w(mac linux windows).find do |os|
|
77
|
-
java.lang.System.getProperty('os.name').downcase.index(os)
|
78
|
-
end
|
79
|
-
return 'other' unless match
|
80
|
-
return match unless match =~ /mac/
|
81
|
-
'macosx'
|
33
|
+
def loader(name)
|
34
|
+
return true if @loaded_libraries.include?(name)
|
35
|
+
fname = name.to_s
|
36
|
+
library = Library.new(fname)
|
37
|
+
library.locate
|
38
|
+
return require_library(library, name) if library.ruby?
|
39
|
+
warn("Not found library: #{fname}") unless library.exist?
|
40
|
+
load_jars(library, name)
|
82
41
|
end
|
83
42
|
|
84
|
-
def
|
85
|
-
|
86
|
-
|
87
|
-
java.lang.System.getProperty('java.vm.name').index('32')
|
88
|
-
bits = '32' unless platform =~ /macosx/
|
89
|
-
end
|
90
|
-
[platform, platform + bits].map { |p| File.join(basename, p) }
|
43
|
+
def load_jars(lib, name)
|
44
|
+
lib.load_jars
|
45
|
+
@loaded_libraries[name] = true
|
91
46
|
end
|
92
47
|
|
93
|
-
def
|
94
|
-
|
95
|
-
Dir.glob("#{dir}/*.{rb,jar}")
|
96
|
-
end
|
97
|
-
|
98
|
-
protected
|
99
|
-
|
100
|
-
def get_library_directory_path(library_name, extension = nil)
|
101
|
-
extensions = extension ? [extension] : %w(jar rb)
|
102
|
-
extensions.each do |ext|
|
103
|
-
[
|
104
|
-
"#{SKETCH_ROOT}/library/#{library_name}",
|
105
|
-
"#{Processing::RP_CONFIG['PROCESSING_ROOT']}/modes/java/libraries/#{library_name}/library",
|
106
|
-
"#{K9_ROOT}/library/#{library_name}/library",
|
107
|
-
"#{K9_ROOT}/library/#{library_name}",
|
108
|
-
"#{Sketchbook.path}/#{library_name}/library"
|
109
|
-
].each do |jpath|
|
110
|
-
if File.exist?(jpath) && !Dir.glob(format('%s/*.%s', jpath, ext)).empty?
|
111
|
-
return jpath
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
115
|
-
nil
|
48
|
+
def require_library(lib, name)
|
49
|
+
@loaded_libraries[name] = require lib.path
|
116
50
|
end
|
117
51
|
end
|
118
52
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'rbconfig'
|
2
|
+
|
3
|
+
# Utility to load native binaries on Java CLASSPATH
|
4
|
+
class NativeFolder
|
5
|
+
attr_reader :os, :bit
|
6
|
+
|
7
|
+
WIN_FORMAT = 'windows%d'
|
8
|
+
LINUX_FORMAT = 'linux%d'
|
9
|
+
WIN_PATTERNS = [
|
10
|
+
/bccwin/i,
|
11
|
+
/cygwin/i,
|
12
|
+
/djgpp/i,
|
13
|
+
/ming/i,
|
14
|
+
/mswin/i,
|
15
|
+
/wince/i
|
16
|
+
].freeze
|
17
|
+
|
18
|
+
def initialize
|
19
|
+
@os = RbConfig::CONFIG['host_os'].downcase
|
20
|
+
@bit = java.lang.System.get_property('os.arch') =~ /64/ ? 64 : 32
|
21
|
+
end
|
22
|
+
|
23
|
+
def name
|
24
|
+
return 'macosx' if os =~ /darwin/ || os =~ /mac/
|
25
|
+
return format(WIN_FORMAT, bit) if WIN_PATTERNS.include? os
|
26
|
+
return format(LINUX_FORMAT, bit) if os =~ /linux/
|
27
|
+
end
|
28
|
+
|
29
|
+
def extension
|
30
|
+
return '*.so' if os =~ /linux/
|
31
|
+
return '*.dll' if WIN_PATTERNS.include? os
|
32
|
+
'*.dylib' # MacOS
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# This class knows how to dynamically set the 'java' native library path
|
2
|
+
# It might not work with java 9?
|
3
|
+
class NativeLoader
|
4
|
+
attr_reader :separator, :current_path
|
5
|
+
|
6
|
+
module JC
|
7
|
+
java_import 'java.lang.Class'
|
8
|
+
java_import 'java.lang.System'
|
9
|
+
java_import 'java.io.File'
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@separator = JC::File.pathSeparatorChar
|
14
|
+
@current_path = JC::System.getProperty('java.library.path')
|
15
|
+
end
|
16
|
+
|
17
|
+
def add_native_path(pth)
|
18
|
+
current_path << separator << pth
|
19
|
+
JC::System.setProperty('java.library.path', current_path)
|
20
|
+
field = JC::Class.for_name('java.lang.ClassLoader')
|
21
|
+
.get_declared_field('sys_paths')
|
22
|
+
return unless field
|
23
|
+
field.accessible = true # some jruby magic
|
24
|
+
field.set(JC::Class.for_name('java.lang.System').get_class_loader, nil)
|
25
|
+
end
|
26
|
+
end
|
data/lib/jruby_art/runner.rb
CHANGED
@@ -35,7 +35,7 @@ module Processing
|
|
35
35
|
no_methods = source.match(/^[^#]*(def\s+setup|def\s+draw)/).nil?
|
36
36
|
if wrapped
|
37
37
|
load SKETCH_PATH
|
38
|
-
Processing::App.sketch_class.new unless
|
38
|
+
Processing::App.sketch_class.new unless Processing.app
|
39
39
|
return
|
40
40
|
end
|
41
41
|
name = RP_CONFIG.fetch('sketch_title', 'Naked Sketch')
|
@@ -43,7 +43,7 @@ module Processing
|
|
43
43
|
height = RP_CONFIG.fetch('height', 200)
|
44
44
|
code = no_methods ? format(NAKED_WRAP, name, source, width, height) : format(BARE_WRAP, source)
|
45
45
|
Object.class_eval code, SKETCH_PATH, -1
|
46
|
-
Processing::App.sketch_class.new unless
|
46
|
+
Processing::App.sketch_class.new unless Processing.app
|
47
47
|
end
|
48
48
|
|
49
49
|
# Read in the sketch source code. Needs to work both online and offline.
|
@@ -33,7 +33,7 @@ module Processing
|
|
33
33
|
Kernel.loop do
|
34
34
|
if @files.find { |file| FileTest.exist?(file) && File.stat(file).mtime > @time }
|
35
35
|
puts 'reloading sketch...'
|
36
|
-
|
36
|
+
Processing.app && Processing.app.close
|
37
37
|
java.lang.System.gc
|
38
38
|
@time = Time.now
|
39
39
|
start_runner
|
data/lib/jruby_art/version.rb
CHANGED
data/lib/rpextras.jar
CHANGED
Binary file
|
@@ -10,8 +10,8 @@ module ControlPanel
|
|
10
10
|
def initialize(control_panel, name, range, initial_value, proc = nil)
|
11
11
|
min = range.begin * 100
|
12
12
|
max = (
|
13
|
-
|
14
|
-
|
13
|
+
(range.exclude_end? && range.begin.respond_to?(:succ)) ?
|
14
|
+
range.max : range.end) * 100
|
15
15
|
super(min, max)
|
16
16
|
set_minor_tick_spacing((max - min).abs / 10)
|
17
17
|
set_paint_ticks true
|
@@ -20,7 +20,7 @@ module ControlPanel
|
|
20
20
|
label = control_panel.add_element(self, name)
|
21
21
|
add_change_listener do
|
22
22
|
update_label(label, name, value)
|
23
|
-
|
23
|
+
Processing.app.instance_variable_set("@#{name}", value) unless value.nil?
|
24
24
|
proc.call(value) if proc
|
25
25
|
end
|
26
26
|
set_value(initial_value ? initial_value * 100 : min)
|
@@ -45,7 +45,7 @@ module ControlPanel
|
|
45
45
|
set_preferred_size(java.awt.Dimension.new(190, 30))
|
46
46
|
control_panel.add_element(self, name)
|
47
47
|
add_action_listener do
|
48
|
-
|
48
|
+
Processing.app.instance_variable_set("@#{name}", value) unless value.nil?
|
49
49
|
proc.call(value) if proc
|
50
50
|
end
|
51
51
|
set_selected_index(initial_value ? elements.index(initial_value) : 0)
|
@@ -65,7 +65,7 @@ module ControlPanel
|
|
65
65
|
set_horizontal_alignment javax.swing.SwingConstants::CENTER
|
66
66
|
control_panel.add_element(self, name, false)
|
67
67
|
add_action_listener do
|
68
|
-
|
68
|
+
Processing.app.instance_variable_set("@#{name}", value) unless value.nil?
|
69
69
|
proc.call(value) if proc
|
70
70
|
end
|
71
71
|
end
|
@@ -82,8 +82,8 @@ module ControlPanel
|
|
82
82
|
set_preferred_size(java.awt.Dimension.new(170, 64))
|
83
83
|
control_panel.add_element(self, name, false, true)
|
84
84
|
add_action_listener do
|
85
|
-
|
86
|
-
proc.call if proc
|
85
|
+
Processing.app.send(name.to_s)
|
86
|
+
proc.call(value) if proc
|
87
87
|
end
|
88
88
|
end
|
89
89
|
end
|
@@ -110,7 +110,7 @@ module ControlPanel
|
|
110
110
|
set_size 200, 30 + (64 * elements.size)
|
111
111
|
set_default_close_operation javax.swing.JFrame::HIDE_ON_CLOSE
|
112
112
|
set_resizable false
|
113
|
-
set_location(
|
113
|
+
set_location(Processing.app.width + 10, 0) unless Processing.app.width + 10 > Processing.app.displayWidth
|
114
114
|
panel.visible = true
|
115
115
|
end
|
116
116
|
|
data/library/slider/slider.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
# Here's a little library for quickly hooking up in sketch sliders.
|
3
|
-
# Copyright (c) 2016 Martin Prout.
|
3
|
+
# Copyright (c) 2016-17 Martin Prout.
|
4
4
|
|
5
5
|
java_import 'monkstone.slider.CustomHorizontalSlider'
|
6
6
|
java_import 'monkstone.slider.CustomVerticalSlider'
|
data/vendors/Rakefile
CHANGED
@@ -9,7 +9,7 @@ WARNING = <<-EOS.freeze
|
|
9
9
|
EOS
|
10
10
|
|
11
11
|
|
12
|
-
JRUBYC_VERSION = '9.1.
|
12
|
+
JRUBYC_VERSION = '9.1.13.0'
|
13
13
|
|
14
14
|
EXAMPLES = '2.4'
|
15
15
|
HOME_DIR = ENV['HOME']
|
@@ -29,9 +29,7 @@ file "jruby-complete-#{JRUBYC_VERSION}.jar" do
|
|
29
29
|
rescue
|
30
30
|
warn(WARNING)
|
31
31
|
end
|
32
|
-
|
33
|
-
check_sha256("jruby-complete-#{JRUBYC_VERSION}.jar", "f97a65d79aa57f01328783dd00f81568f70dbf26a3ed2a502d6a985224d0ac72")
|
34
|
-
|
32
|
+
check_sha256("jruby-complete-#{JRUBYC_VERSION}.jar", "96acc80d383e3268df6d1e4947367966729a9c130dfeb889e4e3af77e63a2433")
|
35
33
|
end
|
36
34
|
|
37
35
|
directory "../lib/ruby"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jruby_art
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Ashkenas
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-
|
13
|
+
date: 2017-09-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rake
|
@@ -63,7 +63,10 @@ files:
|
|
63
63
|
- lib/jruby_art/java_opts.rb
|
64
64
|
- lib/jruby_art/jruby_complete.rb
|
65
65
|
- lib/jruby_art/launcher.rb
|
66
|
+
- lib/jruby_art/library.rb
|
66
67
|
- lib/jruby_art/library_loader.rb
|
68
|
+
- lib/jruby_art/native_folder.rb
|
69
|
+
- lib/jruby_art/native_loader.rb
|
67
70
|
- lib/jruby_art/runner.rb
|
68
71
|
- lib/jruby_art/runners/base.rb
|
69
72
|
- lib/jruby_art/runners/live.rb
|
@@ -101,9 +104,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
104
|
requirements:
|
102
105
|
- A decent graphics card
|
103
106
|
- java runtime >= 1.8.0_131+
|
104
|
-
- processing = 3.3.
|
107
|
+
- processing = 3.3.6
|
105
108
|
rubyforge_project:
|
106
|
-
rubygems_version: 2.6.
|
109
|
+
rubygems_version: 2.6.13
|
107
110
|
signing_key:
|
108
111
|
specification_version: 4
|
109
112
|
summary: Code as Art, Art as Code. Processing and Ruby are meant for each other.
|