shoes-swt 4.0.0.pre9 → 4.0.0.pre10

Sign up to get free protection for your applications and to get access to all the features.
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.