shoes-swt 4.0.0.pre9 → 4.0.0.pre10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: fa7f22da50579179f09bcba6ec3b1f589fef9d8b
4
- data.tar.gz: 363298706bad5dcf25350458fe15e12e57888258
2
+ SHA256:
3
+ metadata.gz: 5568168dba00b066067857b6851707061f81ce275c5433c703bf6f063cf676b6
4
+ data.tar.gz: '08a5ab31927b65327622b913cd240b1cc7065bf672b638ce11dfd2ffa11a60bc'
5
5
  SHA512:
6
- metadata.gz: 026df8ba229e2903b7f21c9a417e9d2834bcfa3671a045fff862c0ae51999c1cc025da331d723379aca6c49acaf705d7e11bed81a5c162f0efb601271de59aae
7
- data.tar.gz: 6a1712511969ca616ec9077b4f3ae8af4ce780cb72688bb64e98624b86d69a82d32a89b8876eae71bfdbe46b83e6c937438e6ebfed7906c2a094303622c4ab83
6
+ metadata.gz: 165e28c2286c5983066af12851ac288da3fb4800e1112bf2177876873ffc3467fe2b6d3a196a91b0b8902f900602ea208642cbb51b66ace23e2b2c62ae0a51db
7
+ data.tar.gz: afbf71d8d6436e73bd5a34ea2366e2027e983aa215e00b32d7c006905a8a961714abd5bb4c51ef03880626a10ec4206ddf99ff8b2c755962f9fb4e8b82092cc0
data/bin/shoes-swt CHANGED
@@ -9,4 +9,4 @@ if File.exist?("Gemfile")
9
9
  end
10
10
 
11
11
  require 'shoes/ui/cli'
12
- Shoes::CLI.new("swt").run ARGV
12
+ Shoes::UI::CLI.new("swt").run ARGV
data/lib/shoes/swt.rb CHANGED
@@ -59,6 +59,7 @@ class Shoes
59
59
  require 'shoes/swt/common/clickable'
60
60
  require 'shoes/swt/common/container'
61
61
  require 'shoes/swt/common/fill'
62
+ require 'shoes/swt/common/image_handling'
62
63
  require 'shoes/swt/common/resource'
63
64
  require 'shoes/swt/common/painter'
64
65
  require 'shoes/swt/common/painter_updates_position'
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+ class Shoes
3
+ module Swt
4
+ module Common
5
+ module ImageHandling
6
+ # Why copy the file to a temporary location just to pass a different name
7
+ # to load? Because SWT doesn't like us when we're packaged!
8
+ #
9
+ # Apparently the warbler-style path names we end up with for relative
10
+ # image paths don't cross nicely to SWT, so we need to resolve the paths
11
+ # in Ruby-land before handing it over.
12
+ def load_file_image_data(name)
13
+ tmpname = File.join(Dir.tmpdir, "__shoes4_#{Time.now.to_i}_#{File.basename(name)}")
14
+ FileUtils.cp(name, tmpname)
15
+
16
+ @cleanup_files ||= []
17
+ @cleanup_files << tmpname
18
+ tmpname
19
+ end
20
+
21
+ def cleanup_temporary_files
22
+ return unless @cleanup_files
23
+
24
+ @cleanup_files.each do |file|
25
+ begin
26
+ FileUtils.rm(file)
27
+ rescue => e
28
+ Shoes.logger.debug("Error during image temp file cleanup.\n#{e.class}: #{e.message}")
29
+ end
30
+ end
31
+ @cleanup_files.clear
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,4 +1,6 @@
1
1
  # frozen_string_literal: true
2
+ require 'fileutils'
3
+
2
4
  class Shoes
3
5
  module Swt
4
6
  class Image
@@ -9,6 +11,7 @@ class Shoes
9
11
  include Common::PainterUpdatesPosition
10
12
  include Common::Visibility
11
13
  include Common::Remove
14
+ include Common::ImageHandling
12
15
  include ::Shoes::BackendDimensionsDelegations
13
16
 
14
17
  attr_reader :app, :real, :dsl, :painter
@@ -47,7 +50,7 @@ class Shoes
47
50
 
48
51
  def display_temporary_download_image
49
52
  temporary_download_image = File.join(DIR, 'static/downloading.png')
50
- create_image(temporary_download_image)
53
+ create_image(load_file_image_data(temporary_download_image))
51
54
  end
52
55
 
53
56
  def create_image(data)
@@ -56,6 +59,8 @@ class Shoes
56
59
  @full_height = @real.getImageData.height
57
60
  dsl.element_width ||= default_width
58
61
  dsl.element_height ||= default_height
62
+
63
+ cleanup_temporary_files
59
64
  end
60
65
 
61
66
  def default_width
@@ -93,7 +98,7 @@ class Shoes
93
98
  data = if raw_image_data?(name_or_data)
94
99
  load_raw_image_data(name_or_data)
95
100
  else
96
- name_or_data
101
+ load_file_image_data(name_or_data)
97
102
  end
98
103
  create_image(data)
99
104
  end
@@ -3,6 +3,7 @@ class Shoes
3
3
  module Swt
4
4
  class ImagePattern
5
5
  include Common::Remove
6
+ include Common::ImageHandling
6
7
 
7
8
  def initialize(dsl)
8
9
  @dsl = dsl
@@ -16,8 +17,11 @@ class Shoes
16
17
  # Since colors are bound up (at least in specs) with image patterns,
17
18
  # we can't safely touch images during initialize, so lazily load them.
18
19
  def pattern
19
- @image ||= ::Swt::Image.new(Shoes.display, @dsl.path)
20
+ @image ||= ::Swt::Image.new(Shoes.display, load_file_image_data(@dsl.path))
20
21
  @pattern ||= ::Swt::Pattern.new(Shoes.display, @image)
22
+ cleanup_temporary_files
23
+
24
+ @pattern
21
25
  end
22
26
 
23
27
  def apply_as_fill(gc, _dsl)
@@ -7,13 +7,27 @@ class Shoes
7
7
  def initialize(dsl)
8
8
  @dsl = dsl
9
9
  @gems = []
10
+ @packages = []
10
11
  end
11
12
 
12
- def create_package(program_name, package)
13
- unless package =~ /^(swt):(app|jar)$/
14
- abort("#{program_name}: Can't package as '#{package}'. See '#{program_name} --help'")
13
+ def options
14
+ OptionParser.new do |opts|
15
+ opts.on('--jar', 'Package as executable JAR file') do
16
+ @packages << :jar
17
+ end
18
+
19
+ opts.on('--mac', 'Package as OS X application') do
20
+ @packages << :mac
21
+ end
22
+
23
+ opts.on('--windows', 'Package as Windows application') do
24
+ @packages << :windows
25
+ end
26
+
27
+ opts.on('--linux', 'Package as Linux application') do
28
+ @packages << :linux
29
+ end
15
30
  end
16
- package.split(':')
17
31
  end
18
32
 
19
33
  def run(path)
@@ -26,40 +40,12 @@ class Shoes
26
40
  abort "shoes: #{e.message}"
27
41
  end
28
42
 
29
- @dsl.packages.each do |backend, wrapper|
30
- puts "Packaging #{backend}:#{wrapper}..."
31
- packager = ::Shoes::Package.create_packager(config, wrapper)
43
+ @packages.each do |package_type|
44
+ puts "Packaging #{package_type}..."
45
+ packager = ::Shoes::Package.create_packager(config, package_type)
32
46
  packager.package
33
47
  end
34
48
  end
35
-
36
- def help(program_name)
37
- <<-EOS
38
-
39
- Package types:
40
- #{package_types}
41
- Examples:
42
- #{examples(program_name)}
43
- EOS
44
- end
45
-
46
- def package_types
47
- <<-EOS
48
- swt:app A standalone OS X executable with the Swt backend
49
- swt:jar An executable JAR with the Swt backend
50
- EOS
51
- end
52
-
53
- def examples(program_name)
54
- <<-EOS
55
- To run a Shoes app:
56
- #{program_name} path/to/shoes-app.rb
57
-
58
- Two ways to package a Shoes app as an APP and a JAR, using the Swt backend:
59
- #{program_name} -p swt:app -p swt:jar path/to/app.yaml
60
- #{program_name} -p swt:app -p swt:jar path/to/shoes-app.rb
61
- EOS
62
- end
63
49
  end
64
50
  end
65
51
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  class Shoes
4
4
  module Swt
5
- VERSION = "4.0.0.pre9"
5
+ VERSION = "4.0.0.pre10"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shoes-swt
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0.pre9
4
+ version: 4.0.0.pre10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Team Shoes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-24 00:00:00.000000000 Z
11
+ date: 2017-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -43,7 +43,7 @@ dependencies:
43
43
  requirements:
44
44
  - - '='
45
45
  - !ruby/object:Gem::Version
46
- version: 4.0.0.pre9
46
+ version: 4.0.0.pre10
47
47
  name: shoes-core
48
48
  prerelease: false
49
49
  type: :runtime
@@ -51,13 +51,13 @@ dependencies:
51
51
  requirements:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 4.0.0.pre9
54
+ version: 4.0.0.pre10
55
55
  - !ruby/object:Gem::Dependency
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - '='
59
59
  - !ruby/object:Gem::Version
60
- version: 4.0.0.pre9
60
+ version: 4.0.0.pre10
61
61
  name: shoes-package
62
62
  prerelease: false
63
63
  type: :runtime
@@ -65,8 +65,9 @@ dependencies:
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 4.0.0.pre9
69
- description: A JRuby and Swt backend for Shoes, the best little GUI toolkit for Ruby. Shoes makes building for Mac, Windows, and Linux super simple.
68
+ version: 4.0.0.pre10
69
+ description: A JRuby and Swt backend for Shoes, the best little GUI toolkit for Ruby.
70
+ Shoes makes building for Mac, Windows, and Linux super simple.
70
71
  email:
71
72
  - shoes@lists.mvmanila.com
72
73
  executables:
@@ -95,6 +96,7 @@ files:
95
96
  - lib/shoes/swt/common/clickable.rb
96
97
  - lib/shoes/swt/common/container.rb
97
98
  - lib/shoes/swt/common/fill.rb
99
+ - lib/shoes/swt/common/image_handling.rb
98
100
  - lib/shoes/swt/common/painter.rb
99
101
  - lib/shoes/swt/common/painter_updates_position.rb
100
102
  - lib/shoes/swt/common/remove.rb
@@ -176,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
178
  version: 1.3.1
177
179
  requirements: []
178
180
  rubyforge_project:
179
- rubygems_version: 2.6.10
181
+ rubygems_version: 2.6.11
180
182
  signing_key:
181
183
  specification_version: 4
182
184
  summary: A JRuby and Swt backend for Shoes, the best little GUI toolkit for Ruby.