jruby_art 1.4.0 → 1.4.1
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 +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.
|