propane 3.4.0-java → 3.7.0.pre-java
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/.mvn/extensions.xml +1 -2
- data/.mvn/wrapper/MavenWrapperDownloader.java +2 -2
- data/.mvn/wrapper/maven-wrapper.properties +2 -2
- data/.travis.yml +2 -2
- data/CHANGELOG.md +12 -0
- data/Gemfile +2 -0
- data/README.md +17 -8
- data/Rakefile +10 -11
- data/bin/propane +3 -1
- data/lib/propane.rb +6 -4
- data/lib/propane/app.rb +20 -10
- data/lib/propane/creators/sketch_class.rb +7 -1
- data/lib/propane/creators/sketch_factory.rb +4 -2
- data/lib/propane/creators/sketch_writer.rb +1 -0
- data/lib/propane/helper_methods.rb +23 -24
- data/lib/propane/helpers/numeric.rb +2 -0
- data/lib/propane/helpers/version_error.rb +1 -0
- data/lib/propane/library.rb +5 -1
- data/lib/propane/library_loader.rb +2 -0
- data/lib/propane/native_folder.rb +10 -9
- data/lib/propane/native_loader.rb +3 -0
- data/lib/propane/runner.rb +14 -6
- data/lib/propane/version.rb +2 -1
- data/library/boids/boids.rb +21 -11
- data/library/color_group/color_group.rb +28 -0
- data/library/control_panel/control_panel.rb +8 -5
- data/library/dxf/dxf.rb +6 -0
- data/library/file_chooser/chooser.rb +10 -9
- data/library/file_chooser/file_chooser.rb +10 -9
- data/library/library_proxy/library_proxy.rb +2 -0
- data/library/net/net.rb +7 -0
- data/library/simplex_noise/simplex_noise.rb +2 -0
- data/library/slider/slider.rb +23 -22
- data/library/vector_utils/vector_utils.rb +4 -0
- data/library/video_event/video_event.rb +4 -1
- data/pom.rb +37 -36
- data/pom.xml +7 -7
- data/propane.gemspec +16 -12
- data/src/main/java/monkstone/ColorUtil.java +13 -1
- data/src/main/java/monkstone/MathToolModule.java +253 -203
- data/src/main/java/monkstone/PropaneLibrary.java +2 -2
- data/src/main/java/monkstone/fastmath/Deglut.java +1 -1
- data/src/main/java/monkstone/filechooser/Chooser.java +2 -1
- data/src/main/java/monkstone/noise/SimplexNoise.java +2 -2
- data/src/main/java/monkstone/slider/CustomHorizontalSlider.java +1 -1
- data/src/main/java/monkstone/slider/CustomVerticalSlider.java +1 -1
- data/src/main/java/monkstone/slider/SimpleHorizontalSlider.java +1 -1
- data/src/main/java/monkstone/slider/SimpleVerticalSlider.java +1 -1
- data/src/main/java/monkstone/slider/SliderBar.java +1 -1
- data/src/main/java/monkstone/slider/SliderGroup.java +1 -1
- data/src/main/java/monkstone/slider/WheelHandler.java +7 -6
- data/src/main/java/monkstone/vecmath/package-info.java +1 -1
- data/src/main/java/monkstone/vecmath/vec2/Vec2.java +1 -1
- data/src/main/java/monkstone/vecmath/vec3/Vec3.java +3 -3
- data/src/main/java/monkstone/videoevent/CaptureEvent.java +27 -0
- data/src/main/java/monkstone/videoevent/{VideoInterface.java → MovieEvent.java} +11 -27
- data/src/main/java/monkstone/videoevent/package-info.java +1 -1
- data/src/main/java/processing/awt/PGraphicsJava2D.java +781 -285
- data/src/main/java/processing/awt/PImageAWT.java +377 -0
- data/src/main/java/processing/awt/PShapeJava2D.java +56 -52
- data/src/main/java/processing/awt/PSurfaceAWT.java +309 -209
- data/src/main/java/processing/awt/ShimAWT.java +581 -0
- data/src/main/java/processing/core/PApplet.java +4510 -4503
- data/src/main/java/processing/core/PConstants.java +477 -447
- data/src/main/java/processing/core/PFont.java +914 -880
- data/src/main/java/processing/core/PGraphics.java +193 -177
- data/src/main/java/processing/core/PImage.java +611 -309
- data/src/main/java/processing/core/PMatrix.java +172 -159
- data/src/main/java/processing/core/PMatrix2D.java +478 -415
- data/src/main/java/processing/core/PMatrix3D.java +762 -735
- data/src/main/java/processing/core/PShape.java +2888 -2652
- data/src/main/java/processing/core/PShapeOBJ.java +97 -92
- data/src/main/java/processing/core/PShapeSVG.java +1705 -1490
- data/src/main/java/processing/core/PStyle.java +40 -37
- data/src/main/java/processing/core/PSurface.java +139 -97
- data/src/main/java/processing/core/PSurfaceNone.java +296 -218
- data/src/main/java/processing/core/PVector.java +997 -965
- data/src/main/java/processing/core/ThinkDifferent.java +15 -13
- data/src/main/java/processing/data/DoubleDict.java +756 -710
- data/src/main/java/processing/data/DoubleList.java +749 -696
- data/src/main/java/processing/data/FloatDict.java +748 -702
- data/src/main/java/processing/data/FloatList.java +751 -697
- data/src/main/java/processing/data/IntDict.java +720 -673
- data/src/main/java/processing/data/IntList.java +699 -633
- data/src/main/java/processing/data/JSONArray.java +931 -873
- data/src/main/java/processing/data/JSONObject.java +1262 -1165
- data/src/main/java/processing/data/JSONTokener.java +351 -341
- data/src/main/java/processing/data/LongDict.java +710 -663
- data/src/main/java/processing/data/LongList.java +701 -635
- data/src/main/java/processing/data/Sort.java +37 -41
- data/src/main/java/processing/data/StringDict.java +525 -486
- data/src/main/java/processing/data/StringList.java +626 -580
- data/src/main/java/processing/data/Table.java +3690 -3510
- data/src/main/java/processing/data/TableRow.java +182 -183
- data/src/main/java/processing/data/XML.java +957 -883
- data/src/main/java/processing/dxf/RawDXF.java +404 -0
- data/src/main/java/processing/event/Event.java +87 -67
- data/src/main/java/processing/event/KeyEvent.java +48 -41
- data/src/main/java/processing/event/MouseEvent.java +88 -113
- data/src/main/java/processing/event/TouchEvent.java +10 -6
- data/src/main/java/processing/javafx/PGraphicsFX2D.java +20 -345
- data/src/main/java/processing/javafx/PSurfaceFX.java +149 -121
- data/src/main/java/processing/net/Client.java +744 -0
- data/src/main/java/processing/net/Server.java +388 -0
- data/src/main/java/processing/opengl/FontTexture.java +289 -270
- data/src/main/java/processing/opengl/FrameBuffer.java +386 -364
- data/src/main/java/processing/opengl/LinePath.java +547 -500
- data/src/main/java/processing/opengl/LineStroker.java +588 -581
- data/src/main/java/processing/opengl/PGL.java +3047 -2914
- data/src/main/java/processing/opengl/PGraphics2D.java +408 -315
- data/src/main/java/processing/opengl/PGraphics3D.java +107 -72
- data/src/main/java/processing/opengl/PGraphicsOpenGL.java +12378 -12075
- data/src/main/java/processing/opengl/PJOGL.java +1753 -1670
- data/src/main/java/processing/opengl/PShader.java +1266 -1257
- data/src/main/java/processing/opengl/PShapeOpenGL.java +4678 -4580
- data/src/main/java/processing/opengl/PSurfaceJOGL.java +1114 -1027
- data/src/main/java/processing/opengl/Texture.java +1492 -1401
- data/src/main/java/processing/opengl/VertexBuffer.java +57 -55
- data/test/create_test.rb +21 -20
- data/test/deglut_spec_test.rb +4 -2
- data/test/helper_methods_test.rb +49 -20
- data/test/math_tool_test.rb +39 -32
- data/test/native_folder.rb +47 -0
- data/test/respond_to_test.rb +3 -2
- data/test/sketches/key_event.rb +2 -2
- data/test/sketches/library/my_library/my_library.rb +3 -0
- data/test/test_helper.rb +2 -0
- data/test/vecmath_spec_test.rb +35 -22
- data/vendors/Rakefile +33 -62
- metadata +56 -48
- data/src/main/java/processing/core/util/image/ImageLoadFacade.java +0 -161
- data/src/main/java/processing/core/util/image/ImageSaveFacade.java +0 -169
- data/src/main/java/processing/core/util/image/constants/TifConstants.java +0 -45
- data/src/main/java/processing/core/util/image/load/AwtImageLoadStrategy.java +0 -80
- data/src/main/java/processing/core/util/image/load/Base64StringImageLoadStrategy.java +0 -73
- data/src/main/java/processing/core/util/image/load/FallbackImageLoadStrategy.java +0 -70
- data/src/main/java/processing/core/util/image/load/ImageIoImageLoadStrategy.java +0 -132
- data/src/main/java/processing/core/util/image/load/ImageLoadStrategy.java +0 -48
- data/src/main/java/processing/core/util/image/load/ImageLoadUtil.java +0 -45
- data/src/main/java/processing/core/util/image/load/TgaImageLoadStrategy.java +0 -255
- data/src/main/java/processing/core/util/image/load/TiffImageLoadStrategy.java +0 -98
- data/src/main/java/processing/core/util/image/save/ImageSaveStrategy.java +0 -49
- data/src/main/java/processing/core/util/image/save/ImageSaveUtil.java +0 -48
- data/src/main/java/processing/core/util/image/save/ImageWriterImageSaveStrategy.java +0 -179
- data/src/main/java/processing/core/util/image/save/SaveImageException.java +0 -41
- data/src/main/java/processing/core/util/image/save/TgaImageSaveStrategy.java +0 -198
- data/src/main/java/processing/core/util/image/save/TiffImageSaveStrategy.java +0 -91
- data/src/main/java/processing/core/util/image/save/TiffNakedFilenameImageSaveStrategy.java +0 -57
- data/src/main/java/processing/core/util/io/InputFactory.java +0 -285
- data/src/main/java/processing/core/util/io/PathUtil.java +0 -109
- data/src/main/java/processing/opengl/shaders/LightVert-brcm.glsl +0 -154
- data/src/main/java/processing/opengl/shaders/LightVert-vc4.glsl +0 -154
- data/src/main/java/processing/opengl/shaders/TexLightVert-brcm.glsl +0 -160
- data/src/main/java/processing/opengl/shaders/TexLightVert-vc4.glsl +0 -160
data/lib/propane/library.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'native_folder'
|
2
4
|
require_relative 'native_loader'
|
3
5
|
require 'pathname'
|
@@ -18,6 +20,7 @@ class Library
|
|
18
20
|
return if (@path = Pathname.new(
|
19
21
|
File.join(PROPANE_ROOT, 'library', name, "#{name}.rb")
|
20
22
|
)).exist?
|
23
|
+
|
21
24
|
locate_java
|
22
25
|
end
|
23
26
|
|
@@ -46,10 +49,11 @@ class Library
|
|
46
49
|
end
|
47
50
|
|
48
51
|
def load_jars
|
49
|
-
Dir.glob("#{dir}/*.jar").each do |jar|
|
52
|
+
Dir.glob("#{dir}/*.jar").sort.each do |jar|
|
50
53
|
require jar
|
51
54
|
end
|
52
55
|
return true unless native_binaries?
|
56
|
+
|
53
57
|
add_binaries_to_classpath
|
54
58
|
end
|
55
59
|
|
@@ -33,10 +33,12 @@ module Propane
|
|
33
33
|
|
34
34
|
def loader(name)
|
35
35
|
return true if @loaded_libraries.include?(name)
|
36
|
+
|
36
37
|
fname = name.to_s
|
37
38
|
library = Library.new(fname)
|
38
39
|
library.locate
|
39
40
|
return require_library(library, name) if library.ruby?
|
41
|
+
|
40
42
|
warn("Not found library: #{fname}") unless library.exist?
|
41
43
|
load_jars(library, name)
|
42
44
|
end
|
@@ -1,11 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rbconfig'
|
2
4
|
|
3
5
|
# Utility to load native binaries on Java CLASSPATH
|
4
6
|
class NativeFolder
|
5
7
|
attr_reader :os, :bit
|
6
8
|
|
7
|
-
WIN_FORMAT = 'windows%d'
|
8
|
-
LINUX_FORMAT = 'linux%d'
|
9
|
+
WIN_FORMAT = 'windows%d'
|
10
|
+
LINUX_FORMAT = 'linux%d'
|
9
11
|
WIN_PATTERNS = [
|
10
12
|
/bccwin/i,
|
11
13
|
/cygwin/i,
|
@@ -17,22 +19,21 @@ class NativeFolder
|
|
17
19
|
|
18
20
|
def initialize
|
19
21
|
@os = RbConfig::CONFIG['host_os'].downcase
|
20
|
-
@bit = java.lang.System.get_property('os.arch')
|
22
|
+
@bit = /64/.match?(java.lang.System.get_property('os.arch')) ? 64 : 32
|
21
23
|
end
|
22
24
|
|
23
25
|
def name
|
24
26
|
return 'macosx' if /darwin|mac/.match?(os)
|
25
|
-
return format(LINUX_FORMAT, bit) if
|
26
|
-
if WIN_PATTERNS.any? { |pat| pat
|
27
|
-
|
28
|
-
return format(WINDOWS_FORMAT, '32') if /32/.match?(bit)
|
29
|
-
end
|
27
|
+
return format(LINUX_FORMAT, bit) if /linux/.match?(os)
|
28
|
+
return format(WIN_FORMAT, bit) if WIN_PATTERNS.any? { |pat| pat.match?(os) }
|
29
|
+
|
30
30
|
raise 'Unsupported Architecture'
|
31
31
|
end
|
32
32
|
|
33
33
|
def extension
|
34
34
|
return '*.so' if /linux/.match?(os)
|
35
|
-
return '*.dll' if WIN_PATTERNS.any? { |pat| pat
|
35
|
+
return '*.dll' if WIN_PATTERNS.any? { |pat| pat.match?(os) }
|
36
|
+
|
36
37
|
'*.dylib' # MacOS
|
37
38
|
end
|
38
39
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# This class knows how to dynamically set the 'java' native library path
|
2
4
|
# It might not work with java 9?
|
3
5
|
class NativeLoader
|
@@ -21,6 +23,7 @@ class NativeLoader
|
|
21
23
|
field = JC::Class.for_name('java.lang.ClassLoader')
|
22
24
|
.get_declared_field('sys_paths')
|
23
25
|
return unless field
|
26
|
+
|
24
27
|
field.accessible = true # some jruby magic
|
25
28
|
field.set(JC::Class.for_name('java.lang.System').get_class_loader, nil)
|
26
29
|
end
|
data/lib/propane/runner.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: false
|
2
|
+
|
2
3
|
require 'optparse'
|
3
4
|
require_relative 'version'
|
4
5
|
|
@@ -40,7 +41,7 @@ module Propane
|
|
40
41
|
end
|
41
42
|
|
42
43
|
options[:install] = false
|
43
|
-
message = '<Samples><
|
44
|
+
message = '<Samples><Video><Sound> Install samples or library'
|
44
45
|
opts.on('-i', '--install', message) do
|
45
46
|
options[:install] = true
|
46
47
|
end
|
@@ -54,6 +55,8 @@ module Propane
|
|
54
55
|
# assumed to have this option.
|
55
56
|
opts.on('-h', '--help', 'Display this screen') do
|
56
57
|
puts opts
|
58
|
+
puts ''
|
59
|
+
puts 'Run a sketch: jruby [--dev] [<sketch.rb>]'
|
57
60
|
exit
|
58
61
|
end
|
59
62
|
end
|
@@ -67,7 +70,6 @@ module Propane
|
|
67
70
|
end
|
68
71
|
|
69
72
|
def show_version
|
70
|
-
|
71
73
|
v_format = "Propane version %s\nJRuby version %s"
|
72
74
|
puts format(v_format, Propane::VERSION, JRUBY_VERSION)
|
73
75
|
end
|
@@ -75,7 +77,8 @@ module Propane
|
|
75
77
|
def show_version
|
76
78
|
require 'erb'
|
77
79
|
require_relative 'helpers/version_error'
|
78
|
-
raise JDKVersionError
|
80
|
+
raise JDKVersionError if ENV_JAVA['java.specification.version'] < '11'
|
81
|
+
|
79
82
|
template = ERB.new <<-EOF
|
80
83
|
propane version <%= Propane::VERSION %>
|
81
84
|
JRuby version <%= JRUBY_VERSION %>
|
@@ -86,8 +89,13 @@ module Propane
|
|
86
89
|
def install(library)
|
87
90
|
choice = library.downcase
|
88
91
|
valid = Regexp.union('samples', 'sound', 'video', 'glvideo')
|
89
|
-
|
92
|
+
unless valid.match?(choice)
|
93
|
+
return warn format('No installer for %<lib>s', lib: choice)
|
94
|
+
end
|
95
|
+
|
90
96
|
system "cd #{PROPANE_ROOT}/vendors && rake download_and_copy_#{choice}"
|
91
97
|
end
|
92
|
-
end
|
93
|
-
|
98
|
+
end
|
99
|
+
# class Runner
|
100
|
+
end
|
101
|
+
# module Propane
|
data/lib/propane/version.rb
CHANGED
data/library/boids/boids.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Boids -- after Tom de Smedt.
|
2
4
|
# See his Python version: http://nodebox.net/code/index.php/Boids
|
3
5
|
# This is an example of how a pure-Ruby library can work. Original for
|
@@ -7,7 +9,8 @@ class Boid
|
|
7
9
|
attr_accessor :boids, :pos, :vel, :is_perching, :perch_time
|
8
10
|
|
9
11
|
def initialize(boids, pos)
|
10
|
-
@boids
|
12
|
+
@boids = boids
|
13
|
+
@flock = boids
|
11
14
|
@pos = pos
|
12
15
|
@vel = Vec3D.new
|
13
16
|
@is_perching = false
|
@@ -53,6 +56,7 @@ class Boid
|
|
53
56
|
# Tweet, Tweet! The boid police will bust you for breaking the speed limit.
|
54
57
|
most = [vel.x.abs, vel.y.abs, vel.z.abs].max
|
55
58
|
return if most < max
|
59
|
+
|
56
60
|
scale = max / most.to_f
|
57
61
|
@vel *= scale
|
58
62
|
end
|
@@ -75,7 +79,7 @@ class Boids
|
|
75
79
|
extend Forwardable
|
76
80
|
def_delegators(:@boids, :reject, :<<, :each, :shuffle!, :length, :next)
|
77
81
|
|
78
|
-
attr_reader :has_goal, :
|
82
|
+
attr_reader :has_goal, :perchance, :perch_tm, :perch_y
|
79
83
|
|
80
84
|
def initialize
|
81
85
|
@boids = []
|
@@ -88,16 +92,20 @@ class Boids
|
|
88
92
|
|
89
93
|
def setup(n, x, y, w, h)
|
90
94
|
n.times do
|
91
|
-
dx
|
95
|
+
dx = rand(w)
|
96
|
+
dy = rand(h)
|
92
97
|
z = rand(200.0)
|
93
98
|
self << Boid.new(self, Vec3D.new(x + dx, y + dy, z))
|
94
99
|
end
|
95
|
-
@x
|
100
|
+
@x = x
|
101
|
+
@y = y
|
102
|
+
@w = w
|
103
|
+
@h = h
|
96
104
|
@scattered = false
|
97
105
|
@scatter = 0.005
|
98
106
|
@scatter_time = 50.0
|
99
107
|
@scatter_i = 0.0
|
100
|
-
@
|
108
|
+
@perchance = 1.0 # Lower this number to divebomb.
|
101
109
|
@perch_y = h
|
102
110
|
@perch_tm = -> { 25.0 + rand(50.0) }
|
103
111
|
@has_goal = false
|
@@ -118,11 +126,11 @@ class Boids
|
|
118
126
|
def perch(ground = nil, chance = 1.0, frames = nil)
|
119
127
|
@perch_tm = frames.nil? ? -> { 25.0 + rand(50.0) } : frames
|
120
128
|
@perch_y = ground.nil? ? @h : ground
|
121
|
-
@
|
129
|
+
@perchance = chance
|
122
130
|
end
|
123
131
|
|
124
132
|
def no_perch
|
125
|
-
@
|
133
|
+
@perchance = 0.0
|
126
134
|
end
|
127
135
|
|
128
136
|
def goal(target:, flee: false)
|
@@ -138,7 +146,8 @@ class Boids
|
|
138
146
|
|
139
147
|
def constrain
|
140
148
|
# Put them boids in a cage.
|
141
|
-
dx
|
149
|
+
dx = @w * 0.1
|
150
|
+
dy = @h * 0.1
|
142
151
|
each do |b|
|
143
152
|
b.vel.x += rand(dx) if b.pos.x < @x - dx
|
144
153
|
b.vel.x += rand(dy) if b.pos.y < @y - dy
|
@@ -146,9 +155,10 @@ class Boids
|
|
146
155
|
b.vel.y -= rand(dy) if b.pos.y > @y + @h + dy
|
147
156
|
b.vel.z += 10.0 if b.pos.z < 0.0
|
148
157
|
b.vel.z -= 10.0 if b.pos.z > 100.0
|
149
|
-
next unless b.pos.y > perch_y && rand <
|
158
|
+
next unless b.pos.y > perch_y && rand < perchance
|
159
|
+
|
150
160
|
b.pos.y = perch_y
|
151
|
-
b.vel.y = -
|
161
|
+
b.vel.y = -b.vel.y.abs * 0.2
|
152
162
|
b.is_perching = true
|
153
163
|
b.perch_time = perch_tm.respond_to?(:call) ? perch_tm.call : perch_tm
|
154
164
|
end
|
@@ -166,7 +176,7 @@ class Boids
|
|
166
176
|
m2 = 1.0 # separation
|
167
177
|
m3 = 1.0 # alignment
|
168
178
|
m4 = 1.0 # goal
|
169
|
-
@scattered = true if
|
179
|
+
@scattered = true if !@scattered && rand < @scatter
|
170
180
|
if @scattered
|
171
181
|
m1 = -m1
|
172
182
|
m3 *= 0.25
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
java_import Java::Monkstone::ColorUtil
|
4
|
+
|
5
|
+
# class wraps a java color array, supports shuffle!, last and ruby_string
|
6
|
+
# as well as ability to initialize with an array of "web" color string
|
7
|
+
class ColorGroup
|
8
|
+
attr_reader :colors
|
9
|
+
def initialize(p5cols)
|
10
|
+
@colors = p5cols
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.from_web_array(web)
|
14
|
+
ColorGroup.new(ColorUtil.web_array(web.to_java(:string)))
|
15
|
+
end
|
16
|
+
|
17
|
+
def shuffle!
|
18
|
+
@colors = ColorUtil.shuffle(colors)
|
19
|
+
end
|
20
|
+
|
21
|
+
def ruby_string
|
22
|
+
ColorUtil.rubyString(colors)
|
23
|
+
end
|
24
|
+
|
25
|
+
def last
|
26
|
+
colors[0]
|
27
|
+
end
|
28
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Here's a little library for quickly hooking up controls to sketches.
|
2
4
|
# For messing with the parameters and such.
|
3
5
|
# These controls will set instance variables on the sketches.
|
@@ -25,7 +27,7 @@ module ControlPanel
|
|
25
27
|
add_change_listener do
|
26
28
|
update_label(label, name, value)
|
27
29
|
ControlPanel.app_value(name, value)
|
28
|
-
proc
|
30
|
+
proc&.call(value)
|
29
31
|
end
|
30
32
|
ControlPanel.app_value(name, val)
|
31
33
|
end
|
@@ -49,7 +51,7 @@ module ControlPanel
|
|
49
51
|
control_panel.add_element(self, name)
|
50
52
|
add_action_listener do
|
51
53
|
ControlPanel.app_value(name, value) unless value.nil?
|
52
|
-
proc
|
54
|
+
proc&.call(value)
|
53
55
|
end
|
54
56
|
set_selected_index(initial_value ? elements.index(initial_value) : 0)
|
55
57
|
end
|
@@ -69,7 +71,7 @@ module ControlPanel
|
|
69
71
|
control_panel.add_element(self, name, false)
|
70
72
|
add_action_listener do
|
71
73
|
ControlPanel.app_value(name, value)
|
72
|
-
proc
|
74
|
+
proc&.call(value)
|
73
75
|
end
|
74
76
|
end
|
75
77
|
|
@@ -87,7 +89,7 @@ module ControlPanel
|
|
87
89
|
control_panel.add_element(self, name, false, true)
|
88
90
|
add_action_listener do
|
89
91
|
Propane.app.send(name)
|
90
|
-
proc
|
92
|
+
proc&.call(value)
|
91
93
|
end
|
92
94
|
end
|
93
95
|
end
|
@@ -160,7 +162,7 @@ module ControlPanel
|
|
160
162
|
def feel(lf = 'metal')
|
161
163
|
lafinfo = javax.swing.UIManager.getInstalledLookAndFeels
|
162
164
|
laf = lafinfo.to_ary.find do |info|
|
163
|
-
|
165
|
+
Regexp.new(Regexp.escape(lf), Regexp::IGNORECASE).match?(info.name)
|
164
166
|
end
|
165
167
|
javax.swing.UIManager.setLookAndFeel(laf.class_name)
|
166
168
|
end
|
@@ -171,6 +173,7 @@ module ControlPanel
|
|
171
173
|
def control_panel
|
172
174
|
@control_panel ||= ControlPanel::Panel.new
|
173
175
|
return @control_panel unless block_given?
|
176
|
+
|
174
177
|
yield(@control_panel)
|
175
178
|
@control_panel.display
|
176
179
|
@control_panel.set_visible true
|
data/library/dxf/dxf.rb
ADDED
@@ -1,18 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
# Usage: :wq
|
3
4
|
# load_library :chooser
|
4
|
-
#
|
5
|
+
#
|
5
6
|
# def setup
|
6
|
-
|
7
|
-
|
7
|
+
# java_signature 'void selectInput(String, String)'
|
8
|
+
# selectInput('Select a file to process:', 'fileSelected')
|
8
9
|
# end
|
9
|
-
#
|
10
|
+
#
|
10
11
|
# def fileSelected(selection)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
# if selection.nil?
|
13
|
+
# puts 'Window was closed or the user hit cancel.'
|
14
|
+
# else
|
15
|
+
# puts format('User selected %s', selection.get_absolute_path)
|
16
|
+
# end
|
16
17
|
# end
|
17
18
|
class Propane::App
|
18
19
|
include Java::MonkstoneFilechooser::Chooser
|
@@ -1,18 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
2
|
+
|
3
|
+
# Usage:
|
3
4
|
# load_library :file_chooser
|
4
5
|
# class ...
|
5
6
|
# def setup
|
6
|
-
|
7
|
-
|
7
|
+
# java_signature 'void selectInput(String, String)'
|
8
|
+
# selectInput('Select a file to process:', 'fileSelected')
|
8
9
|
# end
|
9
|
-
#
|
10
|
+
#
|
10
11
|
# def fileSelected(selection)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
# if selection.nil?
|
13
|
+
# puts 'Window was closed or the user hit cancel.'
|
14
|
+
# else
|
15
|
+
# puts format('User selected %s', selection.get_absolute_path)
|
16
|
+
# end
|
16
17
|
# end
|
17
18
|
# ...
|
18
19
|
class Propane::App
|
data/library/net/net.rb
ADDED