win32-clipboard 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,3 +1,10 @@
1
+ == 0.4.4 - 26-Aug-2008
2
+ * Some internal refactoring to ensure that the clipboard is closed on failure
3
+ in a more robust fashion.
4
+ * Renamed the test file.
5
+ * Eliminated the custom memcpy function, since windows-pr now does the right
6
+ thing. This necessitated bumping the minimum required windows-pr version.
7
+
1
8
  == 0.4.3 - 25-Jul-2007
2
9
  * Changed ClipboardError to Clipboard::Error
3
10
  * Added a Rakefile with tasks for testing and installation.
data/MANIFEST CHANGED
@@ -5,4 +5,4 @@
5
5
  * win32-clipboard.gemspec
6
6
  * examples/clipboard_test.rb
7
7
  * lib/win32/clipboard.rb
8
- * test/tc_clipboard.rb
8
+ * test/test_clipboard.rb
data/README CHANGED
@@ -1,5 +1,5 @@
1
1
  == Description
2
- win32-clipboard - a Ruby package for interacting with the Win32 clipboard.
2
+ win32-clipboard - a Ruby library for interacting with the Win32 clipboard.
3
3
 
4
4
  == Installation
5
5
  rake test (optional)
@@ -26,6 +26,8 @@ Clipboard.data(format=nil)
26
26
  specified, it will attempt to retrieve the data in that format. The
27
27
  default is Clipboard::TEXT. See the 'Constants' section for
28
28
  the supported formats.
29
+
30
+ If there is no data in the clipboard, then an empty string is returned.
29
31
 
30
32
  Note that this method does implicit conversions on formats with regards
31
33
  to text data. See the MSDN documentation for more details.
@@ -93,8 +95,7 @@ Clipboard::TEXT
93
95
 
94
96
  Clipboard::UNICODETEXT
95
97
  Unicode text format. Each line ends with a carriage return/linefeed
96
- (CR-LF) combination. A null character signals the end of the data. This
97
- format is only supported on NT/2000/XP.
98
+ (CR-LF) combination. A null character signals the end of the data.
98
99
 
99
100
  == Future Plans
100
101
  Add more formatting option contants and related methods.
@@ -103,10 +104,9 @@ Clipboard::UNICODETEXT
103
104
  Ruby's
104
105
 
105
106
  == Copyright
106
- (C) 2003-2007 Daniel J. Berger
107
+ (C) 2003-2008 Daniel J. Berger
107
108
  All Rights Reserved
108
109
 
109
- == Author
110
+ == Authors
110
111
  Daniel J. Berger
111
- djberg96 at nospame gmail dot com
112
- imperator on IRC (irc.freenode.org)
112
+ Park Heesob
data/Rakefile CHANGED
@@ -16,7 +16,6 @@ task :install_gem do
16
16
  end
17
17
 
18
18
  Rake::TestTask.new do |t|
19
- t.libs << 'lib'
20
19
  t.warning = true
21
- t.test_files = FileList['test/tc*']
20
+ t.verbose = true
22
21
  end
@@ -1,6 +1,7 @@
1
1
  require 'windows/clipboard'
2
2
  require 'windows/memory'
3
3
  require 'windows/error'
4
+ require 'windows/msvcrt/buffer'
4
5
 
5
6
  module Win32
6
7
  class Clipboard
@@ -9,21 +10,20 @@ module Win32
9
10
  include Windows::Clipboard
10
11
  include Windows::Memory
11
12
  include Windows::Error
13
+ include Windows::MSVCRT::Buffer
14
+
12
15
  extend Windows::Clipboard
13
16
  extend Windows::Memory
14
17
  extend Windows::Error
18
+ extend Windows::MSVCRT::Buffer
15
19
 
16
- VERSION = '0.4.3'
20
+ VERSION = '0.4.4'
17
21
 
18
22
  # Clipboard data types
19
23
  TEXT = CF_TEXT
20
24
  OEMTEXT = CF_OEMTEXT
21
25
  UNICODETEXT = CF_UNICODETEXT
22
26
 
23
- # We'll use a custom definition of memcpy since this is different than
24
- # what's in the Windows::MSVCRT::Buffer module.
25
- @@Memcpy = Win32API.new('msvcrt', 'memcpy', 'IPI', 'I')
26
-
27
27
  # Sets the clipboard contents to the data that you specify. You may
28
28
  # optionally specify a clipboard format. The default is Clipboard::TEXT.
29
29
  #
@@ -40,34 +40,35 @@ module Win32
40
40
  # Global Allocate a movable piece of memory.
41
41
  hmem = GlobalAlloc(GHND, clip_data.length + 4)
42
42
  mem = GlobalLock(hmem)
43
- @@Memcpy.call(mem, clip_data, clip_data.length)
43
+ memcpy(mem, clip_data, clip_data.length)
44
44
 
45
45
  # Set the new data
46
- if SetClipboardData(format, hmem) == 0
47
- error = get_last_error
46
+ begin
47
+ if SetClipboardData(format, hmem) == 0
48
+ raise Error, "SetClipboardData() failed: " + get_last_error
49
+ end
50
+ ensure
48
51
  GlobalFree(hmem)
49
52
  self.close
50
- raise Error, "SetClipboardData() failed: #{error}"
51
53
  end
52
54
 
53
- GlobalFree(hmem)
54
- self.close
55
55
  self
56
56
  end
57
57
 
58
- # Returns the data currently in the clipboard. If +format+ is
58
+ # Returns the data currently in the clipboard. If +format+ is
59
59
  # specified, it will attempt to retrieve the data in that format. The
60
60
  # default is Clipboard::TEXT.
61
+ #
62
+ # If there is no data in the clipboard then an empty string is returned.
61
63
  #
62
64
  def self.data(format = TEXT)
63
- clipdata = ""
64
- self.open
65
65
  begin
66
- clipdata = GetClipboardData(format)
67
- rescue ArgumentError
68
- # Assume failure is caused by no data in clipboard
66
+ self.open
67
+ clipdata = GetClipboardData(format) || ""
68
+ ensure
69
+ self.close
69
70
  end
70
- self.close
71
+
71
72
  clipdata
72
73
  end
73
74
 
@@ -80,9 +81,13 @@ module Win32
80
81
  # Empties the contents of the clipboard.
81
82
  #
82
83
  def self.empty
83
- self.open
84
- EmptyClipboard()
85
- self.close
84
+ begin
85
+ self.open
86
+ EmptyClipboard()
87
+ ensure
88
+ self.close
89
+ end
90
+
86
91
  self
87
92
  end
88
93
 
@@ -91,9 +96,14 @@ module Win32
91
96
  #
92
97
  def self.num_formats
93
98
  count = 0
94
- self.open
95
- count = CountClipboardFormats()
96
- self.close
99
+
100
+ begin
101
+ self.open
102
+ count = CountClipboardFormats()
103
+ ensure
104
+ self.close
105
+ end
106
+
97
107
  count
98
108
  end
99
109
 
@@ -104,17 +114,22 @@ module Win32
104
114
  end
105
115
 
106
116
  # Returns the corresponding name for the given +format_num+, or nil
107
- # if it does not exist. You cannot specify any of the predefined
117
+ # if it does not exist. You cannot specify any of the predefined
108
118
  # clipboard formats (or nil is returned), only registered formats.
109
119
  #
110
120
  def self.format_name(format_num)
111
121
  val = nil
112
122
  buf = 0.chr * 80
113
- self.open
114
- if GetClipboardFormatName(format_num, buf, buf.length) != 0
115
- val = buf
123
+
124
+ begin
125
+ self.open
126
+ if GetClipboardFormatName(format_num, buf, buf.length) != 0
127
+ val = buf
128
+ end
129
+ ensure
130
+ self.close
116
131
  end
117
- self.close
132
+
118
133
  val.split(0.chr).first rescue nil
119
134
  end
120
135
 
@@ -125,13 +140,17 @@ module Win32
125
140
  formats = {}
126
141
  format = 0
127
142
 
128
- self.open
129
- while 0 != (format = EnumClipboardFormats(format))
130
- buf = 0.chr * 80
131
- GetClipboardFormatName(format, buf, buf.length)
132
- formats[format] = buf.split(0.chr).first
143
+ begin
144
+ self.open
145
+ while 0 != (format = EnumClipboardFormats(format))
146
+ buf = 0.chr * 80
147
+ GetClipboardFormatName(format, buf, buf.length)
148
+ formats[format] = buf.split(0.chr).first
149
+ end
150
+ ensure
151
+ self.close
133
152
  end
134
- self.close
153
+
135
154
  formats
136
155
  end
137
156
 
@@ -1,8 +1,8 @@
1
1
  ###########################################################################
2
- # tc_clipboard.rb
2
+ # test_clipboard.rb
3
3
  #
4
- # Test suite for the win32-clipboard package. This will copy and remove
5
- # data from your clipboard. If your current clipboard data is crucial to
4
+ # Test suite for the win32-clipboard library. This will copy and remove
5
+ # data from your clipboard. If your current clipboard data is crucial to
6
6
  # you, please save it first.
7
7
  #
8
8
  # You should run this test case via the 'rake test' task.
@@ -11,9 +11,9 @@ require 'win32/clipboard'
11
11
  require 'test/unit'
12
12
  include Win32
13
13
 
14
- class TC_Win32ClipBoard < Test::Unit::TestCase
14
+ class TC_Win32_ClipBoard < Test::Unit::TestCase
15
15
  def test_version
16
- assert_equal('0.4.3', Clipboard::VERSION)
16
+ assert_equal('0.4.4', Clipboard::VERSION)
17
17
  end
18
18
 
19
19
  def test_data
@@ -23,12 +23,9 @@ class TC_Win32ClipBoard < Test::Unit::TestCase
23
23
  assert_raises(NameError){ Clipboard.data(CF_FOO) }
24
24
  end
25
25
 
26
- # Alias
27
- def test_get_data
26
+ def test_get_data_alias
28
27
  assert_respond_to(Clipboard, :get_data)
29
- assert_nothing_raised{ Clipboard.get_data }
30
- assert_kind_of(String, Clipboard.get_data, 'bad data type')
31
- assert_raises(NameError){ Clipboard.get_data(CF_FOO) }
28
+ assert_equal(true, Clipboard.method(:data) == Clipboard.method(:get_data))
32
29
  end
33
30
 
34
31
  def test_set_data
@@ -2,19 +2,18 @@ require "rubygems"
2
2
 
3
3
  spec = Gem::Specification.new do |gem|
4
4
  gem.name = "win32-clipboard"
5
- gem.version = "0.4.3"
6
- gem.author = "Daniel J. Berger"
5
+ gem.version = "0.4.4"
6
+ gem.authors = ["Daniel J. Berger", "Park Heesob"]
7
7
  gem.email = "djberg96@gmail.com"
8
8
  gem.homepage = "http://www.rubyforge.org/projects/win32utils"
9
9
  gem.platform = Gem::Platform::RUBY
10
- gem.summary = "A package for interacting with the Windows clipboard"
11
- gem.description = "A package for interacting with the Windows clipboard"
12
- gem.test_file = "test/tc_clipboard.rb"
10
+ gem.summary = "A library for interacting with the Windows clipboard"
11
+ gem.description = "A library for interacting with the Windows clipboard"
12
+ gem.test_file = "test/test_clipboard.rb"
13
13
  gem.has_rdoc = true
14
- gem.require_path = "lib"
15
14
  gem.extra_rdoc_files = ['CHANGES', 'README', 'MANIFEST']
16
15
  gem.rubyforge_project = "win32utils"
17
- gem.add_dependency("windows-pr", ">= 0.4.1")
16
+ gem.add_dependency("windows-pr", ">= 0.8.1")
18
17
 
19
18
  files = Dir["doc/*"] + Dir["examples/*"] + Dir["lib/win32/*"]
20
19
  files += Dir["test/*"] + Dir["[A-Z]*"]
metadata CHANGED
@@ -1,37 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.2
3
- specification_version: 1
4
2
  name: win32-clipboard
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.4.3
7
- date: 2007-07-25 00:00:00 -06:00
8
- summary: A package for interacting with the Windows clipboard
9
- require_paths:
10
- - lib
11
- email: djberg96@gmail.com
12
- homepage: http://www.rubyforge.org/projects/win32utils
13
- rubyforge_project: win32utils
14
- description: A package for interacting with the Windows clipboard
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ version: 0.4.4
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - Daniel J. Berger
8
+ - Park Heesob
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2008-08-26 00:00:00 -06:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: windows-pr
18
+ type: :runtime
19
+ version_requirement:
20
+ version_requirements: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 0.8.1
25
+ version:
26
+ description: A library for interacting with the Windows clipboard
27
+ email: djberg96@gmail.com
28
+ executables: []
29
+
30
+ extensions: []
31
+
32
+ extra_rdoc_files:
33
+ - CHANGES
34
+ - README
35
+ - MANIFEST
31
36
  files:
32
37
  - examples/clipboard_test.rb
33
38
  - lib/win32/clipboard.rb
34
- - test/tc_clipboard.rb
39
+ - test/test_clipboard.rb
35
40
  - CHANGES
36
41
  - examples
37
42
  - lib
@@ -40,27 +45,31 @@ files:
40
45
  - README
41
46
  - test
42
47
  - win32-clipboard.gemspec
43
- test_files:
44
- - test/tc_clipboard.rb
48
+ has_rdoc: true
49
+ homepage: http://www.rubyforge.org/projects/win32utils
50
+ post_install_message:
45
51
  rdoc_options: []
46
52
 
47
- extra_rdoc_files:
48
- - CHANGES
49
- - README
50
- - MANIFEST
51
- executables: []
52
-
53
- extensions: []
54
-
53
+ require_paths:
54
+ - lib
55
+ required_ruby_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: "0"
60
+ version:
61
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: "0"
66
+ version:
55
67
  requirements: []
56
68
 
57
- dependencies:
58
- - !ruby/object:Gem::Dependency
59
- name: windows-pr
60
- version_requirement:
61
- version_requirements: !ruby/object:Gem::Version::Requirement
62
- requirements:
63
- - - ">="
64
- - !ruby/object:Gem::Version
65
- version: 0.4.1
66
- version:
69
+ rubyforge_project: win32utils
70
+ rubygems_version: 1.2.0
71
+ signing_key:
72
+ specification_version: 2
73
+ summary: A library for interacting with the Windows clipboard
74
+ test_files:
75
+ - test/test_clipboard.rb